Loading [MathJax]/jax/output/SVG/config.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
StaticNavigationEngine.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // StaticNavigationEngine.h, (c) ATLAS Detector software
8 
9 #ifndef TRKEXENGINE_STATICNAVIGATIONENGINE_H
10 #define TRKEXENGINE_STATICNAVIGATIONENGINE_H
11 
12 // Gaudi
14 #include "GaudiKernel/ToolHandle.h"
15 // Trk
22 // throw GaudiExceptions where necessary
23 #include "GaudiKernel/GaudiException.h"
24 
27 
29 
30 
31 namespace Trk {
32 
33  class IPropagationEngine;
34  class IMaterialEffectsEngine;
35 
43  class StaticNavigationEngine : public AthAlgTool, virtual public INavigationEngine {
44 
45  public:
47  StaticNavigationEngine(const std::string&,const std::string&,const IInterface*);
48 
51 
54 
57 
61 
64 
67 
69  virtual ExtrapolationCode resolvePosition(Trk::ExCellCharged& eCell, PropDirection dir=alongMomentum, bool noLoop=false) const;
70 
72  virtual ExtrapolationCode resolvePosition(Trk::ExCellNeutral& eCelll, PropDirection dir=alongMomentum, bool noLoop=false) const;
73 
75  virtual const TrackingGeometry& trackingGeometry() const;
76 
77  private:
78 
79  StringProperty m_sopPrefix_prop{this, "OutputPrefix", ""};
80  StringProperty m_sopPostfix_prop{this, "OutputPostfix", ""};
81 
85 
89  bool noLoop=false) const;
90 
93  const BoundarySurface<TrackingVolume>& bSurfaceTV,
95  bool stepout=false) const;
96 
97 
99  const TrackingGeometry* retrieveTrackingGeometry(const EventContext& ctx) const {
101  if (!handle.isValid()) {
102  EX_MSG_FATAL("", "updateGeo", "", "Could not load TrackingGeometry with name '" << m_trackingGeometryReadKey.key() << "'. Aborting." );
104  }
105  return handle.cptr();
106  }
107 
109  {this, "TrackingGeometryReadKey", "", "Key of the TrackingGeometry conditions data."};
110 
113 
114  ToolHandle<IPropagationEngine> m_propagationEngine{this, "PropagationEngine", "Trk::PropagationEngine/AtlasStaticPropagation"};
115  ToolHandle<IMaterialEffectsEngine> m_materialEffectsEngine{this, "MaterialEffectsEngine", "Trk::MaterialEffectsEngine/AtlasStaticNavigationMaterialEffects"};
116 
118 
119  };
120 
122  const Trk::TrackingGeometry *tracking_geometry = retrieveTrackingGeometry(Gaudi::Hive::currentContext());
123  if (!tracking_geometry){
124  EX_MSG_FATAL("", "updateGeo", "", "Did not get valid TrackingGeometry. Aborting." );
125  throw GaudiException("ExtrapolationEngine", "Problem with TrackingGeometry loading.", StatusCode::FAILURE);
126  }
127  return *tracking_geometry;
128  }
129 
130 } // end of namespace
131 
133 #include "StaticNavigationEngine.icc"
134 
135 #endif // TRKEXENGINE_STATICNAVIGATIONENGINE_H
136 
Trk::StaticNavigationEngine::m_propagationEngine
ToolHandle< IPropagationEngine > m_propagationEngine
the used propagation engine
Definition: StaticNavigationEngine.h:114
Trk::BoundarySurface
Definition: BoundarySurface.h:50
TrackParameters.h
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
Trk::StaticNavigationEngine::m_sopPrefix_prop
StringProperty m_sopPrefix_prop
Definition: StaticNavigationEngine.h:79
INavigationEngine.h
Trk::StaticNavigationEngine
Definition: StaticNavigationEngine.h:43
Trk::StaticNavigationEngine::m_sopPostfix_prop
StringProperty m_sopPostfix_prop
Definition: StaticNavigationEngine.h:80
SG::ReadCondHandle::isValid
bool isValid()
Definition: ReadCondHandle.h:210
Trk::StaticNavigationEngine::throwFailedToGetTrackingGeomtry
void throwFailedToGetTrackingGeomtry() const
Definition: StaticNavigationEngine.cxx:62
Trk::StaticNavigationEngine::resolveBoundary
virtual ExtrapolationCode resolveBoundary(Trk::ExCellCharged &eCell, PropDirection dir=alongMomentum) const
resolve the boundary situation - for charged particles
Definition: StaticNavigationEngine.cxx:47
Trk::INavigationEngine::resolveBoundary
virtual ExtrapolationCode resolveBoundary(ExCellCharged &ecCell, PropDirection dir=alongMomentum) const =0
resolve the boundary situation - for charged particles
Trk::alongMomentum
@ alongMomentum
Definition: PropDirection.h:20
NeutralParameters.h
Trk::StaticNavigationEngine::retrieveTrackingGeometry
const TrackingGeometry * retrieveTrackingGeometry(const EventContext &ctx) const
Definition: StaticNavigationEngine.h:99
Trk::StaticNavigationEngine::m_trackingGeometryReadKey
SG::ReadCondHandleKey< TrackingGeometry > m_trackingGeometryReadKey
retrieve TrackingGeometry
Definition: StaticNavigationEngine.h:109
Trk::StaticNavigationEngine::m_trackingGeometryName
std::string m_trackingGeometryName
Name of the TrackingGeometry as given in Detector Store.
Definition: StaticNavigationEngine.h:117
Trk::StaticNavigationEngine::trackingGeometry
virtual const TrackingGeometry & trackingGeometry() const
acces to tracking geometry
Definition: StaticNavigationEngine.h:121
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
EX_MSG_FATAL
#define EX_MSG_FATAL(navstep, step, idx, x)
Definition: ExtrapolationMacros.h:16
Trk::StaticNavigationEngine::handleBoundaryT
ExtrapolationCode handleBoundaryT(ExtrapolationCell< T > &eCell, const BoundarySurface< TrackingVolume > &bSurfaceTV, PropDirection dir=alongMomentum, bool stepout=false) const
deal with the boundary Surface - called by resolveBoundary
Trk::TrackingGeometry
Definition: TrackingGeometry.h:67
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Trk::StaticNavigationEngine::resolvePosition
virtual ExtrapolationCode resolvePosition(Trk::ExCellCharged &eCell, PropDirection dir=alongMomentum, bool noLoop=false) const
resolve the boundary situation - for charged particles
Definition: StaticNavigationEngine.cxx:55
AthAlgTool.h
Trk::ExtrapolationCode
Definition: ExtrapolationCell.h:105
Trk::INavigationEngine
Definition: INavigationEngine.h:37
Trk::StaticNavigationEngine::m_materialEffectsEngine
ToolHandle< IMaterialEffectsEngine > m_materialEffectsEngine
the material effects updated
Definition: StaticNavigationEngine.h:115
beamspotman.dir
string dir
Definition: beamspotman.py:623
ReadCondHandleKey.h
Trk::StaticNavigationEngine::finalize
StatusCode finalize()
AlgTool finalize method.
Definition: StaticNavigationEngine.cxx:40
ExtrapolationMacros.h
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::StaticNavigationEngine::resolvePositionT
ExtrapolationCode resolvePositionT(ExtrapolationCell< T > &eCell, PropDirection dir=alongMomentum, bool noLoop=false) const
resolve position
Trk::StaticNavigationEngine::initialize
StatusCode initialize()
AlgTool initialize method.
Definition: StaticNavigationEngine.cxx:26
StaticNavigationEngine.icc
BoundarySurface.h
SG::ReadCondHandleKey
Definition: ReadCondHandleKey.h:20
Trk::StaticNavigationEngine::~StaticNavigationEngine
~StaticNavigationEngine()
Destructor.
Trk::ExtrapolationCell
Definition: ExtrapolationCell.h:231
Trk::INavigationEngine::resolvePosition
virtual ExtrapolationCode resolvePosition(ExCellCharged &ecCell, PropDirection dir=alongMomentum, bool noLoop=false) const =0
resolve the position - for charged particles
ExtrapolationCell.h
Trk::StaticNavigationEngine::StaticNavigationEngine
StaticNavigationEngine(const std::string &, const std::string &, const IInterface *)
Constructor.
Definition: StaticNavigationEngine.cxx:15
TrackingGeometry.h
AthAlgTool
Definition: AthAlgTool.h:26
checker_macros.h
Define macros for attributes used to control the static checker.
Trk::StaticNavigationEngine::updateTrackingGeometry
StatusCode updateTrackingGeometry() const
Trk::StaticNavigationEngine::resolveBoundaryT
ExtrapolationCode resolveBoundaryT(ExtrapolationCell< T > &eCell, PropDirection dir=alongMomentum) const
resolve the boundary situation
SG::ReadCondHandle::cptr
const_pointer_type cptr()
Definition: ReadCondHandle.h:71