@@ -55,6 +55,9 @@ struct FilterCF {
5555 kTrackSelected = BIT (0 ),
5656 kITS5Clusters = BIT (1 ),
5757 kTPCCrossedRows = BIT (2 ),
58+ kTPCClusters = BIT (3 ),
59+ kchi2perTPC = BIT (4 ),
60+ kchi2perITS = BIT (5 ),
5861 };
5962
6063 enum TrackSelectionCuts2 : uint8_t {
@@ -68,7 +71,7 @@ struct FilterCF {
6871 O2_DEFINE_CONFIGURABLE (cfgCutMCPt, float , 0 .5f , " Minimal pT for particles" )
6972 O2_DEFINE_CONFIGURABLE (cfgCutMCEta, float , 0 .8f , " Eta range for particles" )
7073 O2_DEFINE_CONFIGURABLE (cfgVerbosity, int , 1 , " Verbosity level (0 = major, 1 = per collision)" )
71- O2_DEFINE_CONFIGURABLE (cfgTrigger, int , 7 , " Trigger choice: (0 = none, 7 = sel7, 8 = sel8, 9 = sel8 + kNoSameBunchPileup + kIsGoodZvtxFT0vsPV, 10 = sel8 before April, 2024, 11 = sel8 for MC, 12 = sel8 with low occupancy cut) " )
74+ O2_DEFINE_CONFIGURABLE (cfgTrigger, int , 7 , " Trigger choice: (0 = none, 7 = sel7, 8 = sel8, 9 = sel8 + kNoSameBunchPileup + kIsGoodZvtxFT0vsPV, 10 = sel8 before April, 2024, 11 = sel8 for MC, 12 = sel8 with low occupancy cut, 13 = sel8 + kNoSameBunchPileup + kIsGoodITSLayersAll -- for OO/NeNe) " )
7275 O2_DEFINE_CONFIGURABLE (cfgMinOcc, int , 0 , " minimum occupancy selection" )
7376 O2_DEFINE_CONFIGURABLE (cfgMaxOcc, int , 3000 , " maximum occupancy selection" )
7477 O2_DEFINE_CONFIGURABLE (cfgCollisionFlags, uint16_t , aod::collision::CollisionFlagsRun2::Run2VertexerTracks, " Request collision flags if non-zero (0 = off, 1 = Run2VertexerTracks)" )
@@ -84,6 +87,9 @@ struct FilterCF {
8487 O2_DEFINE_CONFIGURABLE (dcazmax, float , 999 .f, " maximum dcaz of tracks" )
8588 O2_DEFINE_CONFIGURABLE (itsnclusters, int , 5 , " minimum number of ITS clusters for tracks" )
8689 O2_DEFINE_CONFIGURABLE (tpcncrossedrows, int , 80 , " minimum number of TPC crossed rows for tracks" )
90+ O2_DEFINE_CONFIGURABLE (tpcnclusters, int , 50 , " minimum number of TPC clusters found" )
91+ O2_DEFINE_CONFIGURABLE (chi2pertpccluster, float , 2.5 , " maximum Chi2 / cluster for the TPC track segment" )
92+ O2_DEFINE_CONFIGURABLE (chi2peritscluster, float , 36 , " maximum Chi2 / cluster for the ITS track segment" )
8793
8894 // Filters and input definitions
8995 Filter collisionZVtxFilter = nabs(aod::collision::posZ) < cfgCutVertex;
@@ -140,6 +146,8 @@ struct FilterCF {
140146 return isMultSelected && collision.sel8 () && collision.selection_bit (aod::evsel::kNoSameBunchPileup ) && collision.selection_bit (aod::evsel::kIsGoodZvtxFT0vsPV ) && collision.selection_bit (aod::evsel::kNoCollInTimeRangeStandard ) && collision.selection_bit (aod::evsel::kIsGoodITSLayersAll );
141147 else
142148 return false ;
149+ } else if (cfgTrigger == 13 ) { // relevant for OO/NeNe
150+ return isMultSelected && collision.sel8 () && collision.selection_bit (aod::evsel::kNoSameBunchPileup ) && collision.selection_bit (aod::evsel::kIsGoodITSLayersAll );
143151 }
144152 return false ;
145153 }
@@ -205,6 +213,15 @@ struct FilterCF {
205213 if (track.tpcNClsCrossedRows () >= tpcncrossedrows) {
206214 trackType |= kTPCCrossedRows ;
207215 }
216+ if (track.tpcNClsFound () >= tpcnclusters) {
217+ trackType |= kTPCClusters ;
218+ }
219+ if (track.tpcChi2NCl () <= chi2pertpccluster) {
220+ trackType |= kchi2perTPC;
221+ }
222+ if (track.itsChi2NCl () <= chi2peritscluster) {
223+ trackType |= kchi2perITS;
224+ }
208225 }
209226 return trackType;
210227 } else if (cfgTrackSelection == 2 ) {
0 commit comments