@@ -82,6 +82,7 @@ struct eventQC {
8282 Configurable<bool > cfgRequireNoCollInTimeRangeStrict{" cfgRequireNoCollInTimeRangeStrict" , false , " require no collision in time range strict" };
8383 Configurable<bool > cfgRequirekNoCollInRofStandard{" cfgRequirekNoCollInRofStandard" , false , " require no other collisions in this Readout Frame with per-collision multiplicity above threshold" };
8484 Configurable<bool > cfgRequirekNoCollInRofStrict{" cfgRequirekNoCollInRofStrict" , false , " require no other collisions in this Readout Frame" };
85+ Configurable<bool > cfgRequirekNoHighMultCollInPrevRof{" cfgRequirekNoHighMultCollInPrevRof" , false , " require no HM collision in previous ITS ROF" };
8586 } eventcuts;
8687
8788 struct : ConfigurableGroup {
@@ -98,6 +99,7 @@ struct eventQC {
9899 Configurable<int > cfg_min_ncluster_itsib{" cfg_min_ncluster_itsib" , 1 , " min ncluster its" };
99100 Configurable<float > cfg_max_chi2tpc{" cfg_max_chi2tpc" , 4.0 , " max chi2/NclsTPC" };
100101 Configurable<float > cfg_max_chi2its{" cfg_max_chi2its" , 5.0 , " max chi2/NclsITS" };
102+ Configurable<float > cfg_max_chi2tof{" cfg_max_chi2tof" , 1e+10 , " max chi2/NclsTOF" };
101103 Configurable<float > cfg_max_dcaxy{" cfg_max_dcaxy" , 0.2 , " max dca XY for single track in cm" };
102104 Configurable<float > cfg_max_dcaz{" cfg_max_dcaz" , 0.2 , " max dca Z for single track in cm" };
103105 Configurable<float > cfg_min_TPCNsigmaEl{" cfg_min_TPCNsigmaEl" , -1e+10 , " min n sigma e in TPC" };
@@ -129,7 +131,7 @@ struct eventQC {
129131 {
130132 // event info
131133
132- const int nbin_ev = 13 ;
134+ const int nbin_ev = 17 ;
133135 auto hCollisionCounter = fRegistry .add <TH1>(" Event/before/hCollisionCounter" , " collision counter;;Number of events" , kTH1F , {{nbin_ev, 0.5 , nbin_ev + 0.5 }}, false );
134136 hCollisionCounter->GetXaxis ()->SetBinLabel (1 , " all" );
135137 hCollisionCounter->GetXaxis ()->SetBinLabel (2 , " FT0AND" );
@@ -143,7 +145,11 @@ struct eventQC {
143145 hCollisionCounter->GetXaxis ()->SetBinLabel (10 , " sel8" );
144146 hCollisionCounter->GetXaxis ()->SetBinLabel (11 , " |Z_{vtx}| < 10 cm" );
145147 hCollisionCounter->GetXaxis ()->SetBinLabel (12 , " NoCollInTimeRangeStandard" );
146- hCollisionCounter->GetXaxis ()->SetBinLabel (13 , " accepted" );
148+ hCollisionCounter->GetXaxis ()->SetBinLabel (13 , " NoCollInTimeRangeStrict" );
149+ hCollisionCounter->GetXaxis ()->SetBinLabel (14 , " NoCollInRofStandard" );
150+ hCollisionCounter->GetXaxis ()->SetBinLabel (15 , " NoCollInRofStrict" );
151+ hCollisionCounter->GetXaxis ()->SetBinLabel (16 , " NoHighMultCollInPrevRof" );
152+ hCollisionCounter->GetXaxis ()->SetBinLabel (17 , " accepted" );
147153
148154 fRegistry .add (" Event/before/hZvtx" , " vertex z; Z_{vtx} (cm)" , kTH1F , {{100 , -50 , +50 }}, false );
149155 fRegistry .add (" Event/before/hMultNTracksPV" , " hMultNTracksPV; N_{track} to PV" , kTH1F , {{6001 , -0.5 , 6000.5 }}, false );
@@ -350,6 +356,18 @@ struct eventQC {
350356 if (collision.selection_bit (o2::aod::evsel::kNoCollInTimeRangeStandard )) {
351357 fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hCollisionCounter" ), 12.0 );
352358 }
359+ if (collision.selection_bit (o2::aod::evsel::kNoCollInTimeRangeStrict )) {
360+ fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hCollisionCounter" ), 13.0 );
361+ }
362+ if (collision.selection_bit (o2::aod::evsel::kNoCollInRofStandard )) {
363+ fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hCollisionCounter" ), 14.0 );
364+ }
365+ if (collision.selection_bit (o2::aod::evsel::kNoCollInRofStrict )) {
366+ fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hCollisionCounter" ), 15.0 );
367+ }
368+ if (collision.selection_bit (o2::aod::evsel::kNoHighMultCollInPrevRof )) {
369+ fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hCollisionCounter" ), 16.0 );
370+ }
353371 fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hZvtx" ), collision.posZ ());
354372
355373 fRegistry .fill (HIST (" Event/" ) + HIST (event_types[ev_id]) + HIST (" hMultNTracksPV" ), collision.multNTracksPV ());
@@ -571,11 +589,11 @@ struct eventQC {
571589 return false ;
572590 }
573591
574- if (trackcuts.cfg_requireTOF && !track.hasTOF ()) {
592+ if (trackcuts.cfg_requireTOF && !( track.hasTOF () && track. tofChi2 () < trackcuts. cfg_max_chi2tof )) {
575593 return false ;
576594 }
577595
578- if (track.hasTOF () && (track.tofNSigmaEl () < trackcuts.cfg_min_TOFNsigmaEl || trackcuts.cfg_max_TOFNsigmaEl < track.tofNSigmaEl ())) {
596+ if (track.hasTOF () && (( track.tofNSigmaEl () < trackcuts.cfg_min_TOFNsigmaEl || trackcuts.cfg_max_TOFNsigmaEl < track.tofNSigmaEl ()) || trackcuts. cfg_max_chi2tof < track. tofChi2 ())) {
579597 return false ;
580598 }
581599
@@ -629,6 +647,10 @@ struct eventQC {
629647 return false ;
630648 }
631649
650+ if (eventcuts.cfgRequirekNoHighMultCollInPrevRof && !collision.selection_bit (o2::aod::evsel::kNoHighMultCollInPrevRof )) {
651+ return false ;
652+ }
653+
632654 if (!(eventcuts.cfgTrackOccupancyMin <= collision.trackOccupancyInTimeRange () && collision.trackOccupancyInTimeRange () < eventcuts.cfgTrackOccupancyMax )) {
633655 return false ;
634656 }
@@ -669,8 +691,8 @@ struct eventQC {
669691 continue ;
670692 }
671693 fillEventInfo<1 >(collision);
672- fRegistry .fill (HIST (" Event/before/hCollisionCounter" ), 13 ); // accepted
673- fRegistry .fill (HIST (" Event/after/hCollisionCounter" ), 13 ); // accepted
694+ fRegistry .fill (HIST (" Event/before/hCollisionCounter" ), 17 ); // accepted
695+ fRegistry .fill (HIST (" Event/after/hCollisionCounter" ), 17 ); // accepted
674696
675697 int nGlobalTracks = 0 , nGlobalTracksPV = 0 ;
676698 auto tracks_per_coll = tracks.sliceBy (perCol, collision.globalIndex ());
0 commit comments