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#include "GaudiKernel/ThreadLocalContext.h"
16
17// Trk
27
28// xAOD
31// STL
32#include <memory>
33#include <utility>
34
35namespace Trk {
36
37static const InterfaceID IID_IExtrapolator("IExtrapolator", 1, 0);
38
51
52class INavigator;
53class Track;
54class Surface;
55class TrackingVolume;
58class Layer;
59class Volume;
60
61class IExtrapolator : virtual public IAlgTool
62{
63public:
65 virtual ~IExtrapolator() {}
66
68 static const InterfaceID& interfaceID() { return IID_IExtrapolator; }
69
72 virtual std::unique_ptr<NeutralParameters> extrapolate(
73 const NeutralParameters& parameters,
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,
86 ParticleHypothesis particle = pion,
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,
111 ParticleHypothesis particle = pion,
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,
137 ParticleHypothesis particle = pion,
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,
145 PropDirection dir,
146 const BoundaryCheck& bcheck,
147 std::vector<const Trk::TrackStateOnSurface*>& material,
148 ParticleHypothesis particle = pion,
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,
165 const TrackParameters& parameters,
166 const Surface& sf,
167 PropDirection dir,
168 const BoundaryCheck& bcheck,
169 ParticleHypothesis particle = pion,
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 int destination = 3) const = 0;
187
190 virtual const TrackingGeometry* trackingGeometry() const = 0;
191
192};
193} // end of namespace
194
195#endif // TRKEXINTERFACES_ITRKEXTRAPOLATOR_H
196
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:68
Base Class for a Detector Layer in the Tracking realm.
Definition Layer.h:72
Abstract Base Class for tracking surfaces.
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