ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkExtrapolation
TrkExEngine
TrkExEngine
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
13
#include "
AthenaBaseComps/AthAlgTool.h
"
14
#include "
AthenaBaseComps/AthCheckedComponent.h
"
15
#include "GaudiKernel/ToolHandle.h"
16
#include "GaudiKernel/ServiceHandle.h"
17
// Trk
18
#include "
TrkDetDescrInterfaces/ITrackingGeometrySvc.h
"
19
#include "
TrkExInterfaces/IExtrapolationEngine.h
"
20
#include "
TrkExInterfaces/ExtrapolationMacros.h
"
21
#include "
TrkExUtils/ExtrapolationCell.h
"
22
#include "
TrkParameters/TrackParameters.h
"
23
#include "
TrkNeutralParameters/NeutralParameters.h
"
24
// throw GaudiExceptions where necessary
25
#include "GaudiKernel/GaudiException.h"
26
27
#include "
StoreGate/ReadCondHandleKey.h
"
28
#include "
TrkGeometry/TrackingGeometry.h
"
29
#include "
CxxUtils/checker_macros.h
"
30
31
namespace
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
58
~ExtrapolationEngine
();
59
61
StatusCode
initialize
();
62
64
StatusCode
finalize
();
65
66
using
IExtrapolationEngine::extrapolate
;
67
69
virtual
ExtrapolationCode
extrapolate
(
ExCellCharged
& ecCharged,
70
const
Surface
* sf = 0,
71
const
BoundaryCheck
& bcheck =
true
)
const
;
72
74
virtual
ExtrapolationCode
extrapolate
(
ExCellNeutral
& ecNeutral,
75
const
Surface
* sf = 0,
76
const
BoundaryCheck
& bcheck =
true
)
const
;
77
78
80
GeometryType
geometryType
()
const
;
81
82
private
:
84
template
<
class
T>
ExtrapolationCode
extrapolateT
(
ExtrapolationCell<T>
& eCell,
85
const
Surface
* sf = 0,
86
PropDirection
dir=
alongMomentum
,
87
const
BoundaryCheck
& bcheck =
true
)
const
;
88
90
template
<
class
T>
ExtrapolationCode
initNavigation
(
ExtrapolationCell<T>
& eCell,
91
const
Surface
* sf = 0,
92
PropDirection
dir=
alongMomentum
)
const
;
93
94
96
const
TrackingGeometry
&
trackingGeometry
()
const
;
97
98
void
throwFailedToGetTrackingGeomtry
()
const
;
99
const
TrackingGeometry
*
retrieveTrackingGeometry
(
const
EventContext& ctx)
const
{
100
SG::ReadCondHandle<TrackingGeometry>
handle(
m_trackingGeometryReadKey
,ctx);
101
if
(!handle.isValid()) {
102
EX_MSG_FATAL
(
""
,
"updateGeo"
,
""
,
"Could not load TrackingGeometry with name '"
<<
m_trackingGeometryReadKey
.key() <<
"'. Aborting."
);
103
throwFailedToGetTrackingGeomtry
();
104
}
105
return
handle.cptr();
106
}
107
108
SG::ReadCondHandleKey<TrackingGeometry>
m_trackingGeometryReadKey
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
126
inline
GeometryType
ExtrapolationEngine::geometryType
()
const
127
{
return
Trk::Master
; }
128
129
130
inline
const
Trk::TrackingGeometry
&
ExtrapolationEngine::trackingGeometry
()
const
{
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
AthAlgTool.h
AthCheckedComponent.h
ExtrapolationCell.h
ExtrapolationEngine.icc
ExtrapolationMacros.h
EX_MSG_FATAL
#define EX_MSG_FATAL(navstep, step, idx, x)
Definition
ExtrapolationMacros.h:16
IExtrapolationEngine.h
NeutralParameters.h
ReadCondHandleKey.h
TrackingGeometry.h
TrackParameters.h
ITrackingGeometrySvc.h
checker_macros.h
Define macros for attributes used to control the static checker.
AthCheckedComponent
Mixin class to perform additional checks on a component.
Definition
AthCheckedComponent.h:25
SG::ReadCondHandleKey
Definition
ReadCondHandleKey.h:21
SG::ReadCondHandle
Definition
ReadCondHandle.h:40
Trk::BoundaryCheck
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
Definition
BoundaryCheck.h:51
Trk::ExtrapolationCell
templated class as an input-output object of the extrapolation, only public members,...
Definition
ExtrapolationCell.h:231
Trk::ExtrapolationCode
Definition
ExtrapolationCell.h:105
Trk::ExtrapolationEngine::extrapolate
virtual ExtrapolationCode extrapolate(ExCellCharged &ecCharged, const Surface *sf=0, const BoundaryCheck &bcheck=true) const
charged extrapolation - public interface
Definition
ExtrapolationEngine.cxx:74
Trk::ExtrapolationEngine::~ExtrapolationEngine
~ExtrapolationEngine()
Destructor.
Trk::ExtrapolationEngine::m_forceSearchInit
BooleanProperty m_forceSearchInit
Definition
ExtrapolationEngine.h:119
Trk::ExtrapolationEngine::m_sopPostfix_prop
StringProperty m_sopPostfix_prop
Definition
ExtrapolationEngine.h:122
Trk::ExtrapolationEngine::extrapolateT
ExtrapolationCode extrapolateT(ExtrapolationCell< T > &eCell, const Surface *sf=0, PropDirection dir=alongMomentum, const BoundaryCheck &bcheck=true) const
main loop extrapolation method
Trk::ExtrapolationEngine::NavigationInitTest
friend class NavigationInitTest
Definition
ExtrapolationEngine.h:51
Trk::ExtrapolationEngine::initNavigation
ExtrapolationCode initNavigation(ExtrapolationCell< T > &eCell, const Surface *sf=0, PropDirection dir=alongMomentum) const
initialization method
Trk::ExtrapolationEngine::geometryType
GeometryType geometryType() const
define for which GeometrySignature this extrapolator is valid - this is GLOBAL
Definition
ExtrapolationEngine.h:126
Trk::ExtrapolationEngine::m_propagationEngine
ToolHandle< IPropagationEngine > m_propagationEngine
the used propagation engine for navigation initialization
Definition
ExtrapolationEngine.h:113
Trk::ExtrapolationEngine::m_trackingGeometryReadKey
SG::ReadCondHandleKey< TrackingGeometry > m_trackingGeometryReadKey
the tool handle array for static / dense / detached
Definition
ExtrapolationEngine.h:109
Trk::ExtrapolationEngine::trackingGeometry
const TrackingGeometry & trackingGeometry() const
Definition
ExtrapolationEngine.h:130
Trk::ExtrapolationEngine::ExtrapolationEngine
ExtrapolationEngine(const std::string &, const std::string &, const IInterface *)
Constructor.
Definition
ExtrapolationEngine.cxx:16
Trk::ExtrapolationEngine::retrieveTrackingGeometry
const TrackingGeometry * retrieveTrackingGeometry(const EventContext &ctx) const
Definition
ExtrapolationEngine.h:99
Trk::ExtrapolationEngine::m_navigationEngine
ToolHandle< INavigationEngine > m_navigationEngine
access to tracking geometry (unique?)
Definition
ExtrapolationEngine.h:114
Trk::ExtrapolationEngine::m_sopPrefix_prop
StringProperty m_sopPrefix_prop
Definition
ExtrapolationEngine.h:121
Trk::ExtrapolationEngine::finalize
StatusCode finalize()
AlgTool finalize method.
Definition
ExtrapolationEngine.cxx:66
Trk::ExtrapolationEngine::initialize
StatusCode initialize()
AlgTool initialize method.
Definition
ExtrapolationEngine.cxx:28
Trk::ExtrapolationEngine::m_extrapolationEngines
ToolHandleArray< IExtrapolationEngine > m_extrapolationEngines
Definition
ExtrapolationEngine.h:112
Trk::ExtrapolationEngine::throwFailedToGetTrackingGeomtry
void throwFailedToGetTrackingGeomtry() const
Definition
ExtrapolationEngine.cxx:86
Trk::ExtrapolationEngine::m_eeAccessor
std::vector< const IExtrapolationEngine * > m_eeAccessor
the extrapolation engines for
Definition
ExtrapolationEngine.h:115
Trk::IExtrapolationEngine
Extrapolation engine interface for Charged and Neutral parameters, it serves as the Master extrapolat...
Definition
IExtrapolationEngine.h:36
Trk::IExtrapolationEngine::extrapolate
virtual ExtrapolationCode extrapolate(ExCellCharged &ecCharged, const Surface *sf=0, const BoundaryCheck &bcheck=true) const =0
charged extrapolation
Trk::INavigationEngine
Extrapolation engine interface for Charged and Neutral parameters, it serves as the Master extrapolat...
Definition
INavigationEngine.h:37
Trk::IPropagationEngine
A propagation engine wrapping the propagator algtool it respects the path limit to stop particles if ...
Definition
IPropagationEngine.h:40
Trk::Surface
Abstract Base Class for tracking surfaces.
Definition
Surface.h:79
Trk::TrackingGeometry
The TrackingGeometry class is the owner of the constructed TrackingVolumes.
Definition
TrackingGeometry.h:68
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition
FakeTrackBuilder.h:9
Trk::PropDirection
PropDirection
PropDirection, enum for direction of the propagation.
Definition
PropDirection.h:19
Trk::alongMomentum
@ alongMomentum
Definition
PropDirection.h:20
Trk::GeometryType
GeometryType
Definition
GeometrySignature.h:37
Trk::Master
@ Master
Definition
GeometrySignature.h:42
Trk::ExCellCharged
ExtrapolationCell< TrackParameters > ExCellCharged
Definition
IExtrapolationEngine.h:24
Trk::ExCellNeutral
ExtrapolationCell< NeutralParameters > ExCellNeutral
Definition
IExtrapolationEngine.h:25
Generated on
for ATLAS Offline Software by
1.17.0