@@ -228,7 +228,9 @@ std::vector<TrackSelection*> trackFilters = {}; // the vector of tr
228228std::vector<std::function<float (float )>> maxDcaZPtDeps = {}; // max dca in z axis as function of pT for each track selector
229229TrackSelection* extraTrackFilter = nullptr ;
230230bool dca2Dcut = false ;
231- float sharedTpcClusters = 1.0 ; // /< max fraction of shared TPC clusters
231+ // / TODO: to incorporate our own track selectio object
232+ float sharedTpcClusters = 1.0 ; // /< max fraction of shared TPC clusters
233+ float sharedTpcClustersExtra = 1.0 ; // /< max fraction of shared TPC clusters for the extra track filter
232234float maxDCAz = 1e6f;
233235float maxDCAxy = 1e6f;
234236
@@ -263,12 +265,22 @@ inline void initializeTrackSelection(TrackSelectionTuneCfg& tune)
263265 };
264266 auto highQualityTpcTrack = []() {
265267 TrackSelection* tpcTrack = new TrackSelection (getGlobalTrackSelection ());
268+ tpcTrack->SetTrackType (o2::aod::track::TrackTypeEnum::Track);
266269 tpcTrack->ResetITSRequirements ();
267270 tpcTrack->SetRequireITSRefit (false );
268271 tpcTrack->SetMinNClustersTPC (120 );
269- sharedTpcClusters = 0.2 ;
272+ sharedTpcClustersExtra = 0.2 ;
270273 return tpcTrack;
271274 };
275+ auto itsOnlyTrack = []() {
276+ TrackSelection* itsTrack = new TrackSelection ();
277+ itsTrack->SetTrackType (o2::aod::track::TrackTypeEnum::Track);
278+ itsTrack->SetRequireITSRefit (true );
279+ itsTrack->SetRequireHitsInITSLayers (2 , {0 , 1 , 2 });
280+ itsTrack->SetMaxChi2PerClusterITS (36 .0f );
281+ itsTrack->SetMaxDcaXYPtDep ([](float pt) { return 0 .004f + 0 .013f / pt; });
282+ return itsTrack;
283+ };
272284 switch (tracktype) {
273285 case 1 : { /* Run2 global track */
274286 TrackSelection* globalRun2 = new TrackSelection (getGlobalTrackSelection ());
@@ -382,6 +394,22 @@ inline void initializeTrackSelection(TrackSelectionTuneCfg& tune)
382394 addTrackFilter (new TrackSelection (getGlobalTrackSelectionRun3ITSMatch (TrackSelection::GlobalTrackRun3ITSMatching::Run3ITSall7Layers, TrackSelection::GlobalTrackRun3DCAxyCut::ppPass3)), [](float pt) { return 0 .004f + 0 .013f / pt; });
383395 extraTrackFilter = highQualityTpcTrack ();
384396 } break ;
397+ case 70 : { /* Run 3 global track: kAny on 3 IB layers of ITS, tighter DCAxy, tighter pT dep DCAz, plus ITS only tracks */
398+ addTrackFilter (new TrackSelection (getGlobalTrackSelectionRun3ITSMatch (TrackSelection::GlobalTrackRun3ITSMatching::Run3ITSibAny, TrackSelection::GlobalTrackRun3DCAxyCut::ppPass3)), [](float pt) { return 0 .004f + 0 .013f / pt; });
399+ addTrackFilter (itsOnlyTrack (), [](float pt) { return 0 .004f + 0 .013f / pt; });
400+ } break ;
401+ case 71 : { /* Run 3 global track: kTwo on 3 IB layers of ITS, tighter DCAxy, tighter pT dep DCAz, plus ITS only tracks */
402+ addTrackFilter (new TrackSelection (getGlobalTrackSelectionRun3ITSMatch (TrackSelection::GlobalTrackRun3ITSMatching::Run3ITSibTwo, TrackSelection::GlobalTrackRun3DCAxyCut::ppPass3)), [](float pt) { return 0 .004f + 0 .013f / pt; });
403+ addTrackFilter (itsOnlyTrack (), [](float pt) { return 0 .004f + 0 .013f / pt; });
404+ } break ;
405+ case 72 : { /* Run 3 global track: kAny on all 7 layers of ITS, tighter DCAxy, tighter pT dep DCAz, plus ITS only tracks */
406+ addTrackFilter (new TrackSelection (getGlobalTrackSelectionRun3ITSMatch (TrackSelection::GlobalTrackRun3ITSMatching::Run3ITSallAny, TrackSelection::GlobalTrackRun3DCAxyCut::ppPass3)), [](float pt) { return 0 .004f + 0 .013f / pt; });
407+ addTrackFilter (itsOnlyTrack (), [](float pt) { return 0 .004f + 0 .013f / pt; });
408+ } break ;
409+ case 73 : { /* Run 3 global track: kAll on all 7 layers of ITS, tighter DCAxy, tighter pT dep DCAz, plus ITS only tracks */
410+ addTrackFilter (new TrackSelection (getGlobalTrackSelectionRun3ITSMatch (TrackSelection::GlobalTrackRun3ITSMatching::Run3ITSall7Layers, TrackSelection::GlobalTrackRun3DCAxyCut::ppPass3)), [](float pt) { return 0 .004f + 0 .013f / pt; });
411+ addTrackFilter (itsOnlyTrack (), [](float pt) { return 0 .004f + 0 .013f / pt; });
412+ } break ;
385413 default :
386414 break ;
387415 }
@@ -406,12 +434,13 @@ inline void initializeTrackSelection(TrackSelectionTuneCfg& tune)
406434 }
407435 }
408436 if (tune.mUseDCAz ) {
409- for (auto dcaZCut : maxDcaZPtDeps) { // o2-linter: disable=const-ref-in-for-loop
437+ for (auto dcaZCut : maxDcaZPtDeps) { // o2-linter: disable=const-ref-in-for-loop (the loop variable is not constant)
410438 dcaZCut = [&tune](float ) { return tune.mDCAz ; };
411439 }
412440 }
413441 if (tune.mUseFractionTpcSharedClusters ) {
414442 sharedTpcClusters = tune.mFractionTpcSharedClusters ;
443+ sharedTpcClustersExtra = tune.mFractionTpcSharedClusters ;
415444 }
416445 }
417446}
@@ -1337,7 +1366,7 @@ inline bool matchTrackType(TrackObject const& track)
13371366 if (extraTrackFilter != nullptr ) {
13381367 if (extraTrackFilter->IsSelected (track)) {
13391368 /* shared fraction of TPC clusters */
1340- if (!(track.tpcFractionSharedCls () < sharedTpcClusters )) {
1369+ if (!(track.tpcFractionSharedCls () < sharedTpcClustersExtra )) {
13411370 return false ;
13421371 }
13431372 /* we require TOF */
0 commit comments