Skip to content

Commit 0bf7dfa

Browse files
authored
[PWGHF] Adding Centrality Information to McRec for Lc Correlator and Correlation Task (#17380)
1 parent d9830c0 commit 0bf7dfa

2 files changed

Lines changed: 65 additions & 32 deletions

File tree

PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -696,7 +696,11 @@ struct HfCorrelatorLcHadrons {
696696
}
697697
//}
698698
}
699-
float cent = 100.0; // will be updated later
699+
700+
float cent = 0.;
701+
if (useCentrality) {
702+
cent = collision.centFT0M();
703+
}
700704

701705
// Lc-Hadron correlation dedicated section
702706
// if the candidate is selected as Lc, search for Hadron ad evaluate correlations
@@ -908,8 +912,8 @@ struct HfCorrelatorLcHadrons {
908912
}
909913
}
910914

911-
int8_t const chargeLc = pdg->GetParticle(particle.pdgCode())->Charge(); // Retrieve charge
912-
int8_t const chargeAssoc = pdg->GetParticle(particleAssoc.pdgCode())->Charge(); // Retrieve charge
915+
auto const chargeLc = static_cast<int8_t>(pdg->GetParticle(particle.pdgCode())->Charge()); // Retrieve charge
916+
auto const chargeAssoc = static_cast<int8_t>(pdg->GetParticle(particleAssoc.pdgCode())->Charge()); // Retrieve charge
913917

914918
int trackOrigin = RecoDecay::getCharmHadronOrigin(mcParticles, particleAssoc, true);
915919
registry.fill(HIST("hPtParticleAssocMcGen"), particleAssoc.pt());
@@ -1007,7 +1011,7 @@ struct HfCorrelatorLcHadrons {
10071011
TracksWithMc const& tracks,
10081012
aod::McParticles const& mcParticles)
10091013
{
1010-
BinningType const corrBinning{{binsZVtx, binsMultiplicityMc}, true};
1014+
BinningType const corrBinningMcRec{{binsZVtx, binsMultiplicityMc}, true};
10111015
for (const auto& candidate : candidates) {
10121016
if (std::abs(HfHelper::yLc(candidate)) > yCandMax || candidate.pt() < ptCandMin || candidate.pt() > ptCandMax) {
10131017
continue;
@@ -1043,11 +1047,11 @@ struct HfCorrelatorLcHadrons {
10431047
}
10441048
}
10451049
auto tracksTuple = std::make_tuple(candidates, tracks);
1046-
Pair<SelCollisionsWithLc, CandidatesLcMcRec, TracksWithMc, BinningType> const pairMcRec{corrBinning, numberEventsMixed, -1, collisions, tracksTuple, &cache};
1050+
Pair<SelCollisionsWithLc, CandidatesLcMcRec, TracksWithMc, BinningType> const pairMcRec{corrBinningMcRec, numberEventsMixed, -1, collisions, tracksTuple, &cache};
10471051

10481052
for (const auto& [c1, tracks1, c2, tracks2] : pairMcRec) {
1049-
int poolBin = corrBinning.getBin(std::make_tuple(c2.posZ(), c2.multFT0M()));
1050-
int const poolBinLc = corrBinning.getBin(std::make_tuple(c1.posZ(), c1.multFT0M()));
1053+
int poolBin = corrBinningMcRec.getBin(std::make_tuple(c2.posZ(), c2.multFT0M()));
1054+
int const poolBinLc = corrBinningMcRec.getBin(std::make_tuple(c1.posZ(), c1.multFT0M()));
10511055
registry.fill(HIST("hMultFT0M"), c1.multFT0M());
10521056
registry.fill(HIST("hZvtx"), c1.posZ());
10531057
registry.fill(HIST("hTracksPoolBin"), poolBin);
@@ -1153,9 +1157,9 @@ struct HfCorrelatorLcHadrons {
11531157
if (pidTrkApplied && (std::abs(particleAssoc.pdgCode()) != kProton)) {
11541158
continue; // proton PID
11551159
}
1156-
int8_t const chargeLc = pdg->GetParticle(candidate.pdgCode())->Charge(); // Retrieve charge
1157-
int8_t const chargeAssoc = pdg->GetParticle(particleAssoc.pdgCode())->Charge(); // Retrieve charge
1158-
float cent = 100.0; // will be updated later
1160+
auto const chargeLc = static_cast<int8_t>(pdg->GetParticle(candidate.pdgCode())->Charge()); // Retrieve charge
1161+
auto const chargeAssoc = static_cast<int8_t>(pdg->GetParticle(particleAssoc.pdgCode())->Charge()); // Retrieve charge
1162+
float cent = 100.0; // will be updated later
11591163

11601164
int trackOrigin = RecoDecay::getCharmHadronOrigin(mcParticles, particleAssoc, true);
11611165
bool isLcPrompt = candidate.originMcGen() == RecoDecay::OriginType::Prompt;

PWGHF/HFC/Tasks/taskCorrelationLcHadrons.cxx

Lines changed: 51 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
#include <THnSparse.h>
5353
#include <TString.h>
5454

55+
#include <array>
5556
#include <chrono>
5657
#include <cstddef>
5758
#include <cstdint>
@@ -87,20 +88,37 @@ const TString stringMcGenLcFd = "MC gen, non-prompt #Lambda_c;";
8788

8889
// definition of vectors for standard ptbin and invariant mass configurables
8990
const int nPtBinsCorrelations = 8;
90-
const double pTBinsCorrelations[nPtBinsCorrelations + 1] = {0., 2., 4., 6., 8., 12., 16., 24., 99.};
91-
const auto vecBinsPtCorrelations = std::vector<double>{pTBinsCorrelations, pTBinsCorrelations + nPtBinsCorrelations + 1};
92-
const double signalRegionInnerDefault[nPtBinsCorrelations] = {2.269, 2.269, 2.269, 2.269, 2.269, 2.269, 2.269, 2.269};
93-
const double signalRegionOuterDefault[nPtBinsCorrelations] = {2.309, 2.309, 2.309, 2.309, 2.309, 2.309, 2.309, 2.309};
94-
const double sidebandLeftOuterDefault[nPtBinsCorrelations] = {2.209, 2.209, 2.209, 2.209, 2.209, 2.209, 2.209, 2.209};
95-
const double sidebandLeftInnerDefault[nPtBinsCorrelations] = {2.249, 2.249, 2.249, 2.249, 2.249, 2.249, 2.249, 2.249};
96-
const double sidebandRightInnerDefault[nPtBinsCorrelations] = {2.329, 2.329, 2.329, 2.329, 2.329, 2.329, 2.329, 2.329};
97-
const double sidebandRightOuterDefault[nPtBinsCorrelations] = {2.369, 2.369, 2.369, 2.369, 2.369, 2.369, 2.369, 2.369};
98-
const auto vecSignalRegionInner = std::vector<double>{signalRegionInnerDefault, signalRegionInnerDefault + nPtBinsCorrelations};
99-
const auto vecSignalRegionOuter = std::vector<double>{signalRegionOuterDefault, signalRegionOuterDefault + nPtBinsCorrelations};
100-
const auto vecSidebandLeftInner = std::vector<double>{sidebandLeftInnerDefault, sidebandLeftInnerDefault + nPtBinsCorrelations};
101-
const auto vecSidebandLeftOuter = std::vector<double>{sidebandLeftOuterDefault, sidebandLeftOuterDefault + nPtBinsCorrelations};
102-
const auto vecSidebandRightInner = std::vector<double>{sidebandRightInnerDefault, sidebandRightInnerDefault + nPtBinsCorrelations};
103-
const auto vecSidebandRightOuter = std::vector<double>{sidebandRightOuterDefault, sidebandRightOuterDefault + nPtBinsCorrelations};
91+
92+
const std::array<double, nPtBinsCorrelations + 1> pTBinsCorrelations = {
93+
0., 2., 4., 6., 8., 12., 16., 24., 99.};
94+
const auto vecBinsPtCorrelations =
95+
std::vector<double>{pTBinsCorrelations.begin(), pTBinsCorrelations.end()};
96+
97+
const std::array<double, nPtBinsCorrelations> signalRegionInnerDefault = {
98+
2.269, 2.269, 2.269, 2.269, 2.269, 2.269, 2.269, 2.269};
99+
const std::array<double, nPtBinsCorrelations> signalRegionOuterDefault = {
100+
2.309, 2.309, 2.309, 2.309, 2.309, 2.309, 2.309, 2.309};
101+
const std::array<double, nPtBinsCorrelations> sidebandLeftOuterDefault = {
102+
2.209, 2.209, 2.209, 2.209, 2.209, 2.209, 2.209, 2.209};
103+
const std::array<double, nPtBinsCorrelations> sidebandLeftInnerDefault = {
104+
2.249, 2.249, 2.249, 2.249, 2.249, 2.249, 2.249, 2.249};
105+
const std::array<double, nPtBinsCorrelations> sidebandRightInnerDefault = {
106+
2.329, 2.329, 2.329, 2.329, 2.329, 2.329, 2.329, 2.329};
107+
const std::array<double, nPtBinsCorrelations> sidebandRightOuterDefault = {
108+
2.369, 2.369, 2.369, 2.369, 2.369, 2.369, 2.369, 2.369};
109+
110+
const auto vecSignalRegionInner =
111+
std::vector<double>{signalRegionInnerDefault.begin(), signalRegionInnerDefault.end()};
112+
const auto vecSignalRegionOuter =
113+
std::vector<double>{signalRegionOuterDefault.begin(), signalRegionOuterDefault.end()};
114+
const auto vecSidebandLeftInner =
115+
std::vector<double>{sidebandLeftInnerDefault.begin(), sidebandLeftInnerDefault.end()};
116+
const auto vecSidebandLeftOuter =
117+
std::vector<double>{sidebandLeftOuterDefault.begin(), sidebandLeftOuterDefault.end()};
118+
const auto vecSidebandRightInner =
119+
std::vector<double>{sidebandRightInnerDefault.begin(), sidebandRightInnerDefault.end()};
120+
const auto vecSidebandRightOuter =
121+
std::vector<double>{sidebandRightOuterDefault.begin(), sidebandRightOuterDefault.end()};
104122

105123
/// Lc-Hadron correlation pair filling task, from pair tables - for real data and data-like analysis (i.e. reco-level w/o matching request via Mc truth)
106124
struct HfTaskCorrelationLcHadrons {
@@ -268,7 +286,7 @@ struct HfTaskCorrelationLcHadrons {
268286
registry.add("hDeltaPhiPtIntSidebandsMcRec", stringLcHadron + stringSideband + stringDeltaPhi + "entries", {HistType::kTH1D, {axisDeltaPhi}});
269287
registry.add("hCorrel2DPtIntSidebandsMcRec", stringLcHadron + stringSideband + stringDeltaPhi + stringDeltaEta + "entries", {HistType::kTH2F, {{axisDeltaPhi}, {axisDeltaEta}}});
270288
registry.add("hCorrel2DVsPtSidebandsMcRec", stringLcHadron + stringSideband + stringDeltaPhi + stringDeltaEta + stringPtLc + stringPtHadron + "entries", {HistType::kTHnSparseD, {{axisDeltaPhi}, {axisDeltaEta}, {axisPtCorr}, {axisPtHadron}, {axisPoolBin}}});
271-
registry.add("hCorrel2DVsPtPhysicalPrimaryMcRec", stringLcHadron + "(only true primary particles)" + stringSignal, {HistType::kTHnSparseD, {{axisDeltaPhi}, {axisDeltaEta}, {axisPtLc}, {axisPtHadron}, {axisLcPrompt}, {axisPoolBin}}});
289+
registry.add("hCorrel2DVsPtPhysicalPrimaryMcRec", stringLcHadron + "(only true primary particles)" + stringSignal, {HistType::kTHnSparseD, {{axisDeltaPhi}, {axisDeltaEta}, {axisPtLc}, {axisPtHadron}, {axisLcPrompt}, {axisPoolBin}, {axisCentFT0M}}});
272290
registry.add("hCorrel2DVsPtTrueLcPhysicalPrimaryMcRec", stringLcHadron + "(only true Lc, and true primary particles)" + stringSignal, {HistType::kTHnSparseD, {{axisDeltaPhi}, {axisDeltaEta}, {axisPtLc}, {axisPtHadron}, {axisLcPrompt}, {axisPoolBin}}});
273291
registry.add("hDeltaEtaPtIntSidebandLeftMcRec", stringLcHadron + "Left" + stringSideband + stringDeltaPhi + stringDeltaEta + stringPtLc + stringPtHadron + "entries", {HistType::kTH1D, {axisDeltaEta}});
274292
registry.add("hDeltaPhiPtIntSidebandLeftMcRec", stringLcHadron + "Left" + stringSideband + stringDeltaPhi + stringDeltaEta + stringPtLc + stringPtHadron + "entries", {HistType::kTH1D, {axisDeltaPhi}});
@@ -282,8 +300,8 @@ struct HfTaskCorrelationLcHadrons {
282300
registry.add("hCorrel2DVsPtSignalRegionNonPromptLcNonPromptHadronMcRec", stringLcHadron + " signal region PromptLc - NonPrompt Track MC reco", {HistType::kTHnSparseD, {{axisDeltaPhi}, {axisDeltaEta}, {axisPtLc}, {axisPtHadron}, {axisPoolBin}}});
283301
registry.add("hCorrel2DVsPtSignalRegionTruePromptLcPromptHadronMcRec", stringLcHadron + "signal region and true PromptLc - Prompt Track MC reco", {HistType::kTHnSparseD, {{axisDeltaPhi}, {axisDeltaEta}, {axisPtLc}, {axisPtHadron}, {axisPoolBin}}});
284302
registry.add("hCorrel2DVsPtSignalRegionTrueNonPromptLcNonPromptHadronMcRec", stringLcHadron + " signal region and true PromptLc - NonPrompt Track MC reco", {HistType::kTHnSparseD, {{axisDeltaPhi}, {axisDeltaEta}, {axisPtLc}, {axisPtHadron}, {axisPoolBin}}});
285-
registry.add("hCorrel2DVsPtSignalMcRec", stringLcHadron + stringSignal + stringDeltaPhi + stringDeltaEta + stringPtLc + stringPtHadron + "entries", {HistType::kTHnSparseD, {{axisDeltaPhi}, {axisDeltaEta}, {axisPtCorr}, {axisPtHadron}, {axisPoolBin}}});
286-
registry.add("hCorrel2DVsPtSignalRegionMcRec", stringLcHadron + stringSignal + stringDeltaPhi + stringDeltaEta + stringPtLc + stringPtHadron + "entries", {HistType::kTHnSparseD, {{axisDeltaPhi}, {axisDeltaEta}, {axisPtCorr}, {axisPtHadron}, {axisLcPrompt}, {axisPoolBin}}});
303+
registry.add("hCorrel2DVsPtSignalMcRec", stringLcHadron + stringSignal + stringDeltaPhi + stringDeltaEta + stringPtLc + stringPtHadron + "entries", {HistType::kTHnSparseD, {{axisDeltaPhi}, {axisDeltaEta}, {axisPtCorr}, {axisPtHadron}, {axisPoolBin}, {axisCentFT0M}}});
304+
registry.add("hCorrel2DVsPtSignalRegionMcRec", stringLcHadron + stringSignal + stringDeltaPhi + stringDeltaEta + stringPtLc + stringPtHadron + "entries", {HistType::kTHnSparseD, {{axisDeltaPhi}, {axisDeltaEta}, {axisPtCorr}, {axisPtHadron}, {axisLcPrompt}, {axisPoolBin}, {axisCentFT0M}}});
287305
registry.add("hCorrel2DVsPtBkgMcRec", stringLcHadron + stringSignal + stringDeltaPhi + stringDeltaEta + stringPtLc + stringPtHadron + "entries", {HistType::kTHnSparseD, {{axisDeltaPhi}, {axisDeltaEta}, {axisPtCorr}, {axisPtHadron}, {axisPoolBin}}});
288306

289307
registry.get<THnSparse>(HIST("hCorrel2DVsPtSidebandLeftMcRec"))->Sumw2();
@@ -405,7 +423,13 @@ struct HfTaskCorrelationLcHadrons {
405423

406424
if (activateQA) {
407425
const int regionLimits = 6;
408-
std::string labels[regionLimits] = {"SigReg Left", "SigReg Right", "Left SB Low", "Left SB Up", "Right SB Low", "Right SB Up"};
426+
const std::array<std::string, regionLimits> labels = {
427+
"SigReg Left",
428+
"SigReg Right",
429+
"Left SB Low",
430+
"Left SB Up",
431+
"Right SB Low",
432+
"Right SB Up"};
409433
static const AxisSpec axisSidebandLimits = {regionLimits, 0.5, 6.5, ""};
410434
auto hSigSidebandLimits = registry.add<TH2>("Inputs/hSigSidebandLimits", "Signal and Sideband Limits;;#it{p}_{T} (GeV/#it{c})", {HistType::kTH2F, {axisSidebandLimits, {(std::vector<double>)binsPtCorrelations, "#it{p}_{T} (GeV/#it{c})"}}});
411435
for (int iLim = 0; iLim < regionLimits; iLim++) {
@@ -521,7 +545,7 @@ struct HfTaskCorrelationLcHadrons {
521545
registry.fill(HIST("hCorrel2DVsPtSignMass"), deltaPhi, deltaEta, ptLc, ptHadron, massLc, signPair, poolBin, efficiencyWeight);
522546
}
523547
// check if correlation entry belongs to signal region, sidebands or is outside both, and fill correlation plots
524-
if (storeMass) {
548+
if (storeMass != 0) {
525549
registry.fill(HIST("hCorrel2DVsPtGlobalRegion"), deltaPhi, deltaEta, ptLc, ptHadron, poolBin, massLc, efficiencyWeight);
526550
continue;
527551
}
@@ -636,6 +660,11 @@ struct HfTaskCorrelationLcHadrons {
636660
bool const isAutoCorrelated = pairEntry.isAutoCorrelated();
637661
int signPair = 0;
638662

663+
float cent = 0.;
664+
if (useCentrality) {
665+
cent = pairEntry.cent();
666+
}
667+
639668
// reject entries outside pT ranges of interest
640669
if (ptLc < binsPtEfficiencyLc->front() || ptLc > binsPtEfficiencyLc->back()) {
641670
continue;
@@ -696,7 +725,7 @@ struct HfTaskCorrelationLcHadrons {
696725
if (fillSign) {
697726
registry.fill(HIST("hCorrel2DVsPtSignSignalMcRec"), deltaPhi, deltaEta, ptLc, ptHadron, signPair, poolBin, efficiencyWeight);
698727
} else {
699-
registry.fill(HIST("hCorrel2DVsPtSignalMcRec"), deltaPhi, deltaEta, ptLc, ptHadron, poolBin, efficiencyWeight);
728+
registry.fill(HIST("hCorrel2DVsPtSignalMcRec"), deltaPhi, deltaEta, ptLc, ptHadron, poolBin, cent, efficiencyWeight);
700729
}
701730
} else {
702731
if (fillSign) {
@@ -713,13 +742,13 @@ struct HfTaskCorrelationLcHadrons {
713742
if (fillSign) {
714743
registry.fill(HIST("hCorrel2DVsPtSignSignalRegionMcRec"), deltaPhi, deltaEta, ptLc, ptHadron, signPair, poolBin, efficiencyWeight);
715744
} else {
716-
registry.fill(HIST("hCorrel2DVsPtSignalRegionMcRec"), deltaPhi, deltaEta, ptLc, ptHadron, statusLcPrompt, poolBin, efficiencyWeight);
745+
registry.fill(HIST("hCorrel2DVsPtSignalRegionMcRec"), deltaPhi, deltaEta, ptLc, ptHadron, statusLcPrompt, poolBin, cent, efficiencyWeight);
717746
}
718747
registry.fill(HIST("hCorrel2DPtIntSignalRegionMcRec"), deltaPhi, deltaEta, efficiencyWeight);
719748
registry.fill(HIST("hDeltaEtaPtIntSignalRegionMcRec"), deltaEta, efficiencyWeight);
720749
registry.fill(HIST("hDeltaPhiPtIntSignalRegionMcRec"), deltaPhi, efficiencyWeight);
721750
if (isPhysicalPrimary) {
722-
registry.fill(HIST("hCorrel2DVsPtPhysicalPrimaryMcRec"), deltaPhi, deltaEta, ptLc, ptHadron, statusLcPrompt, poolBin, efficiencyWeight);
751+
registry.fill(HIST("hCorrel2DVsPtPhysicalPrimaryMcRec"), deltaPhi, deltaEta, ptLc, ptHadron, statusLcPrompt, poolBin, cent, efficiencyWeight);
723752
if (pairEntry.signalStatus() != 0) {
724753
registry.fill(HIST("hCorrel2DVsPtTrueLcPhysicalPrimaryMcRec"), deltaPhi, deltaEta, ptLc, ptHadron, statusLcPrompt, poolBin, efficiencyWeight);
725754
}

0 commit comments

Comments
 (0)