@@ -67,6 +67,7 @@ struct FlowEfficiencyCasc {
6767 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" )
70+ O2_DEFINE_CONFIGURABLE (cfgcheckMCParticle, bool , false , " check the particle and deacy channel match or not" )
7071 O2_DEFINE_CONFIGURABLE (cfgCasc_rapidity, float , 0.5 , " rapidity" )
7172
7273 O2_DEFINE_CONFIGURABLE (cfgNSigmatpctof, std::vector<float >, (std::vector<float >{3 , 3 , 3 }), " tpc and tof NSigma for Pion Kaon Proton" )
@@ -76,8 +77,14 @@ struct FlowEfficiencyCasc {
7677 ConfigurableAxis cfgaxisPtOmega{" cfgaxisPtOmega" , {VARIABLE_WIDTH, 0 , 0.1 , 0.5 , 0.9 , 1.1 , 1.3 , 1.5 , 1.7 , 1.9 , 2.1 , 2.3 , 2.5 , 2.7 , 2.9 , 3.9 , 4.9 , 5.9 , 9.9 }, " pt (GeV)" };
7778 ConfigurableAxis cfgaxisPtV0{" cfgaxisPtV0" , {VARIABLE_WIDTH, 0 , 0.1 , 0.5 , 0.9 , 1.1 , 1.3 , 1.5 , 1.7 , 1.9 , 2.1 , 2.3 , 2.5 , 2.7 , 2.9 , 3.9 , 4.9 , 5.9 , 9.9 }, " pt (GeV)" };
7879 ConfigurableAxis cfgaxisMultiplicity{" cfgaxisMultiplicity" , {1000 , 0 , 5000 }, " Nch" };
80+ ConfigurableAxis cfgaxisCentrality{" cfgaxisCentrality" , {0 , 5 , 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 90 }, " Centrality (%)" };
7981
80- using MyCollisions = soa::Join<aod::StraCollisions, aod::StraEvSels>;
82+ AxisSpec axisOmegaMass = {80 , 1 .63f , 1 .71f , " Inv. Mass (GeV)" };
83+ AxisSpec axisXiMass = {70 , 1 .3f , 1 .37f , " Inv. Mass (GeV)" };
84+ AxisSpec axisK0sMass = {400 , 0 .4f , 0 .6f , " Inv. Mass (GeV)" };
85+ AxisSpec axisLambdaMass = {160 , 1 .08f , 1 .16f , " Inv. Mass (GeV)" };
86+
87+ using MyCollisions = soa::Join<aod::StraCollisions, aod::StraEvSels, aod::StraCents>;
8188 using MyMcCollisions = soa::Join<aod::StraMCCollisions, aod::StraMCCollMults>;
8289 using CascMCCandidates = soa::Join<aod::CascCollRefs, aod::CascCores, aod::CascExtras, aod::CascBBs, aod::CascCoreMCLabels>;
8390 using V0MCCandidates = soa::Join<aod::V0CollRefs, aod::V0Cores, aod::V0Extras, aod::V0CoreMCLabels>;
@@ -94,23 +101,25 @@ struct FlowEfficiencyCasc {
94101 // create histograms
95102 registry.add (" eventCounter" , " eventCounter" , kTH1F , {axisCounter});
96103 registry.add (" mcEventCounter" , " Monte Carlo Truth EventCounter" , kTH1F , {axisCounter});
104+ registry.add (" h2DCentvsNch" , " " , {HistType::kTH2D , {cfgaxisCentrality, cfgaxisMultiplicity}});
97105
98106 registry.add (" h2DGenK0s" , " " , {HistType::kTH2D , {cfgaxisPtV0, cfgaxisMultiplicity}});
99107 registry.add (" h2DGenLambda" , " " , {HistType::kTH2D , {cfgaxisPtV0, cfgaxisMultiplicity}});
100108 registry.add (" h2DGenXi" , " " , {HistType::kTH2D , {cfgaxisPtXi, cfgaxisMultiplicity}});
101109 registry.add (" h2DGenOmega" , " " , {HistType::kTH2D , {cfgaxisPtOmega, cfgaxisMultiplicity}});
102- registry.add (" h2DRecK0s " , " " , {HistType::kTH2D , {cfgaxisPtV0, cfgaxisMultiplicity}});
103- registry.add (" h2DRecLambda " , " " , {HistType::kTH2D , {cfgaxisPtV0, cfgaxisMultiplicity}});
104- registry.add (" h2DRecXi " , " " , {HistType::kTH2D , {cfgaxisPtXi, cfgaxisMultiplicity}});
105- registry.add (" h2DRecOmega " , " " , {HistType::kTH2D , {cfgaxisPtOmega, cfgaxisMultiplicity}});
110+ registry.add (" h3DRecK0s " , " " , {HistType::kTH3D , {cfgaxisPtV0, cfgaxisMultiplicity, axisK0sMass }});
111+ registry.add (" h3DRecLambda " , " " , {HistType::kTH3D , {cfgaxisPtV0, cfgaxisMultiplicity, axisLambdaMass }});
112+ registry.add (" h3DRecXi " , " " , {HistType::kTH3D , {cfgaxisPtXi, cfgaxisMultiplicity, axisXiMass }});
113+ registry.add (" h3DRecOmega " , " " , {HistType::kTH3D , {cfgaxisPtOmega, cfgaxisMultiplicity, axisOmegaMass }});
106114 }
107115
108116 void processRec (MyCollisions::iterator const & collision, V0MCCandidates const & V0s, CascMCCandidates const & Cascades, DaughterTracks const &, soa::Join<aod::CascMCCores, aod::CascMCCollRefs> const &, soa::Join<aod::V0MCCores, aod::V0MCCollRefs> const &)
109117 {
110118 registry.fill (HIST (" eventCounter" ), 0.5 );
111119 if (!collision.sel8 ())
112120 return ;
113- int rectracknum = collision.multNTracksGlobal ();
121+ int rectracknum = collision.multNTracksITSTPC ();
122+ registry.fill (HIST (" h2DCentvsNch" ), collision.centFT0C (), rectracknum);
114123 for (const auto & casc : Cascades) {
115124 if (!casc.has_cascMCCore ())
116125 continue ;
@@ -150,23 +159,23 @@ struct FlowEfficiencyCasc {
150159 continue ;
151160 // Omega and antiOmega
152161 int pdgCode{cascMC.pdgCode ()};
153- if (std::abs (pdgCode) == kOmegaMinus && std::abs (cascMC.pdgCodeV0 ()) == kLambda0 && std::abs (cascMC.pdgCodeBachelor ()) == kKPlus ) {
162+ if (!cfgcheckMCParticleTrue || ( std::abs (pdgCode) == kOmegaMinus && std::abs (cascMC.pdgCodeV0 ()) == kLambda0 && std::abs (cascMC.pdgCodeBachelor ()) == kKPlus ) ) {
154163 if (casc.sign () < 0 && (casc.mOmega () > 1.63 ) && (casc.mOmega () < 1.71 ) && std::fabs (casc.yOmega ()) < cfgCasc_rapidity &&
155164 (!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);
165+ registry.fill (HIST (" h2DRecOmega" ), casc.pt (), rectracknum, casc. mOmega () );
157166 } else if (casc.sign () < 0 && (casc.mOmega () > 1.63 ) && (casc.mOmega () < 1.71 ) && std::fabs (casc.yOmega ()) < cfgCasc_rapidity &&
158167 (!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);
168+ registry.fill (HIST (" h2DRecOmega" ), casc.pt (), rectracknum, casc. mOmega () );
160169 }
161170 }
162171 // Xi and antiXi
163- if (std::abs (pdgCode) == kXiMinus && std::abs (cascMC.pdgCodeV0 ()) == kLambda0 && std::abs (cascMC.pdgCodeBachelor ()) == kPiPlus ) {
172+ if (!cfgcheckMCParticleTrue || ( std::abs (pdgCode) == kXiMinus && std::abs (cascMC.pdgCodeV0 ()) == kLambda0 && std::abs (cascMC.pdgCodeBachelor ()) == kPiPlus ) ) {
164173 if (casc.sign () < 0 && (casc.mXi () > 1.30 ) && (casc.mXi () < 1.37 ) && std::fabs (casc.yXi ()) < cfgCasc_rapidity &&
165174 (!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);
175+ registry.fill (HIST (" h2DRecXi" ), casc.pt (), rectracknum, casc. mXi () );
167176 } else if (casc.sign () < 0 && (casc.mXi () > 1.30 ) && (casc.mXi () < 1.37 ) && std::fabs (casc.yXi ()) < cfgCasc_rapidity &&
168177 (!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);
178+ registry.fill (HIST (" h2DRecXi" ), casc.pt (), rectracknum, casc. mXi () );
170179 }
171180 }
172181 }
@@ -207,21 +216,21 @@ struct FlowEfficiencyCasc {
207216
208217 int pdgCode{v0MC.pdgCode ()};
209218 // K0short
210- if (std::abs (pdgCode) == kK0Short && v0MC.pdgCodePositive () == kPiPlus && v0MC.pdgCodeNegative () == kPiMinus ) {
219+ if (!cfgcheckMCParticleTrue || ( std::abs (pdgCode) == kK0Short && v0MC.pdgCodePositive () == kPiPlus && v0MC.pdgCodeNegative () == kPiMinus ) ) {
211220 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 &&
212221 (!cfgcheckDauTPC || (std::fabs (v0posdau.tpcNSigmaPi ()) < cfgNSigma[0 ] && std::fabs (v0negdau.tpcNSigmaPi ()) < cfgNSigma[0 ]))) {
213- registry.fill (HIST (" h2DRecK0s" ), v0.pt (), rectracknum);
222+ registry.fill (HIST (" h2DRecK0s" ), v0.pt (), rectracknum, v0. mK0Short () );
214223 }
215224 }
216225 // Lambda and antiLambda
217- if (std::fabs (v0.y ()) < 0.5 && std::fabs (v0. mLambda () - o2::constants::physics::MassLambda) < cfgv0_mlambdawindow &&
226+ if (std::fabs (v0.mLambda () - o2::constants::physics::MassLambda) < cfgv0_mlambdawindow &&
218227 (!cfgcheckDauTPC || (std::fabs (v0posdau.tpcNSigmaPr ()) < cfgNSigma[1 ] && std::fabs (v0negdau.tpcNSigmaPi ()) < cfgNSigma[0 ]))) {
219- if (std::abs (pdgCode) == kLambda0 && v0MC.pdgCodePositive () == kProton && v0MC.pdgCodeNegative () == kPiMinus )
220- registry.fill (HIST (" h2DRecLambda" ), v0.pt (), rectracknum);
221- } else if (std::fabs (v0.y ()) < 0.5 && std::fabs (v0. mLambda () - o2::constants::physics::MassLambda) < cfgv0_mlambdawindow &&
228+ if (!cfgcheckMCParticleTrue || ( std::abs (pdgCode) == kLambda0 && v0MC.pdgCodePositive () == kProton && v0MC.pdgCodeNegative () == kPiMinus ) )
229+ registry.fill (HIST (" h2DRecLambda" ), v0.pt (), rectracknum, v0. mLambda () );
230+ } else if (std::fabs (v0.mLambda () - o2::constants::physics::MassLambda) < cfgv0_mlambdawindow &&
222231 (!cfgcheckDauTPC || (std::fabs (v0negdau.tpcNSigmaPr ()) < cfgNSigma[1 ] && std::fabs (v0posdau.tpcNSigmaPi ()) < cfgNSigma[0 ]))) {
223- if (std::abs (pdgCode) == kLambda0 && v0MC.pdgCodePositive () == kPiPlus && v0MC.pdgCodeNegative () == kProtonBar )
224- registry.fill (HIST (" h2DRecLambda" ), v0.pt (), rectracknum);
232+ if (!cfgcheckMCParticleTrue || ( std::abs (pdgCode) == kLambda0 && v0MC.pdgCodePositive () == kPiPlus && v0MC.pdgCodeNegative () == kProtonBar ) )
233+ registry.fill (HIST (" h2DRecLambda" ), v0.pt (), rectracknum, v0. mLambda () );
225234 }
226235 }
227236 }
0 commit comments