Skip to content

Commit 9cbfc86

Browse files
EmilGormalibuild
andauthored
[PWGCF] Add class members back into ROOT streamer (#10973)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 9dd18b3 commit 9cbfc86

File tree

2 files changed

+168
-15
lines changed

2 files changed

+168
-15
lines changed

PWGCF/GenericFramework/Core/FlowPtContainer.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,11 @@ class FlowPtContainer : public TNamed
115115
TList* fCumulantList;
116116
TList* fCentralMomentList;
117117

118-
int mpar; //!
118+
int mpar;
119119
int fillCounter; //!
120120
unsigned int fEventWeight; //!
121-
bool fUseCentralMoments; //!
122-
bool fUseGap; //!
121+
bool fUseCentralMoments;
122+
bool fUseGap;
123123
void mergeBSLists(TList* source, TList* target);
124124
TH1* raiseHistToPower(TH1* inh, double p);
125125
std::vector<double> sumP; //!

PWGCF/GenericFramework/Tasks/flowGenericFramework.cxx

Lines changed: 165 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ struct FlowGenericFramework {
8686

8787
O2_DEFINE_CONFIGURABLE(cfgNbootstrap, int, 10, "Number of subsamples")
8888
O2_DEFINE_CONFIGURABLE(cfgMpar, int, 8, "Highest order of pt-pt correlations")
89+
O2_DEFINE_CONFIGURABLE(cfgCentEstimator, int, 0, "0:FT0C; 1:FT0CVariant1; 2:FT0M; 3:FT0A")
8990
O2_DEFINE_CONFIGURABLE(cfgUseNch, bool, false, "Do correlations as function of Nch")
9091
O2_DEFINE_CONFIGURABLE(cfgFillWeights, bool, false, "Fill NUA weights")
9192
O2_DEFINE_CONFIGURABLE(cfgRunByRun, bool, false, "Fill histograms on a run-by-run basis")
@@ -115,6 +116,9 @@ struct FlowGenericFramework {
115116
O2_DEFINE_CONFIGURABLE(cfgIsVertexITSTPC, bool, true, "Selects collisions with at least one ITS-TPC track");
116117
O2_DEFINE_CONFIGURABLE(cfgMagField, float, 99999, "Configurable magnetic field; default CCDB will be queried");
117118
O2_DEFINE_CONFIGURABLE(cfgTofPtCut, float, 0.5, "pt cut on TOF for PID");
119+
O2_DEFINE_CONFIGURABLE(cfgUseDensityDependentCorrection, bool, false, "Use density dependent efficiency correction based on Run 2 measurements");
120+
Configurable<std::vector<double>> cfgTrackDensityP0{"cfgTrackDensityP0", std::vector<double>{0.7217476707, 0.7384792571, 0.7542625668, 0.7640680200, 0.7701951667, 0.7755299053, 0.7805901710, 0.7849446786, 0.7957356586, 0.8113039262, 0.8211968966, 0.8280558878, 0.8329342135}, "parameter 0 for track density efficiency correction"};
121+
Configurable<std::vector<double>> cfgTrackDensityP1{"cfgTrackDensityP1", std::vector<double>{-2.169488e-05, -2.191913e-05, -2.295484e-05, -2.556538e-05, -2.754463e-05, -2.816832e-05, -2.846502e-05, -2.843857e-05, -2.705974e-05, -2.477018e-05, -2.321730e-05, -2.203315e-05, -2.109474e-05}, "parameter 1 for track density efficiency correction"};
118122

119123
Configurable<GFWBinningCuts> cfgGFWBinning{"cfgGFWBinning", {40, 16, 72, 300, 0, 3000, 0.2, 10.0, 0.2, 3.0, {0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.2, 2.4, 2.6, 2.8, 3, 3.5, 4, 5, 6, 8, 10}, {0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90}}, "Configuration for binning"};
120124
Configurable<GFWRegions> cfgRegions{"cfgRegions", {{"refN", "refP", "refFull"}, {-0.8, 0.4, -0.8}, {-0.4, 0.8, 0.8}, {0, 0, 0}, {1, 1, 1}}, "Configurations for GFW regions"};
@@ -137,6 +141,7 @@ struct FlowGenericFramework {
137141
OutputObj<FlowContainer> fFCgen{FlowContainer("FlowContainer_gen")};
138142
HistogramRegistry registry{"registry"};
139143

144+
// QA outputs
140145
std::map<int, std::vector<std::shared_ptr<TH1>>> th1sList;
141146
std::map<int, std::vector<std::shared_ptr<TH3>>> th3sList;
142147
enum OutputTH1Names {
@@ -148,6 +153,7 @@ struct FlowGenericFramework {
148153
hEventSel,
149154
kCount_TH1Names
150155
};
156+
// NUA outputs
151157
enum OutputTH3Names {
152158
hNUAref = 0,
153159
hNUAch,
@@ -156,14 +162,40 @@ struct FlowGenericFramework {
156162
hNUApr,
157163
kCount_TH3Names
158164
};
165+
enum CentEstimators {
166+
kCentFT0C = 0,
167+
kCentFT0CVariant1,
168+
kCentFT0M,
169+
kCentFV0A
170+
};
159171

160-
// define global variables
172+
// Define global variables
173+
// Generic Framework
161174
GFW* fGFW = new GFW();
162175
std::vector<GFW::CorrConfig> corrconfigs;
176+
163177
TRandom3* fRndm = new TRandom3(0);
164178
TAxis* fPtAxis;
165179
int lastRun = -1;
166180
std::vector<int> runNumbers;
181+
182+
// Density dependent eff correction
183+
std::vector<TF1*> funcEff;
184+
TH1D* hFindPtBin;
185+
TF1* funcV2;
186+
TF1* funcV3;
187+
TF1* funcV4;
188+
struct DensityCorr {
189+
double psi2Est;
190+
double psi3Est;
191+
double psi4Est;
192+
double v2;
193+
double v3;
194+
double v4;
195+
int density;
196+
DensityCorr() : psi2Est(0.), psi3Est(0.), psi4Est(0.), v2(0.), v3(0.), v4(0.), density(0) {}
197+
};
198+
167199
// Event selection cuts - Alex
168200
TF1* fPhiCutLow = nullptr;
169201
TF1* fPhiCutHigh = nullptr;
@@ -209,7 +241,25 @@ struct FlowGenericFramework {
209241
AxisSpec etaAxis = {etabins, -cfgEta, cfgEta, "#eta"};
210242
AxisSpec vtxAxis = {vtxZbins, -cfgVtxZ, cfgVtxZ, "Vtx_{z} (cm)"};
211243
AxisSpec ptAxis = {ptbinning, "#it{p}_{T} GeV/#it{c}"};
212-
AxisSpec centAxis = {centbinning, "Centrality (%)"};
244+
std::string sCentralityEstimator;
245+
switch (cfgCentEstimator) {
246+
case kCentFT0C:
247+
sCentralityEstimator = "FT0C";
248+
break;
249+
case kCentFT0CVariant1:
250+
sCentralityEstimator = "FT0C variant 1";
251+
break;
252+
case kCentFT0M:
253+
sCentralityEstimator = "FT0M";
254+
break;
255+
case kCentFV0A:
256+
sCentralityEstimator = "FV0A";
257+
break;
258+
default:
259+
sCentralityEstimator = "FT0C";
260+
}
261+
sCentralityEstimator += " centrality (%)";
262+
AxisSpec centAxis = {centbinning, sCentralityEstimator.c_str()};
213263
std::vector<double> nchbinning;
214264
int nchskip = (nchup - nchlow) / nchbins;
215265
for (int i = 0; i <= nchbins; ++i) {
@@ -240,10 +290,18 @@ struct FlowGenericFramework {
240290
if (doprocessMCReco || doprocessData || doprocessRun2) {
241291
registry.add("trackQA/before/phi_eta_vtxZ", "", {HistType::kTH3D, {phiAxis, etaAxis, vtxAxis}});
242292
registry.add("trackQA/before/pt_dcaXY_dcaZ", "", {HistType::kTH3D, {ptAxis, dcaXYAXis, dcaZAXis}});
293+
registry.add("trackQA/before/chi2prTPCcls", "#chi^{2}/cluster for the TPC track segment", {HistType::kTH1D, {{100, 0., 5.}}});
294+
registry.add("trackQA/before/chi2prITScls", "#chi^{2}/cluster for the ITS track", {HistType::kTH1D, {{100, 0., 50.}}});
295+
registry.add("trackQA/before/nTPCClusters", "Number of found TPC clusters", {HistType::kTH1D, {{100, 40, 180}}});
296+
registry.add("trackQA/before/nITSClusters", "Number of found ITS clusters", {HistType::kTH1D, {{100, 0, 20}}});
297+
registry.add("trackQA/before/nTPCCrossedRows", "Number of crossed TPC Rows", {HistType::kTH1D, {{100, 40, 180}}});
298+
243299
registry.addClone("trackQA/before/", "trackQA/after/");
244300
registry.add("trackQA/after/pt_ref", "", {HistType::kTH1D, {{100, ptreflow, ptrefup}}});
245301
registry.add("trackQA/after/pt_poi", "", {HistType::kTH1D, {{100, ptpoilow, ptpoiup}}});
246302

303+
registry.add("eventQA/before/centrality", "", {HistType::kTH1D, {centAxis}});
304+
registry.add("eventQA/before/multiplicity", "", {HistType::kTH1D, {nchAxis}});
247305
registry.add("eventQA/before/globalTracks_centT0C", "", {HistType::kTH2D, {centAxis, nchAxis}});
248306
registry.add("eventQA/before/PVTracks_centT0C", "", {HistType::kTH2D, {centAxis, multpvAxis}});
249307
registry.add("eventQA/before/globalTracks_PVTracks", "", {HistType::kTH2D, {multpvAxis, nchAxis}});
@@ -317,6 +375,24 @@ struct FlowGenericFramework {
317375
fMultCutHigh = new TF1("fMultCutHigh", "[0]+[1]*x+[2]*x*x+[3]*x*x*x + 3.*([4]+[5]*x+[6]*x*x+[7]*x*x*x+[8]*x*x*x*x)", 0, 100);
318376
fMultCutHigh->SetParameters(1654.46, -47.2379, 0.449833, -0.0014125, 150.773, -3.67334, 0.0530503, -0.000614061, 3.15956e-06);
319377
}
378+
if (cfgUseDensityDependentCorrection) {
379+
std::vector<double> pTEffBins = {0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.4, 1.8, 2.2, 2.6, 3.0};
380+
hFindPtBin = new TH1D("hFindPtBin", "hFindPtBin", pTEffBins.size() - 1, &pTEffBins[0]);
381+
funcEff.resize(pTEffBins.size() - 1);
382+
// LHC24g3 Eff
383+
std::vector<double> f1p0 = cfgTrackDensityP0;
384+
std::vector<double> f1p1 = cfgTrackDensityP1;
385+
for (uint ifunc = 0; ifunc < pTEffBins.size() - 1; ifunc++) {
386+
funcEff[ifunc] = new TF1(Form("funcEff%i", ifunc), "[0]+[1]*x", 0, 3000);
387+
funcEff[ifunc]->SetParameters(f1p0[ifunc], f1p1[ifunc]);
388+
}
389+
funcV2 = new TF1("funcV2", "[0]+[1]*x+[2]*x*x+[3]*x*x*x+[4]*x*x*x*x", 0, 100);
390+
funcV2->SetParameters(0.0186111, 0.00351907, -4.38264e-05, 1.35383e-07, -3.96266e-10);
391+
funcV3 = new TF1("funcV3", "[0]+[1]*x+[2]*x*x+[3]*x*x*x+[4]*x*x*x*x", 0, 100);
392+
funcV3->SetParameters(0.0174056, 0.000703329, -1.45044e-05, 1.91991e-07, -1.62137e-09);
393+
funcV4 = new TF1("funcV4", "[0]+[1]*x+[2]*x*x+[3]*x*x*x+[4]*x*x*x*x", 0, 100);
394+
funcV4->SetParameters(0.008845, 0.000259668, -3.24435e-06, 4.54837e-08, -6.01825e-10);
395+
}
320396
}
321397

322398
static constexpr std::string_view FillTimeName[] = {"before/", "after/"};
@@ -576,12 +652,14 @@ struct FlowGenericFramework {
576652
AxisSpec phiAxis = {phibins, philow, phiup, "#phi"};
577653
AxisSpec etaAxis = {etabins, -cfgEta, cfgEta, "#eta"};
578654
AxisSpec vtxAxis = {vtxZbins, -cfgVtxZ, cfgVtxZ, "Vtx_{z} (cm)"};
655+
AxisSpec nchAxis = {nchbins, nchlow, nchup, "N_{ch}"};
656+
AxisSpec centAxis = {centbinning, "Centrality (%)"};
579657
std::vector<std::shared_ptr<TH1>> histos(kCount_TH1Names);
580658
histos[hPhi] = registry.add<TH1>(Form("%d/phi", run), "", {HistType::kTH1D, {phiAxis}});
581659
histos[hEta] = registry.add<TH1>(Form("%d/eta", run), "", {HistType::kTH1D, {etaAxis}});
582660
histos[hVtxZ] = registry.add<TH1>(Form("%d/vtxz", run), "", {HistType::kTH1D, {vtxAxis}});
583-
histos[hMult] = registry.add<TH1>(Form("%d/mult", run), "", {HistType::kTH1D, {{3000, 0.5, 3000.5}}});
584-
histos[hCent] = registry.add<TH1>(Form("%d/cent", run), "", {HistType::kTH1D, {{90, 0, 90}}});
661+
histos[hMult] = registry.add<TH1>(Form("%d/mult", run), "", {HistType::kTH1D, {nchAxis}});
662+
histos[hCent] = registry.add<TH1>(Form("%d/cent", run), "", {HistType::kTH1D, {centAxis}});
585663
histos[hEventSel] = registry.add<TH1>(Form("%d/eventSel", run), "Number of Events;; Counts", {HistType::kTH1D, {{11, 0, 11}}});
586664
histos[hEventSel]->GetXaxis()->SetBinLabel(1, "Filtered event");
587665
histos[hEventSel]->GetXaxis()->SetBinLabel(2, "sel8");
@@ -661,15 +739,51 @@ struct FlowGenericFramework {
661739
fGFW->Clear();
662740
fFCpt->clearVector();
663741
float lRandom = fRndm->Rndm();
742+
743+
// be cautious, this only works for Pb-Pb
744+
// esimate the Event plane and vn for this event
745+
DensityCorr densitycorrections;
746+
if (cfgUseDensityDependentCorrection) {
747+
double psi2Est = 0, psi3Est = 0, psi4Est = 0;
748+
double v2 = 0, v3 = 0, v4 = 0;
749+
double q2x = 0, q2y = 0;
750+
double q3x = 0, q3y = 0;
751+
double q4x = 0, q4y = 0;
752+
for (const auto& track : tracks) {
753+
bool withinPtRef = (ptreflow < track.pt()) && (track.pt() < ptrefup); // within RF pT rang
754+
if (withinPtRef) {
755+
q2x += std::cos(2 * track.phi());
756+
q2y += std::sin(2 * track.phi());
757+
q3x += std::cos(3 * track.phi());
758+
q3y += std::sin(3 * track.phi());
759+
q4x += std::cos(4 * track.phi());
760+
q4y += std::sin(4 * track.phi());
761+
}
762+
}
763+
psi2Est = std::atan2(q2y, q2x) / 2.;
764+
psi3Est = std::atan2(q3y, q3x) / 3.;
765+
psi4Est = std::atan2(q4y, q4x) / 4.;
766+
v2 = funcV2->Eval(centrality);
767+
v3 = funcV3->Eval(centrality);
768+
v4 = funcV4->Eval(centrality);
769+
densitycorrections.psi2Est = psi2Est;
770+
densitycorrections.psi3Est = psi3Est;
771+
densitycorrections.psi4Est = psi4Est;
772+
densitycorrections.v2 = v2;
773+
densitycorrections.v3 = v3;
774+
densitycorrections.v4 = v4;
775+
densitycorrections.density = tracks.size();
776+
}
777+
664778
for (const auto& track : tracks) {
665-
processTrack(track, vtxz, run);
779+
processTrack(track, vtxz, run, densitycorrections);
666780
}
667781
if (!cfgFillWeights)
668782
fillOutputContainers<dt>((cfgUseNch) ? tracks.size() : centrality, lRandom);
669783
}
670784

671785
template <typename TTrack>
672-
inline void processTrack(TTrack const& track, const float& vtxz, const int& run)
786+
inline void processTrack(TTrack const& track, const float& vtxz, const int& run, DensityCorr densitycorrections)
673787
{
674788
if constexpr (framework::has_type_v<aod::mctracklabel::McParticleId, typename TTrack::all_columns>) {
675789
if (track.mcParticleId() < 0 || !(track.has_mcParticle()))
@@ -698,7 +812,7 @@ struct FlowGenericFramework {
698812
fillWeights(mcParticle, vtxz, 0, run);
699813
} else {
700814
fillPtSums<kReco>(track, vtxz);
701-
fillGFW<kReco>(mcParticle, vtxz, pidIndex);
815+
fillGFW<kReco>(mcParticle, vtxz, pidIndex, densitycorrections);
702816
}
703817

704818
if (cfgFillQA) {
@@ -729,7 +843,7 @@ struct FlowGenericFramework {
729843
}
730844

731845
fillPtSums<kGen>(track, vtxz);
732-
fillGFW<kGen>(track, vtxz, pidIndex);
846+
fillGFW<kGen>(track, vtxz, pidIndex, densitycorrections);
733847

734848
if (cfgFillQA)
735849
fillTrackQA<kGen, kAfter>(track, vtxz);
@@ -748,7 +862,7 @@ struct FlowGenericFramework {
748862
fillWeights(track, vtxz, pidIndex, run);
749863
} else {
750864
fillPtSums<kReco>(track, vtxz);
751-
fillGFW<kReco>(track, vtxz, pidIndex);
865+
fillGFW<kReco>(track, vtxz, pidIndex, densitycorrections);
752866
}
753867
if (cfgFillQA) {
754868
fillTrackQA<kReco, kAfter>(track, vtxz);
@@ -779,7 +893,7 @@ struct FlowGenericFramework {
779893
}
780894

781895
template <DataType dt, typename TTrack>
782-
inline void fillGFW(TTrack track, const double& vtxz, int pid_index)
896+
inline void fillGFW(TTrack track, const double& vtxz, int pid_index, DensityCorr densitycorrections)
783897
{
784898
if (cfgUsePID) { // Analysing POI flow with id'ed particles
785899
double ptmins[] = {ptpoilow, ptpoilow, 0.3, 0.5};
@@ -812,6 +926,18 @@ struct FlowGenericFramework {
812926
double weff = (dt == kGen) ? 1. : getEfficiency(track);
813927
if (weff < 0)
814928
return;
929+
if (cfgUseDensityDependentCorrection && withinPtRef && dt != kGen) {
930+
double fphi = densitycorrections.v2 * std::cos(2 * (track.phi() - densitycorrections.psi2Est)) + densitycorrections.v3 * std::cos(3 * (track.phi() - densitycorrections.psi3Est)) + densitycorrections.v4 * std::cos(4 * (track.phi() - densitycorrections.psi4Est));
931+
fphi = (1 + 2 * fphi);
932+
int pTBinForEff = hFindPtBin->FindBin(track.pt());
933+
if (pTBinForEff >= 1 && pTBinForEff <= hFindPtBin->GetNbinsX()) {
934+
float wEPeff = funcEff[pTBinForEff - 1]->Eval(fphi * densitycorrections.density);
935+
if (wEPeff > 0.) {
936+
wEPeff = 1. / wEPeff;
937+
weff *= wEPeff;
938+
}
939+
}
940+
}
815941
double wacc = (dt == kGen) ? 1. : getAcceptance(track, vtxz, 0);
816942
if (withinPtRef)
817943
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), weff * wacc, 1);
@@ -833,6 +959,13 @@ struct FlowGenericFramework {
833959
double wacc = getAcceptance(track, vtxz, 0);
834960
registry.fill(HIST("trackQA/") + HIST(FillTimeName[ft]) + HIST("phi_eta_vtxZ"), track.phi(), track.eta(), vtxz, (ft == kAfter) ? wacc : 1.0);
835961
registry.fill(HIST("trackQA/") + HIST(FillTimeName[ft]) + HIST("pt_dcaXY_dcaZ"), track.pt(), track.dcaXY(), track.dcaZ());
962+
963+
registry.fill(HIST("trackQA/") + HIST(FillTimeName[ft]) + HIST("chi2prTPCcls"), track.tpcChi2NCl());
964+
registry.fill(HIST("trackQA/") + HIST(FillTimeName[ft]) + HIST("chi2prITScls"), track.itsChi2NCl());
965+
registry.fill(HIST("trackQA/") + HIST(FillTimeName[ft]) + HIST("nTPCClusters"), track.tpcNClsFound());
966+
registry.fill(HIST("trackQA/") + HIST(FillTimeName[ft]) + HIST("nITSClusters"), track.itsNCls());
967+
registry.fill(HIST("trackQA/") + HIST(FillTimeName[ft]) + HIST("nTPCCrossedRows"), track.tpcNClsCrossedRows());
968+
836969
if (ft == kAfter) {
837970
registry.fill(HIST("trackQA/") + HIST(FillTimeName[ft]) + HIST("pt_ref"), track.pt());
838971
registry.fill(HIST("trackQA/") + HIST(FillTimeName[ft]) + HIST("pt_poi"), track.pt());
@@ -857,7 +990,7 @@ struct FlowGenericFramework {
857990
Filter trackFilter = nabs(aod::track::eta) < cfgEta && aod::track::pt > cfgPtmin&& aod::track::pt < cfgPtmax && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t) true)) && nabs(aod::track::dcaXY) < cfgDCAxy&& nabs(aod::track::dcaZ) < cfgDCAz;
858991
using GFWTracks = soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::TrackSelection, aod::TracksDCA, aod::pidTOFPi, aod::pidTPCPi, aod::pidTOFKa, aod::pidTPCKa, aod::pidTOFPr, aod::pidTPCPr>>;
859992

860-
void processData(soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::CentFT0Cs>>::iterator const& collision, aod::BCsWithTimestamps const&, GFWTracks const& tracks)
993+
void processData(soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::CentFT0Cs, aod::CentFT0CVariant1s, aod::CentFT0Ms, aod::CentFV0As>>::iterator const& collision, aod::BCsWithTimestamps const&, GFWTracks const& tracks)
861994
{
862995
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
863996
int run = bc.runNumber();
@@ -894,13 +1027,33 @@ struct FlowGenericFramework {
8941027
registry.fill(HIST("eventQA/eventSel"), 2.5);
8951028
if (cfgRunByRun)
8961029
th1sList[run][hEventSel]->Fill(2.5);
897-
const auto centrality = collision.centFT0C();
1030+
float centrality;
1031+
switch (cfgCentEstimator) {
1032+
case kCentFT0C:
1033+
centrality = collision.centFT0C();
1034+
break;
1035+
case kCentFT0CVariant1:
1036+
centrality = collision.centFT0CVariant1();
1037+
break;
1038+
case kCentFT0M:
1039+
centrality = collision.centFT0M();
1040+
break;
1041+
case kCentFV0A:
1042+
centrality = collision.centFV0A();
1043+
break;
1044+
default:
1045+
centrality = collision.centFT0C();
1046+
}
8981047
if (cfgFillQA)
8991048
fillEventQA<kBefore>(collision, tracks);
1049+
registry.fill(HIST("eventQA/before/centrality"), centrality);
1050+
registry.fill(HIST("eventQA/before/multiplicity"), tracks.size());
9001051
if (cfgUseAdditionalEventCut && !eventSelected(collision, tracks.size(), centrality, run))
9011052
return;
9021053
if (cfgFillQA)
9031054
fillEventQA<kAfter>(collision, tracks);
1055+
registry.fill(HIST("eventQA/after/centrality"), centrality);
1056+
registry.fill(HIST("eventQA/after/multiplicity"), tracks.size());
9041057
processCollision<kReco>(collision, tracks, centrality, run);
9051058
}
9061059
PROCESS_SWITCH(FlowGenericFramework, processData, "Process analysis for non-derived data", true);

0 commit comments

Comments
 (0)