Skip to content

Commit ccccbf3

Browse files
authored
[PWGHF] Add sparse to compute the BDT selection systematic in correlatorDMesonPairs.cxx (#10334)
1 parent 5ca0c2a commit ccccbf3

File tree

1 file changed

+53
-1
lines changed

1 file changed

+53
-1
lines changed

PWGHF/HFC/TableProducer/correlatorDMesonPairs.cxx

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)