ATLAS Offline Software
Loading...
Searching...
No Matches
IExtrapolationTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ACTSGEOMETRYINTERFACES_ActsTrkIExtrapolationTool_H
6#define ACTSGEOMETRYINTERFACES_ActsTrkIExtrapolationTool_H
7
9#include "GaudiKernel/IInterface.h"
10#include "GaudiKernel/IAlgTool.h"
11#include "GaudiKernel/EventContext.h"
13
15#include "Acts/MagneticField/MagneticFieldContext.hpp"
16
17#include "Acts/Propagator/MaterialInteractor.hpp"
18#include "Acts/Propagator/detail/SteppingLogger.hpp"
19#include "Acts/EventData/BoundTrackParameters.hpp"
20#include "Acts/Definitions/Units.hpp"
21
22#include <variant>
23
24using namespace Acts::UnitLiterals;
25
26namespace ActsTrk {
30 class IExtrapolationTool : virtual public IAlgTool {
31 public:
33
36 enum class VolumeAbort: std::uint8_t{
37 atEntrance, //Propagation stops at entrance of the target volume
38 atExit, // Propagation stops as soon as the mother volume is entered
39 };
40
41 using RecordedMaterial = Acts::MaterialInteractor::result_type;
43 using PropagationOutput = std::pair<std::vector<Acts::detail::Step>,
46 using BoundParamVec_t = std::vector<Acts::BoundTrackParameters>;
57 virtual Acts::Result<PropagationOutput> propagationSteps(const EventContext& ctx,
58 const Acts::BoundTrackParameters& startParameters,
59 const Acts::Direction navDir = Acts::Direction::Forward(),
60 const double pathLimit = 1._km) const = 0;
61
74 explicit SurfaceRecordOptions(const Acts::TrackingVolume* targetVol,
76 target{targetVol}, stopVolumeFlag{abordCond} {}
77
78 explicit SurfaceRecordOptions(const Acts::Surface* targetSurf,
79 double extraPath = 0.):
80 target{targetSurf}, extraPathLength{extraPath}{}
81
83 std::variant<const Acts::TrackingVolume*,
84 const Acts::Surface*> target{};
87 double extraPathLength{0.};
89 double pathLimit{1._km};
94 Acts::Direction navDir{Acts::Direction::Forward()};
97 bool recordSensitive{true};
100 bool recordMaterial{false};
103 bool recordPassive{false};
104 };
105
112 virtual Acts::Result<BoundParamVec_t> propagateAndRecord(const EventContext& ctx,
113 const Acts::BoundTrackParameters& startParameters,
114 const SurfaceRecordOptions& recordOpts) const = 0;
115
127 virtual Acts::Result<PropagationOutput> propagationSteps(const EventContext& ctx,
128 const Acts::BoundTrackParameters& startParameters,
129 const Acts::Surface& target,
130 const Acts::Direction navDir = Acts::Direction::Forward(),
131 const double pathLimit = 1._km) const = 0;
144 virtual Acts::Result<Acts::BoundTrackParameters> propagate(const EventContext& ctx,
145 const Acts::BoundTrackParameters& startParameters,
146 const Acts::Surface& target,
147 const Acts::Direction navDir = Acts::Direction::Forward(),
148 const double pathLimit = 1._km) const = 0;
162 virtual Acts::Result<Acts::BoundTrackParameters> propagate(const EventContext& ctx,
163 const Acts::BoundTrackParameters& startParameters,
164 const Acts::TrackingVolume& target,
165 const VolumeAbort stopVolumeFlag,
166 const Acts::Direction navDir = Acts::Direction::Forward(),
167 const double pathLimit = 1._km) const = 0;
177 virtual Acts::Result<Acts::BoundTrackParameters> propagate(const EventContext& ctx,
178 const Acts::BoundTrackParameters& startParameters,
179 const Acts::Direction navDir = Acts::Direction::Forward(),
180 const double pathLimit = 1._km) const = 0;
181 };
182
183}
184
185#endif
Tool to extrapolate bound track parameters through the Acts::TrackingGeometry.
VolumeAbort
Enumeration to define at which stage the propagation shall be terminated.
virtual Acts::Result< Acts::BoundTrackParameters > propagate(const EventContext &ctx, const Acts::BoundTrackParameters &startParameters, const Acts::Direction navDir=Acts::Direction::Forward(), const double pathLimit=1._km) const =0
Propagate the track parameters until the end of the world volume.
std::pair< std::vector< Acts::detail::Step >, RecordedMaterial > PropagationOutput
Abrivation of the recorded steps and the allocated material.
Acts::MaterialInteractor::result_type RecordedMaterial
Abrivation of the recorded material.
virtual Acts::Result< BoundParamVec_t > propagateAndRecord(const EventContext &ctx, const Acts::BoundTrackParameters &startParameters, const SurfaceRecordOptions &recordOpts) const =0
Propagate the track parameters forward throuht the detector and record the surface crossings along th...
virtual Acts::Result< PropagationOutput > propagationSteps(const EventContext &ctx, const Acts::BoundTrackParameters &startParameters, const Acts::Direction navDir=Acts::Direction::Forward(), const double pathLimit=1._km) const =0
Extrapolate the track parameters until the end of the world and record the performed steps & the allo...
virtual Acts::Result< PropagationOutput > propagationSteps(const EventContext &ctx, const Acts::BoundTrackParameters &startParameters, const Acts::Surface &target, const Acts::Direction navDir=Acts::Direction::Forward(), const double pathLimit=1._km) const =0
Extrapolate the track parameters from a start to a target surface and record the peformed steps & all...
virtual Acts::Result< Acts::BoundTrackParameters > propagate(const EventContext &ctx, const Acts::BoundTrackParameters &startParameters, const Acts::Surface &target, const Acts::Direction navDir=Acts::Direction::Forward(), const double pathLimit=1._km) const =0
Extrapolates the track parameters from a start to a target surface and returns the extrapolated track...
DeclareInterfaceID(ActsTrk::IExtrapolationTool, 1, 0)
virtual Acts::Result< Acts::BoundTrackParameters > propagate(const EventContext &ctx, const Acts::BoundTrackParameters &startParameters, const Acts::TrackingVolume &target, const VolumeAbort stopVolumeFlag, const Acts::Direction navDir=Acts::Direction::Forward(), const double pathLimit=1._km) const =0
Extrapolates the track parameters from the start parameters to a target tracking volume which needs t...
std::vector< Acts::BoundTrackParameters > BoundParamVec_t
Abrivation of the recorded surfaces along the propagation.
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Configuration struct to steer the propagation with surface record.
double extraPathLength
Define the extra path length that the propagator may continue after the target surface has been reach...
std::variant< const Acts::TrackingVolume *, const Acts::Surface * > target
Specify the target volume until which the extrapolation should be persued.
VolumeAbort stopVolumeFlag
Flag toggling how the propagation should end if the volume is a target.
bool recordMaterial
Flag to toggle whether track parameters at material surfaces shall be created if crossed.
Acts::Direction navDir
The direction of the extrapolation.
bool recordSensitive
Flag to toggle whether track parameters at sensitive surfaces shall be created if crossed.
double pathLimit
Maximum path limit before aborting the extrapolation.
SurfaceRecordOptions(const Acts::TrackingVolume *targetVol, VolumeAbort abordCond=VolumeAbort::atExit)
Record option constructor with a target volume as input.
SurfaceRecordOptions(const Acts::Surface *targetSurf, double extraPath=0.)
bool recordPassive
Flag to toggle whether track parameters at portal or passive surfaces shall be created if crossed.