ATLAS Offline Software
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 #include "GaudiKernel/ThreadLocalContext.h"
16 
17 // Trk
27 
28 // xAOD
31 // STL
32 #include <memory>
33 #include <utility>
34 
35 namespace Trk {
36 
37 static const InterfaceID IID_IExtrapolator("IExtrapolator", 1, 0);
38 
52 class INavigator;
53 class Track;
54 class Surface;
55 class TrackingVolume;
56 class TrackingGeometry;
57 class TrackStateOnSurface;
58 class Layer;
59 class Volume;
60 
61 class IExtrapolator : virtual public IAlgTool
62 {
63 public:
65  virtual ~IExtrapolator() {}
66 
68  static const InterfaceID& interfaceID() { return IID_IExtrapolator; }
69 
72  virtual std::unique_ptr<NeutralParameters> extrapolate(
74  const Surface& sf,
76  const BoundaryCheck& bcheck = true) const = 0;
77 
80  virtual std::unique_ptr<TrackParameters> extrapolate(
81  const EventContext& ctx,
82  const TrackParameters& parm,
83  const Surface& sf,
85  const BoundaryCheck& bcheck = true,
87  MaterialUpdateMode matupmode = addNoise,
88  Trk::ExtrapolationCache* cache = nullptr) const = 0;
89 
94  virtual std::vector<std::unique_ptr<TrackParameters>>
95  extrapolateStepwise(const EventContext& ctx,
96  const TrackParameters& parm,
97  const Surface& sf,
99  const BoundaryCheck& bcheck = true,
100  ParticleHypothesis particle = pion) const = 0;
101 
105  virtual std::unique_ptr<TrackParameters> extrapolateTrack(
106  const EventContext& ctx,
107  const Track& trk,
108  const Surface& sf,
110  const BoundaryCheck& bcheck = true,
112  MaterialUpdateMode matupmode = addNoise,
113  Trk::ExtrapolationCache* cache = nullptr) const = 0;
114 
119  virtual std::unique_ptr<TrackParameters> extrapolateDirectly(
120  const EventContext& ctx,
121  const TrackParameters& parm,
122  const Surface& sf,
124  const BoundaryCheck& bcheck = true,
125  ParticleHypothesis particle = pion) const = 0;
126 
127 
132  virtual std::vector<std::unique_ptr<TrackParameters>>
133  extrapolateBlindly(const EventContext& ctx,
134  const TrackParameters& parm,
136  const BoundaryCheck& bcheck = true,
138  const Volume* boundaryVol = nullptr) const = 0;
139 
141  virtual std::pair<std::unique_ptr<TrackParameters>, const Trk::Layer*>
143  const EventContext& ctx,
144  const TrackParameters& parm,
146  const BoundaryCheck& bcheck,
147  std::vector<const Trk::TrackStateOnSurface*>& material,
149  MaterialUpdateMode matupmode = addNoise) const = 0;
150 
152  virtual std::unique_ptr<TrackParameters> extrapolateToVolume(
153  const EventContext& ctx,
154  const TrackParameters& parm,
155  const Trk::TrackingVolume& vol,
157  ParticleHypothesis particle = pion) const = 0;
158 
163  virtual std::vector<const TrackStateOnSurface*>* extrapolateM(
164  const EventContext& ctx,
166  const Surface& sf,
168  const BoundaryCheck& bcheck,
170  Trk::ExtrapolationCache* cache = nullptr) const = 0;
171 
179  virtual std::unique_ptr<
180  std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>, int>>>
182  const EventContext& ctx,
183  const Trk::TrackParameters& parm,
186  std::vector<const Trk::TrackStateOnSurface*>*& material,
187  int destination = 3) const = 0;
188 
191  virtual const TrackingGeometry* trackingGeometry() const = 0;
192 
193 };
194 } // end of namespace
195 
196 #endif // TRKEXINTERFACES_ITRKEXTRAPOLATOR_H
197 
Trk::anyDirection
@ anyDirection
Definition: PropDirection.h:22
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:76
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.
TrackParameters.h
Trk::IExtrapolator::interfaceID
static const InterfaceID & interfaceID()
AlgTool interface methods.
Definition: IExtrapolator.h:68
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, std::vector< const Trk::TrackStateOnSurface * > *&material, int destination=3) const =0
Extrapolation method collecting intersections with subdetector boundaries and active volumes/layers.
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.
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:8
PropDirection.h
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
NeutralParameters.h
Trk::IExtrapolator::~IExtrapolator
virtual ~IExtrapolator()
Virtual destructor.
Definition: IExtrapolator.h:65
python.RingerConstants.Layer
Layer
Definition: RingerConstants.py:42
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::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.
ExtrapolationCache.h
MaterialEffectsOnTrack.h
Trk::IExtrapolator::trackingGeometry
virtual const TrackingGeometry * trackingGeometry() const =0
Return the TrackingGeometry used by the Extrapolator (forwards information from Navigator)
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
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::PropDirection
PropDirection
Definition: PropDirection.h:19
ParametersBase.h
Trk::TrackingGeometry
Definition: TrackingGeometry.h:67
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::pion
@ pion
Definition: ParticleHypothesis.h:29
Trk::IExtrapolator::extrapolate
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.
Trk::ParametersBase
Definition: ParametersBase.h:55
ParticleHypothesis.h
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
NeutralParticle.h
Trk::IExtrapolator
Definition: IExtrapolator.h:62
MaterialUpdateMode.h
TrackParticle.h
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.
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
Trk::BoundaryCheck
Definition: BoundaryCheck.h:51
Trk::addNoise
@ addNoise
Definition: MaterialUpdateMode.h:19
BoundaryCheck.h
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::Volume
Definition: Volume.h:35
Trk::TrackingVolume
Definition: TrackingVolume.h:121
Trk::ExtrapolationCache
Definition: ExtrapolationCache.h:26
Trk::IExtrapolator::extrapolateM
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.
Trk::Layer
Definition: Layer.h:73