From 303247713b6eeda16954bb49f94ae1f31978bbcc Mon Sep 17 00:00:00 2001 From: Deependra Sharma Date: Tue, 7 Oct 2025 20:47:19 +0000 Subject: [PATCH 1/5] Adding THnSparse for D0toKPiPi0 contribution --- PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx | 36 ++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx b/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx index 801e25e3460..57d6ff1d7de 100644 --- a/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx +++ b/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx @@ -57,6 +57,7 @@ struct HfTaskDstarToD0Pi { Configurable selectionFlagDstarToD0Pi{"selectionFlagDstarToD0Pi", true, "Selection Flag for D* decay to D0 & Pi"}; Configurable isCentStudy{"isCentStudy", true, "Flag to select centrality study"}; Configurable qaEnabled{"qaEnabled", true, "Flag to enable QA histograms"}; + Configurable studyD0ToPiKPi0{"studyD0ToPiKPi0", false, "Flag to study D*->D0(piKpi0)pi channel"}; // CCDB configuration Configurable useWeight{"useWeight", true, "Flag to use weights from CCDB"}; @@ -260,6 +261,17 @@ struct HfTaskDstarToD0Pi { } } + // D0toPiKPi0 study + if (doprocessMcWML && studyD0ToPiKPi0 && isCentStudy) { + registry.add("D0toPiKPi0/hDeltaInvMassVsPtVsCentVsBDTScore", "#Delta #it{M}_{inv} Vs Pt Vs Cent Vs BDTScore for D0toPiKPi0", {HistType::kTHnSparseF, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisCentrality}, {axisBDTScoreBackground}, {axisBDTScorePrompt}, {axisBDTScoreNonPrompt}}}, true); + }else if (doprocessMcWoMl && studyD0ToPiKPi0 && isCentStudy) { + registry.add("D0toPiKPi0/hDeltaInvMassDstar3D", "#Delta #it{M}_{inv} D* Candidate for D0toPiKPi0; inv. mass ((#pi #pi k) - (#pi k)) (GeV/#it{c}^{2});#it{p}_{T} (GeV/#it{c}); FT0M centrality", {HistType::kTH3F, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisCentrality}}}, true); + }else if (doprocessMcWML && studyD0ToPiKPi0 && !isCentStudy) { + registry.add("D0toPiKPi0/hDeltaInvMassVsPtVsBDTScore", "#Delta #it{M}_{inv} Vs Pt Vs BDTScore for D0toPiKPi0", {HistType::kTHnSparseF, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisBDTScoreBackground}, {axisBDTScorePrompt}, {axisBDTScoreNonPrompt}}}, true); + }else if (doprocessMcWoMl && studyD0ToPiKPi0 && !isCentStudy) { + registry.add("D0toPiKPi0/hDeltaInvMassDstar2D", "#Delta #it{M}_{inv} D* Candidate for D0toPiKPi0; inv. mass ((#pi #pi k) - (#pi k)) (GeV/#it{c}^{2});#it{p}_{T} (GeV/#it{c})", {HistType::kTH2F, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}}}, true); + } + // if weights to be applied if (useWeight) { ccdbApi.init(ccdbUrl); @@ -539,7 +551,29 @@ struct HfTaskDstarToD0Pi { } } } - } else { // MC Unmatched (Baground at Reconstruction Level) + }else if(std::abs(candDstarMcRec.flagMcMatchRec()) == hf_decay::hf_cand_dstar::DecayChannelMain::DstarToPiKPiPi0 && std::abs(candDstarMcRec.flagMcMatchRecD0()) == hf_decay::hf_cand_2prong::DecayChannelMain::D0ToPiKPi0){ + // Aplly all selection to study D*->D0(piKpi0)pi channel same as signal channel + // MC Matched but to D*->D0(piKpi0)pi channel + if constexpr (applyMl) { + if (studyD0ToPiKPi0 && isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { + auto deltaMDstar = std::abs(candDstarMcRec.invMassDstar() - candDstarMcRec.invMassD0()); + auto bdtScore = candDstarMcRec.mlProbDstarToD0Pi(); + registry.fill(HIST("D0toPiKPi0/hDeltaInvMassVsPtVsCentVsBDTScore"), deltaMDstar, candDstarMcRec.pt(), centrality, bdtScore[0], bdtScore[1], bdtScore[2]); + } else if (studyD0ToPiKPi0 && !isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { + auto deltaMDstar = std::abs(candDstarMcRec.invMassDstar() - candDstarMcRec.invMassD0()); + auto bdtScore = candDstarMcRec.mlProbDstarToD0Pi(); + registry.fill(HIST("D0toPiKPi0/hDeltaInvMassVsPtVsBDTScore"), deltaMDstar, candDstarMcRec.pt(), bdtScore[0], bdtScore[1], bdtScore[2]); + } + }else { + if (studyD0ToPiKPi0 && isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { + auto deltaMDstar = std::abs(candDstarMcRec.invMassDstar() - candDstarMcRec.invMassD0()); + registry.fill(HIST("D0toPiKPi0/hDeltaInvMassDstar3D"), deltaMDstar, candDstarMcRec.pt(), centrality); + } else if (studyD0ToPiKPi0 && !isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { + auto deltaMDstar = std::abs(candDstarMcRec.invMassDstar() - candDstarMcRec.invMassD0()); + registry.fill(HIST("D0toPiKPi0/hDeltaInvMassDstar2D"), deltaMDstar, candDstarMcRec.pt()); + } + } + }else { // MC Unmatched (Baground at Reconstruction Level) if (qaEnabled) { registry.fill(HIST("QA/hCPASkimD0RecBg"), candDstarMcRec.cpaD0()); registry.fill(HIST("QA/hEtaSkimD0RecBg"), candDstarMcRec.etaD0()); From 5b3472b8e83d058926b696b99bcb6c1a5a9172de Mon Sep 17 00:00:00 2001 From: Deependra Sharma Date: Thu, 9 Oct 2025 08:05:09 +0000 Subject: [PATCH 2/5] clang-formating --- PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx b/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx index a0e0b3b5505..edb58318c06 100644 --- a/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx +++ b/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx @@ -266,11 +266,11 @@ struct HfTaskDstarToD0Pi { // D0toPiKPi0 study if (doprocessMcWML && studyD0ToPiKPi0 && isCentStudy) { registry.add("D0toPiKPi0/hDeltaInvMassVsPtVsCentVsBDTScore", "#Delta #it{M}_{inv} Vs Pt Vs Cent Vs BDTScore for D0toPiKPi0", {HistType::kTHnSparseF, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisCentrality}, {axisBDTScoreBackground}, {axisBDTScorePrompt}, {axisBDTScoreNonPrompt}}}, true); - }else if (doprocessMcWoMl && studyD0ToPiKPi0 && isCentStudy) { + } else if (doprocessMcWoMl && studyD0ToPiKPi0 && isCentStudy) { registry.add("D0toPiKPi0/hDeltaInvMassDstar3D", "#Delta #it{M}_{inv} D* Candidate for D0toPiKPi0; inv. mass ((#pi #pi k) - (#pi k)) (GeV/#it{c}^{2});#it{p}_{T} (GeV/#it{c}); FT0M centrality", {HistType::kTH3F, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisCentrality}}}, true); - }else if (doprocessMcWML && studyD0ToPiKPi0 && !isCentStudy) { + } else if (doprocessMcWML && studyD0ToPiKPi0 && !isCentStudy) { registry.add("D0toPiKPi0/hDeltaInvMassVsPtVsBDTScore", "#Delta #it{M}_{inv} Vs Pt Vs BDTScore for D0toPiKPi0", {HistType::kTHnSparseF, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisBDTScoreBackground}, {axisBDTScorePrompt}, {axisBDTScoreNonPrompt}}}, true); - }else if (doprocessMcWoMl && studyD0ToPiKPi0 && !isCentStudy) { + } else if (doprocessMcWoMl && studyD0ToPiKPi0 && !isCentStudy) { registry.add("D0toPiKPi0/hDeltaInvMassDstar2D", "#Delta #it{M}_{inv} D* Candidate for D0toPiKPi0; inv. mass ((#pi #pi k) - (#pi k)) (GeV/#it{c}^{2});#it{p}_{T} (GeV/#it{c})", {HistType::kTH2F, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}}}, true); } @@ -554,10 +554,10 @@ struct HfTaskDstarToD0Pi { } } } - }else if(std::abs(candDstarMcRec.flagMcMatchRec()) == hf_decay::hf_cand_dstar::DecayChannelMain::DstarToPiKPiPi0 && std::abs(candDstarMcRec.flagMcMatchRecD0()) == hf_decay::hf_cand_2prong::DecayChannelMain::D0ToPiKPi0){ + } else if (std::abs(candDstarMcRec.flagMcMatchRec()) == hf_decay::hf_cand_dstar::DecayChannelMain::DstarToPiKPiPi0 && std::abs(candDstarMcRec.flagMcMatchRecD0()) == hf_decay::hf_cand_2prong::DecayChannelMain::D0ToPiKPi0) { // Aplly all selection to study D*->D0(piKpi0)pi channel same as signal channel // MC Matched but to D*->D0(piKpi0)pi channel - if constexpr (applyMl) { + if constexpr (ApplyMl) { if (studyD0ToPiKPi0 && isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { auto deltaMDstar = std::abs(candDstarMcRec.invMassDstar() - candDstarMcRec.invMassD0()); auto bdtScore = candDstarMcRec.mlProbDstarToD0Pi(); @@ -567,7 +567,7 @@ struct HfTaskDstarToD0Pi { auto bdtScore = candDstarMcRec.mlProbDstarToD0Pi(); registry.fill(HIST("D0toPiKPi0/hDeltaInvMassVsPtVsBDTScore"), deltaMDstar, candDstarMcRec.pt(), bdtScore[0], bdtScore[1], bdtScore[2]); } - }else { + } else { if (studyD0ToPiKPi0 && isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { auto deltaMDstar = std::abs(candDstarMcRec.invMassDstar() - candDstarMcRec.invMassD0()); registry.fill(HIST("D0toPiKPi0/hDeltaInvMassDstar3D"), deltaMDstar, candDstarMcRec.pt(), centrality); @@ -576,7 +576,7 @@ struct HfTaskDstarToD0Pi { registry.fill(HIST("D0toPiKPi0/hDeltaInvMassDstar2D"), deltaMDstar, candDstarMcRec.pt()); } } - }else { // MC Unmatched (Baground at Reconstruction Level) + } else { // MC Unmatched (Baground at Reconstruction Level) if (qaEnabled) { registry.fill(HIST("QA/hCPASkimD0RecBg"), candDstarMcRec.cpaD0()); registry.fill(HIST("QA/hEtaSkimD0RecBg"), candDstarMcRec.etaD0()); From e4ebde5c1d7537fb7446a4a701fac23997baa728 Mon Sep 17 00:00:00 2001 From: Deependra Sharma Date: Thu, 9 Oct 2025 13:20:27 +0000 Subject: [PATCH 3/5] Adding prompt and non-prompt contribution from D0T0PiKPi0 --- PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx | 50 ++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx b/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx index edb58318c06..45cfa4cfe23 100644 --- a/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx +++ b/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx @@ -263,15 +263,24 @@ struct HfTaskDstarToD0Pi { } } - // D0toPiKPi0 study + // inclusive D0ToPiKPi0 study if (doprocessMcWML && studyD0ToPiKPi0 && isCentStudy) { - registry.add("D0toPiKPi0/hDeltaInvMassVsPtVsCentVsBDTScore", "#Delta #it{M}_{inv} Vs Pt Vs Cent Vs BDTScore for D0toPiKPi0", {HistType::kTHnSparseF, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisCentrality}, {axisBDTScoreBackground}, {axisBDTScorePrompt}, {axisBDTScoreNonPrompt}}}, true); + registry.add("D0ToPiKPi0/hDeltaInvMassVsPtVsCentVsBDTScore", "#Delta #it{M}_{inv} Vs Pt Vs Cent Vs BDTScore for D0ToPiKPi0", {HistType::kTHnSparseF, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisCentrality}, {axisBDTScoreBackground}, {axisBDTScorePrompt}, {axisBDTScoreNonPrompt}}}, true); } else if (doprocessMcWoMl && studyD0ToPiKPi0 && isCentStudy) { - registry.add("D0toPiKPi0/hDeltaInvMassDstar3D", "#Delta #it{M}_{inv} D* Candidate for D0toPiKPi0; inv. mass ((#pi #pi k) - (#pi k)) (GeV/#it{c}^{2});#it{p}_{T} (GeV/#it{c}); FT0M centrality", {HistType::kTH3F, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisCentrality}}}, true); + registry.add("D0ToPiKPi0/hDeltaInvMassDstar3D", "#Delta #it{M}_{inv} D* Candidate for D0ToPiKPi0; inv. mass ((#pi #pi k) - (#pi k)) (GeV/#it{c}^{2});#it{p}_{T} (GeV/#it{c}); FT0M centrality", {HistType::kTH3F, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisCentrality}}}, true); } else if (doprocessMcWML && studyD0ToPiKPi0 && !isCentStudy) { - registry.add("D0toPiKPi0/hDeltaInvMassVsPtVsBDTScore", "#Delta #it{M}_{inv} Vs Pt Vs BDTScore for D0toPiKPi0", {HistType::kTHnSparseF, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisBDTScoreBackground}, {axisBDTScorePrompt}, {axisBDTScoreNonPrompt}}}, true); + registry.add("D0ToPiKPi0/hDeltaInvMassVsPtVsBDTScore", "#Delta #it{M}_{inv} Vs Pt Vs BDTScore for D0ToPiKPi0", {HistType::kTHnSparseF, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisBDTScoreBackground}, {axisBDTScorePrompt}, {axisBDTScoreNonPrompt}}}, true); } else if (doprocessMcWoMl && studyD0ToPiKPi0 && !isCentStudy) { - registry.add("D0toPiKPi0/hDeltaInvMassDstar2D", "#Delta #it{M}_{inv} D* Candidate for D0toPiKPi0; inv. mass ((#pi #pi k) - (#pi k)) (GeV/#it{c}^{2});#it{p}_{T} (GeV/#it{c})", {HistType::kTH2F, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}}}, true); + registry.add("D0ToPiKPi0/hDeltaInvMassDstar2D", "#Delta #it{M}_{inv} D* Candidate for D0ToPiKPi0; inv. mass ((#pi #pi k) - (#pi k)) (GeV/#it{c}^{2});#it{p}_{T} (GeV/#it{c})", {HistType::kTH2F, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}}}, true); + } + + // differential (prompt/Non-prompt) D0ToPiKPi0 study + if (doprocessMcWML && studyD0ToPiKPi0) { + registry.add("D0ToPiKPi0/hPromptDeltaInvMassVsPtVsBDTScore", "Prompt #Delta #it{M}_{inv} Vs Pt Vs BDTScore for D0ToPiKPi0", {HistType::kTHnSparseF, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisBDTScoreBackground}, {axisBDTScorePrompt}, {axisBDTScoreNonPrompt}}}, true); + registry.add("D0ToPiKPi0/hNonPromptDeltaInvMassVsPtVsBDTScore", "Non-Prompt #Delta #it{M}_{inv} Vs Pt Vs BDTScore for D0ToPiKPi0", {HistType::kTHnSparseF, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisBDTScoreBackground}, {axisBDTScorePrompt}, {axisBDTScoreNonPrompt}}}, true); + } else if (doprocessMcWoMl && studyD0ToPiKPi0) { + registry.add("D0ToPiKPi0/hPromptDeltaInvMassDstar2D", "Prompt #Delta #it{M}_{inv} D* Candidate for D0ToPiKPi0; inv. mass ((#pi #pi k) - (#pi k)) (GeV/#it{c}^{2});#it{p}_{T} (GeV/#it{c})", {HistType::kTH2F, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}}}, true); + registry.add("D0ToPiKPi0/hNonPromptDeltaInvMassDstar2D", "Non-Prompt #Delta #it{M}_{inv} D* Candidate for D0ToPiKPi0; inv. mass ((#pi #pi k) - (#pi k)) (GeV/#it{c}^{2});#it{p}_{T} (GeV/#it{c})", {HistType::kTH2F, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}}}, true); } // if weights to be applied @@ -557,23 +566,34 @@ struct HfTaskDstarToD0Pi { } else if (std::abs(candDstarMcRec.flagMcMatchRec()) == hf_decay::hf_cand_dstar::DecayChannelMain::DstarToPiKPiPi0 && std::abs(candDstarMcRec.flagMcMatchRecD0()) == hf_decay::hf_cand_2prong::DecayChannelMain::D0ToPiKPi0) { // Aplly all selection to study D*->D0(piKpi0)pi channel same as signal channel // MC Matched but to D*->D0(piKpi0)pi channel + auto deltaMDstar = std::abs(candDstarMcRec.invMassDstar() - candDstarMcRec.invMassD0()); if constexpr (ApplyMl) { + auto bdtScore = candDstarMcRec.mlProbDstarToD0Pi(); + // inclusive study if (studyD0ToPiKPi0 && isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { - auto deltaMDstar = std::abs(candDstarMcRec.invMassDstar() - candDstarMcRec.invMassD0()); - auto bdtScore = candDstarMcRec.mlProbDstarToD0Pi(); - registry.fill(HIST("D0toPiKPi0/hDeltaInvMassVsPtVsCentVsBDTScore"), deltaMDstar, candDstarMcRec.pt(), centrality, bdtScore[0], bdtScore[1], bdtScore[2]); + registry.fill(HIST("D0ToPiKPi0/hDeltaInvMassVsPtVsCentVsBDTScore"), deltaMDstar, candDstarMcRec.pt(), centrality, bdtScore[0], bdtScore[1], bdtScore[2]); } else if (studyD0ToPiKPi0 && !isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { - auto deltaMDstar = std::abs(candDstarMcRec.invMassDstar() - candDstarMcRec.invMassD0()); - auto bdtScore = candDstarMcRec.mlProbDstarToD0Pi(); - registry.fill(HIST("D0toPiKPi0/hDeltaInvMassVsPtVsBDTScore"), deltaMDstar, candDstarMcRec.pt(), bdtScore[0], bdtScore[1], bdtScore[2]); + registry.fill(HIST("D0ToPiKPi0/hDeltaInvMassVsPtVsBDTScore"), deltaMDstar, candDstarMcRec.pt(), bdtScore[0], bdtScore[1], bdtScore[2]); + } + // differential (prompt/Non-prompt) study + if (studyD0ToPiKPi0 && candDstarMcRec.isSelDstarToD0Pi() && (candDstarMcRec.originMcRec() == RecoDecay::OriginType::Prompt)) { + registry.fill(HIST("D0ToPiKPi0/hPromptDeltaInvMassVsPtVsBDTScore"), deltaMDstar, candDstarMcRec.pt(), bdtScore[0], bdtScore[1], bdtScore[2]); + } else if (studyD0ToPiKPi0 && candDstarMcRec.isSelDstarToD0Pi() && (candDstarMcRec.originMcRec() == RecoDecay::OriginType::NonPrompt)) { + registry.fill(HIST("D0ToPiKPi0/hNonPromptDeltaInvMassVsPtVsBDTScore"), deltaMDstar, candDstarMcRec.pt(), bdtScore[0], bdtScore[1], bdtScore[2]); } + } else { + // inclusive study if (studyD0ToPiKPi0 && isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { - auto deltaMDstar = std::abs(candDstarMcRec.invMassDstar() - candDstarMcRec.invMassD0()); - registry.fill(HIST("D0toPiKPi0/hDeltaInvMassDstar3D"), deltaMDstar, candDstarMcRec.pt(), centrality); + registry.fill(HIST("D0ToPiKPi0/hDeltaInvMassDstar3D"), deltaMDstar, candDstarMcRec.pt(), centrality); } else if (studyD0ToPiKPi0 && !isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { - auto deltaMDstar = std::abs(candDstarMcRec.invMassDstar() - candDstarMcRec.invMassD0()); - registry.fill(HIST("D0toPiKPi0/hDeltaInvMassDstar2D"), deltaMDstar, candDstarMcRec.pt()); + registry.fill(HIST("D0ToPiKPi0/hDeltaInvMassDstar2D"), deltaMDstar, candDstarMcRec.pt()); + } + // differential (prompt/Non-prompt) study + if (studyD0ToPiKPi0 && candDstarMcRec.isSelDstarToD0Pi() && (candDstarMcRec.originMcRec() == RecoDecay::OriginType::Prompt)) { + registry.fill(HIST("D0ToPiKPi0/hPromptDeltaInvMassDstar2D"), deltaMDstar, candDstarMcRec.pt()); + } else if (studyD0ToPiKPi0 && candDstarMcRec.isSelDstarToD0Pi() && (candDstarMcRec.originMcRec() == RecoDecay::OriginType::NonPrompt)) { + registry.fill(HIST("D0ToPiKPi0/hNonPromptDeltaInvMassDstar2D"), deltaMDstar, candDstarMcRec.pt()); } } } else { // MC Unmatched (Baground at Reconstruction Level) From 6ddd33def4fbea72897dd8dc68eff896384fc893 Mon Sep 17 00:00:00 2001 From: Deependra Sharma Date: Thu, 9 Oct 2025 17:54:26 +0000 Subject: [PATCH 4/5] code optimisation attempt1 --- PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx | 55 +++++++++++++++-------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx b/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx index 45cfa4cfe23..32bc7121384 100644 --- a/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx +++ b/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx @@ -263,24 +263,26 @@ struct HfTaskDstarToD0Pi { } } - // inclusive D0ToPiKPi0 study - if (doprocessMcWML && studyD0ToPiKPi0 && isCentStudy) { - registry.add("D0ToPiKPi0/hDeltaInvMassVsPtVsCentVsBDTScore", "#Delta #it{M}_{inv} Vs Pt Vs Cent Vs BDTScore for D0ToPiKPi0", {HistType::kTHnSparseF, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisCentrality}, {axisBDTScoreBackground}, {axisBDTScorePrompt}, {axisBDTScoreNonPrompt}}}, true); - } else if (doprocessMcWoMl && studyD0ToPiKPi0 && isCentStudy) { - registry.add("D0ToPiKPi0/hDeltaInvMassDstar3D", "#Delta #it{M}_{inv} D* Candidate for D0ToPiKPi0; inv. mass ((#pi #pi k) - (#pi k)) (GeV/#it{c}^{2});#it{p}_{T} (GeV/#it{c}); FT0M centrality", {HistType::kTH3F, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisCentrality}}}, true); - } else if (doprocessMcWML && studyD0ToPiKPi0 && !isCentStudy) { - registry.add("D0ToPiKPi0/hDeltaInvMassVsPtVsBDTScore", "#Delta #it{M}_{inv} Vs Pt Vs BDTScore for D0ToPiKPi0", {HistType::kTHnSparseF, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisBDTScoreBackground}, {axisBDTScorePrompt}, {axisBDTScoreNonPrompt}}}, true); - } else if (doprocessMcWoMl && studyD0ToPiKPi0 && !isCentStudy) { - registry.add("D0ToPiKPi0/hDeltaInvMassDstar2D", "#Delta #it{M}_{inv} D* Candidate for D0ToPiKPi0; inv. mass ((#pi #pi k) - (#pi k)) (GeV/#it{c}^{2});#it{p}_{T} (GeV/#it{c})", {HistType::kTH2F, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}}}, true); - } + if (studyD0ToPiKPi0) { + // inclusive D0ToPiKPi0 study + if (doprocessMcWML && isCentStudy) { + registry.add("D0ToPiKPi0/hDeltaInvMassVsPtVsCentVsBDTScore", "#Delta #it{M}_{inv} Vs Pt Vs Cent Vs BDTScore for D0ToPiKPi0", {HistType::kTHnSparseF, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisCentrality}, {axisBDTScoreBackground}, {axisBDTScorePrompt}, {axisBDTScoreNonPrompt}}}, true); + } else if (doprocessMcWoMl && isCentStudy) { + registry.add("D0ToPiKPi0/hDeltaInvMassDstar3D", "#Delta #it{M}_{inv} D* Candidate for D0ToPiKPi0; inv. mass ((#pi #pi k) - (#pi k)) (GeV/#it{c}^{2});#it{p}_{T} (GeV/#it{c}); FT0M centrality", {HistType::kTH3F, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisCentrality}}}, true); + } else if (doprocessMcWML && !isCentStudy) { + registry.add("D0ToPiKPi0/hDeltaInvMassVsPtVsBDTScore", "#Delta #it{M}_{inv} Vs Pt Vs BDTScore for D0ToPiKPi0", {HistType::kTHnSparseF, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisBDTScoreBackground}, {axisBDTScorePrompt}, {axisBDTScoreNonPrompt}}}, true); + } else if (doprocessMcWoMl && !isCentStudy) { + registry.add("D0ToPiKPi0/hDeltaInvMassDstar2D", "#Delta #it{M}_{inv} D* Candidate for D0ToPiKPi0; inv. mass ((#pi #pi k) - (#pi k)) (GeV/#it{c}^{2});#it{p}_{T} (GeV/#it{c})", {HistType::kTH2F, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}}}, true); + } - // differential (prompt/Non-prompt) D0ToPiKPi0 study - if (doprocessMcWML && studyD0ToPiKPi0) { - registry.add("D0ToPiKPi0/hPromptDeltaInvMassVsPtVsBDTScore", "Prompt #Delta #it{M}_{inv} Vs Pt Vs BDTScore for D0ToPiKPi0", {HistType::kTHnSparseF, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisBDTScoreBackground}, {axisBDTScorePrompt}, {axisBDTScoreNonPrompt}}}, true); - registry.add("D0ToPiKPi0/hNonPromptDeltaInvMassVsPtVsBDTScore", "Non-Prompt #Delta #it{M}_{inv} Vs Pt Vs BDTScore for D0ToPiKPi0", {HistType::kTHnSparseF, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisBDTScoreBackground}, {axisBDTScorePrompt}, {axisBDTScoreNonPrompt}}}, true); - } else if (doprocessMcWoMl && studyD0ToPiKPi0) { - registry.add("D0ToPiKPi0/hPromptDeltaInvMassDstar2D", "Prompt #Delta #it{M}_{inv} D* Candidate for D0ToPiKPi0; inv. mass ((#pi #pi k) - (#pi k)) (GeV/#it{c}^{2});#it{p}_{T} (GeV/#it{c})", {HistType::kTH2F, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}}}, true); - registry.add("D0ToPiKPi0/hNonPromptDeltaInvMassDstar2D", "Non-Prompt #Delta #it{M}_{inv} D* Candidate for D0ToPiKPi0; inv. mass ((#pi #pi k) - (#pi k)) (GeV/#it{c}^{2});#it{p}_{T} (GeV/#it{c})", {HistType::kTH2F, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}}}, true); + // differential (prompt/Non-prompt) D0ToPiKPi0 study + if (doprocessMcWML) { + registry.add("D0ToPiKPi0/hPromptDeltaInvMassVsPtVsBDTScore", "Prompt #Delta #it{M}_{inv} Vs Pt Vs BDTScore for D0ToPiKPi0", {HistType::kTHnSparseF, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisBDTScoreBackground}, {axisBDTScorePrompt}, {axisBDTScoreNonPrompt}}}, true); + registry.add("D0ToPiKPi0/hNonPromptDeltaInvMassVsPtVsBDTScore", "Non-Prompt #Delta #it{M}_{inv} Vs Pt Vs BDTScore for D0ToPiKPi0", {HistType::kTHnSparseF, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}, {axisBDTScoreBackground}, {axisBDTScorePrompt}, {axisBDTScoreNonPrompt}}}, true); + } else if (doprocessMcWoMl) { + registry.add("D0ToPiKPi0/hPromptDeltaInvMassDstar2D", "Prompt #Delta #it{M}_{inv} D* Candidate for D0ToPiKPi0; inv. mass ((#pi #pi k) - (#pi k)) (GeV/#it{c}^{2});#it{p}_{T} (GeV/#it{c})", {HistType::kTH2F, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}}}, true); + registry.add("D0ToPiKPi0/hNonPromptDeltaInvMassDstar2D", "Non-Prompt #Delta #it{M}_{inv} D* Candidate for D0ToPiKPi0; inv. mass ((#pi #pi k) - (#pi k)) (GeV/#it{c}^{2});#it{p}_{T} (GeV/#it{c})", {HistType::kTH2F, {{axisDeltaInvMass}, {vecPtBins, "#it{p}_{T} (GeV/#it{c})"}}}, true); + } } // if weights to be applied @@ -563,36 +565,35 @@ struct HfTaskDstarToD0Pi { } } } - } else if (std::abs(candDstarMcRec.flagMcMatchRec()) == hf_decay::hf_cand_dstar::DecayChannelMain::DstarToPiKPiPi0 && std::abs(candDstarMcRec.flagMcMatchRecD0()) == hf_decay::hf_cand_2prong::DecayChannelMain::D0ToPiKPi0) { + } else if (studyD0ToPiKPi0 && (std::abs(candDstarMcRec.flagMcMatchRec()) == hf_decay::hf_cand_dstar::DecayChannelMain::DstarToPiKPiPi0) && (std::abs(candDstarMcRec.flagMcMatchRecD0()) == hf_decay::hf_cand_2prong::DecayChannelMain::D0ToPiKPi0)) { // Aplly all selection to study D*->D0(piKpi0)pi channel same as signal channel // MC Matched but to D*->D0(piKpi0)pi channel auto deltaMDstar = std::abs(candDstarMcRec.invMassDstar() - candDstarMcRec.invMassD0()); if constexpr (ApplyMl) { auto bdtScore = candDstarMcRec.mlProbDstarToD0Pi(); // inclusive study - if (studyD0ToPiKPi0 && isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { + if (isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { registry.fill(HIST("D0ToPiKPi0/hDeltaInvMassVsPtVsCentVsBDTScore"), deltaMDstar, candDstarMcRec.pt(), centrality, bdtScore[0], bdtScore[1], bdtScore[2]); - } else if (studyD0ToPiKPi0 && !isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { + } else if (!isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { registry.fill(HIST("D0ToPiKPi0/hDeltaInvMassVsPtVsBDTScore"), deltaMDstar, candDstarMcRec.pt(), bdtScore[0], bdtScore[1], bdtScore[2]); } // differential (prompt/Non-prompt) study - if (studyD0ToPiKPi0 && candDstarMcRec.isSelDstarToD0Pi() && (candDstarMcRec.originMcRec() == RecoDecay::OriginType::Prompt)) { + if (candDstarMcRec.isSelDstarToD0Pi() && (candDstarMcRec.originMcRec() == RecoDecay::OriginType::Prompt)) { registry.fill(HIST("D0ToPiKPi0/hPromptDeltaInvMassVsPtVsBDTScore"), deltaMDstar, candDstarMcRec.pt(), bdtScore[0], bdtScore[1], bdtScore[2]); - } else if (studyD0ToPiKPi0 && candDstarMcRec.isSelDstarToD0Pi() && (candDstarMcRec.originMcRec() == RecoDecay::OriginType::NonPrompt)) { + } else if (candDstarMcRec.isSelDstarToD0Pi() && (candDstarMcRec.originMcRec() == RecoDecay::OriginType::NonPrompt)) { registry.fill(HIST("D0ToPiKPi0/hNonPromptDeltaInvMassVsPtVsBDTScore"), deltaMDstar, candDstarMcRec.pt(), bdtScore[0], bdtScore[1], bdtScore[2]); } - } else { // inclusive study - if (studyD0ToPiKPi0 && isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { + if (isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { registry.fill(HIST("D0ToPiKPi0/hDeltaInvMassDstar3D"), deltaMDstar, candDstarMcRec.pt(), centrality); - } else if (studyD0ToPiKPi0 && !isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { + } else if (!isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { registry.fill(HIST("D0ToPiKPi0/hDeltaInvMassDstar2D"), deltaMDstar, candDstarMcRec.pt()); } // differential (prompt/Non-prompt) study - if (studyD0ToPiKPi0 && candDstarMcRec.isSelDstarToD0Pi() && (candDstarMcRec.originMcRec() == RecoDecay::OriginType::Prompt)) { + if (candDstarMcRec.isSelDstarToD0Pi() && (candDstarMcRec.originMcRec() == RecoDecay::OriginType::Prompt)) { registry.fill(HIST("D0ToPiKPi0/hPromptDeltaInvMassDstar2D"), deltaMDstar, candDstarMcRec.pt()); - } else if (studyD0ToPiKPi0 && candDstarMcRec.isSelDstarToD0Pi() && (candDstarMcRec.originMcRec() == RecoDecay::OriginType::NonPrompt)) { + } else if (candDstarMcRec.isSelDstarToD0Pi() && (candDstarMcRec.originMcRec() == RecoDecay::OriginType::NonPrompt)) { registry.fill(HIST("D0ToPiKPi0/hNonPromptDeltaInvMassDstar2D"), deltaMDstar, candDstarMcRec.pt()); } } From bc052e5a4d0399fbc42ed25883fbeec82c2a17ad Mon Sep 17 00:00:00 2001 From: Deependra Sharma Date: Sat, 11 Oct 2025 07:29:57 +0000 Subject: [PATCH 5/5] code optimisation attempt2 --- PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx b/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx index 32bc7121384..f5a3884f5fa 100644 --- a/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx +++ b/PWGHF/D2H/Tasks/taskDstarToD0Pi.cxx @@ -565,35 +565,35 @@ struct HfTaskDstarToD0Pi { } } } - } else if (studyD0ToPiKPi0 && (std::abs(candDstarMcRec.flagMcMatchRec()) == hf_decay::hf_cand_dstar::DecayChannelMain::DstarToPiKPiPi0) && (std::abs(candDstarMcRec.flagMcMatchRecD0()) == hf_decay::hf_cand_2prong::DecayChannelMain::D0ToPiKPi0)) { + } else if (studyD0ToPiKPi0 && candDstarMcRec.isSelDstarToD0Pi() && (std::abs(candDstarMcRec.flagMcMatchRec()) == hf_decay::hf_cand_dstar::DecayChannelMain::DstarToPiKPiPi0) && (std::abs(candDstarMcRec.flagMcMatchRecD0()) == hf_decay::hf_cand_2prong::DecayChannelMain::D0ToPiKPi0)) { // Aplly all selection to study D*->D0(piKpi0)pi channel same as signal channel // MC Matched but to D*->D0(piKpi0)pi channel auto deltaMDstar = std::abs(candDstarMcRec.invMassDstar() - candDstarMcRec.invMassD0()); if constexpr (ApplyMl) { auto bdtScore = candDstarMcRec.mlProbDstarToD0Pi(); // inclusive study - if (isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { + if (isCentStudy) { registry.fill(HIST("D0ToPiKPi0/hDeltaInvMassVsPtVsCentVsBDTScore"), deltaMDstar, candDstarMcRec.pt(), centrality, bdtScore[0], bdtScore[1], bdtScore[2]); - } else if (!isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { + } else { registry.fill(HIST("D0ToPiKPi0/hDeltaInvMassVsPtVsBDTScore"), deltaMDstar, candDstarMcRec.pt(), bdtScore[0], bdtScore[1], bdtScore[2]); } // differential (prompt/Non-prompt) study - if (candDstarMcRec.isSelDstarToD0Pi() && (candDstarMcRec.originMcRec() == RecoDecay::OriginType::Prompt)) { + if (candDstarMcRec.originMcRec() == RecoDecay::OriginType::Prompt) { registry.fill(HIST("D0ToPiKPi0/hPromptDeltaInvMassVsPtVsBDTScore"), deltaMDstar, candDstarMcRec.pt(), bdtScore[0], bdtScore[1], bdtScore[2]); - } else if (candDstarMcRec.isSelDstarToD0Pi() && (candDstarMcRec.originMcRec() == RecoDecay::OriginType::NonPrompt)) { + } else if (candDstarMcRec.originMcRec() == RecoDecay::OriginType::NonPrompt) { registry.fill(HIST("D0ToPiKPi0/hNonPromptDeltaInvMassVsPtVsBDTScore"), deltaMDstar, candDstarMcRec.pt(), bdtScore[0], bdtScore[1], bdtScore[2]); } - } else { + } else { // without ML // inclusive study - if (isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { + if (isCentStudy) { registry.fill(HIST("D0ToPiKPi0/hDeltaInvMassDstar3D"), deltaMDstar, candDstarMcRec.pt(), centrality); - } else if (!isCentStudy && candDstarMcRec.isSelDstarToD0Pi()) { + } else { registry.fill(HIST("D0ToPiKPi0/hDeltaInvMassDstar2D"), deltaMDstar, candDstarMcRec.pt()); } // differential (prompt/Non-prompt) study - if (candDstarMcRec.isSelDstarToD0Pi() && (candDstarMcRec.originMcRec() == RecoDecay::OriginType::Prompt)) { + if (candDstarMcRec.originMcRec() == RecoDecay::OriginType::Prompt) { registry.fill(HIST("D0ToPiKPi0/hPromptDeltaInvMassDstar2D"), deltaMDstar, candDstarMcRec.pt()); - } else if (candDstarMcRec.isSelDstarToD0Pi() && (candDstarMcRec.originMcRec() == RecoDecay::OriginType::NonPrompt)) { + } else if (candDstarMcRec.originMcRec() == RecoDecay::OriginType::NonPrompt) { registry.fill(HIST("D0ToPiKPi0/hNonPromptDeltaInvMassDstar2D"), deltaMDstar, candDstarMcRec.pt()); } }