ATLAS Offline Software
Loading...
Searching...
No Matches
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
18
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
41namespace Trk {
42
43class Layer;
44class Surface;
45class TrackingVolume;
50class GsfExtrapolator final
51 : public AthAlgTool
52 , virtual public IMultiStateExtrapolator
53{
54
55public:
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&,
67 PropDirection direction,
68 const BoundaryCheck& boundaryCheck) const override final;
69
72 const EventContext& ctx,
75 PropDirection direction,
76 const BoundaryCheck& boundaryCheck) const override final;
77
80 return m_materialUpdator->particleHypothesis();
81 }
82
83
84private:
87 const EventContext& ctx,
88 Cache& cache,
90 const Surface&,
91 PropDirection direction,
92 const BoundaryCheck& boundaryCheck) const;
93
96 const EventContext& ctx,
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
Abstract base class for convolution of material effects.
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
virtual StatusCode initialize() override final
virtual ~GsfExtrapolator() override final
MultiComponentState extrapolateToIntermediateLayer(const EventContext &ctx, Cache &cache, const MultiComponentState &, const Layer &, const TrackingVolume &, PropDirection direction) const
Single extrapolation step to an intermediate layer.
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.
ToolHandle< IPropagator > m_propagator
MultiComponentState extrapolateDirectlyImpl(const EventContext &ctx, const MultiComponentState &, const Surface &, PropDirection direction, const BoundaryCheck &boundaryCheck) const
Implementation of extrapolation without material effects.
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,...
GsfExtrapolator(const std::string &, const std::string &, const IInterface *)
Constructor with AlgTool parameters.
virtual Trk::ParticleHypothesis particleHypothesis() const override final
MultiComponentState extrapolateImpl(const EventContext &ctx, Cache &cache, const MultiComponentState &, const Surface &, PropDirection direction, const BoundaryCheck &boundaryCheck) const
Implementation of main extrapolation method.
void extrapolateToVolumeBoundary(const EventContext &ctx, Cache &cache, const MultiComponentState &, const Layer *, const TrackingVolume &, PropDirection direction) const
Two primary private extrapolation methods.
virtual MultiComponentState extrapolate(const EventContext &ctx, Cache &, const MultiComponentState &, const Surface &, PropDirection direction, const BoundaryCheck &boundaryCheck) const override final
Extrapolation method applying material affects.
ToolHandle< INavigator > m_navigator
BooleanProperty m_fastField
ToolHandle< IMaterialMixtureConvolution > m_materialUpdator
MultiComponentState extrapolateInsideVolume(const EventContext &ctx, Cache &cache, const MultiComponentState &, const Surface &, const Layer *, const TrackingVolume &, PropDirection direction, const BoundaryCheck &boundaryCheck) const
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.
virtual MultiComponentState extrapolateDirectly(const EventContext &ctx, const MultiComponentState &, const Surface &, PropDirection direction, const BoundaryCheck &boundaryCheck) const override final
Extrapolation method without material effects.
Trk::MagneticFieldProperties m_fieldProperties
Base Class for a Detector Layer in the Tracking realm.
Definition Layer.h:72
magnetic field properties to steer the behavior of the extrapolation
Material with information about thickness of material.
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,...
Ensure that the ATLAS eigen extensions are properly loaded.
PropDirection
PropDirection, enum for direction of the propagation.
std::vector< ComponentParameters > MultiComponentState
@ FullField
Field is set to be realistic, but within a given Volume.
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.
MultiStateExtrapolator cache class.