@@ -111,9 +111,10 @@ enum V0Selections {
111111enum CascSelections {
112112 kCascNoCut = 0 ,
113113 kCascTopology ,
114+ kNSigmaTPCV0Daughters ,
114115 kRejectedXi ,
115- kAcceptedOmega ,
116116 kNSigmaTPC ,
117+ kAcceptedOmega ,
117118 kCascAll
118119};
119120
@@ -274,12 +275,12 @@ struct LfTreeCreatorClusterStudies {
274275 {" photon_conversion_position" , " Photon conversion position; #it{x} (cm); #it{y} (cm)" , {HistType::kTH2F , {{250 , -5 .f , 5 .f }, {250 , -5 .f , 5 .f }}}},
275276 {" photon_conversion_position_layer" , " Photon conversion position (ITS layers); #it{x} (cm); #it{y} (cm)" , {HistType::kTH2F , {{100 , -5 .f , 5 .f }, {100 , -5 .f , 5 .f }}}},
276277 {" casc_dca_daughter_pairs" , " DCA (xy) for cascade daughter pairs; DCA_{#it{xy}} (cm); counts" , {HistType::kTH1F , {{100 , -0.1 , 0.1 }}}},
277- {" Xi_vs_Omega" , " Mass Xi vs Omega; mass Omega (GeV/#it{c}^{2}); #it{m}_#Xi (GeV/#it{c}^{2})" , {HistType::kTH2F , {{50 , 1 .f , 2 .f }, {50 , 1 .f , 2 . f }}}},
278+ {" Xi_vs_Omega" , " Mass Xi vs Omega; #it{m}_{# Omega} (GeV/#it{c}^{2}); #it{m}_{ #Xi} (GeV/#it{c}^{2})" , {HistType::kTH2F , {{60 , 1 .5f , 2 .1f }, {50 , 1 .1f , 1 . 6f }}}},
278279 {" massOmega" , " Mass #Omega; signed #it{p}_{T} (GeV/#it{c}); #it{m}_{#Omega} (GeV/#it{c}^{2})" , {HistType::kTH2F , {{100 , -5 .f , 5 .f }, {400 , 1 .62f , 1 .72f }}}},
279280 {" massOmegaMc" , " Mass #Omega (MC); signed #it{p}_{T} (GeV/#it{c}); #it{m}_{#Omega} (GeV/#it{c}^{2})" , {HistType::kTH2F , {{100 , -5 .f , 5 .f }, {400 , 1 .62f , 1 .72f }}}},
280- {" massPi0" , " Mass #pi^{0}; #it{m}_{#pi^{0} } (GeV/#it{c}^{2})" , {HistType::kTH1F , {{100 , 0 .0f , 0 .200f }}}},
281- {" massPi0Mc" , " Mass #pi^{0} (MC); #it{m}_{#pi^{0} } (GeV/#it{c}^{2})" , {HistType::kTH1F , {{100 , 0 .0f , 0 .200f }}}},
282- {" massPi0WithBkg" , " Mass #pi^{0} with Background; #it{m}_{#pi^{0} } (GeV/#it{c}^{2}); counts" , {HistType::kTH1F , {{100 , 0 .0f , 0 .200f }}}},
281+ {" massPi0" , " Mass #pi^{0}; #it{m}_{ee } (GeV/#it{c}^{2})" , {HistType::kTH1F , {{100 , 0 .0f , 0 .200f }}}},
282+ {" massPi0Mc" , " Mass #pi^{0} (MC); #it{m}_{ee } (GeV/#it{c}^{2})" , {HistType::kTH1F , {{100 , 0 .0f , 0 .200f }}}},
283+ {" massPi0WithBkg" , " Mass #pi^{0} with Background; #it{m}_{ee } (GeV/#it{c}^{2}); counts" , {HistType::kTH1F , {{100 , 0 .0f , 0 .200f }}}},
283284 {" zVtx" , " Binning for the vertex z in cm; #it{z}_{vertex} (cm)" , {HistType::kTH1F , {{100 , -20 .f , 20 .f }}}},
284285 {" isPositive" , " is the candidate positive?; isPositive; counts" , {HistType::kTH1F , {{2 , -0 .5f , 1 .5f }}}},
285286
@@ -472,6 +473,23 @@ struct LfTreeCreatorClusterStudies {
472473 return true ;
473474 }
474475
476+ template <typename Track>
477+ bool selectPidV0Daughters (const Track& posTrack, const Track& negTrack, uint8_t v0Bitmask)
478+ {
479+ if (TESTBIT (v0Bitmask, Lambda)) {
480+ if (std::abs (posTrack.tpcNSigmaPr ()) > v0settingNsigmatpcPr || std::abs (negTrack.tpcNSigmaPi ()) > v0settingNsigmatpcPi) {
481+ return false ;
482+ }
483+ } else if (TESTBIT (v0Bitmask, AntiLambda)) {
484+ if (std::abs (posTrack.tpcNSigmaPi ()) > v0settingNsigmatpcPi || std::abs (negTrack.tpcNSigmaPr ()) > v0settingNsigmatpcPr) {
485+ return false ;
486+ }
487+ } else {
488+ return false ;
489+ }
490+ return true ;
491+ }
492+
475493 /* *
476494 * Fill the histograms for the V0 candidate and return the mass of the V0
477495 */
@@ -812,7 +830,7 @@ struct LfTreeCreatorClusterStudies {
812830 for (int i = 0 ; i < V0Selections::kV0All ; i++)
813831 mHistograms .get <TH1 >(HIST (" v0_selections" ))->GetXaxis ()->SetBinLabel (i + 1 , V0selectionLabels[i].c_str ());
814832
815- std::vector<std::string> CascSelectionLabels = {" All" , " Topology" , " Veto Xi " , " Accepted Omega " , " n#sigma_{TPC} K" };
833+ std::vector<std::string> CascSelectionLabels = {" All" , " Topology" , " n#sigma_{TPC} V0 daughters " , " Veto Xi " , " n#sigma_{TPC} K" , " Accepted Omega " };
816834 for (int i = 0 ; i < CascSelections::kCascAll ; i++)
817835 mHistograms .get <TH1 >(HIST (" casc_selections" ))->GetXaxis ()->SetBinLabel (i + 1 , CascSelectionLabels[i].c_str ());
818836
@@ -879,7 +897,6 @@ struct LfTreeCreatorClusterStudies {
879897
880898 const auto & posMcParticle = posTrack.mcParticle ();
881899 const auto & negMcParticle = negTrack.mcParticle ();
882-
883900 candidatePos.pdgCode = posMcParticle.pdgCode ();
884901 candidateNeg.pdgCode = negMcParticle.pdgCode ();
885902
@@ -894,7 +911,7 @@ struct LfTreeCreatorClusterStudies {
894911 }
895912
896913 template <bool isMC = false , typename Track>
897- void fillKCand (const std::array<float , 3 >& pv, aod::CascDatas::iterator const & cascade, const Track&)
914+ void fillKCand (const std::array<float , 3 >& pv, aod::CascDatas::iterator const & cascade, const aod::V0Datas& v0s, const Track&)
898915 {
899916 mHistograms .fill (HIST (" casc_selections" ), CascSelections::kCascNoCut );
900917 const auto & bachelorTrack = cascade.template bachelor_as <Track>();
@@ -906,6 +923,15 @@ struct LfTreeCreatorClusterStudies {
906923 }
907924 mHistograms .fill (HIST (" casc_selections" ), CascSelections::kCascTopology );
908925
926+ const auto & posTrack = cascade.template posTrack_as <Track>();
927+ const auto & negTrack = cascade.template negTrack_as <Track>();
928+ uint8_t v0Bitmask = 0 ;
929+ SETBIT (v0Bitmask, bachelorTrack.sign () < 0 ? V0Type::Lambda : V0Type::AntiLambda);
930+ if (!selectPidV0Daughters (posTrack, negTrack, v0Bitmask)) {
931+ return ;
932+ }
933+ mHistograms .fill (HIST (" casc_selections" ), CascSelections::kNSigmaTPCV0Daughters );
934+
909935 const float & massXi = cascade.mXi ();
910936 const float & massOmega = cascade.mOmega ();
911937 mHistograms .fill (HIST (" Xi_vs_Omega" ), massOmega, massXi);
@@ -914,17 +940,17 @@ struct LfTreeCreatorClusterStudies {
914940 return ;
915941 }
916942 mHistograms .fill (HIST (" casc_selections" ), CascSelections::kRejectedXi );
943+ if (std::abs (bachelorTrack.tpcNSigmaKa ()) > cascsettingNsigmatpc) {
944+ return ;
945+ }
946+ mHistograms .fill (HIST (" casc_selections" ), CascSelections::kNSigmaTPC );
917947
918948 mHistograms .fill (HIST (" massOmega" ), cascade.pt () * bachelorTrack.sign (), massOmega);
919949 if (std::abs (massOmega - o2::constants::physics::MassOmegaMinus) > cascsettingMassWindowOmega) {
920950 return ;
921951 }
922952 mHistograms .fill (HIST (" casc_selections" ), CascSelections::kAcceptedOmega );
923953
924- if (std::abs (bachelorTrack.tpcNSigmaKa ()) > cascsettingNsigmatpc) {
925- return ;
926- }
927- mHistograms .fill (HIST (" casc_selections" ), CascSelections::kNSigmaTPC );
928954 fillHistogramsParticle<PartID::ka, isMC>(bachelorTrack);
929955
930956 mClusterStudiesTable (
@@ -1262,7 +1288,7 @@ struct LfTreeCreatorClusterStudies {
12621288 }
12631289
12641290 for (const auto & cascade : cascades) {
1265- fillKCand</* isMC*/ false >(PV , cascade, tracks);
1291+ fillKCand</* isMC*/ false >(PV , cascade, v0s, tracks);
12661292 }
12671293 }
12681294 PROCESS_SWITCH (LfTreeCreatorClusterStudies, processDataV0Casc, " process Data V0 and cascade" , false );
@@ -1370,7 +1396,7 @@ struct LfTreeCreatorClusterStudies {
13701396 }
13711397
13721398 for (const auto & cascade : cascades) {
1373- fillKCand</* isMC*/ true >(PV , cascade, tracks);
1399+ fillKCand</* isMC*/ true >(PV , cascade, v0s, tracks);
13741400 }
13751401 }
13761402 PROCESS_SWITCH (LfTreeCreatorClusterStudies, processMcV0Casc, " process Mc V0 and cascade" , false );
0 commit comments