@@ -69,14 +69,20 @@ struct eventQC {
6969 Configurable<std::vector<int >> cfgnMods{" cfgnMods" , {2 , 3 }, " Modulation of interest. Please keep increasing order" };
7070 Configurable<int > cfgCentEstimator{" cfgCentEstimator" , 2 , " FT0M:0, FT0A:1, FT0C:2" };
7171 Configurable<int > cfgQvecEstimator{" cfgQvecEstimator" , 0 , " FT0M:0, FT0A:1, FT0C:2, BTot:3, BPos:4, BNeg:5" };
72- Configurable<float > cfgCentMin{" cfgCentMin" , 0 , " min. centrality" };
72+ Configurable<float > cfgCentMin{" cfgCentMin" , - 1 . f , " min. centrality" };
7373 Configurable<float > cfgCentMax{" cfgCentMax" , 999 .f , " max. centrality" };
7474 Configurable<int > cfgNtracksPV08Min{" cfgNtracksPV08Min" , -1 , " min. multNTracksPV" };
7575 Configurable<int > cfgNtracksPV08Max{" cfgNtracksPV08Max" , 1000000000 , " max. multNTracksPV" };
7676 ConfigurableAxis ConfPtBins{" ConfPtBins" , {VARIABLE_WIDTH, 0.00 , 0.05 , 0.10 , 0.15 , 0.20 , 0.25 , 0.30 , 0.35 , 0.40 , 0.45 , 0.50 , 0.55 , 0.60 , 0.65 , 0.70 , 0.75 , 0.80 , 0.85 , 0.90 , 0.95 , 1.00 , 1.10 , 1.20 , 1.30 , 1.40 , 1.50 , 1.60 , 1.70 , 1.80 , 1.90 , 2.00 , 2.50 , 3.00 , 3.50 , 4.00 , 4.50 , 5.00 , 6.00 , 7.00 , 8.00 , 9.00 , 10.00 }, " pT bins for output histograms" };
7777 Configurable<int > cfgNbinsEta{" cfgNbinsEta" , 20 , " number of eta bins for output histograms" };
7878 Configurable<int > cfgNbinsPhi{" cfgNbinsPhi" , 36 , " number of phi bins for output histograms" };
7979
80+ ConfigurableAxis ConfFT0AMultBins{" ConfFT0AMultBins" , {200 , 0 , 200e+3 }, " FT0A multiplicity bins for output histograms" };
81+ ConfigurableAxis ConfFT0CMultBins{" ConfFT0CMultBins" , {600 , 0 , 60e+3 }, " FT0C multiplicity bins for output histograms" };
82+ ConfigurableAxis ConfFV0AMultBins{" ConfFV0AMultBins" , {200 , 0 , 200e+3 }, " FV0A multiplicity bins for output histograms" };
83+ ConfigurableAxis ConfTrackMultBins{" ConfTrackMultBins" , {6001 , -0.5 , 6e+3 + 0.5 }, " Track multiplicity bins for output histograms" };
84+ ConfigurableAxis ConfCentBins{" ConfCentBins" , {110 , 0 , 110 }, " centrality bins for output histograms" };
85+
8086 struct : ConfigurableGroup {
8187 std::string prefix = " eventcut_group" ;
8288 Configurable<float > cfgZvtxMin{" cfgZvtxMin" , -10 .f , " min. Zvtx" };
@@ -181,8 +187,30 @@ struct eventQC {
181187
182188 void addhistograms ()
183189 {
184- // event info
190+ const AxisSpec axis_cent_ft0m{ConfCentBins, " centrality FT0M (%)" };
191+ const AxisSpec axis_cent_ft0a{ConfCentBins, " centrality FT0A (%)" };
192+ const AxisSpec axis_cent_ft0c{ConfCentBins, " centrality FT0C (%)" };
193+
194+ const AxisSpec axis_mult_ft0a{ConfFT0AMultBins, " FT0A multiplicity" };
195+ const AxisSpec axis_mult_ft0c{ConfFT0CMultBins, " FT0C multiplicity" };
196+ const AxisSpec axis_mult_fv0a{ConfFV0AMultBins, " FV0A multiplicity" };
197+ const AxisSpec axis_mult_ncontrib{ConfTrackMultBins, " N_{track} to PV" };
198+ const AxisSpec axis_mult_ncontrib08{ConfTrackMultBins, " N_{track} to PV in |#eta| < 0.8" };
199+ const AxisSpec axis_mult_global_ncontrib08{ConfTrackMultBins, " N_{track}^{global} to PV in |#eta| < 0.8" };
200+ const AxisSpec axis_mult_globalTrack{ConfTrackMultBins, " N_{track}^{global} in |#eta| < 0.8" };
201+
202+ if (doprocessEventQC_SWT) {
203+ fRegistry .add (" BC/hNcoll" , " Number of collisions per triggered BC;N_{collision} per triggered BC" , kTH1F , {{11 , -0.5 , +10.5 }}, false );
204+ fRegistry .add (" BC/hDeltaT" , " diff. in collision time per BC;#DeltaT_{coll} (ns)" , kTH1F , {{200 , -100 , +100 }}, false );
205+ fRegistry .add (" BC/hDeltaZ" , " diff. in collision Z_{vtx} per BC;#DeltaZ_{vtx} (cm)" , kTH1F , {{200 , -10 , +10 }}, false );
206+ fRegistry .add (" BC/hCorrNcontrib" , " hMultNTracksPV;" , kTH2F , {{axis_mult_ncontrib}, {axis_mult_ncontrib}}, false );
207+ fRegistry .add (" BC/Collision/hMultNTracksPV" , " hMultNTracksPV;N_{track} to PV in |#eta| < 0.8" , kTH1F , {{axis_mult_ncontrib08}}, false );
208+ fRegistry .add (" BC/Collision/hMultFT0AFT0C" , " hMultFT0AFT0C;mult. FT0A;mult. FT0C" , kTH2F , {{axis_mult_ft0a}, {axis_mult_ft0c}}, false );
209+ fRegistry .add (" BC/Collision/hMultFT0AFV0A" , " hMultFT0AFV0A;mult. FT0A;mult. FV0A" , kTH2F , {{axis_mult_ft0a}, {axis_mult_fv0a}}, false );
210+ fRegistry .add (" BC/Collision/hMultFT0CFV0A" , " hMultFT0CFV0A;mult. FT0C;mult. FV0A" , kTH2F , {{axis_mult_ft0c}, {axis_mult_fv0a}}, false );
211+ }
185212
213+ // event info
186214 const int nbin_ev = 20 ;
187215 auto hCollisionCounter = fRegistry .add <TH1>(" Event/before/hCollisionCounter" , " collision counter;;Number of events" , kTH1F , {{nbin_ev, 0.5 , nbin_ev + 0.5 }}, false );
188216 hCollisionCounter->GetXaxis ()->SetBinLabel (1 , " all" );
@@ -208,52 +236,33 @@ struct eventQC {
208236
209237 fRegistry .add (" hNInspectedTVX" , " N inspected TVX;run number;N_{TVX}" , kTProfile , {{80000 , 520000.5 , 600000.5 }}, true );
210238
211- const AxisSpec axis_cent_ft0m{{0 , 0.01 , 0.02 , 0.03 , 0.04 , 0.05 , 0.06 , 0.07 , 0.08 , 0.09 , 0.1 , 0.2 , 0.3 , 0.4 , 0.5 , 0.6 , 0.7 , 0.8 , 0.9 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 ,
212- 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 ,
213- 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 ,
214- 60 , 61 , 62 , 63 , 64 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 ,
215- 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , 91 , 92 , 93 , 94 , 95 , 96 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 },
216- " centrality FT0M (%)" };
217-
218- const AxisSpec axis_cent_ft0a{{0 , 0.01 , 0.02 , 0.03 , 0.04 , 0.05 , 0.06 , 0.07 , 0.08 , 0.09 , 0.1 , 0.2 , 0.3 , 0.4 , 0.5 , 0.6 , 0.7 , 0.8 , 0.9 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 ,
219- 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 ,
220- 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 ,
221- 60 , 61 , 62 , 63 , 64 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 ,
222- 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , 91 , 92 , 93 , 94 , 95 , 96 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 },
223- " centrality FT0A (%)" };
224-
225- const AxisSpec axis_cent_ft0c{{0 , 0.01 , 0.02 , 0.03 , 0.04 , 0.05 , 0.06 , 0.07 , 0.08 , 0.09 , 0.1 , 0.2 , 0.3 , 0.4 , 0.5 , 0.6 , 0.7 , 0.8 , 0.9 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 ,
226- 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 ,
227- 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 ,
228- 60 , 61 , 62 , 63 , 64 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 ,
229- 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , 91 , 92 , 93 , 94 , 95 , 96 , 97 , 98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 },
230- " centrality FT0C (%)" };
231-
232239 if (cfgFillEvent) {
233240 fRegistry .add (" Event/before/hZvtx" , " vertex z; Z_{vtx} (cm)" , kTH1F , {{100 , -50 , +50 }}, false );
234- fRegistry .add (" Event/before/hMultNTracksPV" , " hMultNTracksPV; N_{track} to PV" , kTH1F , {{6001 , -0.5 , 6000.5 }}, false );
235- fRegistry .add (" Event/before/hMultNTracksPVeta1" , " hMultNTracksPVeta1; N_{track} to PV" , kTH1F , {{6001 , -0.5 , 6000.5 }}, false );
236- fRegistry .add (" Event/before/hMultFT0" , " hMultFT0;mult. FT0A;mult. FT0C" , kTH2F , {{200 , 0 , 200000 }, {60 , 0 , 60000 }}, false );
241+ fRegistry .add (" Event/before/hMultNTracksPV" , " hMultNTracksPV; N_{track} to PV in |#eta| < 0.8" , kTH1F , {{axis_mult_ncontrib08}}, false );
242+ fRegistry .add (" Event/before/hMultFT0AFT0C" , " hMultFT0AFT0C;mult. FT0A;mult. FT0C" , kTH2F , {{axis_mult_ft0a}, {axis_mult_ft0c}}, false );
243+ fRegistry .add (" Event/before/hMultFT0AFV0A" , " hMultFT0AFV0A;mult. FT0A;mult. FV0A" , kTH2F , {{axis_mult_ft0a}, {axis_mult_fv0a}}, false );
244+ fRegistry .add (" Event/before/hMultFT0CFV0A" , " hMultFT0CFV0A;mult. FT0C;mult. FV0A" , kTH2F , {{axis_mult_ft0c}, {axis_mult_fv0a}}, false );
237245 fRegistry .add (" Event/before/hCentFT0A" , " hCentFT0A;centrality FT0A (%)" , kTH1F , {{axis_cent_ft0a}}, false );
238246 fRegistry .add (" Event/before/hCentFT0C" , " hCentFT0C;centrality FT0C (%)" , kTH1F , {{axis_cent_ft0c}}, false );
239247 fRegistry .add (" Event/before/hCentFT0M" , " hCentFT0M;centrality FT0M (%)" , kTH1F , {{axis_cent_ft0m}}, false );
240- fRegistry .add (" Event/before/hCentFT0CvsMultNTracksPV" , " hCentFT0CvsMultNTracksPV;centrality FT0C (%);N_{track} to PV" , kTH2F , {{100 , 0 , 100 }, {600 , 0 , 6000 }}, false );
241- fRegistry .add (" Event/before/hMultFT0CvsMultNTracksPV" , " hMultFT0CvsMultNTracksPV;mult. FT0C;N_{track} to PV" , kTH2F , {{60 , 0 , 60000 }, {600 , 0 , 6000 }}, false );
242- fRegistry .add (" Event/before/hMultFT0CvsOccupancy" , " hMultFT0CvsOccupancy;mult. FT0C;N_{track} in time range" , kTH2F , {{60 , 0 , 60000 }, {200 , 0 , 20000 }}, false );
243- fRegistry .add (" Event/before/hNTracksPVvsOccupancy" , " hNTracksPVvsOccupancy;N_{track} to PV;N_{track} in time range" , kTH2F , {{600 , 0 , 6000 }, {200 , 0 , 20000 }}, false );
244- fRegistry .add (" Event/before/hNGlobalTracksvsOccupancy" , " hNGlobalTracksvsOccupancy;N_{track}^{global};N_{track} in time range" , kTH2F , {{600 , 0 , 6000 }, {200 , 0 , 20000 }}, false );
245- fRegistry .add (" Event/before/hNGlobalTracksPVvsOccupancy" , " hNGlobalTracksPVvsOccupancy;N_{track}^{global} to PV;N_{track} in time range" , kTH2F , {{600 , 0 , 6000 }, {200 , 0 , 20000 }}, false );
248+ fRegistry .add (" Event/before/hCentFT0CvsMultNTracksPV" , " hCentFT0CvsMultNTracksPV;centrality FT0C (%);N_{track} to PV in |#eta| < 0.8" , kTH2F , {{axis_cent_ft0c}, {axis_mult_ncontrib08}}, false );
249+ fRegistry .add (" Event/before/hMultFT0CvsMultNTracksPV" , " hMultFT0CvsMultNTracksPV;mult. FT0C;N_{track} to PV in |#eta| < 0.8" , kTH2F , {{axis_mult_ft0c}, {axis_mult_ncontrib08}}, false );
250+ fRegistry .add (" Event/before/hMultFT0CvsTrackOccupancy" , " hMultFT0CvsTrackOccupancy;mult. FT0C;N_{track} in time range" , kTH2F , {{axis_mult_ft0c}, {200 , 0 , 20000 }}, false );
251+ fRegistry .add (" Event/before/hMultFV0AvsMultNTracksPV" , " hMultFV0AvsMultNTracksPV;mult. FV0A;N_{track} to PV in |#eta| < 0.8" , kTH2F , {{axis_mult_fv0a}, {axis_mult_ncontrib08}}, false );
252+ fRegistry .add (" Event/before/hNTracksPVvsTrackOccupancy" , " hNTracksPVvsTrackOccupancy;N_{track} to PV in |#eta| < 0.8;N_{track} in time range" , kTH2F , {{axis_mult_ncontrib08}, {200 , 0 , 20000 }}, false );
253+ fRegistry .add (" Event/before/hNGlobalTracksvsTrackOccupancy" , " hNGlobalTracksvsTrackOccupancy;N_{track}^{global} in |#eta| < 0.8;N_{track} in time range" , kTH2F , {{axis_mult_globalTrack}, {200 , 0 , 20000 }}, false );
254+ fRegistry .add (" Event/before/hNGlobalTracksPVvsTrackOccupancy" , " hNGlobalTracksPVvsTrackOccupancy;N_{track}^{global} to PV in |#eta| < 0.8;N_{track} in time range" , kTH2F , {{axis_mult_global_ncontrib08}, {200 , 0 , 20000 }}, false );
246255 fRegistry .add (" Event/before/hCorrOccupancy" , " occupancy correlation;FT0C occupancy;track-based occupancy" , kTH2F , {{200 , 0 , 200000 }, {200 , 0 , 20000 }}, false );
247256 }
248257 fRegistry .addClone (" Event/before/" , " Event/after/" );
249258
250259 if (cfgFillEvent) {
251- fRegistry .add (" Event/after/hMultNGlobalTracks" , " hMultNGlobalTracks; N_{track}^{global}" , kTH1F , {{6001 , - 0.5 , 6000.5 }}, false );
252- fRegistry .add (" Event/after/hCentFT0CvsMultNGlobalTracks" , " hCentFT0CvsMultNGlobalTracks;centrality FT0C (%);N_{track}^{global}" , kTH2F , {{100 , 0 , 100 }, {600 , 0 , 6000 }}, false );
253- fRegistry .add (" Event/after/hMultFT0CvsMultNGlobalTracks" , " hMultFT0CvsMultNGlobalTracks;mult. FT0C;N_{track}^{global}" , kTH2F , {{60 , 0 , 60000 }, {600 , 0 , 6000 }}, false );
254- fRegistry .add (" Event/after/hMultNGlobalTracksPV" , " hMultNGlobalTracksPV; N_{track}^{global} to PV" , kTH1F , {{6001 , - 0.5 , 6000.5 }}, false );
255- fRegistry .add (" Event/after/hCentFT0CvsMultNGlobalTracksPV" , " hCentFT0CvsMultNGlobalTracksPV;centrality FT0C (%);N_{track}^{global} to PV" , kTH2F , {{100 , 0 , 100 }, {600 , 0 , 6000 }}, false );
256- fRegistry .add (" Event/after/hMultFT0CvsMultNGlobalTracksPV" , " hMultFT0CvsMultNGlobalTracksPV;mult. FT0C;N_{track}^{global} to PV" , kTH2F , {{60 , 0 , 60000 }, {600 , 0 , 6000 }}, false );
260+ fRegistry .add (" Event/after/hMultNGlobalTracks" , " hMultNGlobalTracks; N_{track}^{global} in |#eta| < 0.8 " , kTH1F , {{axis_mult_globalTrack }}, false );
261+ fRegistry .add (" Event/after/hCentFT0CvsMultNGlobalTracks" , " hCentFT0CvsMultNGlobalTracks;centrality FT0C (%);N_{track}^{global} in |#eta| < 0.8 " , kTH2F , {{axis_cent_ft0c }, {axis_mult_globalTrack }}, false );
262+ fRegistry .add (" Event/after/hMultFT0CvsMultNGlobalTracks" , " hMultFT0CvsMultNGlobalTracks;mult. FT0C;N_{track}^{global} in |#eta| < 0.8 " , kTH2F , {{axis_mult_ft0c }, {axis_mult_globalTrack }}, false );
263+ fRegistry .add (" Event/after/hMultNGlobalTracksPV" , " hMultNGlobalTracksPV; N_{track}^{global} to PV in |#eta| < 0.8 " , kTH1F , {{axis_mult_global_ncontrib08 }}, false );
264+ fRegistry .add (" Event/after/hCentFT0CvsMultNGlobalTracksPV" , " hCentFT0CvsMultNGlobalTracksPV;centrality FT0C (%);N_{track}^{global} to PV in |#eta| < 0.8 " , kTH2F , {{axis_cent_ft0c }, {axis_mult_global_ncontrib08 }}, false );
265+ fRegistry .add (" Event/after/hMultFT0CvsMultNGlobalTracksPV" , " hMultFT0CvsMultNGlobalTracksPV;mult. FT0C;N_{track}^{global} to PV in |#eta| < 0.8 " , kTH2F , {{axis_mult_ft0c }, {axis_mult_global_ncontrib08 }}, false );
257266 }
258267
259268 std::vector<double > tmp_ptbins;
@@ -471,11 +480,13 @@ struct eventQC {
471480 fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hZvtx" ), collision.posZ ());
472481
473482 fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hMultNTracksPV" ), collision.multNTracksPV ());
474- fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hMultNTracksPVeta1" ), collision.multNTracksPVeta1 ());
475- fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hMultFT0" ), collision.multFT0A (), collision.multFT0C ());
483+ fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hMultFT0AFT0C" ), collision.multFT0A (), collision.multFT0C ());
484+ fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hMultFT0AFV0A" ), collision.multFT0A (), collision.multFV0A ());
485+ fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hMultFT0CFV0A" ), collision.multFT0C (), collision.multFV0A ());
476486 fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hMultFT0CvsMultNTracksPV" ), collision.multFT0C (), collision.multNTracksPV ());
477- fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hMultFT0CvsOccupancy" ), collision.multFT0C (), collision.trackOccupancyInTimeRange ());
478- fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hNTracksPVvsOccupancy" ), collision.multNTracksPV (), collision.trackOccupancyInTimeRange ());
487+ fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hMultFV0AvsMultNTracksPV" ), collision.multFV0A (), collision.multNTracksPV ());
488+ fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hMultFT0CvsTrackOccupancy" ), collision.multFT0C (), collision.trackOccupancyInTimeRange ());
489+ fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hNTracksPVvsTrackOccupancy" ), collision.multNTracksPV (), collision.trackOccupancyInTimeRange ());
479490 fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hCorrOccupancy" ), collision.ft0cOccupancyInTimeRange (), collision.trackOccupancyInTimeRange ());
480491
481492 fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hCentFT0A" ), collision.centFT0A ());
@@ -810,7 +821,8 @@ struct eventQC {
810821 return true ;
811822 }
812823
813- Filter collisionFilter_evsel = o2::aod::evsel::sel8 == true && (eventcuts.cfgZvtxMin < o2::aod::collision::posZ && o2::aod::collision::posZ < eventcuts.cfgZvtxMax);
824+ Filter collisionFilter_evsel = ifnode(eventcuts.cfgRequireSel8.node(), o2::aod::evsel::sel8 == true , true );
825+ Filter collisionFilter_zvtx = eventcuts.cfgZvtxMin < o2::aod::collision::posZ && o2::aod::collision::posZ < eventcuts.cfgZvtxMax;
814826 Filter collisionFilter_centrality = (cfgCentMin < o2::aod::cent::centFT0M && o2::aod::cent::centFT0M < cfgCentMax) || (cfgCentMin < o2::aod::cent::centFT0A && o2::aod::cent::centFT0A < cfgCentMax) || (cfgCentMin < o2::aod::cent::centFT0C && o2::aod::cent::centFT0C < cfgCentMax);
815827 Filter collisionFilter_multiplicity = cfgNtracksPV08Min <= o2::aod::mult::multNTracksPV && o2::aod::mult::multNTracksPV < cfgNtracksPV08Max;
816828 Filter collisionFilter_track_occupancy = eventcuts.cfgTrackOccupancyMin <= o2::aod::evsel::trackOccupancyInTimeRange && o2::aod::evsel::trackOccupancyInTimeRange < eventcuts.cfgTrackOccupancyMax;
@@ -826,11 +838,40 @@ struct eventQC {
826838
827839 SliceCache cache;
828840 Preslice<aod::Tracks> perCol = o2::aod::track::collisionId;
841+ Preslice<aod::Collisions> perBC = o2::aod::collision::bcId;
829842
830843 template <bool isTriggerAnalysis, typename TBCs, typename TCollisions, typename TTracks>
831- void runQC (TBCs const &, TCollisions const & collisions, TTracks const & tracks)
844+ void runQC (TBCs const & bcs , TCollisions const & collisions, TTracks const & tracks)
832845 {
833- for (auto & collision : collisions) {
846+ if constexpr (isTriggerAnalysis) {
847+ for (const auto & bc : bcs) {
848+ initCCDB (bc);
849+ if (!zorro.isSelected (bc.globalBC ())) { // triggered BC
850+ continue ;
851+ }
852+
853+ // if (!bc.selection_bit(o2::aod::evsel::kIsTriggerTVX)) {
854+ // continue;
855+ // }
856+
857+ const auto & collisions_per_bc = collisions.sliceBy (perBC, bc.globalIndex ());
858+ fRegistry .fill (HIST (" BC/hNcoll" ), collisions_per_bc.size ());
859+ for (const auto & collision : collisions_per_bc) {
860+ fRegistry .fill (HIST (" BC/Collision/hMultNTracksPV" ), collision.multNTracksPV ());
861+ fRegistry .fill (HIST (" BC/Collision/hMultFT0AFT0C" ), collision.multFT0A (), collision.multFT0C ());
862+ fRegistry .fill (HIST (" BC/Collision/hMultFT0AFV0A" ), collision.multFT0A (), collision.multFV0A ());
863+ fRegistry .fill (HIST (" BC/Collision/hMultFT0CFV0A" ), collision.multFT0C (), collision.multFV0A ());
864+ }
865+
866+ for (const auto & [col1, col2] : combinations (CombinationsStrictlyUpperIndexPolicy (collisions_per_bc, collisions_per_bc))) {
867+ fRegistry .fill (HIST (" BC/hDeltaZ" ), col1.posZ () - col2.posZ ());
868+ fRegistry .fill (HIST (" BC/hDeltaT" ), col1.collisionTime () - col2.collisionTime ());
869+ fRegistry .fill (HIST (" BC/hCorrNcontrib" ), col1.numContrib (), col2.numContrib ());
870+ } // end of pairing
871+ } // end of bc loop
872+ }
873+
874+ for (const auto & collision : collisions) {
834875 if constexpr (isTriggerAnalysis) {
835876 const auto & bc = collision.template bc_as <TBCs>(); // don't use foundBC for CEFP.
836877 initCCDB (bc);
@@ -862,7 +903,7 @@ struct eventQC {
862903
863904 int nGlobalTracks = 0 , nGlobalTracksPV = 0 ;
864905 auto tracks_per_coll = tracks.sliceBy (perCol, collision.globalIndex ());
865- for (auto & track : tracks_per_coll) {
906+ for (const auto & track : tracks_per_coll) {
866907 if (!isSelectedTrack (track)) {
867908 continue ;
868909 }
@@ -893,8 +934,8 @@ struct eventQC {
893934 fRegistry .fill (HIST (" Event/after/hMultNGlobalTracksPV" ), nGlobalTracksPV);
894935 fRegistry .fill (HIST (" Event/after/hMultFT0CvsMultNGlobalTracks" ), collision.multFT0C (), nGlobalTracks);
895936 fRegistry .fill (HIST (" Event/after/hMultFT0CvsMultNGlobalTracksPV" ), collision.multFT0C (), nGlobalTracksPV);
896- fRegistry .fill (HIST (" Event/after/hNGlobalTracksvsOccupancy " ), nGlobalTracks, collision.trackOccupancyInTimeRange ());
897- fRegistry .fill (HIST (" Event/after/hNGlobalTracksPVvsOccupancy " ), nGlobalTracksPV, collision.trackOccupancyInTimeRange ());
937+ fRegistry .fill (HIST (" Event/after/hNGlobalTracksvsTrackOccupancy " ), nGlobalTracks, collision.trackOccupancyInTimeRange ());
938+ fRegistry .fill (HIST (" Event/after/hNGlobalTracksPVvsTrackOccupancy " ), nGlobalTracksPV, collision.trackOccupancyInTimeRange ());
898939 fRegistry .fill (HIST (" Event/after/hCentFT0CvsMultNGlobalTracks" ), collision.centFT0C (), nGlobalTracks);
899940 fRegistry .fill (HIST (" Event/after/hCentFT0CvsMultNGlobalTracksPV" ), collision.centFT0C (), nGlobalTracksPV);
900941 }
0 commit comments