@@ -190,7 +190,7 @@ struct CorrelationTask {
190190 registry.add (" etaphiTrigger" , " multiplicity/centrality vs eta vs phi (triggers)" , {HistType::kTH3F , {{100 , 0 , 100 , " multiplicity/centrality" }, {100 , -2 , 2 , " #eta" }, {200 , 0 , o2::constants::math::TwoPI, " #varphi" }}});
191191 const AxisSpec& a = AxisSpec (axisInvMass);
192192 AxisSpec axisSpecMass = {1000 , a.binEdges [0 ], a.binEdges [a.getNbins ()]};
193- registry.add (" invMass" , " 2-prong invariant mass (GeV/c^2)" , {HistType::kTH3F , {axisSpecMass, axisPtTrigger, axisMultiplicity}});
193+ registry.add (" invMass" , " 2-prong invariant mass (GeV/c^2)" , {HistType::kTHnSparseF , {axisSpecMass, axisPtTrigger, axisMultiplicity, axisVertex }});
194194 if (doprocessSame2Prong2Prong || doprocessSame2Prong2ProngML) {
195195 registry.add (" invMassTwoPart" , " 2D 2-prong invariant mass (GeV/c^2)" , {HistType::kTHnSparseF , {axisSpecMass, axisSpecMass, axisPtTrigger, axisPtAssoc, axisMultiplicity}});
196196 registry.add (" invMassTwoPartDPhi" , " 2D 2-prong invariant mass (GeV/c^2)" , {HistType::kTHnSparseF , {axisSpecMass, axisSpecMass, axisPtTrigger, axisPtAssoc, axisDeltaPhi}});
@@ -370,7 +370,7 @@ struct CorrelationTask {
370370 using HasPDGCode = decltype (std::declval<T&>().pdgCode());
371371
372372 template <typename TCollision, typename TTracks1, typename TTracks2>
373- void fillQA (const TCollision& collision, float multiplicity, const TTracks1& tracks1, const TTracks2& tracks2)
373+ void fillQA (const TCollision& collision, float multiplicity, float posZ, const TTracks1& tracks1, const TTracks2& tracks2)
374374 {
375375 for (const auto & track1 : tracks1) {
376376 if constexpr (std::experimental::is_detected<HasInvMass, typename TTracks1::iterator>::value && std::experimental::is_detected<HasDecay, typename TTracks1::iterator>::value) {
@@ -380,7 +380,7 @@ struct CorrelationTask {
380380 if (!passMLScore (track1))
381381 continue ;
382382 }
383- registry.fill (HIST (" invMass" ), track1.invMass (), track1.pt (), multiplicity);
383+ registry.fill (HIST (" invMass" ), track1.invMass (), track1.pt (), multiplicity, posZ );
384384 for (const auto & track2 : tracks2) {
385385 if constexpr (std::experimental::is_detected<HasInvMass, typename TTracks2::iterator>::value && std::experimental::is_detected<HasDecay, typename TTracks2::iterator>::value) {
386386 if (doprocessSame2Prong2Prong || doprocessMixed2Prong2Prong || doprocessSame2Prong2ProngML || doprocessMixed2Prong2ProngML) {
@@ -874,7 +874,7 @@ struct CorrelationTask {
874874 registry.fill (HIST (" eventcount_same" ), bin);
875875 registry.fill (HIST (" trackcount_same" ), bin, tracks1.size ());
876876 if constexpr (std::experimental::is_detected<HasDecay, typename TTracks1::iterator>::value)
877- fillQA (collision, multiplicity, tracks1, tracks2);
877+ fillQA (collision, multiplicity, collision. posZ (), tracks1, tracks2);
878878 else
879879 fillQA (collision, multiplicity, tracks1);
880880
@@ -1213,14 +1213,12 @@ struct CorrelationTask {
12131213 if (std::find (cfgMcTriggerPDGs->begin (), cfgMcTriggerPDGs->end (), mcParticle.pdgCode ()) != cfgMcTriggerPDGs->end ()) {
12141214 if ((mcParticle.mcDecay () != aod::cf2prongtrack::D0ToPiK) && (mcParticle.mcDecay () != aod::cf2prongtrack::D0barToKPiExclusive))
12151215 continue ; // wrong decay channel
1216- if constexpr (!reflectionSpec) {
1217- if (!cfgPtCentDepMLpromptSel->empty () && (mcParticle.decay () & aod::cf2prongmcpart::Prompt) == 0 )
1218- continue ;
1219- }
12201216 if (mcParticle.cfParticleDaugh0Id () < 0 && mcParticle.cfParticleDaugh1Id () < 0 )
12211217 continue ; // daughters not found
1222- if constexpr (!reflectionSpec)
1223- same->getTrackHistEfficiency ()->Fill (CorrelationContainer::MC, mcParticle.eta (), mcParticle.pt (), 4 , multiplicity, mcCollision.posZ ());
1218+ if constexpr (!reflectionSpec) {
1219+ if (cfgPtCentDepMLpromptSel->empty () || (mcParticle.decay () & aod::cf2prongmcpart::Prompt) != 0 )
1220+ same->getTrackHistEfficiency ()->Fill (CorrelationContainer::MC, mcParticle.eta (), mcParticle.pt (), 4 , multiplicity, mcCollision.posZ ());
1221+ }
12241222 p2indexCache.push_back (mcParticle.globalIndex ());
12251223 }
12261224 }
@@ -1250,6 +1248,8 @@ struct CorrelationTask {
12501248 return false ;
12511249 const auto & mcParticle = mcParticles.iteratorAt (*m - mcParticles.begin ().globalIndex ());
12521250 if constexpr (!reflectionSpec) {
1251+ if (!cfgPtCentDepMLpromptSel->empty () && (mcParticle.decay () & aod::cf2prongmcpart::Prompt) == 0 )
1252+ return true ; // a valid candidate but not a prompt
12531253 same->getTrackHistEfficiency ()->Fill (CorrelationContainer::RecoPrimaries, mcParticle.eta (), mcParticle.pt (), 4 , multiplicity, mcCollision.posZ ());
12541254 } else {
12551255 if ((mcParticle.mcDecay () == aod::cf2prongtrack::D0barToKPiExclusive && (p2track.decay () == aod::cf2prongtrack::D0barToKPiExclusive || p2track.decay () == aod::cf2prongtrack::D0barToKPi)) ||
@@ -1316,7 +1316,7 @@ struct CorrelationTask {
13161316
13171317 if (!(doprocessSameDerived || doprocessSameDerivedMultSet || doprocessSame2ProngDerived || doprocessSame2ProngDerivedML || doprocessSame2Prong2Prong || doprocessSame2Prong2ProngML)) {
13181318 if constexpr (std::experimental::is_detected<HasDecay, typename Particles1::iterator>::value)
1319- fillQA (mcCollision, multiplicity, mcParticles1, mcParticles2);
1319+ fillQA (mcCollision, multiplicity, mcCollision. posZ (), mcParticles1, mcParticles2);
13201320 else
13211321 fillQA (mcCollision, multiplicity, mcParticles1);
13221322 }
0 commit comments