20 #ifndef PNDTOOLS_TRACKINGQA_PNDTRACKFUNCTOR_H_ 21 #define PNDTOOLS_TRACKINGQA_PNDTRACKFUNCTOR_H_ 23 #include "FairMultiLinkedData.h" 24 #include "FairRootManager.h" 30 virtual Bool_t
operator()(FairMultiLinkedData *a, Bool_t primary) {
return Call(a, primary); };
32 virtual Bool_t
Call(FairMultiLinkedData *a, Bool_t primary) = 0;
33 virtual void Print() = 0;
39 Bool_t
Call(FairMultiLinkedData *a, Bool_t)
41 FairRootManager *ioman = FairRootManager::Instance();
42 Bool_t possibleTrack = kFALSE;
44 (possibleTrack | ((a->GetLinksWithType(ioman->GetBranchId(
"MVDHitsPixel")).GetNLinks() + a->GetLinksWithType(ioman->GetBranchId(
"MVDHitsStrip")).GetNLinks()) > 3));
46 possibleTrack = (possibleTrack | ((a->GetLinksWithType(ioman->GetBranchId(
"MVDHitsPixel")).GetNLinks() + a->GetLinksWithType(ioman->GetBranchId(
"MVDHitsStrip")).GetNLinks() +
47 a->GetLinksWithType(ioman->GetBranchId(
"STTHit")).GetNLinks() + a->GetLinksWithType(ioman->GetBranchId(
"GEMHit")).GetNLinks()) > 5));
52 void Print() { std::cout <<
"StandardTrackFunctor: > 3 Hits in MVD or > 5 Hits in (MVD+Stt+GEM)" << std::endl; }
56 Bool_t
Call(FairMultiLinkedData *a, Bool_t)
58 FairRootManager *ioman = FairRootManager::Instance();
59 Bool_t possibleTrack = kFALSE;
61 possibleTrack = (possibleTrack | (a->GetLinksWithType(ioman->GetBranchId(
"STTHit")).GetNLinks() > 5));
65 void Print() { std::cout <<
"OnlySttFunctor: > 5 Hits in Stt" << std::endl; }
69 Bool_t
Call(FairMultiLinkedData *a, Bool_t)
71 FairRootManager *ioman = FairRootManager::Instance();
72 Bool_t possibleTrack = kFALSE;
74 possibleTrack = (possibleTrack | (a->GetLinksWithType(ioman->GetBranchId(
"STTSortedHits")).GetNLinks() > 5));
78 void Print() { std::cout <<
"OnlySttTimeBasedFunctor: > 5 Hits in Stt" << std::endl; }
82 Bool_t
Call(FairMultiLinkedData *a, Bool_t)
84 FairRootManager *ioman = FairRootManager::Instance();
85 Bool_t possibleTrack = kFALSE;
86 Bool_t mvdHits = ((a->GetLinksWithType(ioman->GetBranchId(
"MVDHitsPixel")).GetNLinks() + a->GetLinksWithType(ioman->GetBranchId(
"MVDHitsStrip")).GetNLinks()) > 2);
89 possibleTrack = (a->GetLinksWithType(ioman->GetBranchId(
"STTHit")).GetNLinks() > 1) | (a->GetLinksWithType(ioman->GetBranchId(
"GEMHit")).GetNLinks() > 1);
93 void Print() { std::cout <<
"RiemannMvdSttGemFunctor: > 2 Hits in MVD and >0 Hits in (Stt+Gem)" << std::endl; }
97 Bool_t
Call(FairMultiLinkedData *a, Bool_t primary)
99 if (primary == kFALSE)
101 FairRootManager *ioman = FairRootManager::Instance();
102 Bool_t possibleTrack = kFALSE;
104 Int_t nHitsMvdPixel = a->GetLinksWithType(ioman->GetBranchId(
"MVDHitsPixel")).GetNLinks();
105 Int_t nHitsMvdStrip = a->GetLinksWithType(ioman->GetBranchId(
"MVDHitsStrip")).GetNLinks();
106 if (nHitsMvdPixel + nHitsMvdStrip > 2) {
109 possibleTrack = kTRUE;
112 return possibleTrack;
114 void Print() { std::cout <<
"CircleHoughTrackFunctor: >= 3 Hits in MVD and primary track" << std::endl; }
118 Bool_t
Call(FairMultiLinkedData *a, Bool_t)
120 FairRootManager *ioman = FairRootManager::Instance();
121 Bool_t possibleTrack = kFALSE;
123 possibleTrack = (possibleTrack | (a->GetLinksWithType(ioman->GetBranchId(
"FTSHit")).GetNLinks() > 5));
125 return possibleTrack;
127 void Print() { std::cout <<
"FTSTrackFunctor: > 5 Hits in Fts" << std::endl; }
131 Bool_t
Call(FairMultiLinkedData *a, Bool_t primary)
133 FairRootManager *ioman = FairRootManager::Instance();
134 Bool_t possibleTrack = kFALSE;
136 possibleTrack = (possibleTrack | !(a->GetLinksWithType(ioman->GetBranchId(
"FTSHit")).GetNLinks() > 0));
137 if (possibleTrack == kFALSE)
140 possibleTrack = kFALSE;
141 possibleTrack = (possibleTrack | standard(a, primary));
143 return possibleTrack;
145 void Print() { std::cout <<
"noFTSTrackFunctor: no Hits in Fts + standardFunctor!" << std::endl; }
149 Bool_t
Call(FairMultiLinkedData *, Bool_t)
153 void Print() { std::cout <<
"AllTracksFunctor: take everything" << std::endl; }
virtual ~PndTrackFunctor()
static PndTrackFunctor * make_PndTrackFunctor(std::string functorName)
virtual Bool_t operator()(FairMultiLinkedData *a, Bool_t primary)
virtual Bool_t Call(FairMultiLinkedData *a, Bool_t primary)=0