@@ -93,6 +93,7 @@ struct DndetaMFTPbPb {
9393 Configurable<float > maxEta{" maxEta" , -2 .5f , " " };
9494 Configurable<int > minNclusterMft{" minNclusterMft" , 5 ,
9595 " minimum number of MFT clusters" };
96+ Configurable<float > maxChi2{" maxChi2" , 10 .f , " " };
9697 Configurable<double > minPt{" minPt" , 0 ., " minimum pT of the MFT tracks" };
9798 Configurable<bool > requireCA{
9899 " requireCA" , false , " Use Cellular Automaton track-finding algorithm" };
@@ -106,6 +107,10 @@ struct DndetaMFTPbPb {
106107 Configurable<float > maxZvtxDiff{
107108 " maxZvtxDiff" , 1 .0f ,
108109 " max allowed Z vtx difference for reconstruced collisions (cm)" };
110+ Configurable<bool > requireNoCollInTimeRangeStrict{" requireNoCollInTimeRangeStrict" , true , " requireNoCollInTimeRangeStrict" };
111+ Configurable<bool > requireNoCollInRofStrict{" requireNoCollInRofStrict" , true , " requireNoCollInRofStrict" };
112+ Configurable<bool > requireNoCollInRofStandard{" requireNoCollInRofStandard" , false , " requireNoCollInRofStandard" };
113+ Configurable<bool > requireNoHighMultCollInPrevRof{" requireNoHighMultCollInPrevRof" , true , " requireNoHighMultCollInPrevRof" };
109114 Configurable<bool > requireNoCollInTimeRangeStd{
110115 " requireNoCollInTimeRangeStd" , false ,
111116 " reject collisions corrupted by the cannibalism, with other collisions "
@@ -215,18 +220,22 @@ struct DndetaMFTPbPb {
215220 }
216221
217222 auto hev = registry.add <TH1>(" hEvtSel" , " hEvtSel" , HistType::kTH1F ,
218- {{12 , -0 .5f , +11 .5f }});
223+ {{16 , -0 .5f , +15 .5f }});
219224 hev->GetXaxis ()->SetBinLabel (1 , " All collisions" );
220225 hev->GetXaxis ()->SetBinLabel (2 , " Ev. sel." );
221226 hev->GetXaxis ()->SetBinLabel (3 , " kIsGoodZvtxFT0vsPV" );
222227 hev->GetXaxis ()->SetBinLabel (4 , " NoSameBunchPileup" );
223228 hev->GetXaxis ()->SetBinLabel (5 , " Z-vtx cut" );
224229 hev->GetXaxis ()->SetBinLabel (6 , " kNoCollInTimeRangeStd" );
225230 hev->GetXaxis ()->SetBinLabel (7 , " kNoCollInTimeRangeNarrow" );
226- hev->GetXaxis ()->SetBinLabel (8 , " Below min occup." );
227- hev->GetXaxis ()->SetBinLabel (9 , " Above max occup." );
228- hev->GetXaxis ()->SetBinLabel (10 , " Below min IR (kHz)" );
229- hev->GetXaxis ()->SetBinLabel (11 , " Above max IR (kHz)" );
231+ hev->GetXaxis ()->SetBinLabel (8 , " kNoCollInTimeRangeStrict" );
232+ hev->GetXaxis ()->SetBinLabel (9 , " kNoCollInRofStrict" );
233+ hev->GetXaxis ()->SetBinLabel (10 , " kNoCollInRofStandard" );
234+ hev->GetXaxis ()->SetBinLabel (11 , " kNoHighMultCollInPrevRof" );
235+ hev->GetXaxis ()->SetBinLabel (12 , " Below min occup." );
236+ hev->GetXaxis ()->SetBinLabel (13 , " Above max occup." );
237+ hev->GetXaxis ()->SetBinLabel (14 , " Below min IR (kHz)" );
238+ hev->GetXaxis ()->SetBinLabel (15 , " Above max IR (kHz)" );
230239
231240 auto hBcSel = registry.add <TH1>(" hBcSel" , " hBcSel" , HistType::kTH1F ,
232241 {{3 , -0 .5f , +2 .5f }});
@@ -736,13 +745,13 @@ struct DndetaMFTPbPb {
736745 return false ;
737746 }
738747 if (fillHis) {
739- registry.fill (HIST (" hEvtSel" ), 9 );
748+ registry.fill (HIST (" hEvtSel" ), 13 );
740749 }
741750 if (eventCuts.maxIR >= 0 && ir > eventCuts.maxIR ) {
742751 return false ;
743752 }
744753 if (fillHis) {
745- registry.fill (HIST (" hEvtSel" ), 10 );
754+ registry.fill (HIST (" hEvtSel" ), 14 );
746755 }
747756 return true ;
748757 }
@@ -752,6 +761,8 @@ struct DndetaMFTPbPb {
752761 {
753762 if (track.eta () < trackCuts.minEta || track.eta () > trackCuts.maxEta )
754763 return false ;
764+ if (track.chi2 () > trackCuts.maxChi2 )
765+ return false ;
755766 if (trackCuts.requireCA && !track.isCA ())
756767 return false ;
757768 if (track.nClusters () < trackCuts.minNclusterMft )
@@ -960,21 +971,45 @@ struct DndetaMFTPbPb {
960971 if constexpr (fillHis) {
961972 registry.fill (HIST (" hEvtSel" ), 6 );
962973 }
974+ if (eventCuts.requireNoCollInTimeRangeStrict && !collision.selection_bit (o2::aod::evsel::kNoCollInTimeRangeStrict )) {
975+ return false ;
976+ }
977+ if constexpr (fillHis) {
978+ registry.fill (HIST (" hEvtSel" ), 7 );
979+ }
980+ if (eventCuts.requireNoCollInRofStrict && !collision.selection_bit (o2::aod::evsel::kNoCollInRofStrict )) {
981+ return false ;
982+ }
983+ if constexpr (fillHis) {
984+ registry.fill (HIST (" hEvtSel" ), 8 );
985+ }
986+ if (eventCuts.requireNoCollInRofStandard && !collision.selection_bit (o2::aod::evsel::kNoCollInRofStandard )) {
987+ return false ;
988+ }
989+ if constexpr (fillHis) {
990+ registry.fill (HIST (" hEvtSel" ), 9 );
991+ }
992+ if (eventCuts.requireNoHighMultCollInPrevRof && !collision.selection_bit (o2::aod::evsel::kNoHighMultCollInPrevRof )) {
993+ return false ;
994+ }
995+ if constexpr (fillHis) {
996+ registry.fill (HIST (" hEvtSel" ), 10 );
997+ }
963998 if (eventCuts.minOccupancy >= 0 &&
964999 getOccupancy (collision, eventCuts.occupancyEstimator ) <
9651000 eventCuts.minOccupancy ) {
9661001 return false ;
9671002 }
9681003 if constexpr (fillHis) {
969- registry.fill (HIST (" hEvtSel" ), 7 );
1004+ registry.fill (HIST (" hEvtSel" ), 11 );
9701005 }
9711006 if (eventCuts.maxOccupancy >= 0 &&
9721007 getOccupancy (collision, eventCuts.occupancyEstimator ) >
9731008 eventCuts.maxOccupancy ) {
9741009 return false ;
9751010 }
9761011 if constexpr (fillHis) {
977- registry.fill (HIST (" hEvtSel" ), 8 );
1012+ registry.fill (HIST (" hEvtSel" ), 12 );
9781013 }
9791014 return true ;
9801015 }
0 commit comments