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.
const_pointer_type cptr()
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.
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