Skip to content

Commit 047c7f6

Browse files
committed
Zvtx axis for the invariant mass. Prompt efficiency fix.
1 parent 8aab04a commit 047c7f6

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

PWGCF/Tasks/correlations.cxx

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)