BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnTrackingQa.h
Go to the documentation of this file.
1/**
2 * \file BmnTrackingQa.h
3 * \brief FairTask for tracking 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-2014
7 */
8
9#ifndef BMNTRACKINGQA_H_
10#define BMNTRACKINGQA_H_
11
12#include "BmnCSCStationSet.h"
13#include "BmnGemStripStationSet.h"
14#include "BmnMCTrackCreator.h"
15#include "BmnSiliconStationSet.h"
16#include "CbmVertex.h"
17#include "FairTask.h"
18
19class BmnHistManager;
20class BmnTrackMatch;
22class BmnGlobalElectronId;
23
24using std::multimap;
25using std::string;
26using std::vector;
27
28class BmnTrackingQa : public FairTask
29{
30 public:
31 /**
32 * \brief Constructor.
33 */
35
36 /**
37 * \brief Constructor.
38 */
39 BmnTrackingQa(Short_t ch, TString name, TString gemConf, TString silConf, TString cscConf);
40
41 /**
42 * \brief Destructor.
43 */
44 virtual ~BmnTrackingQa();
45
46 /**
47 * \brief Derived from FairTask.
48 */
49 virtual InitStatus Init();
50
51 /**
52 * \brief Derived from FairTask.
53 */
54 virtual void Exec(Option_t* opt);
55
56 /**
57 * \brief Derived from FairTask.
58 */
59 virtual void Finish();
60
61 /** Setters **/
62 void SetMinNofPointsSts(Int_t minNofPointsSts) { fMinNofPoints = minNofPointsSts; }
63
64 void SetMinNofPointsTof(Int_t minNofPointsTof) { fMinNofPointsTof = minNofPointsTof; }
65
66 void SetQuota(Double_t quota) { fQuota = quota; }
67
68 void SetOutputDir(const std::string& dir) { fOutputDir = dir; }
69
71 {
72 fPRangeBins = bins;
75 }
76
78 {
79 fYRangeBins = bins;
82 }
83
85 {
86 fPtRangeBins = bins;
89 }
90
92 {
95 fThetaRangeBins = nofBins;
96 }
97
98 void SetOnlyPrimes(const Bool_t prime) { fPrimes = prime; }
99
100 Bool_t GetOnlyPrimes() const { return fPrimes; }
101
102 void SetInnerTrackerSetup(map<DetectorId, Bool_t> setup) { fInnerTrackerSetup = setup; };
103
104 void SetDetectorPresence(DetectorId det, Bool_t use) { fInnerTrackerSetup[det] = use; };
105
107
108 private:
109 /**
110 * \brief Read data branches from input data files.
111 */
113
114 void CreateH1(const string& name,
115 const string& xTitle,
116 const string& yTitle,
117 Int_t nofBins,
118 Double_t minBin,
119 Double_t maxBin);
120
121 void CreateH2(const string& name,
122 const string& xTitle,
123 const string& yTitle,
124 const string& zTitle,
125 Int_t nofBinsX,
126 Double_t minBinX,
127 Double_t maxBinX,
128 Int_t nofBinsY,
129 Double_t minBinY,
130 Double_t maxBinY);
131
132 void CreateTrackHitsHistogram(const string& detName);
133
135
138
141
143
144 BmnHistManager* fHM; // Histogram manager
145 string fOutputDir; // Output directory for results
146 BmnMCTrackCreator* fMCTrackCreator; // MC track creator tool
147
148 // Acceptance defined by MC points
149 Int_t fMinNofPoints; // Minimal number of MCPoints in STS
150 Int_t fMinNofPointsTof; // Minimal number of MCPoints in TOF
151 Int_t fMinNofPointsDch; // Minimal number of MCPoints in TOF
152
153 Double_t fQuota; // True/all hits for track to be considered correctly reconstructed
154 Double_t fEtaCut; // threshold for pseudorapidity (cat for spectators)
155 Double_t fPCut; // threshold for momentum
156
157 Bool_t fPrimes; // calculate efficiency only for primaries or for all particles
158
159 // Minimal number of hits in track to be considered as accepted.
160 // This is needed because the definition of the correctly reconstructed track
161 // is 60% of hits in the reconstructed track are from the same MC track.
162 // But this can lead to the situation when a reconstructed track has 4 hits,
163 // all of them from the same MC track, which means that the track is correctly
164 // reconstructed. BUT the real MC track has 12 points(hits). This is especially
165 // important for the MUCH detector. To avoid such situations one has to put
166 // such cut.
167
168 Double_t fPRangeMin; // Minimum momentum for tracks for efficiency calculation [GeV/c]
169 Double_t fPRangeMax; // Maximum momentum for tracks for efficiency calculation [GeV/c]
170 Int_t fPRangeBins; // Number of bins for efficiency vs. momentum histogram
171 Double_t fPtRangeMin; // Minimum Pt for tracks for efficiency calculation [GeV/c]
172 Double_t fPtRangeMax; // Maximum Pt for tracks for efficiency calculation [GeV/c]
173 Int_t fPtRangeBins; // Number of bins for efficiency vs. Pt histogram
174 Double_t fYRangeMin; // Minimum rapidity for tracks for efficiency calculation
175 Double_t fYRangeMax; // Maximum rapidity for tracks for efficiency calculation
176 Int_t fYRangeBins; // Number of bins for efficiency vs. rapidity histogram
177 Double_t fEtaRangeMin; // Minimum pseudorapidity for tracks for efficiency calculation
178 Double_t fEtaRangeMax; // Maximum pseudorapidity for tracks for efficiency calculation
179 Int_t fEtaRangeBins; // Number of bins for efficiency vs. pseudorapidity histogram
180 Double_t fThetaRangeMin; // Minimum polar angle [grad]
181 Double_t fThetaRangeMax; // Maximum polar angle [grad]
182 Int_t fThetaRangeBins; // Number of bins for efficiency vs. polar angle histogram
183
184 UInt_t fNHitsCut; // cut to exclude overflowed events
185
186 map<DetectorId, Bool_t> fInnerTrackerSetup;
188
189 // Pointers to data arrays
190 TClonesArray* fMCTracks; // CbmMCTrack array
191 TClonesArray* fGlobalTracks; // BmnGlobalTrack array
196 TClonesArray* fGlobalTrackMatches; // BmnGemTrackMatch array
209
210 TClonesArray* fVertex; // BMN tracking
211 CbmVertex* fVertexL1; // L1 tracking
218
220
221 Short_t fChargeCut; //(-1, 0, +1) do QA for negative, all or positive particles
222
223 Int_t fEventNo; // event counter
224
225 BmnTrackingQa(const BmnTrackingQa&) = delete;
227
229};
230
231#endif /* BMNTRACKINGQA_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
short Short_t
double Double_t
const char Option_t
#define ClassDef(name, id)
Histogram manager.
Monte-Carlo track.
Definition BmnMCTrack.h:27
void SetMinNofPointsTof(Int_t minNofPointsTof)
virtual InitStatus Init()
Derived from FairTask.
TClonesArray * fVertex
TClonesArray * fStsTrackMatches
TClonesArray * fSilTracks
TClonesArray * fTof700Hits
TClonesArray * fGemPoints
void SetOutputDir(const std::string &dir)
TClonesArray * fDchTracks
Double_t fYRangeMin
void SetThetaRange(Double_t min, Double_t max, Int_t nofBins)
virtual void Exec(Option_t *opt)
Derived from FairTask.
TClonesArray * fGlobalTracks
CbmVertex * fVertexL1
void SetPRange(Int_t bins, Int_t min, Int_t max)
Double_t fPRangeMax
void CreateHistograms()
void SetInnerTracksBranchName(TString name)
TClonesArray * fStsTracks
TClonesArray * fSilHits
Double_t fPRangeMin
TClonesArray * fGlobalTrackMatches
Int_t CalcNumberOfMcPointInTrack(Int_t trId)
TClonesArray * fGemHits
TString fInnerTrackBranchName
void SetMinNofPointsSts(Int_t minNofPointsSts)
Setters.
TClonesArray * fMCTracks
virtual void Finish()
Derived from FairTask.
TClonesArray * fStsHits
void ReadEventHeader()
TClonesArray * fCscPoints
Double_t fYRangeMax
map< DetectorId, Bool_t > fInnerTrackerSetup
Double_t fThetaRangeMin
void ProcessGlobal()
BmnHistManager * fHM
Double_t fPtRangeMax
TClonesArray * fSsdHits
BmnTrackingQa(Short_t ch, TString name, TString gemConf, TString silConf, TString cscConf)
Constructor.
void SetInnerTrackerSetup(map< DetectorId, Bool_t > setup)
Double_t fThetaRangeMax
Double_t fEtaRangeMax
BmnCSCStationSet * fCscDetector
void SetDetectorPresence(DetectorId det, Bool_t use)
void SetPtRange(Int_t bins, Int_t min, Int_t max)
void ReadDataBranches()
Read data branches from input data files.
BmnTrackingQa()
Constructor.
void SetQuota(Double_t quota)
TClonesArray * fTof400Hits
void CreateH1(const string &name, const string &xTitle, const string &yTitle, Int_t nofBins, Double_t minBin, Double_t maxBin)
BmnGemStripStationSet * fGemDetector
BmnSiliconStationSet * fSilDetector
TClonesArray * fCscHits
void CreateTrackHitsHistogram(const string &detName)
BmnTrackingQa(const BmnTrackingQa &)=delete
TClonesArray * fSilPoints
TClonesArray * fGemTracks
Int_t CalcNumberOfMcPointInTrack(BmnMCTrack mcTrack)
BmnTrackingQa & operator=(const BmnTrackingQa &)=delete
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)
Bool_t GetOnlyPrimes() const
void SetOnlyPrimes(const Bool_t prime)
TClonesArray * fInnerHits
Double_t fEtaRangeMin
virtual ~BmnTrackingQa()
Destructor.
Double_t fPtRangeMin
void SetYRange(Int_t bins, Int_t min, Int_t max)
BmnMCTrackCreator * fMCTrackCreator
CbmVertex.h.
Definition CbmVertex.h:21