@@ -127,6 +127,7 @@ struct HfTaskLc {
127127 ConfigurableAxis thnConfigAxisOccupancy{" thnConfigAxisOccupancy" , {14 , 0 , 14000 }, " axis for centrality" };
128128 ConfigurableAxis thnConfigAxisProperLifetime{" thnConfigAxisProperLifetime" , {200 , 0 , 2 }, " Proper lifetime, ps" };
129129 ConfigurableAxis thnConfigAxisGapType{" thnConfigAxisGapType" , {7 , -1.5 , 5.5 }, " axis for UPC gap type (see TrueGap enum in o2::aod::sgselector)" };
130+ ConfigurableAxis thnConfigAxisFV0A{" thnConfigAxisFV0A" , {1001 , -1.5 , 999.5 }, " axis for FV0-A amplitude (a.u.)" };
130131 ConfigurableAxis thnConfigAxisFT0{" thnConfigAxisFT0" , {1001 , -1.5 , 999.5 }, " axis for FT0 amplitude (a.u.)" };
131132 ConfigurableAxis thnConfigAxisZN{" thnConfigAxisZN" , {510 , -1.5 , 49.5 }, " axis for ZN energy (a.u.)" };
132133 ConfigurableAxis thnConfigAxisZNTime{" thnConfigAxisZNTime" , {200 , -10 , 10 }, " axis for ZN energy (a.u.)" };
@@ -269,6 +270,8 @@ struct HfTaskLc {
269270 qaRegistry.add (" Data/zdc/energyZNA_vs_energyZNC" , " ZNA vs ZNC common energy;E_{ZNA}^{common} (a.u.);E_{ZNC}^{common} (a.u.)" , {HistType::kTH2F , {{100 , 0 ., 10 }, {100 , 0 ., 10 }}});
270271 qaRegistry.add (" Data/zdc/timeZNA_vs_timeZNC" , " ZNA vs ZNC time;ZNA Time;ZNC time" , {HistType::kTH2F , {{200 , -10 ., 10 }, {200 , -10 ., 10 }}});
271272 qaRegistry.add (" Data/hUpcGapAfterSelection" , " UPC gap type after selection;Gap side;Counts" , {HistType::kTH1F , {{7 , -1.5 , 5.5 }}});
273+ qaRegistry.add (" Data/hUpcMulti" , " Multiplicity of UPC events;Multiplicity;Counts" , {HistType::kTH1F , {{200 , -0.5 , 199.5 }}});
274+ qaRegistry.add (" Data/hUpcVtz" , " Vertex Z position of UPC events;Vz (cm);Counts" , {HistType::kTH1F , {{200 , -10 ., 10 .}}});
272275 }
273276 if (fillTHn) {
274277 const AxisSpec thnAxisMass{thnConfigAxisMass, " inv. mass (p K #pi) (GeV/#it{c}^{2})" };
@@ -289,6 +292,7 @@ struct HfTaskLc {
289292 const AxisSpec thnAxisTracklets{thnConfigAxisNumPvContr, " Number of PV contributors" };
290293 const AxisSpec thnAxisOccupancy{thnConfigAxisOccupancy, " Occupancy" };
291294 const AxisSpec thnAxisProperLifetime{thnConfigAxisProperLifetime, " T_{proper} (ps)" };
295+ const AxisSpec thnAxisFV0A{thnConfigAxisFV0A, " FV0-A amplitude" };
292296 const AxisSpec thnAxisFT0A{thnConfigAxisFT0, " FT0-A amplitude" };
293297 const AxisSpec thnAxisFT0C{thnConfigAxisFT0, " FT0-C amplitude" };
294298 const AxisSpec thnAxisZNA{thnConfigAxisZN, " ZNA energy" };
@@ -307,7 +311,7 @@ struct HfTaskLc {
307311 axesStd = {thnAxisMass, thnAxisPt, thnAxisCentrality, thnAxisPtProng0, thnAxisPtProng1, thnAxisPtProng2, thnAxisChi2PCA, thnAxisDecLength, thnAxisCPA, thnAxisTracklets};
308312 }
309313 if (isDataStd && isUpc) {
310- axesUpc = {thnAxisMass, thnAxisPt, thnAxisPtProng0, thnAxisPtProng1, thnAxisPtProng2, thnAxisChi2PCA, thnAxisDecLength, thnAxisCPA, thnAxisTracklets, thnAxisFT0A, thnAxisFT0C, thnAxisZNA, thnAxisZNC, thnAxisZNATime, thnAxisZNCTime};
314+ axesUpc = {thnAxisMass, thnAxisPt, thnAxisPtProng0, thnAxisPtProng1, thnAxisPtProng2, thnAxisChi2PCA, thnAxisDecLength, thnAxisCPA, thnAxisTracklets, thnAxisFV0A, thnAxisFT0A, thnAxisFT0C, thnAxisZNA, thnAxisZNC, thnAxisZNATime, thnAxisZNCTime};
311315 }
312316 if (isMcStd) {
313317 axesStd = {thnAxisMass, thnAxisPt, thnAxisCentrality, thnAxisPtProng0, thnAxisPtProng1, thnAxisPtProng2, thnAxisChi2PCA, thnAxisDecLength, thnAxisCPA, thnAxisTracklets, thnAxisPtB, thnAxisCanType};
@@ -319,7 +323,7 @@ struct HfTaskLc {
319323 axesWithBdt = {thnAxisMass, thnAxisPt, thnAxisCentrality, thnAxisBdtScoreLcBkg, thnAxisBdtScoreLcPrompt, thnAxisBdtScoreLcNonPrompt, thnAxisTracklets};
320324 }
321325 if (isDataWithMl && isUpc) {
322- axesUpcWithBdt = {thnAxisMass, thnAxisPt, thnAxisBdtScoreLcBkg, thnAxisBdtScoreLcPrompt, thnAxisBdtScoreLcNonPrompt, thnAxisTracklets, thnAxisFT0A, thnAxisFT0C, thnAxisZNA, thnAxisZNC, thnAxisZNATime, thnAxisZNCTime};
326+ axesUpcWithBdt = {thnAxisMass, thnAxisPt, thnAxisBdtScoreLcBkg, thnAxisBdtScoreLcPrompt, thnAxisBdtScoreLcNonPrompt, thnAxisTracklets, thnAxisFV0A, thnAxisFT0A, thnAxisFT0C, thnAxisZNA, thnAxisZNC, thnAxisZNATime, thnAxisZNCTime};
323327 }
324328 if (isMcWithMl) {
325329 axesWithBdt = {thnAxisMass, thnAxisPt, thnAxisCentrality, thnAxisBdtScoreLcBkg, thnAxisBdtScoreLcPrompt, thnAxisBdtScoreLcNonPrompt, thnAxisTracklets, thnAxisPtB, thnAxisCanType};
@@ -795,7 +799,10 @@ struct HfTaskLc {
795799 const auto decayLength = candidate.decayLength ();
796800 const auto chi2PCA = candidate.chi2PCA ();
797801 const auto cpa = candidate.cpa ();
798- const auto rapidity = HfHelper::yLc (candidate);
802+ if (gap == o2::aod::sgselector::TrueGap::SingleGapA || gap == o2::aod::sgselector::TrueGap::SingleGapC) {
803+ qaRegistry.fill (HIST (" Data/hUpcMulti" ), collision.multNTracksPV ());
804+ qaRegistry.fill (HIST (" Data/hUpcVtz" ), collision.posZ ());
805+ }
799806
800807 if (fillTHn) {
801808 double outputBkg (-1 ), outputPrompt (-1 ), outputFD (-1 );
@@ -813,22 +820,22 @@ struct HfTaskLc {
813820 // / Fill the ML outputScores and variables of candidate
814821 if (fillUPCTHnLite) {
815822 if (gap == o2::aod::sgselector::TrueGap::SingleGapA || gap == o2::aod::sgselector::TrueGap::SingleGapC) {
816- std::vector<double > valuesToFill{massLc, pt, outputBkg, outputPrompt, outputFD, static_cast <double >(numPvContributors), static_cast <double >(fitInfo.ampFT0A ), static_cast <double >(fitInfo.ampFT0C ), static_cast <double >(zdcEnergyZNA), static_cast <double >(zdcEnergyZNC), static_cast <double >(zdcTimeZNA), static_cast <double >(zdcTimeZNC)};
823+ std::vector<double > valuesToFill{massLc, pt, outputBkg, outputPrompt, outputFD, static_cast <double >(numPvContributors), static_cast <double >(fitInfo.ampFV0A ), static_cast < double >(fitInfo. ampFT0A ), static_cast <double >(fitInfo.ampFT0C ), static_cast <double >(zdcEnergyZNA), static_cast <double >(zdcEnergyZNC), static_cast <double >(zdcTimeZNA), static_cast <double >(zdcTimeZNC)};
817824 registry.get <THnSparse>(HIST (" hnLcUpcVarsWithBdt" ))->Fill (valuesToFill.data ());
818825 }
819826 } else {
820- std::vector<double > valuesToFill{massLc, pt, outputBkg, outputPrompt, outputFD, static_cast <double >(numPvContributors), static_cast <double >(fitInfo.ampFT0A ), static_cast <double >(fitInfo.ampFT0C ), static_cast <double >(zdcEnergyZNA), static_cast <double >(zdcEnergyZNC), static_cast <double >(zdcTimeZNA), static_cast <double >(zdcTimeZNC)};
827+ std::vector<double > valuesToFill{massLc, pt, outputBkg, outputPrompt, outputFD, static_cast <double >(numPvContributors), static_cast <double >(fitInfo.ampFV0A ), static_cast < double >(fitInfo. ampFT0A ), static_cast <double >(fitInfo.ampFT0C ), static_cast <double >(zdcEnergyZNA), static_cast <double >(zdcEnergyZNC), static_cast <double >(zdcTimeZNA), static_cast <double >(zdcTimeZNC)};
821828 registry.get <THnSparse>(HIST (" hnLcUpcVarsWithBdt" ))->Fill (valuesToFill.data ());
822829 }
823830
824831 } else {
825832 if (fillUPCTHnLite) {
826833 if (gap == o2::aod::sgselector::TrueGap::SingleGapA || gap == o2::aod::sgselector::TrueGap::SingleGapC) {
827- std::vector<double > valuesToFill{massLc, pt, rapidity, ptProng0, ptProng1, ptProng2, chi2PCA, decayLength, cpa, static_cast <double >(numPvContributors), static_cast <double >(fitInfo.ampFT0A ), static_cast <double >(fitInfo.ampFT0C ), static_cast <double >(zdcEnergyZNA), static_cast <double >(zdcEnergyZNC), static_cast <double >(zdcTimeZNA), static_cast <double >(zdcTimeZNC)};
834+ std::vector<double > valuesToFill{massLc, pt, ptProng0, ptProng1, ptProng2, chi2PCA, decayLength, cpa, static_cast <double >(numPvContributors), static_cast < double >(fitInfo. ampFV0A ), static_cast <double >(fitInfo.ampFT0A ), static_cast <double >(fitInfo.ampFT0C ), static_cast <double >(zdcEnergyZNA), static_cast <double >(zdcEnergyZNC), static_cast <double >(zdcTimeZNA), static_cast <double >(zdcTimeZNC)};
828835 registry.get <THnSparse>(HIST (" hnLcUpcVars" ))->Fill (valuesToFill.data ());
829836 }
830837 } else {
831- std::vector<double > valuesToFill{massLc, pt, rapidity, ptProng0, ptProng1, ptProng2, chi2PCA, decayLength, cpa, static_cast <double >(numPvContributors), static_cast <double >(fitInfo.ampFT0A ), static_cast <double >(fitInfo.ampFT0C ), static_cast <double >(zdcEnergyZNA), static_cast <double >(zdcEnergyZNC), static_cast <double >(zdcTimeZNA), static_cast <double >(zdcTimeZNC)};
838+ std::vector<double > valuesToFill{massLc, pt, ptProng0, ptProng1, ptProng2, chi2PCA, decayLength, cpa, static_cast <double >(numPvContributors), static_cast < double >(fitInfo. ampFV0A ), static_cast <double >(fitInfo.ampFT0A ), static_cast <double >(fitInfo.ampFT0C ), static_cast <double >(zdcEnergyZNA), static_cast <double >(zdcEnergyZNC), static_cast <double >(zdcTimeZNA), static_cast <double >(zdcTimeZNC)};
832839 registry.get <THnSparse>(HIST (" hnLcUpcVars" ))->Fill (valuesToFill.data ());
833840 }
834841 }
@@ -908,7 +915,7 @@ struct HfTaskLc {
908915 }
909916 PROCESS_SWITCH (HfTaskLc, processDataWithMlWithFT0M, " Process real data with the ML method and with FT0M centrality" , false );
910917
911- void processDataWithMlWithUpc (soa::Join<aod::Collisions, aod::EvSels> const & collisions,
918+ void processDataWithMlWithUpc (soa::Join<aod::Collisions, aod::EvSels, aod::Mults > const & collisions,
912919 aod::BcFullInfos const & bcs,
913920 LcCandidatesMl const & selectedLcCandidatesMl,
914921 aod::Tracks const &,
@@ -921,7 +928,7 @@ struct HfTaskLc {
921928 }
922929 PROCESS_SWITCH (HfTaskLc, processDataWithMlWithUpc, " Process real data with the ML method with UPC" , false );
923930
924- void processDataStdWithUpc (soa::Join<aod::Collisions, aod::EvSels> const & collisions,
931+ void processDataStdWithUpc (soa::Join<aod::Collisions, aod::EvSels, aod::Mults > const & collisions,
925932 aod::BcFullInfos const & bcs,
926933 LcCandidatesMl const & selectedLcCandidatesMl,
927934 aod::Tracks const &,
0 commit comments