@@ -108,6 +108,16 @@ struct HfCorrelatorDMesonPairs {
108108 Partition<soa::Join<aod::HfCand2ProngWPid, aod::HfSelD0, aod::HfMlD0>> selectedD0Candidates = aod::hf_sel_candidate_d0::isSelD0 >= selectionFlagD0 || aod::hf_sel_candidate_d0::isSelD0bar >= selectionFlagD0bar;
109109 Partition<soa::Join<aod::HfCand2ProngWPid, aod::HfSelD0, aod::HfMlD0, aod::HfCand2ProngMcRec>> selectedD0CandidatesMc = aod::hf_sel_candidate_d0::isRecoHfFlag >= selectionFlagHf;
110110
111+ // ThnSparse for ML outputScores and Vars
112+ ConfigurableAxis thnConfigAxisBkgScore{" thnConfigAxisBkgScore" , {100 , 0 , 1 }, " Bkg score bins" };
113+ ConfigurableAxis thnConfigAxisSignalScore{" thnConfigAxisSignalScore" , {100 , 0 , 1 }, " Signal score bins" };
114+ ConfigurableAxis thnConfigAxisMass{" thnConfigAxisMass" , {120 , 1.5848 , 2.1848 }, " Cand. inv-mass bins" };
115+ ConfigurableAxis thnConfigAxisPt{" thnConfigAxisPt" , {500 , 0 , 50 }, " Cand. pT bins" };
116+ ConfigurableAxis thnConfigAxisY{" thnConfigAxisY" , {20 , -1 , 1 }, " Cand. rapidity bins" };
117+ ConfigurableAxis thnConfigAxisOrigin{" thnConfigAxisOrigin" , {3 , -0.5 , 2.5 }, " Cand. origin type" };
118+ ConfigurableAxis thnConfigAxisCandType{" thnConfigAxisCandType" , {6 , -0.5 , 5.5 }, " D0 type" };
119+ ConfigurableAxis thnConfigAxisNumPvContr{" thnConfigAxisNumPvContr" , {200 , -0.5 , 199.5 }, " Number of PV contributors" };
120+
111121 HistogramConfigSpec hTH1Pt{HistType::kTH1F , {{180 , 0 ., 36 .}}};
112122 HistogramConfigSpec hTH1Y{HistType::kTH1F , {{100 , -5 ., 5 .}}};
113123 HistogramConfigSpec hTH1NContrib{HistType::kTH1F , {{200 , -0.5 , 199.5 }}};
@@ -261,6 +271,28 @@ struct HfCorrelatorDMesonPairs {
261271 registry.add (" hMassMcRecPrompt" , " D Meson pair candidates;inv. mass (#pi K) (GeV/#it{c}^{2});entries" , {HistType::kTH2F , {{120 , 1.5848 , 2.1848 }, {vbins, " #it{p}_{T} (GeV/#it{c})" }}});
262272 registry.add (" hMassMcRecNonPrompt" , " D Meson pair candidates;inv. mass (#pi K) (GeV/#it{c}^{2});entries" , {HistType::kTH2F , {{120 , 1.5848 , 2.1848 }, {vbins, " #it{p}_{T} (GeV/#it{c})" }}});
263273 registry.add (" hMassMcRecReflections" , " D Meson pair candidates;inv. mass (#pi K) (GeV/#it{c}^{2});entries" , {HistType::kTH2F , {{120 , 1.5848 , 2.1848 }, {vbins, " #it{p}_{T} (GeV/#it{c})" }}});
274+
275+ const AxisSpec thnAxisMass{thnConfigAxisMass, " inv. mass (#pi K) (GeV/#it{c}^{2})" };
276+ const AxisSpec thnAxisPt{thnConfigAxisPt, " #it{p}_{T} (GeV/#it{c})" };
277+ const AxisSpec thnAxisY{thnConfigAxisY, " y" };
278+ const AxisSpec thnAxisOrigin{thnConfigAxisOrigin, " Origin" };
279+ const AxisSpec thnAxisCandType{thnConfigAxisCandType, " D0 type" };
280+ const AxisSpec thnAxisNumPvContr{thnConfigAxisNumPvContr, " Number of PV contributors" };
281+
282+ std::vector<AxisSpec> axes = {thnAxisMass, thnAxisPt, thnAxisY, thnAxisNumPvContr, thnAxisOrigin, thnAxisCandType};
283+ if (applyMl) {
284+ const AxisSpec thnAxisBkgScore{thnConfigAxisBkgScore, " BDT score bkg" };
285+ const AxisSpec thnAxisSignalScore{thnConfigAxisSignalScore, " BDT score signal" };
286+
287+ axes.insert (axes.begin (), thnAxisSignalScore);
288+ axes.insert (axes.begin (), thnAxisBkgScore);
289+
290+ registry.add (" hnDMesonMl" , " THn for D Meson candidates" , HistType::kTHnSparseD , axes);
291+ registry.get <THnSparse>(HIST (" hnDMesonMl" ))->Sumw2 ();
292+ } else {
293+ registry.add (" hnDMeson" , " Thn for D0 candidates" , HistType::kTHnSparseD , axes);
294+ registry.get <THnSparse>(HIST (" hnDMeson" ))->Sumw2 ();
295+ }
264296 }
265297
266298 // / Sets bits to select candidate type for D0
@@ -593,9 +625,19 @@ struct HfCorrelatorDMesonPairs {
593625
594626 if (isDCand1) {
595627 registry.fill (HIST (" hMass" ), hfHelper.invMassD0ToPiK (candidate1), candidate1.pt ());
628+ if (applyMl) {
629+ registry.fill (HIST (" hnDMesonMl" ), outputMlD0Cand1[0 ], outputMlD0Cand1[1 ], hfHelper.invMassD0ToPiK (candidate1), candidate1.pt (), candidate1.y (MassD0), collision.numContrib (), 0 , candidateType1);
630+ } else {
631+ registry.fill (HIST (" hnDMeson" ), hfHelper.invMassD0ToPiK (candidate1), candidate1.pt (), candidate1.y (MassD0), collision.numContrib (), 0 , candidateType1);
632+ }
596633 }
597634 if (isDbarCand1) {
598635 registry.fill (HIST (" hMass" ), hfHelper.invMassD0barToKPi (candidate1), candidate1.pt ());
636+ if (applyMl) {
637+ registry.fill (HIST (" hnDMesonMl" ), outputMlD0barCand1[0 ], outputMlD0barCand1[1 ], hfHelper.invMassD0barToKPi (candidate1), candidate1.pt (), candidate1.y (MassD0), collision.numContrib (), 0 , candidateType1);
638+ } else {
639+ registry.fill (HIST (" hnDMeson" ), hfHelper.invMassD0barToKPi (candidate1), candidate1.pt (), candidate1.y (MassD0), collision.numContrib (), 0 , candidateType1);
640+ }
599641 }
600642
601643 for (auto candidate2 = candidate1 + 1 ; candidate2 != selectedD0CandidatesGrouped.end (); ++candidate2) {
@@ -649,7 +691,7 @@ struct HfCorrelatorDMesonPairs {
649691 }
650692
651693 fillEntry (isDCand1, isDbarCand1, isDCand2, isDbarCand2, candidateType1, candidateType2, hfHelper.yD0 (candidate1), hfHelper.yD0 (candidate2),
652- candidate1.pt (), candidate2.pt (), candidate1.phi (), candidate2.phi (), hfHelper.invMassD0ToPiK (candidate1), hfHelper.invMassD0barToKPi (candidate1),
694+ candidate1.phi (), candidate2.phi (), candidate1.pt (), candidate2.pt (), hfHelper.invMassD0ToPiK (candidate1), hfHelper.invMassD0barToKPi (candidate1),
653695 hfHelper.invMassD0ToPiK (candidate2), hfHelper.invMassD0barToKPi (candidate2));
654696
655697 entryD0PairMl (outputMlD0Cand1, outputMlD0barCand1, outputMlD0Cand2, outputMlD0barCand2);
@@ -751,6 +793,11 @@ struct HfCorrelatorDMesonPairs {
751793 registry.fill (HIST (" hPtCandAfterCut" ), candidate1.pt ());
752794
753795 if (isDCand1) {
796+ if (applyMl) {
797+ registry.fill (HIST (" hnDMesonMl" ), outputMlD0Cand1[0 ], outputMlD0Cand1[1 ], hfHelper.invMassD0ToPiK (candidate1), candidate1.pt (), candidate1.y (MassD0), collision.numContrib (), originRec1, candidateType1);
798+ } else {
799+ registry.fill (HIST (" hnDMeson" ), hfHelper.invMassD0ToPiK (candidate1), candidate1.pt (), candidate1.y (MassD0), collision.numContrib (), originRec1, candidateType1);
800+ }
754801 if (isTrueDCand1) {
755802 registry.fill (HIST (" hMass" ), hfHelper.invMassD0ToPiK (candidate1), candidate1.pt ());
756803 registry.fill (HIST (" hPtVsYVsNContribMcRec" ), candidate1.pt (), hfHelper.yD0 (candidate1), collision.numContrib ());
@@ -767,6 +814,11 @@ struct HfCorrelatorDMesonPairs {
767814 }
768815 }
769816 if (isDbarCand1) {
817+ if (applyMl) {
818+ registry.fill (HIST (" hnDMesonMl" ), outputMlD0barCand1[0 ], outputMlD0barCand1[1 ], hfHelper.invMassD0barToKPi (candidate1), candidate1.pt (), candidate1.y (MassD0), collision.numContrib (), originRec1, candidateType1);
819+ } else {
820+ registry.fill (HIST (" hnDMeson" ), hfHelper.invMassD0barToKPi (candidate1), candidate1.pt (), candidate1.y (MassD0), collision.numContrib (), originRec1, candidateType1);
821+ }
770822 if (isTrueDbarCand1) {
771823 registry.fill (HIST (" hMass" ), hfHelper.invMassD0barToKPi (candidate1), candidate1.pt ());
772824 registry.fill (HIST (" hPtVsYVsNContribMcRec" ), candidate1.pt (), hfHelper.yD0 (candidate1), collision.numContrib ());
0 commit comments