Skip to content

Commit 736dc1a

Browse files
authored
PWGHF: Add process function for MC with DecayTypeCheck and D meson ML in B0 reduced task (AliceO2Group#7854)
* Add process function for MC with DecayTypeCheck and D meson ML * Add Lc check for mother particle * Remove constraint on downscale factor < 1 and allow the tables to be mergeable at analysis level
1 parent ba3f292 commit 736dc1a

File tree

2 files changed

+53
-36
lines changed

2 files changed

+53
-36
lines changed

PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,7 @@ struct HfDataCreatorCharmHadPiReduced {
425425
// b-hadron hypothesis
426426
std::array<int, 3> bHadronMotherHypos = {Pdg::kB0, Pdg::kBS, Pdg::kLambdaB0};
427427
// c-hadron hypothesis
428-
std::array<int, 3> cHadronMotherHypos = {Pdg::kDPlus, Pdg::kDS, Pdg::kDStar};
428+
std::array<int, 4> cHadronMotherHypos = {Pdg::kDPlus, Pdg::kDS, Pdg::kDStar, Pdg::kLambdaCPlus};
429429

430430
for (const auto& bHadronMotherHypo : bHadronMotherHypos) {
431431
int index0Mother = RecoDecay::getMother(particlesMc, particleProng0, bHadronMotherHypo, true);
@@ -459,6 +459,7 @@ struct HfDataCreatorCharmHadPiReduced {
459459
// Pdg::kDPlus + Pdg::kDStar (if D+ is the mother and D*+ -> D+ π0/γ)
460460
// Pdg::kDStar (if D*+ is the mother and D*+ -> D0 π+)
461461
// Pdg::kDS (if Ds is the mother)
462+
// Pdg::kLambdaCPlus (if Λc+ is the mother)
462463
pdgCodeCharmMother += std::abs(particlesMc.rawIteratorAt(index0CharmMother).pdgCode());
463464
}
464465
}

PWGHF/D2H/Tasks/taskB0Reduced.cxx

Lines changed: 51 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -145,11 +145,6 @@ struct HfTaskB0Reduced {
145145
LOGP(fatal, "Only one process function for MC can be enabled at a time.");
146146
}
147147

148-
if (((doprocessData || doprocessDataWithDmesMl) && fillTree && downSampleBkgFactor >= 1.) ||
149-
((doprocessMc || doprocessMcWithDmesMl) && fillTree && fillBackground && downSampleBkgFactor >= 1.)) {
150-
LOGP(fatal, "Set downSampleBkgFactor below unity when filling tree with background.");
151-
}
152-
153148
const AxisSpec axisMlScore{100, 0.f, 1.f};
154149
const AxisSpec axisMassB0{300, 4.5f, 6.0f};
155150
const AxisSpec axisMassDminus{300, 1.75f, 2.05f};
@@ -206,7 +201,7 @@ struct HfTaskB0Reduced {
206201
}
207202
}
208203

209-
if (doprocessMc || doprocessMcWithDecayTypeCheck || doprocessMcWithDmesMl || doprocessMcWithB0Ml || doprocessMcWithB0MlAndDecayTypeCheck) {
204+
if (doprocessMc || doprocessMcWithDecayTypeCheck || doprocessMcWithDmesMl || doprocessMcWithDmesMlAndDecayTypeCheck || doprocessMcWithB0Ml || doprocessMcWithB0MlAndDecayTypeCheck) {
210205
if (fillHistograms) {
211206
// gen histos
212207
registry.add("hEtaGen", "B^{0} particles (generated);#it{p}_{T}^{gen}(B^{0}) (GeV/#it{c});#it{#eta}^{gen}(B^{0});entries", {HistType::kTH2F, {axisPtB0, axisEta}});
@@ -261,7 +256,7 @@ struct HfTaskB0Reduced {
261256
registry.add("hCospXyDRecBg", "B^{0} candidates (unmatched);#it{p}_{T}(D^{#minus}) (GeV/#it{c});D^{#minus} candidate cos(#vartheta_{P}^{XY});entries", {HistType::kTH2F, {axisPtDminus, axisCosp}});
262257
}
263258
// MC checks
264-
if (doprocessMcWithDecayTypeCheck || doprocessMcWithB0MlAndDecayTypeCheck) {
259+
if (doprocessMcWithDecayTypeCheck || doprocessMcWithB0MlAndDecayTypeCheck || doprocessMcWithDmesMlAndDecayTypeCheck) {
265260
constexpr uint8_t kNBinsDecayTypeMc = hf_cand_b0::DecayTypeMc::NDecayTypeMc;
266261
TString labels[kNBinsDecayTypeMc];
267262
labels[hf_cand_b0::DecayTypeMc::B0ToDplusPiToPiKPiPi] = "B^{0} #rightarrow (D^{#minus} #rightarrow #pi^{#minus} K^{#plus} #pi^{#minus}) #pi^{#plus}";
@@ -275,7 +270,7 @@ struct HfTaskB0Reduced {
275270
}
276271
}
277272
// ML scores of D- daughter
278-
if (doprocessMcWithDmesMl) {
273+
if (doprocessMcWithDmesMl || doprocessMcWithDmesMlAndDecayTypeCheck) {
279274
// signal
280275
registry.add("hMlScoreBkgDRecSig", "B^{0} candidates (matched);#it{p}_{T}(D^{#minus}) (GeV/#it{c});prong0, D^{#minus} ML background score;entries", {HistType::kTH2F, {axisPtDminus, axisMlScore}});
281276
registry.add("hMlScorePromptDRecSig", "B^{0} candidates (matched);#it{p}_{T}(D^{#minus}) (GeV/#it{c});prong0, D^{#minus} ML prompt score;entries", {HistType::kTH2F, {axisPtDminus, axisMlScore}});
@@ -531,26 +526,27 @@ struct HfTaskB0Reduced {
531526
isSignal,
532527
flagWrongCollision,
533528
ptMother);
534-
}
535-
if constexpr (withDecayTypeCheck) {
536-
float candidateMlScoreSig = -1;
537-
if constexpr (withB0Ml) {
538-
candidateMlScoreSig = candidate.mlProbB0ToDPi();
529+
530+
if constexpr (withDecayTypeCheck) {
531+
float candidateMlScoreSig = -1;
532+
if constexpr (withB0Ml) {
533+
candidateMlScoreSig = candidate.mlProbB0ToDPi();
534+
}
535+
hfRedB0McCheck(
536+
flagMcMatchRec,
537+
flagWrongCollision,
538+
invMassD,
539+
ptD,
540+
invMassB0,
541+
ptCandB0,
542+
candidateMlScoreSig,
543+
candidate.pdgCodeBeautyMother(),
544+
candidate.pdgCodeCharmMother(),
545+
candidate.pdgCodeProng0(),
546+
candidate.pdgCodeProng1(),
547+
candidate.pdgCodeProng2(),
548+
candidate.pdgCodeProng3());
539549
}
540-
hfRedB0McCheck(
541-
flagMcMatchRec,
542-
flagWrongCollision,
543-
invMassD,
544-
ptD,
545-
invMassB0,
546-
ptCandB0,
547-
candidateMlScoreSig,
548-
candidate.pdgCodeBeautyMother(),
549-
candidate.pdgCodeCharmMother(),
550-
candidate.pdgCodeProng0(),
551-
candidate.pdgCodeProng1(),
552-
candidate.pdgCodeProng2(),
553-
candidate.pdgCodeProng3());
554550
}
555551
}
556552
}
@@ -604,7 +600,7 @@ struct HfTaskB0Reduced {
604600
}
605601
fillCand<false, false, false, false>(candidate, candidatesD);
606602
} // candidate loop
607-
} // processData
603+
} // processData
608604
PROCESS_SWITCH(HfTaskB0Reduced, processData, "Process data without ML scores for B0 and D daughter", true);
609605

610606
void processDataWithDmesMl(soa::Filtered<soa::Join<aod::HfRedCandB0, aod::HfRedB0DpMls, aod::HfSelB0ToDPi>> const& candidates,
@@ -617,7 +613,7 @@ struct HfTaskB0Reduced {
617613
}
618614
fillCand<false, false, true, false>(candidate, candidatesD);
619615
} // candidate loop
620-
} // processDataWithDmesMl
616+
} // processDataWithDmesMl
621617
PROCESS_SWITCH(HfTaskB0Reduced, processDataWithDmesMl, "Process data with(out) ML scores for D daughter (B0)", false);
622618

623619
void processDataWithB0Ml(soa::Filtered<soa::Join<aod::HfRedCandB0, aod::HfMlB0ToDPi, aod::HfSelB0ToDPi>> const& candidates,
@@ -630,7 +626,7 @@ struct HfTaskB0Reduced {
630626
}
631627
fillCand<false, false, false, true>(candidate, candidatesD);
632628
} // candidate loop
633-
} // processDataWithB0Ml
629+
} // processDataWithB0Ml
634630
PROCESS_SWITCH(HfTaskB0Reduced, processDataWithB0Ml, "Process data with(out) ML scores for B0 (D daughter)", false);
635631

636632
void processMc(soa::Filtered<soa::Join<aod::HfRedCandB0, aod::HfSelB0ToDPi, aod::HfMcRecRedB0s>> const& candidates,
@@ -650,7 +646,7 @@ struct HfTaskB0Reduced {
650646
for (const auto& particle : mcParticles) {
651647
fillCandMcGen(particle);
652648
} // gen
653-
} // processMc
649+
} // processMc
654650
PROCESS_SWITCH(HfTaskB0Reduced, processMc, "Process MC without ML scores for B0 and D daughter", false);
655651

656652
void processMcWithDecayTypeCheck(soa::Filtered<soa::Join<aod::HfRedCandB0, aod::HfSelB0ToDPi, aod::HfMcRecRedB0s, aod::HfMcCheckB0s>> const& candidates,
@@ -670,7 +666,7 @@ struct HfTaskB0Reduced {
670666
for (const auto& particle : mcParticles) {
671667
fillCandMcGen(particle);
672668
} // gen
673-
} // processMc
669+
} // processMc
674670
PROCESS_SWITCH(HfTaskB0Reduced, processMcWithDecayTypeCheck, "Process MC with decay type check and without ML scores for B0 and D daughter", false);
675671

676672
void processMcWithDmesMl(soa::Filtered<soa::Join<aod::HfRedCandB0, aod::HfRedB0DpMls, aod::HfSelB0ToDPi, aod::HfMcRecRedB0s>> const& candidates,
@@ -690,9 +686,29 @@ struct HfTaskB0Reduced {
690686
for (const auto& particle : mcParticles) {
691687
fillCandMcGen(particle);
692688
} // gen
693-
} // processMcWithDmesMl
689+
} // processMcWithDmesMl
694690
PROCESS_SWITCH(HfTaskB0Reduced, processMcWithDmesMl, "Process MC with(out) ML scores for D daughter (B0)", false);
695691

692+
void processMcWithDmesMlAndDecayTypeCheck(soa::Filtered<soa::Join<aod::HfRedCandB0, aod::HfRedB0DpMls, aod::HfSelB0ToDPi, aod::HfMcRecRedB0s, aod::HfMcCheckB0s>> const& candidates,
693+
aod::HfMcGenRedB0s const& mcParticles,
694+
aod::HfRed3Prongs const& candidatesD,
695+
TracksPion const&)
696+
{
697+
// MC rec
698+
for (const auto& candidate : candidates) {
699+
if (yCandRecoMax >= 0. && std::abs(hfHelper.yB0(candidate)) > yCandRecoMax) {
700+
continue;
701+
}
702+
fillCand<true, true, true, false>(candidate, candidatesD);
703+
} // rec
704+
705+
// MC gen. level
706+
for (const auto& particle : mcParticles) {
707+
fillCandMcGen(particle);
708+
} // gen
709+
} // processMc
710+
PROCESS_SWITCH(HfTaskB0Reduced, processMcWithDmesMlAndDecayTypeCheck, "Process MC with decay type check and with(out) ML scores for B0 (D daughter)", false);
711+
696712
void processMcWithB0Ml(soa::Filtered<soa::Join<aod::HfRedCandB0, aod::HfMlB0ToDPi, aod::HfSelB0ToDPi, aod::HfMcRecRedB0s>> const& candidates,
697713
aod::HfMcGenRedB0s const& mcParticles,
698714
aod::HfRed3Prongs const& candidatesD,
@@ -710,7 +726,7 @@ struct HfTaskB0Reduced {
710726
for (const auto& particle : mcParticles) {
711727
fillCandMcGen(particle);
712728
} // gen
713-
} // processMcWithB0Ml
729+
} // processMcWithB0Ml
714730
PROCESS_SWITCH(HfTaskB0Reduced, processMcWithB0Ml, "Process MC with(out) ML scores for B0 (D daughter)", false);
715731

716732
void processMcWithB0MlAndDecayTypeCheck(soa::Filtered<soa::Join<aod::HfRedCandB0, aod::HfMlB0ToDPi, aod::HfSelB0ToDPi, aod::HfMcRecRedB0s, aod::HfMcCheckB0s>> const& candidates,
@@ -730,7 +746,7 @@ struct HfTaskB0Reduced {
730746
for (const auto& particle : mcParticles) {
731747
fillCandMcGen(particle);
732748
} // gen
733-
} // processMc
749+
} // processMc
734750
PROCESS_SWITCH(HfTaskB0Reduced, processMcWithB0MlAndDecayTypeCheck, "Process MC with decay type check and with(out) ML scores for B0 (D daughter)", false);
735751
}; // struct
736752

0 commit comments

Comments
 (0)