BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
CbmL1.h
Go to the documentation of this file.
1/*
2 *====================================================================
3 *
4 * CBM Level 1 Reconstruction
5 *
6 * Authors: I.Kisel, S.Gorbunov
7 *
8 * e-mail : ikisel@kip.uni-heidelberg.de
9 *
10 *====================================================================
11 *
12 * CbmL1 header file
13 *
14 *====================================================================
15 */
16
17#ifndef _CbmL1_h_
18#define _CbmL1_h_
19
20#include "BmnTask.h"
21#include "CbmKFParticle.h"
22#include "CbmL1MCPoint.h"
23#include "CbmL1MCTrack.h"
25#include "CbmL1StsHit.h"
26#include "CbmL1Track.h"
27#include "CbmL1Vtx.h"
28#include "CbmStsDigiScheme.h"
29#include "KFMCParticle.h"
30#include "KFParticleMatch.h"
31#include "TClonesArray.h"
32
33#include <vector>
34
35using std::vector;
36
37class L1Algo;
38
39class CbmL1HitStore
40{
41 public:
42 int ExtIndex;
43 int iStation;
44 double x, y;
45};
46
47class CbmL1 : public BmnTask
48{
49 private:
50 CbmL1(const CbmL1&);
52
53 public:
54 L1Algo* algo; //! for access to L1 Algorithm from L1::Instance
56
57 vector<CbmL1Track> vRTracks; //! reconstructed tracks
58
59 static CbmL1* Instance() { return fInstance; }
60
62 virtual InitStatus ReInit();
63 virtual InitStatus Init();
64 void Exec(Option_t* option);
65
67
68 /** Constructor
69 * @param _fPerformance - type of Efficiency output: 0 - w\o efficiencies, doesn't use MC data; 1 - L1 standard
70 * efficiency definition; 2 - QA efficiency definition
71 * @param fSTAPDataMode_ - way to work with files for the standalone package: 0 - off , 1 - write, 2 - read data
72 * and work only with it, 3 - write and read (debug)
73 * @param findParticleMode_ : 0 - don't run FindParticles; 1 - run, all MC particle is reco-able; 2 - run, MC
74 * particle is reco-able if created from reco-able tracks; 3 - run, MC particle is reco-able if created from
75 * reconstructed tracks
76 */
77 CbmL1(const char* name,
78 Int_t iVerbose = 1,
79 Int_t _fPerformance = 0,
80 int fSTAPDataMode_ = 0,
81 TString fSTAPDataDir_ = "./",
82 int findParticleMode_ = 0);
83
84 ~CbmL1(/*if (targetFieldSlice) delete;*/);
85
88 void Finish();
89
90 // void SetTrackingLevel( Int_t iLevel ){ fTrackingLevel = iLevel; }
91 // void MomentumCutOff( Double_t cut ){ fMomentumCutOff = cut; }
92 // void SetGhostSuppression( Bool_t b ){ fGhostSuppression= b; }
93 // void SetDetectorEfficiency( Double_t eff ){ fDetectorEfficiency = eff; }
94
95 vector<CbmL1HitStore> vHitStore; // diff hit information
96
98
99 friend class L1AlgoDraw;
100 friend class L1AlgoPulls;
101 template<int NHits>
103 friend class CbmL1MCTrack;
104 friend class CbmL1PFFitter;
105
106 private:
107 void IdealTrackFinder(); // just copy all reconstructable MCTracks into RecoTracks.
108
109 /// Read information about hits, mcPoints and mcTracks into L1 classes
110 void ReadEvent();
111 bool ReadMCPoint(CbmL1MCPoint* MC, int iPoint, bool MVD); // help procedure
112
113 /// Input Performance
114 void HitMatch(); // Procedure for match hits and MCPoints.
115 void FieldApproxCheck(); // Build histos with difference between Field map and approximated field
116 void FieldIntegralCheck(); // Build 2D histo: dependence of the field integral on phi and theta
117 void InputPerformance(); // Build histos about input data, like hit pulls, etc.
118
119 /// Reconstruction Performance
120 void TrackMatch(); // Procedure for match Reconstructed and MC Tracks. Should be called before Performances
121 void EfficienciesPerformance(); // calculate efficiencies
122 void GetMCParticles(); // create MC particles from MC tracks
124 void MatchParticles(); // Procedure for match Reconstructed and MC Particles. Should be called before Performances
125 void PartEffPerformance(); // calculate efficiencies
126 void TrackFitPerformance(); // pulls & residuals. Can be called only after Performance()
127 void HistoPerformance(); // fill some histograms and calculate efficiencies
128 void PartHistoPerformance(); // histograms for particle finder
129
130 /// STandAlone Package service-functions
131 void WriteSTAPGeoData(void* geo, int size); // create geo_algo.dat
132 void WriteSTAPAlgoData(); // create data_algo.dat
133 void WriteSTAPPerfData(); // create data_perfo.dat
134 void ReadSTAPGeoData(void* geo, int& size);
137 /// SIMD KF Banchmark service-functions
139
140 static istream& eatwhite(istream& is); // skip spaces
141 static void writedir2current(TObject* obj); // help procedure
142
143 int NStation, NMvdStations, NStsStations; // number of detector stations (all\sts\mvd)
144 Int_t fPerformance; // 0 - w\o perf. 1 - L1-Efficiency definition. 2 - QA-Eff.definition
145 int fSTAPDataMode; // way to work with file for standalone package. 0 (off) , 1 (write), 2 (read data and work
146 // only with it), 3 (debug - write and read)
148
149 Int_t fTrackingLevel; // really doesn't used
150 Double_t fMomentumCutOff; // really doesn't used
151 Bool_t fGhostSuppression; // really doesn't used
152 Bool_t fUseMVD; // really doesn't used
153 // Double_t fDetectorEfficiency; // really doesn't used
154
155 // AZ CbmStsDigiScheme StsDigi;
157 CbmL1Vtx PrimVtx; //!
158 // L1FieldSlice *targetFieldSlice _fvecalignment;
159
160 /// Input data
162 TClonesArray* listStsPts; //! Sts MC points
166
167 TClonesArray* listMvdPts; //! Mvd MC points
170
171 /// Used data = Repacked input data
172 vector<CbmL1StsHit> vStsHits; //! hits with hit-mcpoint match information
173 vector<CbmL1MCPoint> vMCPoints; //!
174 vector<CbmL1MCTrack> vMCTracks; //!
175 vector<int> vHitMCRef; // indices of MCPoints in vMCPoints, indexed by index of hit in algo->vStsHits array.
176 // According to StsMatch. Used for IdealResponce
177
178 vector<CbmKFParticle> vRParticles; //! reco particles
179 vector<KFMCParticle> vMCParticles; //! MC particles
180 vector<KFMatchParticles> MCtoRParticleId; //! array for match
181 vector<KFMatchParticles> RtoMCParticleId; //!
182
183 TDirectory* histodir; //!
184
185 static CbmL1* fInstance; //!
186
187 private:
189 KFMCParticle& part); // recursive func, used in FindReconstructableMCParticles
190
192
195
196 ClassDef(CbmL1, 1);
197};
198
199#endif //_CbmL1_h_
bool Bool_t
int Int_t
double Double_t
const char Option_t
#define ClassDef(name, id)
BmnTask.
Definition BmnTask.h:13
double y
Definition CbmL1.h:44
int ExtIndex
Definition CbmL1.h:42
double x
Definition CbmL1.h:44
int iStation
Definition CbmL1.h:43
Definition CbmL1.h:48
void HitMatch()
Input Performance.
friend class L1AlgoPulls
Definition CbmL1.h:100
L1Algo * algo
Definition CbmL1.h:54
friend class CbmL1PFFitter
Definition CbmL1.h:104
static CbmL1 * Instance()
reconstructed tracks
Definition CbmL1.h:59
friend class L1AlgoEfficiencyPerformance
Definition CbmL1.h:102
vector< CbmL1HitStore > vHitStore
Definition CbmL1.h:95
int NMvdStations
Definition CbmL1.h:143
vector< KFMCParticle > vMCParticles
reco particles
Definition CbmL1.h:179
void FindReconstructableMCParticles()
void CheckMCParticleIsReconstructable(KFMCParticle &part)
Bool_t fUseMVD
Definition CbmL1.h:152
CbmL1Vtx PrimVtx
Definition CbmL1.h:157
void TrackMatch()
Reconstruction Performance.
Bool_t fGhostSuppression
Definition CbmL1.h:151
TClonesArray * listMCTracks
Input data.
Definition CbmL1.h:161
vector< CbmL1MCTrack > vMCTracks
Definition CbmL1.h:174
CbmL1(const CbmL1 &)
vector< CbmL1MCPoint > vMCPoints
hits with hit-mcpoint match information
Definition CbmL1.h:173
TClonesArray * listMvdHitMatches
Definition CbmL1.h:169
void WriteSIMDKFData()
SIMD KF Banchmark service-functions.
vector< CbmL1StsHit > vStsHits
Used data = Repacked input data.
Definition CbmL1.h:172
void PartHistoPerformance()
vector< KFMatchParticles > MCtoRParticleId
MC particles.
Definition CbmL1.h:180
bool ReadMCPoint(CbmL1MCPoint *MC, int iPoint, bool MVD)
int fSTAPDataMode
Definition CbmL1.h:145
Int_t fPerformance
Definition CbmL1.h:144
TClonesArray * listStsClusters
Definition CbmL1.h:164
void WriteSTAPAlgoData()
TClonesArray * listMvdPts
Definition CbmL1.h:167
vector< CbmL1Track > vRTracks
Definition CbmL1.h:57
void InputPerformance()
static CbmL1 * fInstance
Definition CbmL1.h:185
CbmL1 operator=(const CbmL1 &)
vector< CbmKFParticle > vRParticles
Definition CbmL1.h:178
void FieldIntegralCheck()
TClonesArray * listStsPts
Definition CbmL1.h:162
int fFindParticlesMode
Definition CbmL1.h:191
static void writedir2current(TObject *obj)
TClonesArray * listMvdHits
Mvd MC points.
Definition CbmL1.h:168
vector< int > vHitMCRef
Definition CbmL1.h:175
void IdealTrackFinder()
TClonesArray * listStsDigi
Sts MC points.
Definition CbmL1.h:163
void TrackFitPerformance()
TDirectory * histodir
Definition CbmL1.h:183
Double_t fMomentumCutOff
Definition CbmL1.h:150
void ReadSTAPPerfData()
void Finish()
void Exec(Option_t *option)
void ReadEvent()
Read information about hits, mcPoints and mcTracks into L1 classes.
CbmL1ParticlesFinder * PF
for access to L1 Algorithm from L1::Instance
Definition CbmL1.h:55
bool fExtrapolateToTheEndOfSTS
Definition CbmL1.h:194
void Reconstruct()
Int_t fTrackingLevel
Definition CbmL1.h:149
void MatchParticles()
TString fMatBudgetFileName
Definition CbmL1.h:193
void SetMaterialBudgetFileName(TString s)
Definition CbmL1.h:86
static istream & eatwhite(istream &is)
virtual InitStatus ReInit()
void ReadSTAPGeoData(void *geo, int &size)
CbmL1(const char *name, Int_t iVerbose=1, Int_t _fPerformance=0, int fSTAPDataMode_=0, TString fSTAPDataDir_="./", int findParticleMode_=0)
Constructor.
TClonesArray * listStsHits
Definition CbmL1.h:165
void EfficienciesPerformance()
friend class CbmL1MCTrack
Definition CbmL1.h:103
void SetParContainers()
vector< KFMatchParticles > RtoMCParticleId
array for match
Definition CbmL1.h:181
void HistoPerformance()
virtual InitStatus Init()
TString fSTAPDataDir
Definition CbmL1.h:147
void WriteSTAPGeoData(void *geo, int size)
STandAlone Package service-functions.
void FieldApproxCheck()
void ReadSTAPAlgoData()
void SetExtrapolateToTheEndOfSTS(bool b)
Definition CbmL1.h:87
void PartEffPerformance()
int NStation
Definition CbmL1.h:143
friend class L1AlgoDraw
Definition CbmL1.h:99
int NStsStations
Definition CbmL1.h:143
void WriteSTAPPerfData()
void GetMCParticles()
CbmStsDigiScheme * StsDigi
Definition CbmL1.h:156