CbmRoot
CbmKF.h
Go to the documentation of this file.
1 
14 #ifndef CBMKF_H
15 #define CBMKF_H
16 
17 #include "CbmKFMaterial.h"
18 
19 #include "FairField.h"
20 #include "FairTask.h"
21 
22 #include "TGeoNode.h"
23 
24 #include <iostream>
25 #include <map>
26 #include <vector>
27 
30 class FairGeoNode;
31 class TObjArray;
32 
33 class CbmKF : public FairTask {
34 
35 public:
36  CbmKF(const char* name = "KF", Int_t iVerbose = 1);
37  ~CbmKF();
38 
39  static CbmKF* Instance() { return fInstance; }
40 
42 
43  void SetParContainers();
44  InitStatus ReInit();
45  InitStatus Init();
46 
48 
49  Int_t GetMaterialIndex(Int_t uid);
50 
54  Int_t Propagate(Double_t* T, Double_t* C, Double_t z_out, Double_t QP0);
55 
56  Int_t PassMaterial(CbmKFTrackInterface& track,
57  Double_t& QP0,
58  Int_t ifst,
59  Int_t ilst);
61  Double_t& QP0,
62  Int_t ifst,
63  Int_t ilst);
65  Double_t& QP0,
66  CbmKFHit* fst,
67  CbmKFHit* lst);
68 
70 
71  std::vector<CbmKFMaterial*> vMaterial;
72 
73  std::vector<CbmKFTube> vMvdMaterial;
74  std::vector<CbmKFTube> vStsMaterial;
75  std::vector<CbmKFTube> vMuchMaterial;
76  std::vector<CbmKFTube> vMuchDetectors;
77  std::vector<CbmKFTube> vRichMaterial;
78  std::vector<CbmKFWall> vTrdMaterial;
79  std::vector<CbmKFTube> vTargets;
80  std::vector<CbmKFCone> vPipe;
81 
82  std::vector<CbmKFTube> vPassiveTube;
83  std::vector<CbmKFWall> vPassiveWall;
84  std::vector<CbmKFBox> vPassiveBox;
85 
87 
88  FairField* GetMagneticField() { return fMagneticField; }
89 
90  std::map<Int_t, Int_t> MvdStationIDMap;
91  std::map<Int_t, Int_t> StsStationIDMap;
92  std::map<Int_t, Int_t> TrdStationIDMap;
93  std::map<Int_t, Int_t> MuchMCID2StationMap;
94  std::map<Int_t, Int_t> MuchStation2MCIDMap;
95 
96  Int_t GetMethod() { return fMethod; }
97 
98  int GetNMvdStations() const { return CbmKF::Instance()->vMvdMaterial.size(); }
99 
100 private:
101  static CbmKF* fInstance;
102 
103  FairField* fMagneticField;
104 
105 
106  Int_t fMethod; /* 0 = straight line,
107  1 = AnalyticLight
108  2 = Runge-Kutta 4 order,
109  */
110 
111  std::map<Int_t, Int_t> fMaterialID2IndexMap;
112 
113  Int_t ReadTube(CbmKFTube& tube, FairGeoNode* node);
114  CbmKFMaterial* ReadPassive(FairGeoNode* node);
115  void GetTargetInfo();
116  void loop_over_nodes(TObjArray* nodes);
117 
118  TGeoNode* fTarget {nullptr};
119 
120 private:
121  CbmKF(const CbmKF&);
122  void operator=(const CbmKF&);
123 
124 public:
126 };
127 
128 #endif /* !CBMKF_H */
CbmKF::vRichMaterial
std::vector< CbmKFTube > vRichMaterial
Definition: CbmKF.h:77
CbmKF::MuchStation2MCIDMap
std::map< Int_t, Int_t > MuchStation2MCIDMap
Definition: CbmKF.h:94
CbmKF::vPassiveBox
std::vector< CbmKFBox > vPassiveBox
Definition: CbmKF.h:84
CbmKF::ReadTube
Int_t ReadTube(CbmKFTube &tube, FairGeoNode *node)
Definition: CbmKF.cxx:335
CbmKF::CbmKF
CbmKF(const CbmKF &)
CbmKF::vPipe
std::vector< CbmKFCone > vPipe
Definition: CbmKF.h:80
CbmKF::vPassiveTube
std::vector< CbmKFTube > vPassiveTube
Definition: CbmKF.h:82
CbmKF::GetMagneticField
FairField * GetMagneticField()
Definition: CbmKF.h:88
CbmKF::Propagate
Int_t Propagate(Double_t *T, Double_t *C, Double_t z_out, Double_t QP0)
Definition: CbmKF.cxx:554
CbmKFHit
Definition: CbmKFHit.h:16
CbmKF::MuchMCID2StationMap
std::map< Int_t, Int_t > MuchMCID2StationMap
Definition: CbmKF.h:93
CbmKF::GetMethod
Int_t GetMethod()
Definition: CbmKF.h:96
CbmKF::GetMaterialIndex
Int_t GetMaterialIndex(Int_t uid)
Definition: CbmKF.cxx:328
CbmKF::vTargets
std::vector< CbmKFTube > vTargets
Definition: CbmKF.h:79
CbmKF::MvdStationIDMap
std::map< Int_t, Int_t > MvdStationIDMap
Definition: CbmKF.h:90
CbmKF::fTarget
TGeoNode * fTarget
Definition: CbmKF.h:118
CbmKF::~CbmKF
~CbmKF()
Definition: CbmKF.cxx:82
CbmKF::fMethod
Int_t fMethod
Definition: CbmKF.h:106
CbmKF
Definition: CbmKF.h:33
CbmKF::vMvdMaterial
std::vector< CbmKFTube > vMvdMaterial
Definition: CbmKF.h:73
CbmKF::SetParContainers
void SetParContainers()
Definition: CbmKF.cxx:84
CbmKFMaterial
Definition: CbmKFMaterial.h:17
CbmKF::ClassDef
ClassDef(CbmKF, 1)
CbmKF::vTrdMaterial
std::vector< CbmKFWall > vTrdMaterial
Definition: CbmKF.h:78
CbmKF::Instance
static CbmKF * Instance()
Definition: CbmKF.h:39
CbmKF::fMagneticField
FairField * fMagneticField
Definition: CbmKF.h:103
CbmKF::TrdStationIDMap
std::map< Int_t, Int_t > TrdStationIDMap
Definition: CbmKF.h:92
CbmKF::ReadPassive
CbmKFMaterial * ReadPassive(FairGeoNode *node)
Definition: CbmKF.cxx:440
CbmKF::PassMaterial
Int_t PassMaterial(CbmKFTrackInterface &track, Double_t &QP0, Int_t ifst, Int_t ilst)
Definition: CbmKF.cxx:622
CbmKF::vPassiveWall
std::vector< CbmKFWall > vPassiveWall
Definition: CbmKF.h:83
CbmKFVertexInterface
Definition: CbmKFVertexInterface.h:24
CbmKF::vMaterial
std::vector< CbmKFMaterial * > vMaterial
Definition: CbmKF.h:71
CbmKF::CbmKF
CbmKF(const char *name="KF", Int_t iVerbose=1)
CbmKF::vMuchDetectors
std::vector< CbmKFTube > vMuchDetectors
Definition: CbmKF.h:76
CbmKFTrackInterface
Definition: CbmKFTrackInterface.h:26
CbmKF::GetNMvdStations
int GetNMvdStations() const
Definition: CbmKF.h:98
CbmKF::fMaterialID2IndexMap
std::map< Int_t, Int_t > fMaterialID2IndexMap
Definition: CbmKF.h:111
CbmKF::GetTargetInfo
void GetTargetInfo()
Definition: CbmKF.cxx:264
CbmKFTube
Definition: CbmKFMaterial.h:77
CbmKFMaterial.h
CbmKF::loop_over_nodes
void loop_over_nodes(TObjArray *nodes)
Definition: CbmKF.cxx:315
CbmKF::fInstance
static CbmKF * fInstance
Definition: CbmKF.h:101
CbmKF::Init
InitStatus Init()
Definition: CbmKF.cxx:93
CbmKF::PassMaterialBetween
Int_t PassMaterialBetween(CbmKFTrackInterface &track, Double_t &QP0, Int_t ifst, Int_t ilst)
Definition: CbmKF.cxx:635
CbmKF::operator=
void operator=(const CbmKF &)
CbmKF::StsStationIDMap
std::map< Int_t, Int_t > StsStationIDMap
Definition: CbmKF.h:91
CbmKF::vMuchMaterial
std::vector< CbmKFTube > vMuchMaterial
Definition: CbmKF.h:75
CbmKF::ReInit
InitStatus ReInit()
Definition: CbmKF.cxx:91
CbmKF::vStsMaterial
std::vector< CbmKFTube > vStsMaterial
Definition: CbmKF.h:74