@@ -61,10 +61,10 @@ struct FlowEfficiencyCasc {
6161 O2_DEFINE_CONFIGURABLE (cfgcasc_dcav0dau, float , 1 .0f , " maximum DCA among V0 daughters" )
6262 O2_DEFINE_CONFIGURABLE (cfgcasc_mlambdawindow, float , 0 .04f , " Invariant mass window of lambda" )
6363 // track quality and type selections
64- O2_DEFINE_CONFIGURABLE (cfgtpcclusters, int , 70 , " minimum number of TPC clusters requirement" )
65- O2_DEFINE_CONFIGURABLE (cfgitsclusters, int , 1 , " minimum number of ITS clusters requirement" )
66- O2_DEFINE_CONFIGURABLE (cfgtpcclufindable, int , 1 , " minimum number of findable TPC clusters" )
67- O2_DEFINE_CONFIGURABLE (cfgtpccrossoverfindable, int , 1 , " minimum number of Ratio crossed rows over findable clusters" )
64+ O2_DEFINE_CONFIGURABLE (cfgtpcclusters, int , 0 , " minimum number of TPC clusters requirement" )
65+ O2_DEFINE_CONFIGURABLE (cfgitsclusters, int , 0 , " minimum number of ITS clusters requirement" )
66+ O2_DEFINE_CONFIGURABLE (cfgtpcclufindable, int , 0 , " minimum number of findable TPC clusters" )
67+ O2_DEFINE_CONFIGURABLE (cfgtpccrossoverfindable, int , 0 , " minimum number of Ratio crossed rows over findable clusters" )
6868 O2_DEFINE_CONFIGURABLE (cfgcheckDauTPC, bool , true , " check daughter tracks TPC or not" )
6969 O2_DEFINE_CONFIGURABLE (cfgcheckDauTOF, bool , false , " check daughter tracks TOF or not" )
7070 O2_DEFINE_CONFIGURABLE (cfgCasc_rapidity, float , 0.5 , " rapidity" )
@@ -114,6 +114,7 @@ struct FlowEfficiencyCasc {
114114 for (const auto & casc : Cascades) {
115115 if (!casc.has_cascMCCore ())
116116 continue ;
117+ auto cascMC = casc.cascMCCore_as <soa::Join<aod::CascMCCores, aod::CascMCCollRefs>>();
117118 auto negdau = casc.negTrackExtra_as <DaughterTracks>();
118119 auto posdau = casc.posTrackExtra_as <DaughterTracks>();
119120 auto bachelor = casc.bachTrackExtra_as <DaughterTracks>();
@@ -148,26 +149,32 @@ struct FlowEfficiencyCasc {
148149 if (std::fabs (casc.mLambda () - o2::constants::physics::MassLambda0) > cfgcasc_mlambdawindow)
149150 continue ;
150151 // Omega and antiOmega
151- if (casc.sign () < 0 && (casc.mOmega () > 1.63 ) && (casc.mOmega () < 1.71 ) && std::fabs (casc.yOmega ()) < cfgCasc_rapidity &&
152- (!cfgcheckDauTPC || (std::fabs (bachelor.tpcNSigmaKa ()) < cfgNSigma[2 ] && std::fabs (posdau.tpcNSigmaPr ()) < cfgNSigma[1 ] && std::fabs (negdau.tpcNSigmaPi ()) < cfgNSigma[0 ]))) {
153- registry.fill (HIST (" h2DRecOmega" ), casc.pt (), rectracknum);
154- } else if (casc.sign () < 0 && (casc.mOmega () > 1.63 ) && (casc.mOmega () < 1.71 ) && std::fabs (casc.yOmega ()) < cfgCasc_rapidity &&
155- (!cfgcheckDauTPC || (std::fabs (bachelor.tpcNSigmaKa ()) < cfgNSigma[2 ] && std::fabs (negdau.tpcNSigmaPr ()) < cfgNSigma[1 ] && std::fabs (posdau.tpcNSigmaPi ()) < cfgNSigma[0 ]))) {
156- registry.fill (HIST (" h2DRecOmega" ), casc.pt (), rectracknum);
152+ int pdgCode{cascMC.pdgCode ()};
153+ if (std::abs (pdgCode) == kOmegaMinus && std::abs (cascMC.pdgCodeV0 ()) == kLambda0 && std::abs (cascMC.pdgCodeBachelor ()) == kKPlus ) {
154+ if (casc.sign () < 0 && (casc.mOmega () > 1.63 ) && (casc.mOmega () < 1.71 ) && std::fabs (casc.yOmega ()) < cfgCasc_rapidity &&
155+ (!cfgcheckDauTPC || (std::fabs (bachelor.tpcNSigmaKa ()) < cfgNSigma[2 ] && std::fabs (posdau.tpcNSigmaPr ()) < cfgNSigma[1 ] && std::fabs (negdau.tpcNSigmaPi ()) < cfgNSigma[0 ]))) {
156+ registry.fill (HIST (" h2DRecOmega" ), casc.pt (), rectracknum);
157+ } else if (casc.sign () < 0 && (casc.mOmega () > 1.63 ) && (casc.mOmega () < 1.71 ) && std::fabs (casc.yOmega ()) < cfgCasc_rapidity &&
158+ (!cfgcheckDauTPC || (std::fabs (bachelor.tpcNSigmaKa ()) < cfgNSigma[2 ] && std::fabs (negdau.tpcNSigmaPr ()) < cfgNSigma[1 ] && std::fabs (posdau.tpcNSigmaPi ()) < cfgNSigma[0 ]))) {
159+ registry.fill (HIST (" h2DRecOmega" ), casc.pt (), rectracknum);
160+ }
157161 }
158162 // Xi and antiXi
159- if (casc.sign () < 0 && (casc.mXi () > 1.30 ) && (casc.mXi () < 1.37 ) && std::fabs (casc.yXi ()) < cfgCasc_rapidity &&
160- (!cfgcheckDauTPC || (std::fabs (bachelor.tpcNSigmaPi ()) < cfgNSigma[0 ] && std::fabs (posdau.tpcNSigmaPr ()) < cfgNSigma[1 ] && std::fabs (negdau.tpcNSigmaPi ()) < cfgNSigma[0 ]))) {
161- registry.fill (HIST (" h2DRecXi" ), casc.pt (), rectracknum);
162- } else if (casc.sign () < 0 && (casc.mXi () > 1.30 ) && (casc.mXi () < 1.37 ) && std::fabs (casc.yXi ()) < cfgCasc_rapidity &&
163- (!cfgcheckDauTPC || (std::fabs (bachelor.tpcNSigmaPi ()) < cfgNSigma[0 ] && std::fabs (negdau.tpcNSigmaPr ()) < cfgNSigma[1 ] && std::fabs (posdau.tpcNSigmaPi ()) < cfgNSigma[0 ]))) {
164- registry.fill (HIST (" h2DRecXi" ), casc.pt (), rectracknum);
163+ if (std::abs (pdgCode) == kXiMinus && std::abs (cascMC.pdgCodeV0 ()) == kLambda0 && std::abs (cascMC.pdgCodeBachelor ()) == kPiPlus ) {
164+ if (casc.sign () < 0 && (casc.mXi () > 1.30 ) && (casc.mXi () < 1.37 ) && std::fabs (casc.yXi ()) < cfgCasc_rapidity &&
165+ (!cfgcheckDauTPC || (std::fabs (bachelor.tpcNSigmaPi ()) < cfgNSigma[0 ] && std::fabs (posdau.tpcNSigmaPr ()) < cfgNSigma[1 ] && std::fabs (negdau.tpcNSigmaPi ()) < cfgNSigma[0 ]))) {
166+ registry.fill (HIST (" h2DRecXi" ), casc.pt (), rectracknum);
167+ } else if (casc.sign () < 0 && (casc.mXi () > 1.30 ) && (casc.mXi () < 1.37 ) && std::fabs (casc.yXi ()) < cfgCasc_rapidity &&
168+ (!cfgcheckDauTPC || (std::fabs (bachelor.tpcNSigmaPi ()) < cfgNSigma[0 ] && std::fabs (negdau.tpcNSigmaPr ()) < cfgNSigma[1 ] && std::fabs (posdau.tpcNSigmaPi ()) < cfgNSigma[0 ]))) {
169+ registry.fill (HIST (" h2DRecXi" ), casc.pt (), rectracknum);
170+ }
165171 }
166172 }
167173
168174 for (const auto & v0 : V0s) {
169175 if (!v0.has_v0MCCore ())
170176 continue ;
177+ auto v0MC = v0.v0MCCore_as <soa::Join<aod::V0MCCores, aod::V0MCCollRefs>>();
171178 auto v0negdau = v0.negTrackExtra_as <DaughterTracks>();
172179 auto v0posdau = v0.posTrackExtra_as <DaughterTracks>();
173180
@@ -198,18 +205,23 @@ struct FlowEfficiencyCasc {
198205 if (std::fabs (v0.dcanegtopv ()) < cfgv0_dcadautopv)
199206 continue ;
200207
208+ int pdgCode{v0MC.pdgCode ()};
201209 // K0short
202- if (v0.qtarm () / std::fabs (v0.alpha ()) > cfgv0_ArmPodocut && std::fabs (v0.y ()) < 0.5 && std::fabs (v0.mK0Short () - o2::constants::physics::MassK0Short) < cfgv0_mk0swindow &&
203- (!cfgcheckDauTPC || (std::fabs (v0posdau.tpcNSigmaPi ()) < cfgNSigma[0 ] && std::fabs (v0negdau.tpcNSigmaPi ()) < cfgNSigma[0 ]))) {
204- registry.fill (HIST (" h2DRecK0s" ), v0.pt (), rectracknum);
210+ if (std::abs (pdgCode) == kK0Short && v0MC.pdgCodePositive () == kPiPlus && v0MC.pdgCodeNegative () == kPiMinus ) {
211+ if (v0.qtarm () / std::fabs (v0.alpha ()) > cfgv0_ArmPodocut && std::fabs (v0.y ()) < 0.5 && std::fabs (v0.mK0Short () - o2::constants::physics::MassK0Short) < cfgv0_mk0swindow &&
212+ (!cfgcheckDauTPC || (std::fabs (v0posdau.tpcNSigmaPi ()) < cfgNSigma[0 ] && std::fabs (v0negdau.tpcNSigmaPi ()) < cfgNSigma[0 ]))) {
213+ registry.fill (HIST (" h2DRecK0s" ), v0.pt (), rectracknum);
214+ }
205215 }
206216 // Lambda and antiLambda
207217 if (std::fabs (v0.y ()) < 0.5 && std::fabs (v0.mLambda () - o2::constants::physics::MassLambda) < cfgv0_mlambdawindow &&
208218 (!cfgcheckDauTPC || (std::fabs (v0posdau.tpcNSigmaPr ()) < cfgNSigma[1 ] && std::fabs (v0negdau.tpcNSigmaPi ()) < cfgNSigma[0 ]))) {
209- registry.fill (HIST (" h2DRecLambda" ), v0.pt (), rectracknum);
219+ if (std::abs (pdgCode) == kLambda0 && v0MC.pdgCodePositive () == kProton && v0MC.pdgCodeNegative () == kPiMinus )
220+ registry.fill (HIST (" h2DRecLambda" ), v0.pt (), rectracknum);
210221 } else if (std::fabs (v0.y ()) < 0.5 && std::fabs (v0.mLambda () - o2::constants::physics::MassLambda) < cfgv0_mlambdawindow &&
211222 (!cfgcheckDauTPC || (std::fabs (v0negdau.tpcNSigmaPr ()) < cfgNSigma[1 ] && std::fabs (v0posdau.tpcNSigmaPi ()) < cfgNSigma[0 ]))) {
212- registry.fill (HIST (" h2DRecLambda" ), v0.pt (), rectracknum);
223+ if (std::abs (pdgCode) == kLambda0 && v0MC.pdgCodePositive () == kPiPlus && v0MC.pdgCodeNegative () == kProtonBar )
224+ registry.fill (HIST (" h2DRecLambda" ), v0.pt (), rectracknum);
213225 }
214226 }
215227 }
0 commit comments