Skip to content

Commit bb0d90a

Browse files
authored
[PWGCF] add event consistency flag (#15002)
1 parent 3725f54 commit bb0d90a

File tree

1 file changed

+40
-2
lines changed

1 file changed

+40
-2
lines changed

PWGCF/Flow/Tasks/flowTask.cxx

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ struct FlowTask {
7979
Configurable<LabeledArray<double>> cfgPtPtGaps{"cfgPtPtGaps", {LongArrayDouble[0], 4, 2, {"subevent 1", "subevent 2", "subevent 3", "subevent 4"}, {"etamin", "etamax"}}, "{etamin,etamax} for all ptpt-subevents"};
8080
O2_DEFINE_CONFIGURABLE(cfgEtaGapPtPtEnabled, bool, false, "switch of subevent pt-pt correlations")
8181
Configurable<LabeledArray<float>> cfgTrackCuts{"cfgTrackCuts", {TrackCutArray[0], 6, 2, {"chi2 per TPCcls", "TPC cluster", "TPC crossed rows", "ITS cluster", "DCAz", "DCAxy Nsigma"}, {"Nch", "Observable"}}, "separate Nch and observable track selections"};
82-
enum cfgTrackCut {
82+
enum TrackCut {
8383
// enum for labelledArray track selection
8484
kChi2prTPCcls = 0, // max chi2 per TPC clusters
8585
kTPCclu, // minimum TPC found clusters
@@ -88,7 +88,7 @@ struct FlowTask {
8888
kDCAz, // max DCA to vertex z
8989
kDCAxyNSigma // 0: disable; Cut on number of sigma deviations from expected DCA in the transverse direction, nsigma=7 is the same with global track
9090
};
91-
enum cfgTrackCutGroup {
91+
enum TrackCutGroup {
9292
kTrCutNch = 0,
9393
kTrCutObs = 1
9494
};
@@ -129,8 +129,16 @@ struct FlowTask {
129129
O2_DEFINE_CONFIGURABLE(cfgEfficiencyForNch, std::string, "", "CCDB path to efficiency object, only for Nch correction")
130130
O2_DEFINE_CONFIGURABLE(cfgAcceptance, std::string, "", "CCDB path to acceptance object")
131131
O2_DEFINE_CONFIGURABLE(cfgUseSmallMemory, bool, false, "Use small memory mode")
132+
O2_DEFINE_CONFIGURABLE(cfgConsistentEventFlag, int, 0, "Flag to select consistent events - 0: off, 1: v2{2} gap calculable, 2: v2{4} full calculable, 4: v2{4} gap calculable, 8: v2{4} 3sub calculable")
133+
Configurable<std::vector<float>> cfgConsistentEventVector{"cfgConsistentEventVector", std::vector<float>{-0.8, -0.5, -0.4, 0.4, 0.5, 0.8}, "eta regions: left(min,max), mid(min,max), right(min,max)"};
132134
Configurable<std::vector<int>> cfgRunRemoveList{"cfgRunRemoveList", std::vector<int>{-1}, "excluded run numbers"};
133135
} cfgUserIO;
136+
struct AcceptedTracks {
137+
int nNeg;
138+
int nMid;
139+
int nPos;
140+
int nFull;
141+
};
134142

135143
struct : ConfigurableGroup {
136144
O2_DEFINE_CONFIGURABLE(cfgEvSelV0AT0ACut, bool, false, "V0A T0A 5 sigma cut")
@@ -1210,6 +1218,10 @@ struct FlowTask {
12101218
// magnet field dependence cut
12111219
magnetfield = getMagneticField(bc.timestamp());
12121220
}
1221+
AcceptedTracks acceptedTracks{0, 0, 0, 0};
1222+
std::vector<float> consistentEventVector = cfgUserIO.cfgConsistentEventVector;
1223+
if (cfgUserIO.cfgConsistentEventFlag)
1224+
LOGF(info, "consistentEventVector.size = %u", consistentEventVector.size());
12131225

12141226
double psi2Est = 0, psi3Est = 0, psi4Est = 0;
12151227
float wEPeff = 1;
@@ -1307,6 +1319,15 @@ struct FlowTask {
13071319
weffEventSquareWithinGap08 += weff * weff;
13081320
}
13091321
}
1322+
if (cfgUserIO.cfgConsistentEventFlag && consistentEventVector.size() == 6) { // o2-linter: disable=magic-number (size match)
1323+
acceptedTracks.nFull += 1;
1324+
if (track.eta() > consistentEventVector[0] && track.eta() < consistentEventVector[1])
1325+
acceptedTracks.nNeg += 1;
1326+
if (track.eta() > consistentEventVector[2] && track.eta() < consistentEventVector[3])
1327+
acceptedTracks.nMid += 1;
1328+
if (track.eta() > consistentEventVector[4] && track.eta() < consistentEventVector[5])
1329+
acceptedTracks.nPos += 1;
1330+
}
13101331
if (withinPtRef)
13111332
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), wacc * weff, 1);
13121333
if (withinPtPOI)
@@ -1323,6 +1344,23 @@ struct FlowTask {
13231344
independent = nTracksCorrected;
13241345
}
13251346

1347+
if (cfgUserIO.cfgConsistentEventFlag) {
1348+
if (cfgUserIO.cfgConsistentEventFlag & 1) {
1349+
if (!acceptedTracks.nPos || !acceptedTracks.nNeg)
1350+
return;
1351+
} else if (cfgUserIO.cfgConsistentEventFlag & 2) {
1352+
if (acceptedTracks.nFull < 4) // o2-linter: disable=magic-number (at least four tracks in full acceptance)
1353+
return;
1354+
} else if (cfgUserIO.cfgConsistentEventFlag & 4) {
1355+
if (acceptedTracks.nPos < 2 || acceptedTracks.nNeg < 2) // o2-linter: disable=magic-number (at least two tracks in each subevent)
1356+
return;
1357+
}
1358+
if (cfgUserIO.cfgConsistentEventFlag & 8) {
1359+
if (acceptedTracks.nPos < 2 || acceptedTracks.nMid < 2 || acceptedTracks.nNeg < 2) // o2-linter: disable=magic-number (at least two tracks in all three subevents)
1360+
return;
1361+
}
1362+
}
1363+
13261364
if (cfgAdditionObs.cfgDptDisEnable) {
13271365
double meanPt = ptSum / weffEvent;
13281366
double deltaPt = meanPt - cfgAdditionObs.hEvAvgMeanPt->GetBinContent(cfgAdditionObs.hEvAvgMeanPt->FindBin(independent));

0 commit comments

Comments
 (0)