8 #ifndef PNDTOOLS_TRACKINGQA_PNDTRACKFUNCTOR_H_
9 #define PNDTOOLS_TRACKINGQA_PNDTRACKFUNCTOR_H_
11 #include "FairMultiLinkedData.h"
12 #include "FairRootManager.h"
16 class PndTrackFunctor :
public std::binary_function<FairMultiLinkedData* , Bool_t, Bool_t>
22 virtual void Print() = 0;
31 FairRootManager* ioman = FairRootManager::Instance();
32 Bool_t possibleTrack = kFALSE;
33 possibleTrack = (possibleTrack | ((a->GetLinksWithType(ioman->GetBranchId(
"MVDHitsPixel")).GetNLinks() +
34 a->GetLinksWithType(ioman->GetBranchId(
"MVDHitsStrip")).GetNLinks()) > 3));
36 possibleTrack = (possibleTrack | ((a->GetLinksWithType(ioman->GetBranchId(
"MVDHitsPixel")).GetNLinks() +
37 a->GetLinksWithType(ioman->GetBranchId(
"MVDHitsStrip")).GetNLinks() +
38 a->GetLinksWithType(ioman->GetBranchId(
"STTHit")).GetNLinks() +
39 a->GetLinksWithType(ioman->GetBranchId(
"GEMHit")).GetNLinks()) > 5));
45 std::cout <<
"StandardTrackFunctor: > 3 Hits in MVD or > 5 Hits in (MVD+Stt+GEM)" << std::endl;
52 FairRootManager* ioman = FairRootManager::Instance();
53 Bool_t possibleTrack = kFALSE;
55 possibleTrack = (possibleTrack | (a->GetLinksWithType(ioman->GetBranchId(
"STTHit")).GetNLinks() > 5));
60 std::cout <<
"OnlySttFunctor: > 5 Hits in Stt" << std::endl;
67 FairRootManager* ioman = FairRootManager::Instance();
68 Bool_t possibleTrack = kFALSE;
69 Bool_t mvdHits = ((a->GetLinksWithType(ioman->GetBranchId(
"MVDHitsPixel")).GetNLinks() +
70 a->GetLinksWithType(ioman->GetBranchId(
"MVDHitsStrip")).GetNLinks()) > 2);
73 possibleTrack = (a->GetLinksWithType(ioman->GetBranchId(
"STTHit")).GetNLinks() > 1)
74 | (a->GetLinksWithType(ioman->GetBranchId(
"GEMHit")).GetNLinks() > 1);
79 std::cout <<
"RiemannMvdSttGemFunctor: > 2 Hits in MVD and >0 Hits in (Stt+Gem)" << std::endl;
87 if (primary == kFALSE)
return kFALSE;
88 FairRootManager* ioman = FairRootManager::Instance();
89 Bool_t possibleTrack = kFALSE;
91 Int_t nHitsMvdPixel = a->GetLinksWithType(ioman->GetBranchId(
"MVDHitsPixel")).GetNLinks();
92 Int_t nHitsMvdStrip = a->GetLinksWithType(ioman->GetBranchId(
"MVDHitsStrip")).GetNLinks();
93 if (nHitsMvdPixel + nHitsMvdStrip > 2) {
96 possibleTrack = kTRUE;
102 std::cout <<
"CircleHoughTrackFunctor: >= 3 Hits in MVD and primary track" << std::endl;
110 FairRootManager* ioman = FairRootManager::Instance();
111 Bool_t possibleTrack = kFALSE;
113 possibleTrack = (possibleTrack | (a->GetLinksWithType(ioman->GetBranchId(
"FTSHit")).GetNLinks() > 5));
115 return possibleTrack;
118 std::cout <<
"FTSTrackFunctor: > 5 Hits in Fts" << std::endl;
125 FairRootManager* ioman = FairRootManager::Instance();
126 Bool_t possibleTrack = kFALSE;
128 possibleTrack = (possibleTrack | !(a->GetLinksWithType(ioman->GetBranchId(
"FTSHit")).GetNLinks() > 0));
129 if (possibleTrack == kFALSE)
return kFALSE;
131 possibleTrack = kFALSE;
132 possibleTrack = (possibleTrack | standard(a, primary));
134 return possibleTrack;
137 std::cout <<
"noFTSTrackFunctor: no Hits in Fts + standardFunctor!" << std::endl;
147 std::cout <<
"AllTracksFunctor: take everything" << std::endl;
Bool_t Call(FairMultiLinkedData *a, Bool_t primary)
Bool_t Call(FairMultiLinkedData *a, Bool_t primary)
virtual ~PndTrackFunctor()
Bool_t Call(FairMultiLinkedData *a, Bool_t)
static PndTrackFunctor * make_PndTrackFunctor(std::string functorName)
Bool_t Call(FairMultiLinkedData *a, Bool_t)
Bool_t Call(FairMultiLinkedData *a, Bool_t)
Bool_t Call(FairMultiLinkedData *a, Bool_t)
Bool_t Call(FairMultiLinkedData *, Bool_t)
virtual Bool_t operator()(FairMultiLinkedData *a, Bool_t primary)
virtual Bool_t Call(FairMultiLinkedData *a, Bool_t primary)=0