PandaRoot
PndGemTrackFinderQA.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 
13 // -------------------------------------------------------------------------
14 // ----- PndGemTrackFinderQA header file -----
15 // ----- Created 02.06.2009 by R. Karabowicz -----
16 // -------------------------------------------------------------------------
17 
26 #ifndef PNDGEMTRACKFINDERQA_H
27 #define PNDGEMTRACKFINDERQA_H
28 
29 #include "TH1F.h"
30 #include "TH2F.h"
31 
32 #include "FairTask.h"
33 #include "PndMCTrack.h"
34 
35 #include "PndGemHit.h"
36 #include "PndGemDigiPar.h"
37 
38 #include <vector>
39 
40 class PndGemTrackFinderQA : public FairTask {
41 
42  public:
45 
47  PndGemTrackFinderQA(Int_t iVerbose);
48 
50  virtual ~PndGemTrackFinderQA();
51 
53  virtual void Exec(Option_t *opt);
54 
56  void SetVerbose(const Int_t &verbose) { fVerbose = verbose; };
57 
58  private:
59  PndGemDigiPar *fDigiPar;
60 
62  TClonesArray *fMCTrackArray;
63  TClonesArray *fMCPointArray;
64 
65  TClonesArray *fGemHitArray; //
66  TClonesArray *fGemTrackArray;
67 
69  TClonesArray *fGemData[10];
70  Int_t fGemDataPointer[1000];
71  Int_t fGemPointNumber;
72 
74  Int_t fNofEvents;
75 
76  TVector3 fTargetPos;
77  std::vector<Int_t> fMCTrackNofCrossedGemStations;
78  std::vector<Int_t> fMCTrackNofGemPoints;
79  std::vector<Int_t> fRecoTrackMCMatch;
80  Int_t fNeededStationsToRecoTrack;
81  Double_t fMinQuota;
82 
83  Int_t fNofMCAll;
84  Int_t fNofMCAcc;
85  Int_t fNofMCPrim;
86  Int_t fNofMCSec;
87  Int_t fNofMCRef; // primary, mom.mag > 0.5GeV/c
88 
89  Int_t fNofRecoAcc;
90  Int_t fNofRecoPrim;
91  Int_t fNofRecoSec;
92  Int_t fNofRecoRef; // primary, mom.mag > 0.5GeV/c
93 
94  Int_t fNofRecoGhosts;
95  Int_t fNofRecoClones;
96 
97  TList *fHistoList;
98  // number of mc tracks, reco tracks, efficiency as function of MOMENTUM
99  TH1F *fhMCAllVsP, *fhMCAccVsP, *fhMCPrimVsP, *fhMCSecVsP, *fhMCRefVsP;
100  TH1F *fhRecoAccVsP, *fhRecoPrimVsP, *fhRecoSecVsP, *fhRecoRefVsP;
101  TH1F *fhEffAccVsP, *fhEffPrimVsP, *fhEffSecVsP, *fhEffRefVsP;
102  // number of mc tracks, reco tracks, efficiency as function of THETA
103  TH1F *fhMCAllVsT, *fhMCAccVsT, *fhMCPrimVsT, *fhMCSecVsT, *fhMCRefVsT;
104  TH1F *fhRecoAccVsT, *fhRecoPrimVsT, *fhRecoSecVsT, *fhRecoRefVsT;
105  TH1F *fhEffAccVsT, *fhEffPrimVsT, *fhEffSecVsT, *fhEffRefVsT;
106  // number of mc tracks, reco tracks, efficiency as function of PHI
107  TH1F *fhMCAllVsA, *fhMCAccVsA, *fhMCPrimVsA, *fhMCSecVsA, *fhMCRefVsA;
108  TH1F *fhRecoAccVsA, *fhRecoPrimVsA, *fhRecoSecVsA, *fhRecoRefVsA;
109  TH1F *fhEffAccVsA, *fhEffPrimVsA, *fhEffSecVsA, *fhEffRefVsA;
110  // number of mc tracks, reco tracks, efficiency as function of NUMBER OF POINTS
111  TH1F *fhMCAllVsN, *fhMCAccVsN, *fhMCPrimVsN, *fhMCSecVsN, *fhMCRefVsN;
112  TH1F *fhRecoAccVsN, *fhRecoPrimVsN, *fhRecoSecVsN, *fhRecoRefVsN;
113  TH1F *fhEffAccVsN, *fhEffPrimVsN, *fhEffSecVsN, *fhEffRefVsN;
114 
115  // MOMENTUM, THETA and (PHI)ANGLE reco tracks distribution
116  TH1F *fhRecoAllP, *fhRecoPrimP, *fhRecoSecP;
117  TH1F *fhRecoAllT, *fhRecoPrimT, *fhRecoSecT;
118  TH1F *fhRecoAllA, *fhRecoPrimA, *fhRecoSecA;
119 
120  // momentum resolution vs MOMENTUM
121  TH2F *fhMomResAccVsP, *fhMomResPrimVsP, *fhMomResSecVsP, *fhMomResRefVsP;
122  // momentum resolution vs THETA
123  TH2F *fhMomResAccVsT, *fhMomResPrimVsT, *fhMomResSecVsT, *fhMomResRefVsT;
124  // momentum resolution vs THETA
125  TH2F *fhMomResAccVsA, *fhMomResPrimVsA, *fhMomResSecVsA, *fhMomResRefVsA;
126 
127  TH1F *fhNofHitsPerTrack;
128  TH1F *fhNofHitsPerRecoTrack;
129  TH1F *fhNofHitsPerGhost;
130  TH1F *fhNofHitsPerClone;
131 
132  TH1F *fhNofCorrHitsPerRecoTrack;
133  TH1F *fhNofOthTHitsPerRecoTrack;
134  TH1F *fhNofNoTrHitsPerRecoTrack;
135 
136  TH1F *fhNofMCTracksPerEvent, *fhNofRecoTracksPerEvent;
137 
138  void CreateHistos();
139  void PrepareMCTracks();
140  void MatchRecoTracks();
141 
143  virtual void SetParContainers();
144 
145  void DivideHistos(TH1 *hist1, TH1 *hist2, TH1 *hist3);
146 
147  Int_t GetPointVector(Int_t arrayId, Int_t entryId, std::vector<Int_t> &pointVector, Bool_t printInfo = kFALSE);
148  Int_t FindMatchingPoint(Int_t gemHitIndex);
149 
151  virtual void Finish();
152 
154  virtual InitStatus Init();
155 
157  virtual InitStatus ReInit();
158 
159  ClassDef(PndGemTrackFinderQA, 1);
160 };
161 
162 #endif
virtual void Exec(Option_t *opt)
Digitization Parameter Class for GEM part.
Definition: PndGemDigiPar.h:42
void SetVerbose(const Int_t &verbose)
track finding quality assesment task
virtual ~PndGemTrackFinderQA()