9#ifndef RungeKuttaPropagator_H
10#define RungeKuttaPropagator_H
13#include "GaudiKernel/ServiceHandle.h"
140 virtual StatusCode
initialize()
override final;
144 virtual std::unique_ptr<NeutralParameters>
propagate(
149 bool)
const override final;
153 const EventContext& ctx,
165 const EventContext& ctx,
176 const EventContext& ctx,
182 std::optional<TransportJacobian>&,
190 const EventContext& ctx,
192 std::vector<DestSurf>&,
196 std::vector<unsigned int>&,
205 const EventContext& ctx,
218 const EventContext& ctx,
224 std::optional<TransportJacobian>&,
231 virtual std::optional<Trk::TrackSurfaceIntersection>
intersect(
232 const EventContext& ctx,
241 const EventContext& ctx,
256 const EventContext& ctx,
266 const EventContext& ctx,
277 const EventContext& ctx,
288 const EventContext& ctx,
298 const EventContext& ctx,
328 std::vector<DestSurf>&,
332 std::vector<unsigned int>&,
333 std::vector<const Trk::TrackStateOnSurface*>*,
334 std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>,
int>>*,
389 "AtlasFieldCacheCondObj",
391 "Name of the Magnetic Field conditions object key"
394 DoubleProperty
m_dlt{
this,
"AccuracyParameter", 0.0002};
398 "use magnetic field gradient into the error propagation"};
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
Bounds for a cylindrical Surface.
Class for a CylinderSurface in the ATLAS detector.
interface for track parameter propagation through the magnetic field, using the Trk::PatternTrackPara...
Interface class IPropagators It inherits from IAlgTool.
magnetic field properties to steer the behavior of the extrapolation
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCondObjInputKey
virtual std::unique_ptr< TrackParameters > propagate(const EventContext &ctx, const TrackParameters &, const Surface &, const PropDirection, const BoundaryCheck &, const MagneticFieldProperties &, std::optional< TransportJacobian > &, double &, ParticleHypothesis, bool, const TrackingVolume *) const override final
Main propagation method with transport jacobian production.
virtual StatusCode initialize() override final
virtual std::unique_ptr< TrackParameters > propagate(const EventContext &ctx, const TrackParameters &, std::vector< DestSurf > &, PropDirection, const MagneticFieldProperties &, ParticleHypothesis, std::vector< unsigned int > &, double &, bool, bool, const TrackingVolume *) const override final
The propagation method finds the closest surface.
RungeKuttaPropagator(const std::string &, const std::string &, const IInterface *)
virtual std::unique_ptr< Trk::TrackParameters > propagateT(const EventContext &, const TrackParameters &, std::vector< DestSurf > &, PropDirection, const MagneticFieldProperties &, ParticleHypothesis, std::vector< unsigned int > &, PathLimit &, TimeLimit &, bool, const Trk::TrackingVolume *, std::vector< Trk::HitInfo > *&) const override final
unimplemented propagateT
virtual Trk::MultiComponentState multiStatePropagate(const EventContext &ctx, const MultiComponentState &multiComponentState, const Surface &surface, const MagneticFieldProperties &fieldProperties, const PropDirection direction=Trk::anyDirection, const BoundaryCheck &boundaryCheck=true, const ParticleHypothesis particleHypothesis=nonInteracting) const override final
Main propagation method for Multi Component state.
virtual std::unique_ptr< TrackParameters > propagate(const EventContext &ctx, const TrackParameters &, const Surface &, const PropDirection, const BoundaryCheck &, const MagneticFieldProperties &, ParticleHypothesis, bool, const TrackingVolume *) const override final
Main propagation method without transport jacobian production.
DoubleProperty m_helixStep
virtual std::unique_ptr< TrackParameters > propagateParameters(const EventContext &ctx, const TrackParameters &, const Surface &, const PropDirection, const BoundaryCheck &, const MagneticFieldProperties &, ParticleHypothesis, bool, const TrackingVolume *) const override final
Main propagation method for parameters only.
DoubleProperty m_straightStep
virtual std::unique_ptr< TrackParameters > propagateParameters(const EventContext &ctx, const TrackParameters &, const Surface &, const PropDirection, const BoundaryCheck &, const MagneticFieldProperties &, std::optional< TransportJacobian > &, ParticleHypothesis, bool, const TrackingVolume *) const override final
Main propagation method for parameters only with transport jacobian production.
virtual std::optional< Trk::TrackSurfaceIntersection > intersectSurface(const EventContext &, const Surface &, const TrackSurfaceIntersection &, const double, const MagneticFieldProperties &, ParticleHypothesis) const override final
unimplemented intersectSurface
virtual ~RungeKuttaPropagator()=default
virtual std::unique_ptr< NeutralParameters > propagate(const NeutralParameters &, const Surface &, PropDirection, const BoundaryCheck &, bool) const override final
Main propagation method for NeutralParameters.
Cache getInitializedCache(const EventContext &ctx) const
BooleanProperty m_usegradient
virtual std::optional< Trk::TrackSurfaceIntersection > intersect(const EventContext &ctx, const TrackParameters &, const Surface &, const MagneticFieldProperties &, ParticleHypothesis, const TrackingVolume *tvol=nullptr) const override final
Global position together with direction of the trajectory on the surface.
virtual void globalPositions(const EventContext &ctx, std::deque< Amg::Vector3D > &, const TrackParameters &, const MagneticFieldProperties &, const CylinderBounds &, double, ParticleHypothesis, const TrackingVolume *tvol=nullptr) const override final
GlobalPositions list interface:
virtual std::unique_ptr< Trk::TrackParameters > propagateM(const EventContext &, const TrackParameters &, std::vector< DestSurf > &, PropDirection, const MagneticFieldProperties &, ParticleHypothesis, std::vector< unsigned int > &, std::vector< const Trk::TrackStateOnSurface * > *, std::vector< std::pair< std::unique_ptr< Trk::TrackParameters >, int > > *, double &, bool, bool, const Trk::TrackingVolume *, Trk::ExtrapolationCache *) const override final
unimplemented propagateM
Abstract Base Class for tracking surfaces.
An intersection with a Surface is given by.
Full Volume description used in Tracking, it inherits from Volume to get the geometrical structure,...
Definition of ATLAS Math & Geometry primitives (Amg)
Ensure that the ATLAS eigen extensions are properly loaded.
PropDirection
PropDirection, enum for direction of the propagation.
std::vector< ComponentParameters > MultiComponentState
ParametersBase< NeutralParametersDim, Neutral > NeutralParameters
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.
std::pair< const Surface *, BoundaryCheck > DestSurf
typedef for input surfaces, boundary check
ParametersBase< TrackParametersDim, Charged > TrackParameters
MagField::AtlasFieldCache m_fieldCache