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
8990const 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)
106124struct 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