ATLAS Offline Software
Loading...
Searching...
No Matches
ExtrapolationEngine.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// ExtrapolationEngine.h, (c) ATLAS Detector software
8
9#ifndef TRKEXINTERFACES_EXTRAPOLATIONENGINE_H
10#define TRKEXINTERFACES_EXTRAPOLATIONENGINE_H
11
12// Gaudi
15#include "GaudiKernel/ToolHandle.h"
16#include "GaudiKernel/ServiceHandle.h"
17// Trk
24// throw GaudiExceptions where necessary
25#include "GaudiKernel/GaudiException.h"
26
30
31namespace Trk {
32
33 class IPropagationEngine;
34 class INavigationEngine;
35
49 class ExtrapolationEngine : public AthCheckedComponent<AthAlgTool>, virtual public IExtrapolationEngine {
50
51 friend class NavigationInitTest;
52
53 public:
55 ExtrapolationEngine(const std::string&,const std::string&,const IInterface*);
56
59
61 StatusCode initialize();
62
64 StatusCode finalize();
65
67
70 const Surface* sf = 0,
71 const BoundaryCheck& bcheck = true) const;
72
75 const Surface* sf = 0,
76 const BoundaryCheck& bcheck = true) const;
77
78
81
82 private:
85 const Surface* sf = 0,
87 const BoundaryCheck& bcheck = true) const;
88
91 const Surface* sf = 0,
93
94
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
112 ToolHandleArray<IExtrapolationEngine> m_extrapolationEngines{ this, "ExtrapolationEngines", {} };
113 ToolHandle<IPropagationEngine> m_propagationEngine{this, "PropagationEngine", "Trk::PropagationEngine/AtlasStaticPropagation"};
114 ToolHandle<INavigationEngine> m_navigationEngine{this, "NavigationEngine", "Trk::StaticNavigationEngine/AtlasStaticNavigation"};
115 std::vector<const IExtrapolationEngine*> m_eeAccessor;
116
117
119 BooleanProperty m_forceSearchInit{this, "ForceSearchAtInit", false};
120
121 StringProperty m_sopPrefix_prop{this, "OutputPrefix", ""};
122 StringProperty m_sopPostfix_prop{this, "OutputPostfix", ""};
123
124 };
125
128
129
131 const Trk::TrackingGeometry *tracking_geometry = retrieveTrackingGeometry(Gaudi::Hive::currentContext());
132 if (!tracking_geometry){
133 EX_MSG_FATAL("", "updateGeo", "", "Did not get valid TrackingGeometry. Aborting." );
134 throw GaudiException("ExtrapolationEngine", "Problem with TrackingGeometry loading.", StatusCode::FAILURE);
135 }
136 return *tracking_geometry;
137 }
138
139
140
141} // end of namespace
142
144#include "ExtrapolationEngine.icc"
145
146#endif // TRKEXINTERFACES_IEXTRAPOLATIONENGINE_H
147
#define EX_MSG_FATAL(navstep, step, idx, x)
Define macros for attributes used to control the static checker.
Mixin class to perform additional checks on a component.
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
templated class as an input-output object of the extrapolation, only public members,...
virtual ExtrapolationCode extrapolate(ExCellCharged &ecCharged, const Surface *sf=0, const BoundaryCheck &bcheck=true) const
charged extrapolation - public interface
~ExtrapolationEngine()
Destructor.
ExtrapolationCode extrapolateT(ExtrapolationCell< T > &eCell, const Surface *sf=0, PropDirection dir=alongMomentum, const BoundaryCheck &bcheck=true) const
main loop extrapolation method
ExtrapolationCode initNavigation(ExtrapolationCell< T > &eCell, const Surface *sf=0, PropDirection dir=alongMomentum) const
initialization method
GeometryType geometryType() const
define for which GeometrySignature this extrapolator is valid - this is GLOBAL
ToolHandle< IPropagationEngine > m_propagationEngine
the used propagation engine for navigation initialization
SG::ReadCondHandleKey< TrackingGeometry > m_trackingGeometryReadKey
the tool handle array for static / dense / detached
const TrackingGeometry & trackingGeometry() const
ExtrapolationEngine(const std::string &, const std::string &, const IInterface *)
Constructor.
const TrackingGeometry * retrieveTrackingGeometry(const EventContext &ctx) const
ToolHandle< INavigationEngine > m_navigationEngine
access to tracking geometry (unique?)
StatusCode finalize()
AlgTool finalize method.
StatusCode initialize()
AlgTool initialize method.
ToolHandleArray< IExtrapolationEngine > m_extrapolationEngines
std::vector< const IExtrapolationEngine * > m_eeAccessor
the extrapolation engines for
Extrapolation engine interface for Charged and Neutral parameters, it serves as the Master extrapolat...
virtual ExtrapolationCode extrapolate(ExCellCharged &ecCharged, const Surface *sf=0, const BoundaryCheck &bcheck=true) const =0
charged extrapolation
Extrapolation engine interface for Charged and Neutral parameters, it serves as the Master extrapolat...
A propagation engine wrapping the propagator algtool it respects the path limit to stop particles if ...
Abstract Base Class for tracking surfaces.
Definition Surface.h:79
The TrackingGeometry class is the owner of the constructed TrackingVolumes.
Ensure that the ATLAS eigen extensions are properly loaded.
PropDirection
PropDirection, enum for direction of the propagation.
@ alongMomentum
ExtrapolationCell< TrackParameters > ExCellCharged
ExtrapolationCell< NeutralParameters > ExCellNeutral