BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnGlobalTracking.h
Go to the documentation of this file.
1/* * \file BmnGlobalTracking.h
2 * \author Sergey Merts <Sergey.Merts@gmail.com>
3 * \date 2014
4 * \brief BMN task for global track reconstruction.
5 **/
6
7#ifndef BmnGlobalTracking_H_
8#define BmnGlobalTracking_H_
9
10#include "AkimaFunction.h"
11#include "BmnCSCHit.h"
12#include "BmnCSCStationSet.h"
13#include "BmnGemTrack.h"
14#include "BmnGlobalTrack.h"
15#include "BmnHit.h"
16#include "BmnKalmanFilter.h"
17#include "BmnNdetEvent.h"
18#include "BmnScWallEvent.h"
19#include "BmnSiliconHit.h"
20#include "BmnSiliconStationSet.h"
21#include "BmnTask.h"
22#include "BmnTofHit.h"
23#include "BmnVertex.h"
24#include "CbmKFTrack.h"
25#include "CbmMCTrack.h"
26#include "CbmStsHit.h"
27#include "CbmStsTrack.h"
28#include "CbmTofPoint.h"
29#include "CbmVertex.h"
30#include "FairMCPoint.h"
31#include "FairRootManager.h"
32#include "FairRunAna.h"
33#include "FairRuntimeDb.h"
34#include "TClonesArray.h"
35#include "TFitResult.h"
36#include "TFitResultPtr.h"
37#include "TGraph.h"
38#include "TH1F.h"
39#include "TH2F.h"
40#include "TMath.h"
41
42#include <TStopwatch.h>
43#include <string>
44#include <vector>
45using namespace std;
46
47struct Stage3Key
48{
50 std::string particle;
51 std::string zone;
52
53 Bool_t operator<(const Stage3Key& other) const
54 {
55 if (chamber != other.chamber)
56 return chamber < other.chamber;
57 if (particle != other.particle)
58 return particle < other.particle;
59 return zone < other.zone;
60 }
61};
62
63struct AkimaContainer
64{
65 std::map<Int_t, AkimaFunction*> dx_stage1_pos;
66 std::map<Int_t, AkimaFunction*> dx_stage1_neg;
67 std::map<Int_t, AkimaFunction*> dy_stage1_pos;
68 std::map<Int_t, AkimaFunction*> dy_stage1_neg;
69
70 std::map<Int_t, AkimaFunction*> dx_stage2_mean_pos;
71 std::map<Int_t, AkimaFunction*> dx_stage2_mean_neg;
72 std::map<Int_t, AkimaFunction*> dy_stage2_mean_pos;
73 std::map<Int_t, AkimaFunction*> dy_stage2_mean_neg;
74
75 std::map<Int_t, AkimaFunction*> dx_stage2_sigma_pos;
76 std::map<Int_t, AkimaFunction*> dx_stage2_sigma_neg;
77 std::map<Int_t, AkimaFunction*> dy_stage2_sigma_pos;
78 std::map<Int_t, AkimaFunction*> dy_stage2_sigma_neg;
79
80 std::map<Stage3Key, AkimaFunction*> dx_stage3_mean;
81 std::map<Stage3Key, AkimaFunction*> dx_stage3_sigma;
82 std::map<Stage3Key, AkimaFunction*> dy_stage3_mean;
83 std::map<Stage3Key, AkimaFunction*> dy_stage3_sigma;
84
86};
87
88class BmnGlobalTracking : public BmnTask
89{
90 public:
91 /**
92 * \brief Constructor.
93 */
95
96 /**
97 * \brief Destructor.
98 */
100
101 /**
102 * \brief Inherited from FairTask.
103 */
104 virtual InitStatus Init();
105
106 /**
107 * \brief Inherited from FairTask.
108 */
109 virtual void Exec(Option_t* opt);
110
111 /**
112 * \brief Inherited from FairTask.
113 */
114 virtual void Finish();
115
116 virtual void OnlineWrite(const std::unique_ptr<TTree>& resultTree);
117
119
121
122 private:
123 /*
124 * \brief Calculate length of the global track
125 */
127
128 // INPUT ARRAYS
136 BmnNdetEvent* fNdet; //!
137
139
141
142 Int_t fEventNo; // event counter
143
144 CbmVertex* fVertex; //! vertex information
145
148
153
156
158
162 map<Float_t, pair<Int_t, Int_t>> FindPairsTof(TClonesArray* tracks, TClonesArray* hits, Bool_t tof400);
163
164 Double_t MagFieldIntegral(FairTrackParam& par, Double_t zMin, Double_t zMax, Double_t step);
166
167 void LoadAllAkimaCorrections(const TString& filename, Bool_t isTOF400);
169 Float_t qp,
170 Bool_t isDx,
171 const TString& stage,
172 Bool_t isTOF400,
173 const TString& particle = "",
174 const TString& zone = "");
176 Float_t qp,
177 Bool_t isDx,
178 const TString& stage,
179 Bool_t isTOF400,
180 const TString& particle = "",
181 const TString& zone = "");
182
183 std::string GetRegionFromQP(Float_t qp);
184
185 Float_t AdjustQP(Float_t qp, Bool_t isTOF400 = false);
186
188
190};
191
192#endif /* BmnGlobalTracking_H_ */
bool Bool_t
int Int_t
long Long_t
float Float_t
short Short_t
double Double_t
const char Option_t
#define ClassDef(name, id)
BmnStatus
Define status code.
Definition BmnEnums.h:93
BmnGlobalTrack.h.
Double_t CalculateLength(CbmStsTrack *tr)
TClonesArray * fGlobalTracks
virtual void Exec(Option_t *opt)
Inherited from FairTask.
BmnGlobalTracking()
Constructor.
Float_t AdjustQP(Float_t qp, Bool_t isTOF400=false)
map< Float_t, pair< Int_t, Int_t > > FindPairsTof(TClonesArray *tracks, TClonesArray *hits, Bool_t tof400)
TClonesArray * fTof2Hits
AkimaContainer fAkima400
BmnGlobalTracking(const BmnGlobalTracking &)
virtual void OnlineWrite(const std::unique_ptr< TTree > &resultTree)
Write task resul to tree.
Float_t GetAkimaSigma(Int_t chamber, Float_t qp, Bool_t isDx, const TString &stage, Bool_t isTOF400, const TString &particle="", const TString &zone="")
std::string GetRegionFromQP(Float_t qp)
virtual InitStatus Init()
Inherited from FairTask.
TClonesArray * fCscHits
TClonesArray * fTof1Hits
TClonesArray * fStsHits
Float_t GetAkimaCorrection(Int_t chamber, Float_t qp, Bool_t isDx, const TString &stage, Bool_t isTOF400, const TString &particle="", const TString &zone="")
BmnStatus MatchingTOF(Bool_t tof400)
AkimaContainer fAkima700
void SetInnerTracksBranchName(TString name)
virtual void Finish()
Inherited from FairTask.
BmnStatus MatchingNdet()
BmnStatus UpdateMomentum(BmnGlobalTrack *tr)
TClonesArray * fStsTracks
void LoadAllAkimaCorrections(const TString &filename, Bool_t isTOF400)
BmnKalmanFilter * fKalman
vertex information
BmnStatus MatchingScWall()
Double_t MagFieldIntegral(FairTrackParam &par, Double_t zMin, Double_t zMax, Double_t step)
void SetPeriodNumber(Short_t p)
virtual ~BmnGlobalTracking()
Destructor.
BmnScWallEvent * fScWall
Class for Bmn Ndet data container in event.
Class for Bmn ScWall data container in event.
BmnTask.
Definition BmnTask.h:13
CbmVertex.h.
Definition CbmVertex.h:21
Definition json.hpp:4446
std::map< Stage3Key, AkimaFunction * > dy_stage3_mean
std::map< Int_t, AkimaFunction * > dx_stage1_neg
std::map< Int_t, AkimaFunction * > dy_stage2_sigma_pos
std::map< Int_t, AkimaFunction * > dy_stage2_mean_neg
std::map< Int_t, AkimaFunction * > dy_stage2_mean_pos
std::map< Stage3Key, AkimaFunction * > dx_stage3_mean
std::map< Int_t, AkimaFunction * > dy_stage2_sigma_neg
std::map< Stage3Key, AkimaFunction * > dy_stage3_sigma
std::map< Int_t, AkimaFunction * > dy_stage1_pos
std::map< Int_t, AkimaFunction * > dx_stage2_sigma_pos
std::map< Int_t, AkimaFunction * > dy_stage1_neg
std::map< Int_t, AkimaFunction * > dx_stage2_mean_pos
std::map< Int_t, AkimaFunction * > dx_stage2_sigma_neg
std::map< Int_t, AkimaFunction * > dx_stage2_mean_neg
std::map< Stage3Key, AkimaFunction * > dx_stage3_sigma
std::map< Int_t, AkimaFunction * > dx_stage1_pos
std::string zone
std::string particle
Bool_t operator<(const Stage3Key &other) const