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
24
25namespace ActsTrk {
26 using namespace Acts::UnitLiterals;
27
31 class IExtrapolationTool : virtual public IAlgTool {
32 public:
34
37 enum class VolumeAbort: std::uint8_t{
38 atEntrance, //Propagation stops at entrance of the target volume
39 atExit, // Propagation stops as soon as the mother volume is entered
40 };
41
42 using RecordedMaterial = Acts::MaterialInteractor::result_type;
44 using PropagationOutput = std::pair<std::vector<Acts::detail::Step>,
47 using BoundParamVec_t = std::vector<Acts::BoundTrackParameters>;
58 virtual Acts::Result<PropagationOutput> propagationSteps(const EventContext& ctx,
59 const Acts::BoundTrackParameters& startParameters,
60 const Acts::Direction navDir = Acts::Direction::Forward(),
61 const double pathLimit = 1._km) const = 0;
62
75 explicit SurfaceRecordOptions(const Acts::TrackingVolume* targetVol,
77 target{targetVol}, stopVolumeFlag{abordCond} {}
78
79 explicit SurfaceRecordOptions(const Acts::Surface* targetSurf,
80 double extraPath = 0.):
81 target{targetSurf}, extraPathLength{extraPath}{}
82
84 std::variant<const Acts::TrackingVolume*,
85 const Acts::Surface*> target{};
88 double extraPathLength{0.};
90 double pathLimit{1._km};
95 Acts::Direction navDir{Acts::Direction::Forward()};
98 bool recordSensitive{true};
101 bool recordMaterial{false};
104 bool recordPassive{false};
105 };
106
113 virtual Acts::Result<BoundParamVec_t> propagateAndRecord(const EventContext& ctx,
114 const Acts::BoundTrackParameters& startParameters,
115 const SurfaceRecordOptions& recordOpts) const = 0;
116
128 virtual Acts::Result<PropagationOutput> propagationSteps(const EventContext& ctx,
129 const Acts::BoundTrackParameters& startParameters,
130 const Acts::Surface& target,
131 const Acts::Direction navDir = Acts::Direction::Forward(),
132 const double pathLimit = 1._km) const = 0;
145 virtual Acts::Result<Acts::BoundTrackParameters> propagate(const EventContext& ctx,
146 const Acts::BoundTrackParameters& startParameters,
147 const Acts::Surface& target,
148 const Acts::Direction navDir = Acts::Direction::Forward(),
149 const double pathLimit = 1._km) const = 0;
163 virtual Acts::Result<Acts::BoundTrackParameters> propagate(const EventContext& ctx,
164 const Acts::BoundTrackParameters& startParameters,
165 const Acts::TrackingVolume& target,
166 const VolumeAbort stopVolumeFlag,
167 const Acts::Direction navDir = Acts::Direction::Forward(),
168 const double pathLimit = 1._km) const = 0;
178 virtual Acts::Result<Acts::BoundTrackParameters> propagate(const EventContext& ctx,
179 const Acts::BoundTrackParameters& startParameters,
180 const Acts::Direction navDir = Acts::Direction::Forward(),
181 const double pathLimit = 1._km) const = 0;
182 };
183
184}
185
186#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.