ATLAS Offline Software
Loading...
Searching...
No Matches
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
26
27// xAOD
30// STL
31#include <memory>
32#include <utility>
33
34namespace Trk {
35
36static const InterfaceID IID_IExtrapolator("IExtrapolator", 1, 0);
37
50
51class INavigator;
52class Track;
53class Surface;
54class TrackingVolume;
57class Layer;
58class Volume;
59
60class IExtrapolator : virtual public IAlgTool
61{
62public:
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,
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,
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,
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,
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,
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,
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*>
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,
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>>>
181 const EventContext& ctx,
182 const Trk::TrackParameters& parm,
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
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
Interface class for the extrapolation AlgTool, it inherits from IAlgTool Detailed information about p...
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.
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.
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.
static const InterfaceID & interfaceID()
AlgTool interface methods.
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 :
virtual const TrackingGeometry * trackingGeometry() const =0
Return the TrackingGeometry used by the Extrapolator (forwards information from Navigator).
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.
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.
virtual ~IExtrapolator()
Virtual destructor.
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.
virtual std::unique_ptr< NeutralParameters > extrapolate(const NeutralParameters &parameters, const Surface &sf, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true) const =0
Main extrapolation Interface starting from neutral parameters and aiming at surface.
virtual std::vector< const TrackStateOnSurface * > * extrapolateM(const EventContext &ctx, const TrackParameters &parameters, 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.
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.
Interface class for the navigation AlgTool, it inherits from IAlgTool Detailed information about priv...
Definition INavigator.h:67
Base Class for a Detector Layer in the Tracking realm.
Definition Layer.h:72
Abstract Base Class for tracking surfaces.
Definition Surface.h:79
represents the track state (measurement, material, fit parameters and quality) at a surface.
The TrackingGeometry class is the owner of the constructed TrackingVolumes.
Full Volume description used in Tracking, it inherits from Volume to get the geometrical structure,...
Base class for all volumes inside the tracking realm, it defines the interface for inherited Volume c...
Definition Volume.h:36
Ensure that the ATLAS eigen extensions are properly loaded.
PropDirection
PropDirection, enum for direction of the propagation.
@ anyDirection
ParametersBase< NeutralParametersDim, Neutral > NeutralParameters
static const InterfaceID IID_IExtrapolator("IExtrapolator", 1, 0)
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.
MaterialUpdateMode
This is a steering enum to force the material update it can be: (1) addNoise (-1) removeNoise Second ...
ParametersBase< TrackParametersDim, Charged > TrackParameters
const IIntersectionCache * cache() const
Retrieve the associated cache block, if it exists.