@@ -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