ATLAS Offline Software
GsfExtrapolator.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3  */
4 
13 #ifndef TrkGsfExtrapolator_H
14 #define TrkGsfExtrapolator_H
15 
17 
19 #include "Gaudi/Accumulators.h"
20 #include "GaudiKernel/ToolHandle.h"
21 
25 
30 
31 #include <memory>
32 #include <string>
33 #include <vector>
34 
35 namespace Trk {
36 
37 class Layer;
38 class Surface;
39 class TrackingVolume;
40 class TrackingGeometry;
41 class TrackStateOnSurface;
42 class MaterialProperties;
45 class GsfExtrapolator final
46  : public AthAlgTool
47  , virtual public IMultiStateExtrapolator
48 {
49 
50 public:
52  GsfExtrapolator(const std::string&, const std::string&, const IInterface*);
53 
55  virtual ~GsfExtrapolator() override final;
56 
58  virtual StatusCode initialize() override final;
59 
62  const EventContext& ctx,
63  Cache&,
65  const Surface&,
66  PropDirection direction,
67  const BoundaryCheck& boundaryCheck,
68  ParticleHypothesis particleHypothesis =
69  nonInteracting) const override final;
70 
73  const EventContext& ctx,
75  const Surface&,
76  PropDirection direction,
77  const BoundaryCheck& boundaryCheck,
78  ParticleHypothesis particleHypothesis =
79  nonInteracting) const override final;
80 
81 private:
84  const EventContext& ctx,
85  Cache& cache,
87  const Surface&,
88  PropDirection direction,
89  const BoundaryCheck& boundaryCheck,
90  ParticleHypothesis particleHypothesis) const;
91 
94  const EventContext& ctx,
96  const Surface&,
97  PropDirection direction = anyDirection,
98  const BoundaryCheck& boundaryCheck = true,
99  ParticleHypothesis particleHypothesis = nonInteracting) const;
100 
109  void extrapolateToVolumeBoundary(const EventContext& ctx,
110  Cache& cache,
112  const Layer*,
114  PropDirection direction,
115  ParticleHypothesis particleHypothesis) const;
116 
118  const EventContext& ctx,
119  Cache& cache,
121  const Surface&,
122  const Layer*,
124  PropDirection direction,
125  const BoundaryCheck& boundaryCheck,
126  ParticleHypothesis particleHypothesis) const;
127 
132  const EventContext& ctx,
133  Cache& cache,
136  const Layer* startLayer,
137  const Layer* destinationLayer,
138  PropDirection direction,
139  ParticleHypothesis particleHypothesis) const;
140 
143  const EventContext& ctx,
144  Cache& cache,
146  const Layer&,
148  PropDirection direction,
149  ParticleHypothesis particleHypothesis,
150  bool perpendicularCheck = true) const;
151 
154  const EventContext& ctx,
155  Cache& cache,
157  const Surface&,
158  const Layer&,
159  const Layer*,
160  PropDirection direction,
161  const BoundaryCheck& boundaryCheck,
162  ParticleHypothesis particleHypothesis) const;
163 
167  const EventContext& ctx,
168  Cache& cache,
169  const MultiComponentState& initialState,
170  const Surface& surface,
171  const Layer*& associatedLayer,
172  const TrackingVolume*& currentVolume,
173  const TrackingVolume*& destinationVolume,
174  std::unique_ptr<TrackParameters>& referenceParameters,
175  PropDirection direction) const;
176 
177  ToolHandle<IPropagator> m_propagator{ this, "Propagator", "", "" };
178  ToolHandle<INavigator> m_navigator{ this,
179  "Navigator",
180  "Trk::Navigator/Navigator",
181  "" };
182  ToolHandle<IMaterialMixtureConvolution> m_materialUpdator{
183  this,
184  "GsfMaterialConvolution",
185  "Trk::GsfMaterialMixtureConvolution/GsfMaterialMixtureConvolution",
186  ""
187  };
188 
192 };
193 
194 } // end namespace Trk
195 
196 #endif
Trk::anyDirection
@ anyDirection
Definition: PropDirection.h:22
Trk::GsfExtrapolator::m_navigator
ToolHandle< INavigator > m_navigator
Definition: GsfExtrapolator.h:178
Trk::GsfExtrapolator::extrapolateDirectlyImpl
MultiComponentState extrapolateDirectlyImpl(const EventContext &ctx, const MultiComponentState &, const Surface &, PropDirection direction=anyDirection, const BoundaryCheck &boundaryCheck=true, ParticleHypothesis particleHypothesis=nonInteracting) const
Implementation of extrapolation without material effects.
Definition: GsfExtrapolator.cxx:452
TrackParameters.h
Trk::GsfExtrapolator::extrapolateInsideVolume
MultiComponentState extrapolateInsideVolume(const EventContext &ctx, Cache &cache, const MultiComponentState &, const Surface &, const Layer *, const TrackingVolume &, PropDirection direction, const BoundaryCheck &boundaryCheck, ParticleHypothesis particleHypothesis) const
Definition: GsfExtrapolator.cxx:606
Trk::MagneticFieldProperties
Definition: MagneticFieldProperties.h:31
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:7
IPropagator.h
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
python.RingerConstants.Layer
Layer
Definition: RingerConstants.py:42
Trk::GsfExtrapolator::m_propagator
ToolHandle< IPropagator > m_propagator
Definition: GsfExtrapolator.h:177
Trk::GsfExtrapolator::initialiseNavigation
void initialiseNavigation(const EventContext &ctx, Cache &cache, const MultiComponentState &initialState, const Surface &surface, const Layer *&associatedLayer, const TrackingVolume *&currentVolume, const TrackingVolume *&destinationVolume, std::unique_ptr< TrackParameters > &referenceParameters, PropDirection direction) const
Method to initialise navigation parameters including starting state, layer and volume,...
Definition: GsfExtrapolator.cxx:942
Trk::GsfExtrapolator::extrapolateDirectly
virtual MultiComponentState extrapolateDirectly(const EventContext &ctx, const MultiComponentState &, const Surface &, PropDirection direction, const BoundaryCheck &boundaryCheck, ParticleHypothesis particleHypothesis=nonInteracting) const override final
Configured AlgTool extrapolation without material effects method (2)
Definition: GsfExtrapolator.cxx:206
MagneticFieldProperties.h
MaterialEffectsOnTrack.h
IMultiStateExtrapolator.h
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
GeoPrimitives.h
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
Trk::IPropagator
Definition: IPropagator.h:55
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
Trk::GsfExtrapolator::extrapolate
virtual MultiComponentState extrapolate(const EventContext &ctx, Cache &, const MultiComponentState &, const Surface &, PropDirection direction, const BoundaryCheck &boundaryCheck, ParticleHypothesis particleHypothesis=nonInteracting) const override final
Configured AlgTool extrapolation method (1)
Definition: GsfExtrapolator.cxx:181
Trk::MultiComponentState
std::vector< ComponentParameters > MultiComponentState
Definition: ComponentParameters.h:27
Trk::GsfExtrapolator::m_materialUpdator
ToolHandle< IMaterialMixtureConvolution > m_materialUpdator
Switch to turn on/off surface based material effects.
Definition: GsfExtrapolator.h:182
Trk::GsfExtrapolator::m_fieldProperties
Trk::MagneticFieldProperties m_fieldProperties
Definition: GsfExtrapolator.h:191
Trk::ParametersBase
Definition: ParametersBase.h:55
Trk::IMultiStateExtrapolator::Cache
MultiStateExtrapolator cache class.
Definition: IMultiStateExtrapolator.h:56
Trk::GsfExtrapolator::initialize
virtual StatusCode initialize() override final
AlgTool initialise method.
Definition: GsfExtrapolator.cxx:158
Trk::GsfExtrapolator::~GsfExtrapolator
virtual ~GsfExtrapolator() override final
Destructor.
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
Trk::nonInteracting
@ nonInteracting
Definition: ParticleHypothesis.h:25
Trk::GsfExtrapolator::extrapolateToVolumeBoundary
void extrapolateToVolumeBoundary(const EventContext &ctx, Cache &cache, const MultiComponentState &, const Layer *, const TrackingVolume &, PropDirection direction, ParticleHypothesis particleHypothesis) const
Two primary private extrapolation methods.
Definition: GsfExtrapolator.cxx:473
Trk::GsfExtrapolator::extrapolateToDestinationLayer
MultiComponentState extrapolateToDestinationLayer(const EventContext &ctx, Cache &cache, const MultiComponentState &, const Surface &, const Layer &, const Layer *, PropDirection direction, const BoundaryCheck &boundaryCheck, ParticleHypothesis particleHypothesis) const
Final extrapolation step to a destination layer.
Definition: GsfExtrapolator.cxx:872
Trk::GsfExtrapolator
Definition: GsfExtrapolator.h:48
INavigator.h
Trk::BoundaryCheck
Definition: BoundaryCheck.h:51
AthAlgTool
Definition: AthAlgTool.h:26
IMaterialMixtureConvolution.h
Abstract base class for convolution of material effects.
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::TrackingVolume
Definition: TrackingVolume.h:121
Trk::GsfExtrapolator::extrapolateToIntermediateLayer
MultiComponentState extrapolateToIntermediateLayer(const EventContext &ctx, Cache &cache, const MultiComponentState &, const Layer &, const TrackingVolume &, PropDirection direction, ParticleHypothesis particleHypothesis, bool perpendicularCheck=true) const
Single extrapolation step to an intermediate layer.
Definition: GsfExtrapolator.cxx:801
Trk::GsfExtrapolator::m_fastField
bool m_fastField
Definition: GsfExtrapolator.h:190
Trk::GsfExtrapolator::extrapolateImpl
MultiComponentState extrapolateImpl(const EventContext &ctx, Cache &cache, const MultiComponentState &, const Surface &, PropDirection direction, const BoundaryCheck &boundaryCheck, ParticleHypothesis particleHypothesis) const
Implementation of main extrapolation method.
Definition: GsfExtrapolator.cxx:243
Trk::IMultiStateExtrapolator
Definition: IMultiStateExtrapolator.h:45
Trk::GsfExtrapolator::GsfExtrapolator
GsfExtrapolator(const std::string &, const std::string &, const IInterface *)
Constructor with AlgTool parameters.
Definition: GsfExtrapolator.cxx:145
Trk::Layer
Definition: Layer.h:73
Trk::GsfExtrapolator::extrapolateFromLayerToLayer
MultiComponentState extrapolateFromLayerToLayer(const EventContext &ctx, Cache &cache, const MultiComponentState &, const TrackingVolume &, const Layer *startLayer, const Layer *destinationLayer, PropDirection direction, ParticleHypothesis particleHypothesis) const
Additional private extrapolation methods.
Definition: GsfExtrapolator.cxx:728