ATLAS Offline Software
GsfExtrapolator.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3  */
4 
19 #ifndef TrkGsfExtrapolator_H
20 #define TrkGsfExtrapolator_H
21 
23 
25 #include "Gaudi/Accumulators.h"
26 #include "GaudiKernel/ToolHandle.h"
27 
31 
36 
37 #include <memory>
38 #include <string>
39 #include <vector>
40 
41 namespace Trk {
42 
43 class Layer;
44 class Surface;
45 class TrackingVolume;
46 class TrackingGeometry;
47 class TrackStateOnSurface;
48 class MaterialProperties;
51  : public AthAlgTool
52  , virtual public IMultiStateExtrapolator
53 {
54 
55 public:
57  GsfExtrapolator(const std::string&, const std::string&, const IInterface*);
58  virtual ~GsfExtrapolator() override final;
59  virtual StatusCode initialize() override final;
60 
63  const EventContext& ctx,
64  Cache&,
66  const Surface&,
67  PropDirection direction,
68  const BoundaryCheck& boundaryCheck) const override final;
69 
72  const EventContext& ctx,
74  const Surface&,
75  PropDirection direction,
76  const BoundaryCheck& boundaryCheck) const override final;
77 
79  virtual Trk::ParticleHypothesis particleHypothesis() const override final{
80  return m_materialUpdator->particleHypothesis();
81  }
82 
83 
84 private:
87  const EventContext& ctx,
88  Cache& cache,
89  const MultiComponentState&,
90  const Surface&,
91  PropDirection direction,
92  const BoundaryCheck& boundaryCheck) const;
93 
96  const EventContext& ctx,
97  const MultiComponentState&,
98  const Surface&,
99  PropDirection direction,
100  const BoundaryCheck& boundaryCheck) const;
101 
110  void extrapolateToVolumeBoundary(const EventContext& ctx,
111  Cache& cache,
112  const MultiComponentState&,
113  const Layer*,
114  const TrackingVolume&,
115  PropDirection direction) const;
116 
118  const EventContext& ctx,
119  Cache& cache,
120  const MultiComponentState&,
121  const Surface&,
122  const Layer*,
123  const TrackingVolume&,
124  PropDirection direction,
125  const BoundaryCheck& boundaryCheck) const;
126 
129  const EventContext& ctx,
130  Cache& cache,
131  const MultiComponentState&,
132  const TrackingVolume&,
133  const Layer* startLayer,
134  const Layer* destinationLayer,
135  PropDirection direction) const;
136 
139  const EventContext& ctx,
140  Cache& cache,
141  const MultiComponentState&,
142  const Layer&,
143  const TrackingVolume&,
144  PropDirection direction) const;
145 
148  const EventContext& ctx,
149  Cache& cache,
150  const MultiComponentState&,
151  const Surface&,
152  const Layer&,
153  const Layer*,
154  PropDirection direction,
155  const BoundaryCheck& boundaryCheck) const;
156 
159  std::unique_ptr<Trk::TrackParameters> initialiseNavigation(
160  const EventContext& ctx,
161  Cache& cache,
162  const MultiComponentState& initialState,
163  const Surface& surface,
164  const Layer*& associatedLayer,
165  const TrackingVolume*& currentVolume,
166  const TrackingVolume*& destinationVolume,
167  PropDirection& direction) const;
168 
169  ToolHandle<IPropagator> m_propagator{this, "Propagator", "", ""};
170  ToolHandle<INavigator> m_navigator{this, "Navigator",
171  "Trk::Navigator/Navigator", ""};
172  ToolHandle<IMaterialMixtureConvolution> m_materialUpdator{
173  this, "GsfMaterialConvolution", "", "Gsf Material effects"};
174  BooleanProperty m_fastField{this, "UseFastField", false};
175 
177 };
178 
179 } // end namespace Trk
180 
181 #endif
Trk::GsfExtrapolator::extrapolate
virtual MultiComponentState extrapolate(const EventContext &ctx, Cache &, const MultiComponentState &, const Surface &, PropDirection direction, const BoundaryCheck &boundaryCheck) const override final
Extrapolation method applying material affects.
Definition: GsfExtrapolator.cxx:174
Trk::GsfExtrapolator::m_navigator
ToolHandle< INavigator > m_navigator
Definition: GsfExtrapolator.h:170
Trk::GsfExtrapolator::extrapolateToDestinationLayer
MultiComponentState extrapolateToDestinationLayer(const EventContext &ctx, Cache &cache, const MultiComponentState &, const Surface &, const Layer &, const Layer *, PropDirection direction, const BoundaryCheck &boundaryCheck) const
Final extrapolation step to a destination layer.
Definition: GsfExtrapolator.cxx:825
TrackParameters.h
Trk::MagneticFieldProperties
Definition: MagneticFieldProperties.h:31
Trk::GsfExtrapolator::extrapolateFromLayerToLayer
MultiComponentState extrapolateFromLayerToLayer(const EventContext &ctx, Cache &cache, const MultiComponentState &, const TrackingVolume &, const Layer *startLayer, const Layer *destinationLayer, PropDirection direction) const
Layer stepping, stopping at the last layer before destination.
Definition: GsfExtrapolator.cxx:687
Trk::Cache
Definition: LocalExtrapolatorCache.h:36
Trk::GsfExtrapolator::extrapolateDirectly
virtual MultiComponentState extrapolateDirectly(const EventContext &ctx, const MultiComponentState &, const Surface &, PropDirection direction, const BoundaryCheck &boundaryCheck) const override final
Extrapolation method without material effects.
Definition: GsfExtrapolator.cxx:197
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:8
IPropagator.h
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
Trk::GsfExtrapolator::initialiseNavigation
std::unique_ptr< Trk::TrackParameters > initialiseNavigation(const EventContext &ctx, Cache &cache, const MultiComponentState &initialState, const Surface &surface, const Layer *&associatedLayer, const TrackingVolume *&currentVolume, const TrackingVolume *&destinationVolume, PropDirection &direction) const
Method to initialise navigation parameters including starting state, layer and volume,...
Definition: GsfExtrapolator.cxx:893
python.RingerConstants.Layer
Layer
Definition: RingerConstants.py:42
Trk::GsfExtrapolator::m_propagator
ToolHandle< IPropagator > m_propagator
Definition: GsfExtrapolator.h:169
Trk::GsfExtrapolator::particleHypothesis
virtual Trk::ParticleHypothesis particleHypothesis() const override final
Definition: GsfExtrapolator.h:79
MagneticFieldProperties.h
MaterialEffectsOnTrack.h
IMultiStateExtrapolator.h
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:28
GeoPrimitives.h
Trk::GsfExtrapolator::m_fastField
BooleanProperty m_fastField
Definition: GsfExtrapolator.h:174
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
Trk::MultiComponentState
std::vector< ComponentParameters > MultiComponentState
Definition: ComponentParameters.h:27
Trk::GsfExtrapolator::m_materialUpdator
ToolHandle< IMaterialMixtureConvolution > m_materialUpdator
Definition: GsfExtrapolator.h:172
Trk::GsfExtrapolator::m_fieldProperties
Trk::MagneticFieldProperties m_fieldProperties
Definition: GsfExtrapolator.h:176
Trk::IMultiStateExtrapolator::Cache
MultiStateExtrapolator cache class.
Definition: IMultiStateExtrapolator.h:51
Trk::GsfExtrapolator::initialize
virtual StatusCode initialize() override final
Definition: GsfExtrapolator.cxx:152
columnar::final
CM final
Definition: ColumnAccessor.h:106
Trk::FullField
@ FullField
Field is set to be realistic, but within a given Volume.
Definition: MagneticFieldMode.h:21
Trk::GsfExtrapolator::~GsfExtrapolator
virtual ~GsfExtrapolator() override final
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::GsfExtrapolator::extrapolateDirectlyImpl
MultiComponentState extrapolateDirectlyImpl(const EventContext &ctx, const MultiComponentState &, const Surface &, PropDirection direction, const BoundaryCheck &boundaryCheck) const
Implementation of extrapolation without material effects.
Definition: GsfExtrapolator.cxx:420
Trk::GsfExtrapolator
Definition: GsfExtrapolator.h:53
INavigator.h
Trk::BoundaryCheck
Definition: BoundaryCheck.h:51
Trk::GsfExtrapolator::extrapolateInsideVolume
MultiComponentState extrapolateInsideVolume(const EventContext &ctx, Cache &cache, const MultiComponentState &, const Surface &, const Layer *, const TrackingVolume &, PropDirection direction, const BoundaryCheck &boundaryCheck) const
Definition: GsfExtrapolator.cxx:569
AthAlgTool
Definition: AthAlgTool.h:26
IMaterialMixtureConvolution.h
Abstract base class for convolution of material effects.
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:79
Trk::TrackingVolume
Definition: TrackingVolume.h:119
Trk::GsfExtrapolator::extrapolateImpl
MultiComponentState extrapolateImpl(const EventContext &ctx, Cache &cache, const MultiComponentState &, const Surface &, PropDirection direction, const BoundaryCheck &boundaryCheck) const
Implementation of main extrapolation method.
Definition: GsfExtrapolator.cxx:232
Trk::GsfExtrapolator::extrapolateToVolumeBoundary
void extrapolateToVolumeBoundary(const EventContext &ctx, Cache &cache, const MultiComponentState &, const Layer *, const TrackingVolume &, PropDirection direction) const
Two primary private extrapolation methods.
Definition: GsfExtrapolator.cxx:440
Trk::IMultiStateExtrapolator
Definition: IMultiStateExtrapolator.h:40
Trk::GsfExtrapolator::GsfExtrapolator
GsfExtrapolator(const std::string &, const std::string &, const IInterface *)
Constructor with AlgTool parameters.
Definition: GsfExtrapolator.cxx:141
Trk::Layer
Definition: Layer.h:72
Trk::GsfExtrapolator::extrapolateToIntermediateLayer
MultiComponentState extrapolateToIntermediateLayer(const EventContext &ctx, Cache &cache, const MultiComponentState &, const Layer &, const TrackingVolume &, PropDirection direction) const
Single extrapolation step to an intermediate layer.
Definition: GsfExtrapolator.cxx:758