ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkExtrapolation
TrkExInterfaces
TrkExInterfaces
IExtrapolator.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3
*/
4
6
// IExtrapolator.h, (c) ATLAS Detector software
8
9
#ifndef TRKEXINTERFACES_IEXTRAPOLATOR_H
10
#define TRKEXINTERFACES_IEXTRAPOLATOR_H
11
12
// Gaudi
13
#include "GaudiKernel/EventContext.h"
14
#include "GaudiKernel/IAlgTool.h"
15
16
// Trk
17
#include "
TrkEventPrimitives/ParticleHypothesis.h
"
18
#include "
TrkEventPrimitives/PropDirection.h
"
19
#include "
TrkExUtils/ExtrapolationCache.h
"
20
#include "
TrkExUtils/MaterialUpdateMode.h
"
21
#include "
TrkMaterialOnTrack/MaterialEffectsOnTrack.h
"
22
#include "
TrkNeutralParameters/NeutralParameters.h
"
23
#include "
TrkParameters/TrackParameters.h
"
24
#include "
TrkParametersBase/ParametersBase.h
"
25
#include "
TrkSurfaces/BoundaryCheck.h
"
26
27
// xAOD
28
#include "
xAODTracking/NeutralParticle.h
"
29
#include "
xAODTracking/TrackParticle.h
"
30
// STL
31
#include <memory>
32
#include <utility>
33
34
namespace
Trk
{
35
36
static
const
InterfaceID
IID_IExtrapolator
(
"IExtrapolator"
, 1, 0);
37
50
51
class
INavigator
;
52
class
Track
;
53
class
Surface
;
54
class
TrackingVolume
;
55
class
TrackingGeometry
;
56
class
TrackStateOnSurface
;
57
class
Layer
;
58
class
Volume
;
59
60
class
IExtrapolator
:
virtual
public
IAlgTool
61
{
62
public
:
64
virtual
~IExtrapolator
() {}
65
67
static
const
InterfaceID&
interfaceID
() {
return
IID_IExtrapolator
; }
68
71
virtual
std::unique_ptr<NeutralParameters>
extrapolate
(
72
const
NeutralParameters
& parameters,
73
const
Surface
& sf,
74
PropDirection
dir =
anyDirection
,
75
const
BoundaryCheck
& bcheck =
true
)
const
= 0;
76
79
virtual
std::unique_ptr<TrackParameters>
extrapolate
(
80
const
EventContext& ctx,
81
const
TrackParameters
& parm,
82
const
Surface
& sf,
83
PropDirection
dir =
anyDirection
,
84
const
BoundaryCheck
& bcheck =
true
,
85
ParticleHypothesis
particle =
pion
,
86
MaterialUpdateMode
matupmode =
addNoise
,
87
Trk::ExtrapolationCache
*
cache
=
nullptr
)
const
= 0;
88
93
virtual
std::vector<std::unique_ptr<TrackParameters>>
94
extrapolateStepwise
(
const
EventContext& ctx,
95
const
TrackParameters
& parm,
96
const
Surface
& sf,
97
PropDirection
dir =
anyDirection
,
98
const
BoundaryCheck
& bcheck =
true
,
99
ParticleHypothesis
particle =
pion
)
const
= 0;
100
104
virtual
std::unique_ptr<TrackParameters>
extrapolateTrack
(
105
const
EventContext& ctx,
106
const
Track
& trk,
107
const
Surface
& sf,
108
PropDirection
dir =
anyDirection
,
109
const
BoundaryCheck
& bcheck =
true
,
110
ParticleHypothesis
particle =
pion
,
111
MaterialUpdateMode
matupmode =
addNoise
,
112
Trk::ExtrapolationCache
*
cache
=
nullptr
)
const
= 0;
113
118
virtual
std::unique_ptr<TrackParameters>
extrapolateDirectly
(
119
const
EventContext& ctx,
120
const
TrackParameters
& parm,
121
const
Surface
& sf,
122
PropDirection
dir =
anyDirection
,
123
const
BoundaryCheck
& bcheck =
true
,
124
ParticleHypothesis
particle =
pion
)
const
= 0;
125
126
131
virtual
std::vector<std::unique_ptr<TrackParameters>>
132
extrapolateBlindly
(
const
EventContext& ctx,
133
const
TrackParameters
& parm,
134
PropDirection
dir =
anyDirection
,
135
const
BoundaryCheck
& bcheck =
true
,
136
ParticleHypothesis
particle =
pion
,
137
const
Volume
* boundaryVol =
nullptr
)
const
= 0;
138
140
virtual
std::pair<std::unique_ptr<TrackParameters>,
const
Trk::Layer
*>
141
extrapolateToNextActiveLayerM
(
142
const
EventContext& ctx,
143
const
TrackParameters
& parm,
144
PropDirection
dir,
145
const
BoundaryCheck
& bcheck,
146
std::vector<const Trk::TrackStateOnSurface*>& material,
147
ParticleHypothesis
particle =
pion
,
148
MaterialUpdateMode
matupmode =
addNoise
)
const
= 0;
149
151
virtual
std::unique_ptr<TrackParameters>
extrapolateToVolume
(
152
const
EventContext& ctx,
153
const
TrackParameters
& parm,
154
const
Trk::TrackingVolume
& vol,
155
PropDirection
dir =
anyDirection
,
156
ParticleHypothesis
particle =
pion
)
const
= 0;
157
162
virtual
std::vector<const TrackStateOnSurface*>*
extrapolateM
(
163
const
EventContext& ctx,
164
const
TrackParameters
& parameters,
165
const
Surface
& sf,
166
PropDirection
dir,
167
const
BoundaryCheck
& bcheck,
168
ParticleHypothesis
particle =
pion
,
169
Trk::ExtrapolationCache
*
cache
=
nullptr
)
const
= 0;
170
178
virtual
std::unique_ptr<
179
std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>,
int
>>>
180
collectIntersections
(
181
const
EventContext& ctx,
182
const
Trk::TrackParameters
& parm,
183
Trk::PropDirection
dir,
184
Trk::ParticleHypothesis
particle,
185
int
destination = 3)
const
= 0;
186
189
virtual
const
TrackingGeometry
*
trackingGeometry
()
const
= 0;
190
191
};
192
}
// end of namespace
193
194
#endif
// TRKEXINTERFACES_ITRKEXTRAPOLATOR_H
195
BoundaryCheck.h
TrackParticle.h
ExtrapolationCache.h
MaterialEffectsOnTrack.h
MaterialUpdateMode.h
NeutralParameters.h
NeutralParticle.h
ParametersBase.h
ParticleHypothesis.h
PropDirection.h
TrackParameters.h
Trk::BoundaryCheck
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
Definition
BoundaryCheck.h:51
Trk::ExtrapolationCache
Definition
ExtrapolationCache.h:26
Trk::IExtrapolator
Interface class for the extrapolation AlgTool, it inherits from IAlgTool Detailed information about p...
Definition
IExtrapolator.h:61
Trk::IExtrapolator::extrapolateDirectly
virtual std::unique_ptr< TrackParameters > extrapolateDirectly(const EventContext &ctx, const TrackParameters &parm, const Surface &sf, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion) const =0
Extrapolate directly: Forwards directly the call to the configured "Global" propagator.
Trk::IExtrapolator::extrapolateTrack
virtual std::unique_ptr< TrackParameters > extrapolateTrack(const EventContext &ctx, const Track &trk, const Surface &sf, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise, Trk::ExtrapolationCache *cache=nullptr) const =0
Main extrapolation interface starting from a Trk::Track and aiming at Surface.
Trk::IExtrapolator::extrapolateStepwise
virtual std::vector< std::unique_ptr< TrackParameters > > extrapolateStepwise(const EventContext &ctx, const TrackParameters &parm, const Surface &sf, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion) const =0
Extrapolation method where a step-wise navigation to the destination surface is performed.
Trk::IExtrapolator::interfaceID
static const InterfaceID & interfaceID()
AlgTool interface methods.
Definition
IExtrapolator.h:67
Trk::IExtrapolator::extrapolateToVolume
virtual std::unique_ptr< TrackParameters > extrapolateToVolume(const EventContext &ctx, const TrackParameters &parm, const Trk::TrackingVolume &vol, PropDirection dir=anyDirection, ParticleHypothesis particle=pion) const =0
Extrapolation to volume :
Trk::IExtrapolator::trackingGeometry
virtual const TrackingGeometry * trackingGeometry() const =0
Return the TrackingGeometry used by the Extrapolator (forwards information from Navigator).
Trk::IExtrapolator::extrapolateBlindly
virtual std::vector< std::unique_ptr< TrackParameters > > extrapolateBlindly(const EventContext &ctx, const TrackParameters &parm, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion, const Volume *boundaryVol=nullptr) const =0
extrapolateBlindly like step-wise extrapolation, but without a destination surface.
Trk::IExtrapolator::extrapolateToNextActiveLayerM
virtual std::pair< std::unique_ptr< TrackParameters >, const Trk::Layer * > extrapolateToNextActiveLayerM(const EventContext &ctx, const TrackParameters &parm, PropDirection dir, const BoundaryCheck &bcheck, std::vector< const Trk::TrackStateOnSurface * > &material, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const =0
Extrapolation to the next active layer with material collection.
Trk::IExtrapolator::~IExtrapolator
virtual ~IExtrapolator()
Virtual destructor.
Definition
IExtrapolator.h:64
Trk::IExtrapolator::collectIntersections
virtual std::unique_ptr< std::vector< std::pair< std::unique_ptr< Trk::TrackParameters >, int > > > collectIntersections(const EventContext &ctx, const Trk::TrackParameters &parm, Trk::PropDirection dir, Trk::ParticleHypothesis particle, int destination=3) const =0
Extrapolation method collecting intersections with subdetector boundaries and active volumes/layers.
Trk::IExtrapolator::extrapolate
virtual std::unique_ptr< NeutralParameters > extrapolate(const NeutralParameters ¶meters, const Surface &sf, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true) const =0
Main extrapolation Interface starting from neutral parameters and aiming at surface.
Trk::IExtrapolator::extrapolateM
virtual std::vector< const TrackStateOnSurface * > * extrapolateM(const EventContext &ctx, const TrackParameters ¶meters, const Surface &sf, PropDirection dir, const BoundaryCheck &bcheck, ParticleHypothesis particle=pion, Trk::ExtrapolationCache *cache=nullptr) const =0
Extrapolate to a destination surface, while collecting all the material layers in between.
Trk::IExtrapolator::extrapolate
virtual std::unique_ptr< TrackParameters > extrapolate(const EventContext &ctx, const TrackParameters &parm, const Surface &sf, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise, Trk::ExtrapolationCache *cache=nullptr) const =0
Main extrapolation interface starting from charged parameters and aiming at Surface.
Trk::INavigator
Interface class for the navigation AlgTool, it inherits from IAlgTool Detailed information about priv...
Definition
INavigator.h:67
Trk::Layer
Base Class for a Detector Layer in the Tracking realm.
Definition
Layer.h:72
Trk::Surface
Abstract Base Class for tracking surfaces.
Definition
Surface.h:79
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition
TrackStateOnSurface.h:71
Trk::TrackingGeometry
The TrackingGeometry class is the owner of the constructed TrackingVolumes.
Definition
TrackingGeometry.h:68
Trk::TrackingVolume
Full Volume description used in Tracking, it inherits from Volume to get the geometrical structure,...
Definition
TrackingVolume.h:119
Trk::Volume
Base class for all volumes inside the tracking realm, it defines the interface for inherited Volume c...
Definition
Volume.h:36
Track
Definition
TriggerChamberClusterOnTrackCreator.h:19
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::anyDirection
@ anyDirection
Definition
PropDirection.h:22
Trk::NeutralParameters
ParametersBase< NeutralParametersDim, Neutral > NeutralParameters
Definition
NeutralParameters.h:26
Trk::IID_IExtrapolator
static const InterfaceID IID_IExtrapolator("IExtrapolator", 1, 0)
Trk::ParticleHypothesis
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.
Definition
ParticleHypothesis.h:28
Trk::pion
@ pion
Definition
ParticleHypothesis.h:32
Trk::MaterialUpdateMode
MaterialUpdateMode
This is a steering enum to force the material update it can be: (1) addNoise (-1) removeNoise Second ...
Definition
MaterialUpdateMode.h:18
Trk::addNoise
@ addNoise
Definition
MaterialUpdateMode.h:19
Trk::TrackParameters
ParametersBase< TrackParametersDim, Charged > TrackParameters
Definition
Tracking/TrkEvent/TrkParameters/TrkParameters/TrackParameters.h:27
Trk::cache
const IIntersectionCache * cache() const
Retrieve the associated cache block, if it exists.
Generated on
for ATLAS Offline Software by
1.17.0