@@ -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