PandaRoot
PndTrackingQualityBarrelTaskNewLinks.h
Go to the documentation of this file.
1 // -------------------------------------------------------------------------
2 // ----- PNDMCMATCHSELECTORTASK header file -----
3 // ----- Created 18/01/10 by T.Stockmanns -----
4 // -------------------------------------------------------------------------
5 
12 #ifndef PndTrackingQualityBarrelTaskNewLinks_H
13 #define PndTrackingQualityBarrelTaskNewLinks_H
14 
15 // framework includes
16 #include "FairTask.h"
17 #include "PndDetectorList.h"
18 #include "PndTrackCand.h"
20 #include "PndGeoSttPar.h"
21 #include "TH2.h"
22 #include "THStack.h"
23 #include "RhoTuple.h"
24 
25 #include <vector>
26 #include <map>
27 
28 class TClonesArray;
29 class PndTrack;
30 
31 class PndTrackingQualityBarrelTaskNewLinks : public FairTask {
32  public:
34  PndTrackingQualityBarrelTaskNewLinks(TString trackBranchName, TString idealBranchName, Bool_t pndTrackData = kTRUE);
35 
38 
40  virtual void SetParContainers();
41  virtual InitStatus Init();
42 
44  virtual void Exec(Option_t *opt);
45 
46  virtual void Finish();
47 
48  void SetIdealTrackBranchName(TString name) { fIdealTrackBranchName = name; };
49 
51  void SetTrackBranchName(TString name, Bool_t pndTrackData = kTRUE)
52  {
53  fPndTrackOrTrackCand = pndTrackData;
54  fTrackBranchName = name;
55  } // alternatively PndTrackCandData can be analysed. Therefore pndTrackData has to be set to kFALSE
56 
58  void AddHitsBranchName(TString name) { fBranchNames.push_back(name); }
59 
60  void SetOutputMCInfoBranchName(TString name) { fMCInfoBranchName = name; }
61  void SetOutputRecoInfoBranchName(TString name) { fRecoInfoBranchName = name; }
62 
63  private:
64  //
65  // virtual void FillMapTrackQualifikation();
66 
75  virtual void FillQualyHisto(std::map<Int_t, Int_t> trackQualifikation, Int_t nGhosts);
76  virtual void FillMCStatus(std::map<Int_t, Int_t> trackMCStatus);
77  virtual void FillEfficiencies(std::map<Int_t, std::map<TString, std::pair<Double_t, Int_t>>> efficiencies);
78  virtual void MapToHist(std::map<Int_t, Double_t>, TH1 *);
79 
80  virtual Int_t GetSumOfAllValidMCHits(FairMultiLinkedData *trackData);
81 
82  void AssociateRecoTracksToMCTracks();
83 
84  PndTrackingQualityMCInfo GetMCInfoFromIdealTrack(PndTrack *idealtrack);
85  Int_t GetMCInfoIdFromIdealTrackId(int idealtrackid) { return fMCInfoIdIdealId[idealtrackid]; }
86 
87  void InitializeHistograms();
88  void LabelQualyHistogram(TH1 *);
89  void ColorHistogram();
90  std::vector<TString> fBranchNames;
91  TString fMCInfoBranchName, fRecoInfoBranchName;
92 
93  std::map<TString, FairMultiLinkedData> fMapLinkData;
94  // std::map<TString, Double_t> fPossibleTrackParameter;
95  std::map<TString, TH2 *> fMapEfficiencies;
96 
97  std::map<int, int> fMCInfoIdIdealId;
98 
99  Int_t fNGhosts;
100 
101  TClonesArray *fTrack;
102  TClonesArray *fMCTrack;
103  TClonesArray *fTrackCand;
104  // TClonesArray* fIdealTrackCand;
105  TClonesArray *fSttHitArray;
106  TClonesArray *fMCTrackInfo;
107  TClonesArray *fRecoTrackInfo;
108  TClonesArray *fIdealTrack;
109  TClonesArray *fSttTubeArray;
110 
111  FairRootManager *ioman;
112 
113  std::map<Int_t, Int_t> fMapTrackQualifikation;
114 
115  TString fTrackBranchName;
116  TString fIdealTrackBranchName;
117  Bool_t fPndTrackOrTrackCand; // kTRUE if track and kFALSE if track cand
118  PndGeoSttPar *fSttParameters;
119 
120  RhoTuple *fTuple;
121 
122  TH1 *fPHisto;
123  TH1 *fPRelHisto;
124  TH1 *fPtHisto;
125  TH1 *fPtRelHisto;
126  TH1 *fQualyHisto;
127  THStack *fQualyStack;
128  TH1 *fQualyHisto_mc;
129  TH1 *fQualyHisto_neg;
130  TH1 *fQualyHisto_pos;
131  TH1 *fQualyHisto_all;
132 
133  Int_t fEventNr;
134 
135  void Register();
136 
137  void Reset();
138 
140 };
141 
142 #endif