BmnRoot
Loading...
Searching...
No Matches
BmnPidQa.h
Go to the documentation of this file.
1
9#ifndef BMNPIDQA_H_
10#define BMNPIDQA_H_
11
12#include "FairTask.h"
13#include "TDatabasePDG.h"
14#include "TParticlePDG.h"
15#include <unordered_map>
16#include "BmnMCTrackCreator.h"
17#include "BmnGlobalTrack.h"
18
19
20
21class BmnHistManager;
22class BmnTrackMatch;
24
25
26using std::string;
27using std::vector;
28using std::multimap;
29using std::unordered_map;
30
31class BmnPidQa : public FairTask {
32public:
33
38
42 BmnPidQa(TString name, TString storageName = "canvStorage");
43
47 virtual ~BmnPidQa();
48
52 virtual InitStatus Init();
53
57 virtual void Exec(Option_t* opt);
58
62 virtual void Finish();
63
64
65 TParticlePDG* GetParticleExtend(Int_t pdgCode);
66
67 void SetOutputDir(const std::string& dir) {
68 fOutputDir = dir;
69 }
70
71 void SetPRange(Int_t bins, Int_t min, Int_t max) {
72 fPRangeBins = bins;
73 fPRangeMin = min;
74 fPRangeMax = max;
75 }
76
77 void SetOnlyPrimes(const Bool_t prime) {
78 fPrimes = prime;
79 }
80
81 Bool_t GetOnlyPrimes() const {
82 return fPrimes;
83 }
84
85
86private:
87 Int_t EnumToPdg(PidParticles part);
88
92 void ReadDataBranches();
93
94 void CreateH1(
95 const string& name,
96 const string& xTitle,
97 const string& yTitle,
98 Int_t nofBins,
99 Double_t minBin,
100 Double_t maxBin);
101
102 void CreateH2(
103 const string& name,
104 const string& xTitle,
105 const string& yTitle,
106 const string& zTitle,
107 Int_t nofBinsX,
108 Double_t minBinX,
109 Double_t maxBinX,
110 Int_t nofBinsY,
111 Double_t minBinY,
112 Double_t maxBinY);
113
114 void CreateTrackHitsHistogram(const string& detName);
115
116 void ReadEventHeader();
117
118
119 void CreateHistograms();
120 void ProcessGlobal();
121
122 TString fOutName;
123 TString fStorageName;
124
125
126
127 BmnHistManager* fHM; // Histogram manager
128 string fOutputDir; // Output directory for results
129
130
131 Bool_t fPrimes; //calculate efficiency only for primaries or for all particles
132
133
134 Double_t fPRangeMin; // Minimum momentum for tracks for efficiency calculation [GeV/c]
135 Double_t fPRangeMax; // Maximum momentum for tracks for efficiency calculation [GeV/c]
136 Int_t fPRangeBins; // Number of bins for efficiency vs. momentum histogram
137
138 Double_t fBetaRangeMin; // Minimum rigidity for tracks for efficiency calculation [GeV/c]
139 Double_t fBetaRangeMax; // Maximum rigidity for tracks for efficiency calculation [GeV/c]
140 Int_t fBetaRangeBins; // Number of bins for rigidity-momentum histogram
141
142
143 Double_t fVelocRangeMin; // Minimum rigidity for tracks for efficiency calculation [GeV/c]
144 Double_t fVelocRangeMax; // Maximum rigidity for tracks for efficiency calculation [GeV/c]
145 Int_t fVelocRangeBins; // Number of bins for rigidity-momentum histogram
146
147 Double_t fTimeRangeMin;
148 Double_t fTimeRangeMax;
149 Int_t fTimeRangeBins;
150
151 Double_t fMassRangeMin;
152 Double_t fMassRangeMax;
153 Int_t fMassRangeBins;
154
155 Double_t fNHitsRangeMin; // Minimum hits for tracks for efficiency calculation [GeV/c]
156 Double_t fNHitsRangeMax; // Maximum hits for tracks for efficiency calculation [GeV/c]
157 Int_t fNHitsRangeBins; // Number of bins for rigidity-momentum histogram
158
159 TDatabasePDG* db = nullptr;
160
161 vector<TParticlePDG*> fParticles;
162 // mass table for particles
163 unordered_map<Double_t, string> fMassTable; // {Mass: Particle name}
164
165 string GetParticleName(Double_t mass);
166
167 void MassTablePrint();
168 // key - Particle name
169 // value[0] -counter for true total number of particle of one sort
170 // value[1] - counter of true identifications
171 // value[2] - counter of false identifications
172 // value[3] - counter for undivided number of particle of one sort
173 unordered_map<string, vector<Int_t> > fPidStatistics400, fPidStatistics700;
174 void PidStatisticsPrint400();
175 void PidStatisticsPrint700();
176
177 // Pointers to data arrays
178 TClonesArray* fMCTracks; // CbmMCTrack array
179 TClonesArray* fGlobalTracks; // BmnGlobalTrack array
180 TClonesArray* fGlobalTrackMatches; // BmnGlobalTrackMatches array
181 TClonesArray* fTof400Hits;
182 TClonesArray* fTof700Hits;
183
184 BmnPidQa(const BmnPidQa&);
185 BmnPidQa& operator=(const BmnPidQa&);
186
187 ClassDef(BmnPidQa, 1);
188};
189
190#endif /* BMNPIDQA_H_ */
friend F32vec4 min(const F32vec4 &a, const F32vec4 &b)
Definition P4_F32vec4.h:30
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
Definition P4_F32vec4.h:31
PidParticles
Histogram manager.
BmnPidQa()
Constructor.
Definition BmnPidQa.h:37
virtual ~BmnPidQa()
Destructor.
Definition BmnPidQa.cxx:96
void SetPRange(Int_t bins, Int_t min, Int_t max)
Definition BmnPidQa.h:71
virtual void Finish()
Derived from FairTask.
Definition BmnPidQa.cxx:115
virtual InitStatus Init()
Derived from FairTask.
Definition BmnPidQa.cxx:102
void SetOutputDir(const std::string &dir)
Definition BmnPidQa.h:67
Bool_t GetOnlyPrimes() const
Definition BmnPidQa.h:81
TParticlePDG * GetParticleExtend(Int_t pdgCode)
Definition BmnPidQa.cxx:560
virtual void Exec(Option_t *opt)
Derived from FairTask.
Definition BmnPidQa.cxx:110
void SetOnlyPrimes(const Bool_t prime)
Definition BmnPidQa.h:77