diff --git a/PWGCF/EbyEFluctuations/Tasks/stronglyIntensiveCorr.cxx b/PWGCF/EbyEFluctuations/Tasks/stronglyIntensiveCorr.cxx index 6fa2543523b..8c073da41e8 100644 --- a/PWGCF/EbyEFluctuations/Tasks/stronglyIntensiveCorr.cxx +++ b/PWGCF/EbyEFluctuations/Tasks/stronglyIntensiveCorr.cxx @@ -140,6 +140,16 @@ struct StronglyIntensiveCorr { std::vector centClassEdges(centEdges.begin(), centEdges.end()); AxisSpec centClassAxis = {centClassEdges, "centrality class (%)"}; AxisSpec etaGapAxis = {NEtaGaps, -0.05, 1.55, "#Delta#eta"}; + + // Seven physical, non-overlapping FB gaps: + // DeltaEta = 0.0, 0.2, ..., 1.2. + std::vector physicalGapEdges = { + -0.1, 0.1, 0.3, 0.5, + 0.7, 0.9, 1.1, 1.3}; + + AxisSpec physicalGapAxis = { + physicalGapEdges, + "#Delta#eta"}; AxisSpec nAxis = {500, 0.0, 500.0, "N"}; AxisSpec counterAxis = {20, 0.5, 20.5, "counter"}; AxisSpec ptAxis = {{0.2, 0.5, 0.8, 1.0, 1.5, 2.0, 5.0}, "#it{p}_{T} (GeV/#it{c})"}; @@ -175,6 +185,20 @@ struct StronglyIntensiveCorr { histos.add("QA/fb/nFminusNB", "nF-nB;nF-nB;Counts", kTH1D, {{500, -250.0, 250.0}}); histos.add("QA/fb/nFplusNB", "nF+nB;nF+nB;Counts", kTH1D, {{500, 0.0, 500.0}}); + // Event-level multiplicity QA for every physical gap. + // Axes: centrality x DeltaEta x multiplicity. + histos.add( + "QA/fbAllGaps/nFvsCentGap", + "Forward multiplicity;centrality (%);#Delta#eta;n_{F}", + kTH3D, + {centAxis, physicalGapAxis, nAxis}); + + histos.add( + "QA/fbAllGaps/nBvsCentGap", + "Backward multiplicity;centrality (%);#Delta#eta;n_{B}", + kTH3D, + {centAxis, physicalGapAxis, nAxis}); + histos.add("QA/mcReco/nRecoAll", "MC reco all selected;n;Counts", kTH1D, {nAxis}); histos.add("QA/mcReco/nRecoPrimary", "MC reco primary selected;n;Counts", kTH1D, {nAxis}); histos.add("QA/mcReco/nRecoSecondary", "MC reco secondary selected;n;Counts", kTH1D, {nAxis}); @@ -626,6 +650,37 @@ struct StronglyIntensiveCorr { histos.fill(HIST("QA/fb/nFplusNB"), nf + nb); } + void fillAllGapMultiplicityQA( + float cent, + std::array const& nF, + std::array const& nB) + { + for (int i = 0; i < NEtaGaps; ++i) { + const double gap = + 2.0 * (etaCenter[i] - + cfgEtaWidth.value / 2.0); + + // etaCenter = 0 corresponds to overlapping windows and + // gives DeltaEta = -0.2. Keep only the seven physical, + // non-overlapping values from 0.0 to 1.2. + if (gap < -1.e-6 || gap > 1.200001) { + continue; + } + + histos.fill( + HIST("QA/fbAllGaps/nFvsCentGap"), + cent, + gap, + nF[i]); + + histos.fill( + HIST("QA/fbAllGaps/nBvsCentGap"), + cent, + gap, + nB[i]); + } + } + void fillInclusiveEtaGapMoments(std::array const& nF, std::array const& nB) { @@ -944,6 +999,7 @@ struct StronglyIntensiveCorr { histos.fill(HIST("QA/hCentrality"), cent); fillFBQA(cent, nF, nB); + fillAllGapMultiplicityQA(cent, nF, nB); fillInclusiveEtaGapMoments(nF, nB); fillCentClassEtaGapMoments(centClass, nF, nB); fillCentWindowEtaGapMoments(centWindowClass, nF, nB);