ATLAS Offline Software
ActsGeantFollowerHelper.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef ActsGeantFollowerHelper_H
6 #define ActsGeantFollowerHelper_H
7 
9 #include "GaudiKernel/ToolHandle.h"
10 #include "TrkParameters/TrackParameters.h" //typedef, can't fwd declare
12 #include "G4ThreeVector.hh" //typedef, can't fwd declare
15 
16 #include "Acts/Surfaces/Surface.hpp"
17 #include "Acts/EventData/TrackParameters.hpp"
18 #include "Acts/Propagator/SurfaceCollector.hpp"
22 // FIXME: header-global macro for an array size constant!
23 #ifndef MAXPROBES
24 #define MAXPROBES 50000
25 #endif
26 
27 class TTree;
28 
29 namespace Trk {
30  class IExtrapolator;
31 } // namespace Trk
32 
33 
34 class ActsGeantFollowerHelper : public extends<AthAlgTool, IActsGeantFollowerHelper> {
35 
36  public:
37  // constructor, destructor
38  ActsGeantFollowerHelper(const std::string&,const std::string&,const IInterface*);
39  virtual ~ActsGeantFollowerHelper() = default;
40 
41  // Athena hooks
42  virtual StatusCode initialize() override;
43  virtual StatusCode finalize () override;
44 
45  // Follower interface
46  // a) begin event - initialize follower process
47  virtual void beginEvent() override;
48  // b) track the particle
49  virtual void trackParticle(const G4ThreeVector& pos, const G4ThreeVector& mom, int pdg, double charge, float t, float X0, bool isSensitive) override;
50  // c) end event - ntuple writing
51  virtual void endEvent() override;
52 
53  private:
54 
55  PublicToolHandle<ActsTrk::ITrackingGeometryTool> m_trackingGeometryTool{this, "TrackingGeometryTool", "ActsTrackingGeometryTool"};
56 
57 
58  ToolHandle<Trk::IExtrapolationEngine> m_extrapolationEngine{this, "ExtrapolationEngine", ""};
59  ToolHandle<IActsExtrapolationTool> m_actsExtrapolator{this, "ActsExtrapolator", ""};
60  Gaudi::Property<bool> m_extrapolateDirectly{this, "ExtrapolateDirectly", true};
61  Gaudi::Property<bool> m_extrapolateIncrementally{this, "ExtrapolateIncrementally", true};
62 
64  std::optional<Acts::BoundTrackParameters> m_actsParameterCache{std::nullopt};
65  std::unique_ptr<std::vector<Acts::SurfaceHit>> m_actsSurfaceCache{};
67  // Hypothesis to pdg converter
69  float m_tX0Cache{0.f};
72  float m_tX0CacheActs{0.f};
73  float m_tX0CacheATLAS{0.f};
74 
75  // put some validation code is
76  std::string m_validationTreeName;
78  std::string m_validationTreeFolder;
79 
80  TTree* m_validationTree{nullptr};
81 
85  struct TreeData {
86  float m_t_x {0};
87  float m_t_y {0};
88  float m_t_z {0};
89  float m_t_theta {0};
90  float m_t_eta {0};
91  float m_t_phi {0};
92  float m_t_p {0};
93  float m_t_charge {0};
94  int m_t_pdg {0};
96  int m_g4_steps {0};
97  float m_g4_pt[MAXPROBES] {0};
98  float m_g4_eta[MAXPROBES] {0};
99  float m_g4_theta[MAXPROBES] {0};
100  float m_g4_phi[MAXPROBES] {0};
101  float m_g4_x[MAXPROBES] {0};
102  float m_g4_y[MAXPROBES] {0};
103  float m_g4_z[MAXPROBES] {0};
104  float m_g4_tX0[MAXPROBES] {0};
105  float m_g4_accX0[MAXPROBES] {0};
106  float m_g4_t[MAXPROBES] {0};
107  float m_g4_X0[MAXPROBES] {0};
110  float m_trk_pt[MAXPROBES] {0};
111  float m_trk_eta[MAXPROBES] {0};
112  float m_trk_theta[MAXPROBES] {0};
113  float m_trk_phi[MAXPROBES] {0};
114  float m_trk_x[MAXPROBES] {0};
115  float m_trk_y[MAXPROBES] {0};
116  float m_trk_z[MAXPROBES] {0};
117  float m_trk_lx[MAXPROBES] {0};
118  float m_trk_ly[MAXPROBES] {0};
119  float m_trk_tX0[MAXPROBES] {0};
120  float m_trk_accX0[MAXPROBES] {0};
121  float m_trk_t[MAXPROBES] {0};
122  float m_trk_X0[MAXPROBES] {0};
126  float m_acts_pt[MAXPROBES] {0};
127  float m_acts_eta[MAXPROBES] {0};
129  float m_acts_phi[MAXPROBES] {0};
130  float m_acts_x[MAXPROBES] {0};
131  float m_acts_y[MAXPROBES] {0};
132  float m_acts_z[MAXPROBES] {0};
133  float m_acts_tX0[MAXPROBES] {0};
135  float m_acts_t[MAXPROBES] {0};
136  float m_acts_X0[MAXPROBES] {0};
137  };
138  std::unique_ptr<TreeData> m_treeData;
139 };
140 
141 #endif
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
ActsGeantFollowerHelper::TreeData::m_g4_accX0
float m_g4_accX0[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:105
ActsGeantFollowerHelper::TreeData::m_trk_eta
float m_trk_eta[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:111
ActsGeantFollowerHelper::TreeData::m_t_y
float m_t_y
Definition: ActsGeantFollowerHelper.h:87
TrackParameters.h
ActsGeantFollowerHelper::TreeData::m_g4_eta
float m_g4_eta[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:98
ActsGeantFollowerHelper::TreeData::m_trk_theta
float m_trk_theta[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:112
ActsGeantFollowerHelper::TreeData
Ntuple variables : initial parameters Split this out into a separate, dynamically-allocated block.
Definition: ActsGeantFollowerHelper.h:85
ActsGeantFollowerHelper::TreeData::m_t_eta
float m_t_eta
Definition: ActsGeantFollowerHelper.h:90
ActsGeantFollowerHelper::TreeData::m_acts_x
float m_acts_x[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:130
ActsGeantFollowerHelper::m_actsSurfaceIterator
std::vector< Acts::SurfaceHit >::iterator m_actsSurfaceIterator
Definition: ActsGeantFollowerHelper.h:66
ActsGeantFollowerHelper::m_extrapolateIncrementally
Gaudi::Property< bool > m_extrapolateIncrementally
Definition: ActsGeantFollowerHelper.h:61
ActsGeantFollowerHelper::m_tX0CacheATLAS
float m_tX0CacheATLAS
Definition: ActsGeantFollowerHelper.h:73
ActsGeantFollowerHelper::m_treeData
std::unique_ptr< TreeData > m_treeData
Definition: ActsGeantFollowerHelper.h:138
ActsGeantFollowerHelper::beginEvent
virtual void beginEvent() override
Definition: ActsGeantFollowerHelper.cxx:133
ActsGeantFollowerHelper::TreeData::m_acts_z
float m_acts_z[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:132
ActsGeantFollowerHelper::initialize
virtual StatusCode initialize() override
Definition: ActsGeantFollowerHelper.cxx:46
ActsGeantFollowerHelper::TreeData::m_trk_x
float m_trk_x[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:114
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ActsGeantFollowerHelper::TreeData::m_acts_theta
float m_acts_theta[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:128
ActsGeantFollowerHelper::TreeData::m_trk_lx
float m_trk_lx[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:117
ActsGeantFollowerHelper::TreeData::m_g4_steps
int m_g4_steps
Ntuple variables : g4 step parameters.
Definition: ActsGeantFollowerHelper.h:96
PdgToParticleHypothesis.h
ActsGeantFollowerHelper::TreeData::m_acts_phi
float m_acts_phi[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:129
ActsGeantFollowerHelper::m_actsExtrapolator
ToolHandle< IActsExtrapolationTool > m_actsExtrapolator
Definition: ActsGeantFollowerHelper.h:59
ActsGeantFollowerHelper::TreeData::m_trk_y
float m_trk_y[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:115
ActsGeantFollowerHelper::m_tX0Cache
float m_tX0Cache
Definition: ActsGeantFollowerHelper.h:69
ActsGeantFollowerHelper::TreeData::m_trk_status
int m_trk_status[MAXPROBES]
Ntuple variables : trk follow up parameters.
Definition: ActsGeantFollowerHelper.h:109
ActsGeantFollowerHelper::m_tX0NonSensitiveCache
float m_tX0NonSensitiveCache
Definition: ActsGeantFollowerHelper.h:70
ActsGeantFollowerHelper::m_parameterCache
Trk::TrackParameters * m_parameterCache
Definition: ActsGeantFollowerHelper.h:63
ActsGeantFollowerHelper::ActsGeantFollowerHelper
ActsGeantFollowerHelper(const std::string &, const std::string &, const IInterface *)
Definition: ActsGeantFollowerHelper.cxx:35
ActsGeantFollowerHelper::finalize
virtual StatusCode finalize() override
Definition: ActsGeantFollowerHelper.cxx:128
pdg_comparison.X0
X0
Definition: pdg_comparison.py:314
IActsGeantFollowerHelper.h
ActsGeantFollowerHelper::TreeData::m_trk_X0
float m_trk_X0[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:122
ActsGeantFollowerHelper::TreeData::m_trk_ly
float m_trk_ly[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:118
ActsGeantFollowerHelper::TreeData::m_acts_t
float m_acts_t[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:135
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
ActsGeantFollowerHelper::endEvent
virtual void endEvent() override
Definition: ActsGeantFollowerHelper.cxx:352
ActsGeantFollowerHelper::TreeData::m_t_phi
float m_t_phi
Definition: ActsGeantFollowerHelper.h:91
ActsGeantFollowerHelper::TreeData::m_g4_phi
float m_g4_phi[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:100
ActsGeantFollowerHelper::m_extrapolationEngine
ToolHandle< Trk::IExtrapolationEngine > m_extrapolationEngine
Definition: ActsGeantFollowerHelper.h:58
ActsGeantFollowerHelper::m_actsSurfaceCache
std::unique_ptr< std::vector< Acts::SurfaceHit > > m_actsSurfaceCache
Definition: ActsGeantFollowerHelper.h:65
ActsGeantFollowerHelper::TreeData::m_g4_x
float m_g4_x[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:101
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ActsGeantFollowerHelper::TreeData::m_g4_z
float m_g4_z[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:103
AthAlgTool.h
ActsGeantFollowerHelper::TreeData::m_trk_pt
float m_trk_pt[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:110
ActsGeantFollowerHelper::m_validationTree
TTree * m_validationTree
Root Validation Tree.
Definition: ActsGeantFollowerHelper.h:80
ActsGeantFollowerHelper::TreeData::m_trk_t
float m_trk_t[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:121
ActsGeantFollowerHelper::m_validationTreeFolder
std::string m_validationTreeFolder
stream/folder to for the TTree to be written out
Definition: ActsGeantFollowerHelper.h:78
ActsGeantFollowerHelper::TreeData::m_acts_status
int m_acts_status[MAXPROBES]
Ntuple variables : acts follow up parameters.
Definition: ActsGeantFollowerHelper.h:124
ActsGeantFollowerHelper::TreeData::m_t_pdg
int m_t_pdg
Definition: ActsGeantFollowerHelper.h:94
Trk::ParametersBase
Definition: ParametersBase.h:55
ActsGeantFollowerHelper::m_validationTreeDescription
std::string m_validationTreeDescription
validation tree description - second argument in TTree
Definition: ActsGeantFollowerHelper.h:77
ParticleHypothesis.h
ActsGeantFollowerHelper::m_tNonSensitiveCache
float m_tNonSensitiveCache
Definition: ActsGeantFollowerHelper.h:71
ActsGeantFollowerHelper::TreeData::m_acts_tX0
float m_acts_tX0[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:133
ActsGeantFollowerHelper::~ActsGeantFollowerHelper
virtual ~ActsGeantFollowerHelper()=default
ActsGeantFollowerHelper::TreeData::m_t_z
float m_t_z
Definition: ActsGeantFollowerHelper.h:88
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
ActsGeantFollowerHelper::TreeData::m_trk_tX0
float m_trk_tX0[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:119
Trk::PdgToParticleHypothesis
Definition: PdgToParticleHypothesis.h:29
ActsGeantFollowerHelper::TreeData::m_trk_phi
float m_trk_phi[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:113
ActsGeantFollowerHelper
Definition: ActsGeantFollowerHelper.h:34
charge
double charge(const T &p)
Definition: AtlasPID.h:991
ActsGeantFollowerHelper::TreeData::m_g4_pt
float m_g4_pt[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:97
ActsGeantFollowerHelper::m_pdgToParticleHypothesis
Trk::PdgToParticleHypothesis m_pdgToParticleHypothesis
Definition: ActsGeantFollowerHelper.h:68
ActsGeantFollowerHelper::m_validationTreeName
std::string m_validationTreeName
validation tree name - to be acessed by this from root
Definition: ActsGeantFollowerHelper.h:76
ActsGeantFollowerHelper::TreeData::m_trk_z
float m_trk_z[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:116
ActsGeantFollowerHelper::m_actsParameterCache
std::optional< Acts::BoundTrackParameters > m_actsParameterCache
Definition: ActsGeantFollowerHelper.h:64
ActsGeantFollowerHelper::TreeData::m_t_theta
float m_t_theta
Definition: ActsGeantFollowerHelper.h:89
ActsGeantFollowerHelper::m_tX0CacheActs
float m_tX0CacheActs
Definition: ActsGeantFollowerHelper.h:72
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:16
ActsGeantFollowerHelper::TreeData::m_g4_t
float m_g4_t[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:106
ActsGeantFollowerHelper::m_trackingGeometryTool
PublicToolHandle< ActsTrk::ITrackingGeometryTool > m_trackingGeometryTool
Definition: ActsGeantFollowerHelper.h:55
MAXPROBES
#define MAXPROBES
Definition: ActsGeantFollowerHelper.h:24
ActsGeantFollowerHelper::m_extrapolateDirectly
Gaudi::Property< bool > m_extrapolateDirectly
Definition: ActsGeantFollowerHelper.h:60
ITrackingGeometryTool.h
ActsGeantFollowerHelper::TreeData::m_g4_tX0
float m_g4_tX0[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:104
ActsGeantFollowerHelper::TreeData::m_acts_pt
float m_acts_pt[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:126
ActsGeantFollowerHelper::TreeData::m_t_charge
float m_t_charge
Definition: ActsGeantFollowerHelper.h:93
ActsGeantFollowerHelper::TreeData::m_g4_theta
float m_g4_theta[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:99
ActsGeantFollowerHelper::TreeData::m_g4_X0
float m_g4_X0[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:107
ActsGeantFollowerHelper::TreeData::m_t_x
float m_t_x
Definition: ActsGeantFollowerHelper.h:86
ActsGeantFollowerHelper::TreeData::m_trk_accX0
float m_trk_accX0[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:120
ActsGeantFollowerHelper::TreeData::m_acts_X0
float m_acts_X0[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:136
ActsGeantFollowerHelper::TreeData::m_g4_y
float m_g4_y[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:102
ActsGeantFollowerHelper::TreeData::m_acts_eta
float m_acts_eta[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:127
ActsGeantFollowerHelper::TreeData::m_acts_accX0
float m_acts_accX0[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:134
ActsGeantFollowerHelper::TreeData::m_acts_y
float m_acts_y[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:131
IExtrapolationEngine.h
ActsGeantFollowerHelper::TreeData::m_t_p
float m_t_p
Definition: ActsGeantFollowerHelper.h:92
ActsGeantFollowerHelper::trackParticle
virtual void trackParticle(const G4ThreeVector &pos, const G4ThreeVector &mom, int pdg, double charge, float t, float X0, bool isSensitive) override
Definition: ActsGeantFollowerHelper.cxx:152
IActsExtrapolationTool.h
ActsGeantFollowerHelper::TreeData::m_acts_volumeID
int m_acts_volumeID[MAXPROBES]
Definition: ActsGeantFollowerHelper.h:125