ATLAS Offline Software
GeantFollowerMSHelper.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // GeantFollowerMSHelper.h, (c) ATLAS Detector software
8 #ifndef GeantFollowerMSHelper_H
9 #define GeantFollowerMSHelper_H
10 
13 #include "GaudiKernel/ToolHandle.h"
14 #include "GaudiKernel/ServiceHandle.h"
18 #include "G4ThreeVector.hh" //is a typedef to CLHEP::Hep3Vector
19 
20 class TTree;
21 
22 namespace Trk
23 {
24 
25  class IExtrapolator;
26 
27  class Track;
28  class MeasurementBase;
29  class MaterialEffectsOnTrack;
30  class TrackStateOnSurface;
31 
32  class GeantFollowerMSHelper : public extends<AthAlgTool, IGeantFollowerMSHelper>
33  {
34 
35  public:
36 
37  static constexpr int MAXPROBES{50000};
38 
39  // constructor, destructor
40  GeantFollowerMSHelper(const std::string&,const std::string&,const IInterface*);
42 
43  // Athena hooks
44  virtual StatusCode initialize() override;
45  virtual StatusCode finalize () override;
46 
47  // Follower interface
48  // a) begin event - initialize follower process
49  virtual void beginEvent() override;
50  // b) track the particle
51  virtual void trackParticle(const G4ThreeVector& pos, const G4ThreeVector& mom, int pdg, double charge, float t, float X0) override;
52 
54  std::vector<const Trk::TrackStateOnSurface*>
55  modifyTSOSvector(const std::vector<const Trk::TrackStateOnSurface*>& matvec,
56  double scaleX0, double scaleEloss, bool reposition,
57  bool aggregate, bool updateEloss, double caloEnergy,
58  double caloEnergyError, double pCaloEntry,
59  double momentumError, double & Eloss_tot) const;
60 
61  // c) end event - ntuple writing
62  virtual void endEvent() override;
63 
64  private:
65 
66  ToolHandle<IExtrapolator> m_extrapolator;
67  PublicToolHandle<IEnergyLossUpdator> m_elossupdator
68  {this,"EnergyLossUpdator","Trk::EnergyLossUpdator/AtlasEnergyLossUpdator",""};
69 
72  bool m_speedup;
74  bool m_useIDExit; // used for validating the ID and Calo tracking
75 
80  float m_tX0Cache;
81 
85 
86  // put some validation code is
87  std::string m_validationTreeName;
89  std::string m_validationTreeFolder;
90 
92 
96  struct TreeData {
97  float m_t_x {0};
98  float m_t_y {0};
99  float m_t_z {0};
100  float m_t_theta {0};
101  float m_t_eta {0};
102  float m_t_phi {0};
103  float m_t_p {0};
104  float m_t_charge {0};
105  int m_t_pdg {0};
106  float m_m_x {0};
107  float m_m_y {0};
108  float m_m_z {0};
109  float m_m_theta {0};
110  float m_m_eta {0};
111  float m_m_phi {0};
112  float m_m_p {0};
113  float m_b_x {0};
114  float m_b_y {0};
115  float m_b_z {0};
116  float m_b_theta {0};
117  float m_b_eta {0};
118  float m_b_phi {0};
119  float m_b_p {0};
120  float m_b_X0 {0};
121  float m_b_Eloss {0};
123  int m_g4_steps {0};
124  float m_g4_p[MAXPROBES] {0};
125  float m_g4_eta[MAXPROBES] {0};
126  float m_g4_theta[MAXPROBES] {0};
127  float m_g4_phi[MAXPROBES] {0};
128  float m_g4_x[MAXPROBES] {0};
129  float m_g4_y[MAXPROBES] {0};
130  float m_g4_z[MAXPROBES] {0};
131  float m_g4_tX0[MAXPROBES] {0};
132  float m_g4_t[MAXPROBES] {0};
133  float m_g4_X0[MAXPROBES] {0};
136  float m_trk_p[MAXPROBES] {0};
137  float m_trk_eta[MAXPROBES] {0};
138  float m_trk_theta[MAXPROBES] {0};
139  float m_trk_phi[MAXPROBES] {0};
140  float m_trk_x[MAXPROBES] {0};
141  float m_trk_y[MAXPROBES] {0};
142  float m_trk_z[MAXPROBES] {0};
143  float m_trk_lx[MAXPROBES] {0};
144  float m_trk_ly[MAXPROBES] {0};
145  float m_trk_eloss[MAXPROBES] {0};
152  float m_trk_x0[MAXPROBES] {0};
153  float m_trk_erd0[MAXPROBES] {0};
154  float m_trk_erz0[MAXPROBES] {0};
155  float m_trk_erphi[MAXPROBES] {0};
159  int m_trk_scats {0};
160  int m_trk_sstatus[500] {0};
161  float m_trk_sx[500] {0};
162  float m_trk_sy[500] {0};
163  float m_trk_sz[500] {0};
164  float m_trk_sx0[500] {0};
165  float m_trk_seloss[500] {0};
166  float m_trk_smeanIoni[500] {0};
167  float m_trk_ssigIoni[500] {0};
168  float m_trk_smeanRad[500] {0};
169  float m_trk_ssigRad[500] {0};
170  float m_trk_ssigTheta[500] {0};
171  float m_trk_ssigPhi[500] {0};
173  };
174  std::unique_ptr<TreeData> m_treeData;
175  };
176 
177 }
178 
179 #endif
Trk::GeantFollowerMSHelper::m_useIDExit
bool m_useIDExit
Definition: GeantFollowerMSHelper.h:74
IGeantFollowerMSHelper.h
Trk::GeantFollowerMSHelper::TreeData::m_trk_erd0
float m_trk_erd0[MAXPROBES]
Definition: GeantFollowerMSHelper.h:153
Trk::GeantFollowerMSHelper::TreeData::m_trk_eloss1
float m_trk_eloss1[MAXPROBES]
Definition: GeantFollowerMSHelper.h:146
Trk::GeantFollowerMSHelper::TreeData::m_trk_theta
float m_trk_theta[MAXPROBES]
Definition: GeantFollowerMSHelper.h:138
Trk::GeantFollowerMSHelper::m_elossupdator
PublicToolHandle< IEnergyLossUpdator > m_elossupdator
Definition: GeantFollowerMSHelper.h:68
Trk::GeantFollowerMSHelper::TreeData::m_t_p
float m_t_p
Definition: GeantFollowerMSHelper.h:103
Trk::GeantFollowerMSHelper::TreeData::m_trk_erqoverp
float m_trk_erqoverp[MAXPROBES]
Definition: GeantFollowerMSHelper.h:157
Trk::GeantFollowerMSHelper::TreeData::m_trk_ertheta
float m_trk_ertheta[MAXPROBES]
Definition: GeantFollowerMSHelper.h:156
Trk::GeantFollowerMSHelper::TreeData::m_trk_sx0
float m_trk_sx0[500]
Definition: GeantFollowerMSHelper.h:164
Trk::GeantFollowerMSHelper::TreeData::m_trk_scaleeloss
float m_trk_scaleeloss[MAXPROBES]
Definition: GeantFollowerMSHelper.h:150
Trk::GeantFollowerMSHelper::m_validationTree
TTree * m_validationTree
Root Validation Tree.
Definition: GeantFollowerMSHelper.h:91
TrackParameters.h
Trk::GeantFollowerMSHelper::endEvent
virtual void endEvent() override
Definition: GeantFollowerMSHelper.cxx:1547
Trk::GeantFollowerMSHelper::m_extrapolateIncrementally
bool m_extrapolateIncrementally
Definition: GeantFollowerMSHelper.h:71
Trk::GeantFollowerMSHelper::TreeData::m_b_z
float m_b_z
Definition: GeantFollowerMSHelper.h:115
Trk::GeantFollowerMSHelper::TreeData::m_t_eta
float m_t_eta
Definition: GeantFollowerMSHelper.h:101
Trk::GeantFollowerMSHelper::TreeData::m_trk_sx
float m_trk_sx[500]
Definition: GeantFollowerMSHelper.h:161
IEnergyLossUpdator.h
Trk::GeantFollowerMSHelper::TreeData::m_m_y
float m_m_y
Definition: GeantFollowerMSHelper.h:107
Trk::GeantFollowerMSHelper::TreeData::m_trk_erz0
float m_trk_erz0[MAXPROBES]
Definition: GeantFollowerMSHelper.h:154
Trk::GeantFollowerMSHelper::TreeData::m_trk_sy
float m_trk_sy[500]
Definition: GeantFollowerMSHelper.h:162
Trk::GeantFollowerMSHelper::TreeData::m_trk_sz
float m_trk_sz[500]
Definition: GeantFollowerMSHelper.h:163
Trk::GeantFollowerMSHelper::TreeData::m_trk_x0
float m_trk_x0[MAXPROBES]
Definition: GeantFollowerMSHelper.h:152
Trk::GeantFollowerMSHelper::TreeData::m_g4_p
float m_g4_p[MAXPROBES]
Definition: GeantFollowerMSHelper.h:124
Trk::GeantFollowerMSHelper::TreeData::m_m_theta
float m_m_theta
Definition: GeantFollowerMSHelper.h:109
Trk::GeantFollowerMSHelper::TreeData::m_trk_lx
float m_trk_lx[MAXPROBES]
Definition: GeantFollowerMSHelper.h:143
Trk::GeantFollowerMSHelper::TreeData::m_g4_z
float m_g4_z[MAXPROBES]
Definition: GeantFollowerMSHelper.h:130
Trk::GeantFollowerMSHelper::TreeData::m_trk_ssigTheta
float m_trk_ssigTheta[500]
Definition: GeantFollowerMSHelper.h:170
Trk::GeantFollowerMSHelper::TreeData::m_b_y
float m_b_y
Definition: GeantFollowerMSHelper.h:114
Trk::GeantFollowerMSHelper::TreeData::m_t_y
float m_t_y
Definition: GeantFollowerMSHelper.h:98
Trk::GeantFollowerMSHelper::TreeData::m_t_z
float m_t_z
Definition: GeantFollowerMSHelper.h:99
Trk::GeantFollowerMSHelper::TreeData::m_m_phi
float m_m_phi
Definition: GeantFollowerMSHelper.h:111
Trk::GeantFollowerMSHelper::TreeData::m_g4_eta
float m_g4_eta[MAXPROBES]
Definition: GeantFollowerMSHelper.h:125
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
Trk::GeantFollowerMSHelper::GeantFollowerMSHelper
GeantFollowerMSHelper(const std::string &, const std::string &, const IInterface *)
Definition: GeantFollowerMSHelper.cxx:27
Trk::GeantFollowerMSHelper::m_validationTreeName
std::string m_validationTreeName
validation tree name - to be acessed by this from root
Definition: GeantFollowerMSHelper.h:87
Trk::GeantFollowerMSHelper::TreeData::m_g4_t
float m_g4_t[MAXPROBES]
Definition: GeantFollowerMSHelper.h:132
Trk::GeantFollowerMSHelper::TreeData::m_m_p
float m_m_p
Definition: GeantFollowerMSHelper.h:112
Trk::GeantFollowerMSHelper::TreeData
Ntuple variables : initial parameters Split this out into a separate, dynamically-allocated block.
Definition: GeantFollowerMSHelper.h:96
MaterialEffectsOnTrack.h
Trk::GeantFollowerMSHelper::~GeantFollowerMSHelper
virtual ~GeantFollowerMSHelper()
pdg_comparison.X0
X0
Definition: pdg_comparison.py:314
Trk::GeantFollowerMSHelper::TreeData::m_trk_eloss0
float m_trk_eloss0[MAXPROBES]
Definition: GeantFollowerMSHelper.h:147
Trk::GeantFollowerMSHelper::m_tX0Cache
float m_tX0Cache
Definition: GeantFollowerMSHelper.h:80
Trk::GeantFollowerMSHelper::m_parameterCache
const TrackParameters * m_parameterCache
Definition: GeantFollowerMSHelper.h:76
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
Trk::GeantFollowerMSHelper::TreeData::m_trk_z
float m_trk_z[MAXPROBES]
Definition: GeantFollowerMSHelper.h:142
Trk::GeantFollowerMSHelper::TreeData::m_m_z
float m_m_z
Definition: GeantFollowerMSHelper.h:108
Trk::GeantFollowerMSHelper::modifyTSOSvector
std::vector< const Trk::TrackStateOnSurface * > modifyTSOSvector(const std::vector< const Trk::TrackStateOnSurface * > &matvec, double scaleX0, double scaleEloss, bool reposition, bool aggregate, bool updateEloss, double caloEnergy, double caloEnergyError, double pCaloEntry, double momentumError, double &Eloss_tot) const
modify TSOS vector
Definition: GeantFollowerMSHelper.cxx:1052
Trk::GeantFollowerMSHelper::m_parameterCacheEntry
const TrackParameters * m_parameterCacheEntry
Definition: GeantFollowerMSHelper.h:78
Trk::GeantFollowerMSHelper::MAXPROBES
static constexpr int MAXPROBES
Definition: GeantFollowerMSHelper.h:37
Trk::GeantFollowerMSHelper::TreeData::m_trk_y
float m_trk_y[MAXPROBES]
Definition: GeantFollowerMSHelper.h:141
Trk::GeantFollowerMSHelper::TreeData::m_g4_phi
float m_g4_phi[MAXPROBES]
Definition: GeantFollowerMSHelper.h:127
Trk::GeantFollowerMSHelper::TreeData::m_g4_stepsEntry
int m_g4_stepsEntry
Definition: GeantFollowerMSHelper.h:172
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Trk::GeantFollowerMSHelper::TreeData::m_b_x
float m_b_x
Definition: GeantFollowerMSHelper.h:113
Trk::GeantFollowerMSHelper
Definition: GeantFollowerMSHelper.h:33
AthAlgTool.h
Trk::GeantFollowerMSHelper::TreeData::m_trk_eloss10
float m_trk_eloss10[MAXPROBES]
Definition: GeantFollowerMSHelper.h:149
Trk::GeantFollowerMSHelper::TreeData::m_trk_smeanIoni
float m_trk_smeanIoni[500]
Definition: GeantFollowerMSHelper.h:166
Trk::GeantFollowerMSHelper::m_extrapolateDirectly
bool m_extrapolateDirectly
Definition: GeantFollowerMSHelper.h:70
Trk::GeantFollowerMSHelper::TreeData::m_trk_p
float m_trk_p[MAXPROBES]
Definition: GeantFollowerMSHelper.h:136
Trk::GeantFollowerMSHelper::TreeData::m_b_X0
float m_b_X0
Definition: GeantFollowerMSHelper.h:120
Trk::GeantFollowerMSHelper::initialize
virtual StatusCode initialize() override
Definition: GeantFollowerMSHelper.cxx:66
Trk::ParametersBase
Definition: ParametersBase.h:55
Trk::GeantFollowerMSHelper::TreeData::m_g4_tX0
float m_g4_tX0[MAXPROBES]
Definition: GeantFollowerMSHelper.h:131
Trk::GeantFollowerMSHelper::m_treeData
std::unique_ptr< TreeData > m_treeData
Definition: GeantFollowerMSHelper.h:174
Trk::GeantFollowerMSHelper::TreeData::m_trk_ssigIoni
float m_trk_ssigIoni[500]
Definition: GeantFollowerMSHelper.h:167
Trk::GeantFollowerMSHelper::TreeData::m_t_x
float m_t_x
Definition: GeantFollowerMSHelper.h:97
Trk::GeantFollowerMSHelper::TreeData::m_b_theta
float m_b_theta
Definition: GeantFollowerMSHelper.h:116
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::GeantFollowerMSHelper::m_exitLayer
bool m_exitLayer
Definition: GeantFollowerMSHelper.h:83
Trk::GeantFollowerMSHelper::m_parameterCacheEntryCov
const TrackParameters * m_parameterCacheEntryCov
Definition: GeantFollowerMSHelper.h:79
Trk::GeantFollowerMSHelper::TreeData::m_trk_scalex0
float m_trk_scalex0[MAXPROBES]
Definition: GeantFollowerMSHelper.h:151
Trk::GeantFollowerMSHelper::m_validationTreeDescription
std::string m_validationTreeDescription
validation tree description - second argument in TTree
Definition: GeantFollowerMSHelper.h:88
Trk::GeantFollowerMSHelper::TreeData::m_trk_erphi
float m_trk_erphi[MAXPROBES]
Definition: GeantFollowerMSHelper.h:155
charge
double charge(const T &p)
Definition: AtlasPID.h:494
Trk::GeantFollowerMSHelper::m_parameterCacheCov
const TrackParameters * m_parameterCacheCov
Definition: GeantFollowerMSHelper.h:77
Trk::GeantFollowerMSHelper::TreeData::m_t_phi
float m_t_phi
Definition: GeantFollowerMSHelper.h:102
Trk::GeantFollowerMSHelper::TreeData::m_trk_ssigRad
float m_trk_ssigRad[500]
Definition: GeantFollowerMSHelper.h:169
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Trk::GeantFollowerMSHelper::TreeData::m_t_charge
float m_t_charge
Definition: GeantFollowerMSHelper.h:104
Trk::GeantFollowerMSHelper::trackParticle
virtual void trackParticle(const G4ThreeVector &pos, const G4ThreeVector &mom, int pdg, double charge, float t, float X0) override
Definition: GeantFollowerMSHelper.cxx:284
Trk::GeantFollowerMSHelper::m_extrapolator
ToolHandle< IExtrapolator > m_extrapolator
Definition: GeantFollowerMSHelper.h:66
Trk::GeantFollowerMSHelper::TreeData::m_trk_smeanRad
float m_trk_smeanRad[500]
Definition: GeantFollowerMSHelper.h:168
Trk::GeantFollowerMSHelper::TreeData::m_g4_X0
float m_g4_X0[MAXPROBES]
Definition: GeantFollowerMSHelper.h:133
Trk::GeantFollowerMSHelper::TreeData::m_g4_steps
int m_g4_steps
Ntuple variables : g4 step parameters.
Definition: GeantFollowerMSHelper.h:123
Trk::GeantFollowerMSHelper::TreeData::m_b_eta
float m_b_eta
Definition: GeantFollowerMSHelper.h:117
Trk::GeantFollowerMSHelper::TreeData::m_g4_theta
float m_g4_theta[MAXPROBES]
Definition: GeantFollowerMSHelper.h:126
Trk::GeantFollowerMSHelper::TreeData::m_trk_sstatus
int m_trk_sstatus[500]
Definition: GeantFollowerMSHelper.h:160
Trk::PlaneSurface
Definition: PlaneSurface.h:64
Trk::GeantFollowerMSHelper::TreeData::m_trk_ssigPhi
float m_trk_ssigPhi[500]
Definition: GeantFollowerMSHelper.h:171
Trk::GeantFollowerMSHelper::TreeData::m_t_theta
float m_t_theta
Definition: GeantFollowerMSHelper.h:100
Trk::GeantFollowerMSHelper::m_useCovMatrix
bool m_useCovMatrix
Definition: GeantFollowerMSHelper.h:73
Trk::GeantFollowerMSHelper::TreeData::m_g4_y
float m_g4_y[MAXPROBES]
Definition: GeantFollowerMSHelper.h:129
Trk::GeantFollowerMSHelper::TreeData::m_trk_status
int m_trk_status[MAXPROBES]
Ntuple variables : trk follow up parameters.
Definition: GeantFollowerMSHelper.h:135
Trk::GeantFollowerMSHelper::TreeData::m_g4_x
float m_g4_x[MAXPROBES]
Definition: GeantFollowerMSHelper.h:128
Trk::GeantFollowerMSHelper::TreeData::m_b_p
float m_b_p
Definition: GeantFollowerMSHelper.h:119
Trk::GeantFollowerMSHelper::TreeData::m_trk_x
float m_trk_x[MAXPROBES]
Definition: GeantFollowerMSHelper.h:140
Trk::GeantFollowerMSHelper::TreeData::m_m_eta
float m_m_eta
Definition: GeantFollowerMSHelper.h:110
Trk::GeantFollowerMSHelper::TreeData::m_b_phi
float m_b_phi
Definition: GeantFollowerMSHelper.h:118
Trk::GeantFollowerMSHelper::TreeData::m_trk_scats
int m_trk_scats
Scattering centra from Trk.
Definition: GeantFollowerMSHelper.h:159
Trk::GeantFollowerMSHelper::TreeData::m_trk_phi
float m_trk_phi[MAXPROBES]
Definition: GeantFollowerMSHelper.h:139
Trk::GeantFollowerMSHelper::TreeData::m_t_pdg
int m_t_pdg
Definition: GeantFollowerMSHelper.h:105
Trk::GeantFollowerMSHelper::m_crossedEntry
bool m_crossedEntry
Definition: GeantFollowerMSHelper.h:82
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
Trk::GeantFollowerMSHelper::TreeData::m_m_x
float m_m_x
Definition: GeantFollowerMSHelper.h:106
Trk::GeantFollowerMSHelper::TreeData::m_trk_ly
float m_trk_ly[MAXPROBES]
Definition: GeantFollowerMSHelper.h:144
Trk::GeantFollowerMSHelper::TreeData::m_trk_eloss5
float m_trk_eloss5[MAXPROBES]
Definition: GeantFollowerMSHelper.h:148
Trk::GeantFollowerMSHelper::m_speedup
bool m_speedup
Definition: GeantFollowerMSHelper.h:72
Trk::GeantFollowerMSHelper::TreeData::m_trk_seloss
float m_trk_seloss[500]
Definition: GeantFollowerMSHelper.h:165
Trk::GeantFollowerMSHelper::m_destinationSurface
PlaneSurface m_destinationSurface
Definition: GeantFollowerMSHelper.h:84
Trk::GeantFollowerMSHelper::beginEvent
virtual void beginEvent() override
Definition: GeantFollowerMSHelper.cxx:246
Trk::GeantFollowerMSHelper::TreeData::m_trk_eta
float m_trk_eta[MAXPROBES]
Definition: GeantFollowerMSHelper.h:137
Trk::GeantFollowerMSHelper::TreeData::m_trk_eloss
float m_trk_eloss[MAXPROBES]
Definition: GeantFollowerMSHelper.h:145
Trk::GeantFollowerMSHelper::TreeData::m_b_Eloss
float m_b_Eloss
Definition: GeantFollowerMSHelper.h:121
Trk::GeantFollowerMSHelper::finalize
virtual StatusCode finalize() override
Definition: GeantFollowerMSHelper.cxx:242
Trk::GeantFollowerMSHelper::m_validationTreeFolder
std::string m_validationTreeFolder
stream/folder to for the TTree to be written out
Definition: GeantFollowerMSHelper.h:89