PandaRoot
PndTrackingQA.h
Go to the documentation of this file.
1 //****************************************************************************
2 //* This file is part of PandaRoot. *
3 //* *
4 //* PandaRoot is distributed under the terms of the *
5 //* GNU General Public License (GPL) version 3, *
6 //* copied verbatim in the file "LICENSE". *
7 //* *
8 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
9 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
10 //* The authors are listed in the file "AUTHORS". *
11 //****************************************************************************
12 
27 #pragma once
28 
29 #include "PndTrackFunctor.h"
30 #include "PndTrackingQARecoInfo.h"
31 #include "PndTrackingQAMCInfo.h"
33 #include "PndTrack.h"
34 
35 #include "TString.h"
36 
38  public:
46  PndTrackingQA(TString trackBranchName, TString idealTrackName, Bool_t pndTrackNotTrackCand = kTRUE);
47 
56  PndTrackingQA(TString trackBranchName, TString idealTrackName, PndTrackFunctor *posTrack, Bool_t pndTrackNotTrackCand = kTRUE);
57 
58  virtual ~PndTrackingQA();
59 
60  virtual void Init();
61 
66  void AddHitsBranchName(TString name) { fBranchNames.push_back(name); }
67  void SetHitsBranchNames(std::vector<TString> names) { fBranchNames = names; }
68 
75  void SetSttInfo(TClonesArray *sttHitArray, TClonesArray *sttTubeArray)
76  {
77  fSttHitArray = sttHitArray;
78  fSttTubeArray = sttTubeArray;
79  }
80 
81  void SetVerbose(int val) { fVerbose = val; }
82 
88  void AnalyseEvent(TClonesArray *recoTrackInfo, TClonesArray *mcTrackInfo);
89 
90  protected:
91  std::map<FairLink, PndTrackingQAMCInfo *> FillMCTrackInfo(TClonesArray *mcTrackInfo);
92  double CalcPCA(PndTrack *track);
93  int GetMCInfoQualification(PndTrackingQAMCInfo *mcInfo, PndTrack *idealTrack);
94  std::map<TString, FairMultiLinkedData> AnalyseTrackCand(PndTrackCand *trackCand);
95  FairMultiLinkedData GetMCInfoForBranch(TString branchName, PndTrackCand *trackCand);
96  void PrintTrackInfo(std::map<TString, FairMultiLinkedData> info);
97  FairLink GetMostProbableMCTrack(std::map<TString, FairMultiLinkedData> &trackInfo);
100 
101  private:
102  std::vector<TString> fBranchNames;
103  FairRootManager *ioman = nullptr;
104  TString fTrackBranchName;
105  TString fIdealTrackName;
106  Bool_t fPndTrackNotTrackCand = kTRUE; // kTRUE if track and kFALSE if track cand
107  PndTrackFunctor *fPossibleTrack = nullptr;
108 
109  std::map<FairLink, PndTrackingQAMCInfo *> fMCInfoMap; //< MCTrackId, Associated MCInfo>
110 
111  Int_t fVerbose = 0;
112 
113  TClonesArray *fTrack = nullptr;
114  TClonesArray *fMCTrack = nullptr;
115  TClonesArray *fIdealTrack = nullptr;
116  TClonesArray *fTrackCand = nullptr;
117  TClonesArray *fIdealTrackCand = nullptr;
118 
119  TClonesArray *fSttTubeArray = nullptr;
120  TClonesArray *fSttHitArray = nullptr;
121 
122  ClassDef(PndTrackingQA, 1);
123 };
void SetVerbose(int val)
Definition: PndTrackingQA.h:81
std::map< TString, FairMultiLinkedData > AnalyseTrackCand(PndTrackCand *trackCand)
virtual void Init()
void SetHitsBranchNames(std::vector< TString > names)
Definition: PndTrackingQA.h:67
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:66
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:75
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:37