BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnPidQa.h
Go to the documentation of this file.
1/**
2 * \file BmnPidQa.h
3 * \brief FairTask for pid performance calculation.
4 * \author Andrey Lebedev <andrey.lebedev@gsi.de> - original author for CBM experiment
5 * \author Sergey Merts <sergey.merts@gmail.com> - modifications for BMN experiment
6 * \date 2007-2021
7 */
8
9#ifndef BMNPIDQA_H_
10#define BMNPIDQA_H_
11
12#include "BmnGlobalTrack.h"
13#include "BmnMCTrackCreator.h"
14#include "FairTask.h"
15#include "TDatabasePDG.h"
16#include "TParticlePDG.h"
17
18#include <unordered_map>
19
20class BmnHistManager;
21class BmnTrackMatch;
23
24using std::multimap;
25using std::string;
26using std::unordered_map;
27using std::vector;
28
29class BmnPidQa : public FairTask
30{
31 public:
32 /**
33 * \brief Constructor.
34 */
36
37 /**
38 * \brief Constructor.
39 */
40 BmnPidQa(TString name, TString storageName = "canvStorage");
41
42 /**
43 * \brief Destructor.
44 */
45 virtual ~BmnPidQa();
46
47 /**
48 * \brief Derived from FairTask.
49 */
50 virtual InitStatus Init();
51
52 /**
53 * \brief Derived from FairTask.
54 */
55 virtual void Exec(Option_t* opt);
56
57 /**
58 * \brief Derived from FairTask.
59 */
60 virtual void Finish();
61
63
64 void SetOutputDir(const std::string& dir) { fOutputDir = dir; }
65
67 {
68 fPRangeBins = bins;
71 }
72
73 void SetOnlyPrimes(const Bool_t prime) { fPrimes = prime; }
74
75 Bool_t GetOnlyPrimes() const { return fPrimes; }
76
77 private:
78 Int_t EnumToPdg(PidParticles part);
79
80 /**
81 * \brief Read data branches from input data files.
82 */
83 void ReadDataBranches();
84
85 void CreateH1(const string& name,
86 const string& xTitle,
87 const string& yTitle,
88 Int_t nofBins,
89 Double_t minBin,
90 Double_t maxBin);
91
92 void CreateH2(const string& name,
93 const string& xTitle,
94 const string& yTitle,
95 const string& zTitle,
96 Int_t nofBinsX,
97 Double_t minBinX,
98 Double_t maxBinX,
99 Int_t nofBinsY,
100 Double_t minBinY,
101 Double_t maxBinY);
102
103 void CreateTrackHitsHistogram(const string& detName);
104
106
107 void CreateHistograms();
108 void ProcessGlobal();
109
112
113 BmnHistManager* fHM; // Histogram manager
114 string fOutputDir; // Output directory for results
115
116 Bool_t fPrimes; // calculate efficiency only for primaries or for all particles
117
118 Double_t fPRangeMin; // Minimum momentum for tracks for efficiency calculation [GeV/c]
119 Double_t fPRangeMax; // Maximum momentum for tracks for efficiency calculation [GeV/c]
120 Int_t fPRangeBins; // Number of bins for efficiency vs. momentum histogram
121
122 Double_t fBetaRangeMin; // Minimum rigidity for tracks for efficiency calculation [GeV/c]
123 Double_t fBetaRangeMax; // Maximum rigidity for tracks for efficiency calculation [GeV/c]
124 Int_t fBetaRangeBins; // Number of bins for rigidity-momentum histogram
125
126 Double_t fVelocRangeMin; // Minimum rigidity for tracks for efficiency calculation [GeV/c]
127 Double_t fVelocRangeMax; // Maximum rigidity for tracks for efficiency calculation [GeV/c]
128 Int_t fVelocRangeBins; // Number of bins for rigidity-momentum histogram
129
133
137
138 Double_t fNHitsRangeMin; // Minimum hits for tracks for efficiency calculation [GeV/c]
139 Double_t fNHitsRangeMax; // Maximum hits for tracks for efficiency calculation [GeV/c]
140 Int_t fNHitsRangeBins; // Number of bins for rigidity-momentum histogram
141
142 TDatabasePDG* db = nullptr;
143
144 vector<TParticlePDG*> fParticles;
145 // mass table for particles
146 unordered_map<Double_t, string> fMassTable; // {Mass: Particle name}
147
148 string GetParticleName(Double_t mass);
149
150 void MassTablePrint();
151 // key - Particle name
152 // value[0] -counter for true total number of particle of one sort
153 // value[1] - counter of true identifications
154 // value[2] - counter of false identifications
155 // value[3] - counter for undivided number of particle of one sort
156 unordered_map<string, vector<Int_t>> fPidStatistics400, fPidStatistics700;
159
160 // Pointers to data arrays
161 TClonesArray* fMCTracks; // CbmMCTrack array
162 TClonesArray* fGlobalTracks; // BmnGlobalTrack array
163 TClonesArray* fGlobalTrackMatches; // BmnGlobalTrackMatches array
166
169
170 ClassDef(BmnPidQa, 1);
171};
172
173#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
Creates BmnMCTrack objects.
bool Bool_t
int Int_t
double Double_t
const char Option_t
#define ClassDef(name, id)
Histogram manager.
string GetParticleName(Double_t mass)
Definition BmnPidQa.cxx:570
BmnPidQa()
Constructor.
Definition BmnPidQa.h:35
virtual ~BmnPidQa()
Destructor.
Definition BmnPidQa.cxx:96
Double_t fNHitsRangeMin
Definition BmnPidQa.h:138
void ReadDataBranches()
Read data branches from input data files.
Definition BmnPidQa.cxx:134
TClonesArray * fTof400Hits
Definition BmnPidQa.h:164
Double_t fBetaRangeMin
Definition BmnPidQa.h:122
void SetPRange(Int_t bins, Int_t min, Int_t max)
Definition BmnPidQa.h:66
TString fOutName
Definition BmnPidQa.h:110
vector< TParticlePDG * > fParticles
Definition BmnPidQa.h:144
void CreateTrackHitsHistogram(const string &detName)
Definition BmnPidQa.cxx:180
string fOutputDir
Definition BmnPidQa.h:114
Double_t fTimeRangeMin
Definition BmnPidQa.h:130
Int_t fPRangeBins
Definition BmnPidQa.h:120
void CreateH2(const string &name, const string &xTitle, const string &yTitle, const string &zTitle, Int_t nofBinsX, Double_t minBinX, Double_t maxBinX, Int_t nofBinsY, Double_t minBinY, Double_t maxBinY)
Definition BmnPidQa.cxx:164
Bool_t fPrimes
Definition BmnPidQa.h:116
Double_t fMassRangeMax
Definition BmnPidQa.h:135
Int_t EnumToPdg(PidParticles part)
Definition BmnPidQa.cxx:535
Double_t fNHitsRangeMax
Definition BmnPidQa.h:139
void CreateH1(const string &name, const string &xTitle, const string &yTitle, Int_t nofBins, Double_t minBin, Double_t maxBin)
Definition BmnPidQa.cxx:153
virtual void Finish()
Derived from FairTask.
Definition BmnPidQa.cxx:115
Int_t fNHitsRangeBins
Definition BmnPidQa.h:140
void ProcessGlobal()
Definition BmnPidQa.cxx:347
virtual InitStatus Init()
Derived from FairTask.
Definition BmnPidQa.cxx:102
TString fStorageName
Definition BmnPidQa.h:111
Int_t fBetaRangeBins
Definition BmnPidQa.h:124
unordered_map< string, vector< Int_t > > fPidStatistics700
Definition BmnPidQa.h:156
void MassTablePrint()
Definition BmnPidQa.cxx:580
void SetOutputDir(const std::string &dir)
Definition BmnPidQa.h:64
Double_t fVelocRangeMin
Definition BmnPidQa.h:126
void PidStatisticsPrint700()
Definition BmnPidQa.cxx:591
TClonesArray * fGlobalTrackMatches
Definition BmnPidQa.h:163
TClonesArray * fMCTracks
Definition BmnPidQa.h:161
void PidStatisticsPrint400()
Definition BmnPidQa.cxx:586
void ReadEventHeader()
Double_t fPRangeMin
Definition BmnPidQa.h:118
Bool_t GetOnlyPrimes() const
Definition BmnPidQa.h:75
Int_t fVelocRangeBins
Definition BmnPidQa.h:128
TParticlePDG * GetParticleExtend(Int_t pdgCode)
Definition BmnPidQa.cxx:560
void CreateHistograms()
Definition BmnPidQa.cxx:193
BmnHistManager * fHM
Definition BmnPidQa.h:113
BmnPidQa(const BmnPidQa &)
Int_t fMassRangeBins
Definition BmnPidQa.h:136
BmnPidQa & operator=(const BmnPidQa &)
TDatabasePDG * db
Definition BmnPidQa.h:142
TClonesArray * fGlobalTracks
Definition BmnPidQa.h:162
virtual void Exec(Option_t *opt)
Derived from FairTask.
Definition BmnPidQa.cxx:110
Double_t fBetaRangeMax
Definition BmnPidQa.h:123
Double_t fPRangeMax
Definition BmnPidQa.h:119
void SetOnlyPrimes(const Bool_t prime)
Definition BmnPidQa.h:73
Double_t fVelocRangeMax
Definition BmnPidQa.h:127
Double_t fTimeRangeMax
Definition BmnPidQa.h:131
unordered_map< Double_t, string > fMassTable
Definition BmnPidQa.h:146
Double_t fMassRangeMin
Definition BmnPidQa.h:134
unordered_map< string, vector< Int_t > > fPidStatistics400
Definition BmnPidQa.h:156
Int_t fTimeRangeBins
Definition BmnPidQa.h:132
TClonesArray * fTof700Hits
Definition BmnPidQa.h:165