CbmRoot
Loading...
Searching...
No Matches
CbmKF.h
Go to the documentation of this file.
1/* Copyright (C) 2006-2020 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Denis Bertini [committer], Florian Uhlig, Sergey Gorbunov */
4
17#ifndef CBMKF_H
18#define CBMKF_H
19
20#include "CbmKFMaterial.h"
21#include "FairField.h"
22#include "FairTask.h"
23#include "TGeoNode.h"
24
25#include <iostream>
26#include <map>
27#include <vector>
28
31class FairGeoNode;
32class TObjArray;
33
34class CbmKF : public FairTask {
35
36 public:
37 CbmKF(const char* name = "KF", Int_t iVerbose = 1);
38 ~CbmKF();
39
40 static CbmKF* Instance() { return fInstance; }
41
43
44 void SetParContainers();
45 InitStatus ReInit();
46 InitStatus Init();
47
49
50 Int_t GetMaterialIndex(Int_t uid);
51
55 Int_t Propagate(Double_t* T, Double_t* C, Double_t z_out, Double_t QP0);
56
57 Int_t PassMaterial(CbmKFTrackInterface& track, Double_t& QP0, Int_t ifst, Int_t ilst);
58 Int_t PassMaterialBetween(CbmKFTrackInterface& track, Double_t& QP0, Int_t ifst, Int_t ilst);
59 Int_t PassMaterialBetween(CbmKFTrackInterface& track, Double_t& QP0, CbmKFHit* fst, CbmKFHit* lst);
60
62
63 std::vector<CbmKFMaterial*> vMaterial;
64
65 std::vector<CbmKFTube> vMvdMaterial;
66 std::vector<CbmKFTube> vStsMaterial;
67 std::vector<CbmKFTube> vMuchMaterial;
68 std::vector<CbmKFTube> vMuchDetectors;
69 std::vector<CbmKFTube> vRichMaterial;
70 std::vector<CbmKFWall> vTrdMaterial;
71 std::vector<CbmKFTube> vTargets;
72 std::vector<CbmKFCone> vPipe;
73
74 std::vector<CbmKFTube> vPassiveTube;
75 std::vector<CbmKFWall> vPassiveWall;
76 std::vector<CbmKFBox> vPassiveBox;
77
79
80 FairField* GetMagneticField() { return fMagneticField; }
81
82 std::map<Int_t, Int_t> MvdStationIDMap;
83 std::map<Int_t, Int_t> StsStationIDMap;
84 std::map<Int_t, Int_t> TrdStationIDMap;
85 std::map<Int_t, Int_t> MuchMCID2StationMap;
86 std::map<Int_t, Int_t> MuchStation2MCIDMap;
87
88 Int_t GetMethod() { return fMethod; }
89
90 int GetNMvdStations() const { return CbmKF::Instance()->vMvdMaterial.size(); }
91
92 const std::array<float, 3> GetTargetPosition();
93
94 private:
96
97 FairField* fMagneticField;
98
99
100 Int_t fMethod; /* 0 = straight line,
101 1 = AnalyticLight
102 2 = Runge-Kutta 4 order,
103 */
104
105 std::map<Int_t, Int_t> fMaterialID2IndexMap;
106
107 Int_t ReadTube(CbmKFTube& tube, FairGeoNode* node);
108 CbmKFMaterial* ReadPassive(FairGeoNode* node);
109 void GetTargetInfo();
110
111
112 void FindTargetNode(TString& targetPath, TGeoNode*& targetNode);
113
114 std::array<float, 3> fTargetXYZ;
115
116
117 private:
118 CbmKF(const CbmKF&);
119 void operator=(const CbmKF&);
120
121 public:
123};
124
125#endif /* !CBMKF_H */
Definition CbmKF.h:34
std::vector< CbmKFMaterial * > vMaterial
Definition CbmKF.h:63
void operator=(const CbmKF &)
CbmKF(const CbmKF &)
Int_t fMethod
Definition CbmKF.h:100
std::vector< CbmKFWall > vTrdMaterial
Definition CbmKF.h:70
std::vector< CbmKFBox > vPassiveBox
Definition CbmKF.h:76
ClassDef(CbmKF, 1)
std::vector< CbmKFTube > vPassiveTube
Definition CbmKF.h:74
void GetTargetInfo()
Definition CbmKF.cxx:271
std::array< float, 3 > fTargetXYZ
Definition CbmKF.h:114
static CbmKF * Instance()
Definition CbmKF.h:40
CbmKFMaterial * ReadPassive(FairGeoNode *node)
Definition CbmKF.cxx:504
Int_t PassMaterialBetween(CbmKFTrackInterface &track, Double_t &QP0, Int_t ifst, Int_t ilst)
Definition CbmKF.cxx:723
std::map< Int_t, Int_t > TrdStationIDMap
Definition CbmKF.h:84
std::vector< CbmKFWall > vPassiveWall
Definition CbmKF.h:75
std::map< Int_t, Int_t > MuchMCID2StationMap
Definition CbmKF.h:85
void SetParContainers()
Definition CbmKF.cxx:86
std::vector< CbmKFTube > vRichMaterial
Definition CbmKF.h:69
std::vector< CbmKFCone > vPipe
Definition CbmKF.h:72
std::vector< CbmKFTube > vMuchDetectors
Definition CbmKF.h:68
FairField * GetMagneticField()
Definition CbmKF.h:80
std::vector< CbmKFTube > vMvdMaterial
Definition CbmKF.h:65
Int_t GetMaterialIndex(Int_t uid)
Definition CbmKF.cxx:362
std::map< Int_t, Int_t > MuchStation2MCIDMap
Definition CbmKF.h:86
FairField * fMagneticField
Definition CbmKF.h:97
~CbmKF()
Definition CbmKF.cxx:84
std::vector< CbmKFTube > vStsMaterial
Definition CbmKF.h:66
std::map< Int_t, Int_t > StsStationIDMap
Definition CbmKF.h:83
CbmKF(const char *name="KF", Int_t iVerbose=1)
void FindTargetNode(TString &targetPath, TGeoNode *&targetNode)
Definition CbmKF.cxx:337
std::map< Int_t, Int_t > fMaterialID2IndexMap
Definition CbmKF.h:105
int GetNMvdStations() const
Definition CbmKF.h:90
std::map< Int_t, Int_t > MvdStationIDMap
Definition CbmKF.h:82
std::vector< CbmKFTube > vMuchMaterial
Definition CbmKF.h:67
Int_t GetMethod()
Definition CbmKF.h:88
Int_t PassMaterial(CbmKFTrackInterface &track, Double_t &QP0, Int_t ifst, Int_t ilst)
Definition CbmKF.cxx:712
Int_t ReadTube(CbmKFTube &tube, FairGeoNode *node)
Definition CbmKF.cxx:372
const std::array< float, 3 > GetTargetPosition()
Definition CbmKF.cxx:335
InitStatus Init()
Definition CbmKF.cxx:96
std::vector< CbmKFTube > vTargets
Definition CbmKF.h:71
static CbmKF * fInstance
Definition CbmKF.h:95
Int_t Propagate(Double_t *T, Double_t *C, Double_t z_out, Double_t QP0)
Definition CbmKF.cxx:639
InitStatus ReInit()
Definition CbmKF.cxx:94