PandaRoot
PndTrackingQA.h
Go to the documentation of this file.
1 
15 #pragma once
16 
17 #include "PndTrackFunctor.h"
18 #include "PndTrackingQARecoInfo.h"
19 #include "PndTrackingQAMCInfo.h"
21 #include "PndTrack.h"
22 
23 #include "TString.h"
24 
26  public:
34  PndTrackingQA(TString trackBranchName, TString idealTrackName, Bool_t pndTrackNotTrackCand = kTRUE);
35 
44  PndTrackingQA(TString trackBranchName, TString idealTrackName, PndTrackFunctor *posTrack, Bool_t pndTrackNotTrackCand = kTRUE);
45 
46  virtual ~PndTrackingQA();
47 
48  virtual void Init();
49 
54  void AddHitsBranchName(TString name) { fBranchNames.push_back(name); }
55  void SetHitsBranchNames(std::vector<TString> names) { fBranchNames = names; }
56 
63  void SetSttInfo(TClonesArray *sttHitArray, TClonesArray *sttTubeArray)
64  {
65  fSttHitArray = sttHitArray;
66  fSttTubeArray = sttTubeArray;
67  }
68 
69  void SetVerbose(int val) { fVerbose = val; }
70 
76  void AnalyseEvent(TClonesArray *recoTrackInfo, TClonesArray *mcTrackInfo);
77 
78  protected:
79  std::map<FairLink, PndTrackingQAMCInfo *> FillMCTrackInfo(TClonesArray *mcTrackInfo);
80  double CalcPCA(PndTrack *track);
81  int GetMCInfoQualification(PndTrackingQAMCInfo *mcInfo, PndTrack *idealTrack);
82  std::map<TString, FairMultiLinkedData> AnalyseTrackCand(PndTrackCand *trackCand);
83  FairMultiLinkedData GetMCInfoForBranch(TString branchName, PndTrackCand *trackCand);
84  void PrintTrackInfo(std::map<TString, FairMultiLinkedData> info);
85  FairLink GetMostProbableMCTrack(std::map<TString, FairMultiLinkedData> &trackInfo);
88 
89  private:
90  std::vector<TString> fBranchNames;
91  FairRootManager *ioman = nullptr;
92  TString fTrackBranchName;
93  TString fIdealTrackName;
94  Bool_t fPndTrackNotTrackCand = kTRUE; // kTRUE if track and kFALSE if track cand
95  PndTrackFunctor *fPossibleTrack = nullptr;
96 
97  std::map<FairLink, PndTrackingQAMCInfo *> fMCInfoMap; //< MCTrackId, Associated MCInfo>
98 
99  Int_t fVerbose = 0;
100 
101  TClonesArray *fTrack = nullptr;
102  TClonesArray *fMCTrack = nullptr;
103  TClonesArray *fIdealTrack = nullptr;
104  TClonesArray *fTrackCand = nullptr;
105  TClonesArray *fIdealTrackCand = nullptr;
106 
107  TClonesArray *fSttTubeArray = nullptr;
108  TClonesArray *fSttHitArray = nullptr;
109 
110  ClassDef(PndTrackingQA, 1);
111 };
void SetVerbose(int val)
Definition: PndTrackingQA.h:69
std::map< TString, FairMultiLinkedData > AnalyseTrackCand(PndTrackCand *trackCand)
virtual void Init()
void SetHitsBranchNames(std::vector< TString > names)
Definition: PndTrackingQA.h:55
FairMultiLinkedData GetMCInfoForBranch(TString branchName, PndTrackCand *trackCand)
void AddHitsBranchName(TString name)
Add branch names of hits which should be considere in the tracking QA.
Definition: PndTrackingQA.h:54
virtual ~PndTrackingQA()
void PrintTrackInfo(std::map< TString, FairMultiLinkedData > info)
void AssociateRecoTracksToMCTracks(PndTrackingQARecoInfo &recoInfo)
double CalcPCA(PndTrack *track)
PndTrackingQA(TString trackBranchName, TString idealTrackName, Bool_t pndTrackNotTrackCand=kTRUE)
constructor
void SetSttInfo(TClonesArray *sttHitArray, TClonesArray *sttTubeArray)
STT info if a hit was in a skewed or parallel tube is needed. Therefore the TClonesArray with the STT...
Definition: PndTrackingQA.h:63
FairLink GetMostProbableMCTrack(std::map< TString, FairMultiLinkedData > &trackInfo)
std::map< FairLink, PndTrackingQAMCInfo * > FillMCTrackInfo(TClonesArray *mcTrackInfo)
int GetMCInfoQualification(PndTrackingQAMCInfo *mcInfo, PndTrack *idealTrack)
void AnalyseEvent(TClonesArray *recoTrackInfo, TClonesArray *mcTrackInfo)
Main method of algorithms.
PndTrackingQARecoInfo GetRecoInfoFromRecoTrack(FairLink trackId, PndTrackingQAMCInfo *mcTrackInfo)
Performs quality assurance tests on PndTrack and PndTrackCandidates.
Definition: PndTrackingQA.h:25