BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
CbmKF.h
Go to the documentation of this file.
1/** The CbmKF Kalman Filter algorithm
2 *
3 * @author S.Gorbunov
4 * @version 0.0
5 * @since 02.12.05
6 *
7 * Description will be here
8 *
9 * To be used by high-level utilites like StsTrackFitter
10 *
11 */
12
13#ifndef CBMKF_H
14#define CBMKF_H
15
16#include "BmnNewFieldMap.h"
17#include "BmnTask.h"
18#include "CbmKFMaterial.h"
19#include "CbmKFTrackInterface.h"
20#include "CbmStsDigiScheme.h"
21#include "FairField.h"
22#include "FairGeoNode.h"
23
24#include <map>
25#include <vector>
26
27class CbmKF : public BmnTask
28{
29
30 public:
31 CbmKF(const char* name = "KF", Int_t iVerbose = 1);
33
34 static CbmKF* Instance() { return fInstance; }
35
36 /// * FairTask methods
37
39 InitStatus ReInit();
40 InitStatus Init();
41
42 /// * Utilites
43
45
46 /** Propagation of (T, C) to z_out without material, using linearisation at qp0
47 */
48
49 Int_t Propagate(Double_t* T, Double_t* C, Double_t z_out, Double_t QP0, Bool_t line = false);
50
54
55 /// * Stored materials
56
57 std::vector<CbmKFMaterial*> vMaterial;
58
59 std::vector<CbmKFTube> vMvdMaterial;
60 std::vector<CbmKFTube> vStsMaterial;
61 std::vector<CbmKFWall> vSttMaterial;
62 std::vector<CbmKFTube> vTargets;
63 std::vector<CbmKFCone> vPipe;
64
65 std::vector<CbmKFTube> vPassiveTube;
66 std::vector<CbmKFWall> vPassiveWall;
67 std::vector<CbmKFBox> vPassiveBox;
68
69 /// * Usefull information
70
71 // FairField *GetMagneticField(){ return fMagneticField; }
73
74 std::map<Int_t, Int_t> MvdStationIDMap;
75 std::map<Int_t, Int_t> StsStationIDMap;
76 std::map<Int_t, Int_t> SttStationIDMap;
77
78 Int_t GetMethod() { return fMethod; }
79
80 void SetMethod(Int_t fm) { fMethod = fm; }
81
82 // AZ CbmStsDigiScheme StsDigi;
84
85 int GetNMvdStations() const { return CbmKF::Instance()->vMvdMaterial.size(); }
86 // AZ int GetNStsStations() const { return const_cast<CbmStsDigiScheme*>(&StsDigi)->GetNStations();}
88
89 virtual void SetField(const std::unique_ptr<FairField>& magneticField)
90 {
91 fMagneticField = static_cast<BmnNewFieldMap*>(magneticField.get());
92 }
93
94 private:
95 static CbmKF* fInstance;
96
97 // FairField *fMagneticField;
98
100
101 Int_t fMethod; /* 0 = straight line,
102 1 = AnalyticLight
103 2 = Runge-Kutta 4 order,
104 */
105
106 std::map<Int_t, Int_t> fMaterialID2IndexMap;
107
108 Int_t ReadTube(CbmKFTube& tube, FairGeoNode* node);
109 Int_t ReadTube(CbmKFTube& tube, TGeoVolume* vol); // AZ-171023
110 CbmKFMaterial* ReadPassive(FairGeoNode* node);
111
112 private:
113 CbmKF(const CbmKF&);
114 void operator=(const CbmKF&);
115
116 public:
117 ClassDef(CbmKF, 1);
118};
119
120#endif /* !CBMKF_H */
bool Bool_t
int Int_t
double Double_t
#define ClassDef(name, id)
Field Map does not have any symmetries w.r.t coordinate axises.
BmnTask.
Definition BmnTask.h:13
Abstract base class for hit is being used by the CbmKF Kalman Filter.
Definition CbmKFHit.h:17
The CbmKF Kalman Filter algorithm.
Definition CbmKF.h:28
void operator=(const CbmKF &)
CbmKF(const CbmKF &)
static CbmKF * fInstance
Definition CbmKF.h:95
Int_t Propagate(Double_t *T, Double_t *C, Double_t z_out, Double_t QP0, Bool_t line=false)
Propagation of (T, C) to z_out without material, using linearisation at qp0.
void SetMethod(Int_t fm)
Definition CbmKF.h:80
Int_t fMethod
Definition CbmKF.h:101
std::vector< CbmKFTube > vPassiveTube
Definition CbmKF.h:65
Int_t PassMaterialBetween(CbmKFTrackInterface &track, Double_t &QP0, CbmKFHit *fst, CbmKFHit *lst)
std::vector< CbmKFMaterial * > vMaterial
Definition CbmKF.h:57
std::map< Int_t, Int_t > MvdStationIDMap
Definition CbmKF.h:74
static CbmKF * Instance()
Definition CbmKF.h:34
CbmKFMaterial * ReadPassive(FairGeoNode *node)
Int_t PassMaterialBetween(CbmKFTrackInterface &track, Double_t &QP0, Int_t ifst, Int_t ilst)
int GetNStsStations() const
Definition CbmKF.h:87
std::map< Int_t, Int_t > fMaterialID2IndexMap
Definition CbmKF.h:106
void SetParContainers()
BmnNewFieldMap * GetMagneticField()
Definition CbmKF.h:72
std::vector< CbmKFWall > vPassiveWall
Definition CbmKF.h:66
std::vector< CbmKFWall > vSttMaterial
Definition CbmKF.h:61
std::vector< CbmKFTube > vTargets
Definition CbmKF.h:62
std::vector< CbmKFCone > vPipe
Definition CbmKF.h:63
std::map< Int_t, Int_t > StsStationIDMap
Definition CbmKF.h:75
std::map< Int_t, Int_t > SttStationIDMap
Definition CbmKF.h:76
Int_t GetMaterialIndex(Int_t uid)
std::vector< CbmKFBox > vPassiveBox
Definition CbmKF.h:67
std::vector< CbmKFTube > vStsMaterial
Definition CbmKF.h:60
CbmKF(const char *name="KF", Int_t iVerbose=1)
Int_t ReadTube(CbmKFTube &tube, TGeoVolume *vol)
BmnNewFieldMap * fMagneticField
Definition CbmKF.h:99
CbmStsDigiScheme * StsDigi
Definition CbmKF.h:83
int GetNMvdStations() const
Definition CbmKF.h:85
virtual void SetField(const std::unique_ptr< FairField > &magneticField)
Definition CbmKF.h:89
Int_t GetMethod()
Definition CbmKF.h:78
Int_t PassMaterial(CbmKFTrackInterface &track, Double_t &QP0, Int_t ifst, Int_t ilst)
Int_t ReadTube(CbmKFTube &tube, FairGeoNode *node)
std::vector< CbmKFTube > vMvdMaterial
Definition CbmKF.h:59
InitStatus Init()
InitStatus ReInit()
static CbmStsDigiScheme * Instance(int version=1)
Int_t GetNStations()
Accessors.