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:
34 using RecordedMaterial = Acts::MaterialInteractor::result_type;
36 using PropagationOutput = std::pair<std::vector<Acts::detail::Step>,
39 using BoundParamVec_t = std::vector<Acts::BoundTrackParameters>;
50 virtual Acts::Result<PropagationOutput> propagationSteps(const EventContext& ctx,
51 const Acts::BoundTrackParameters& startParameters,
52 Acts::Direction navDir = Acts::Direction::Forward(),
53 double pathLimit = 1._km) const = 0;
54
64 enum class VolumeAbort: std::uint8_t{
65 atEntrance, //Propagation stops at entrance of the target volume
66 atExit, // Propagation stops as soon as the mother volume is entered
67 };
68
73 explicit SurfaceRecordOptions(const Acts::TrackingVolume* targetVol,
75 target{targetVol}, stopVolumeFlag{abordCond} {}
76
77 explicit SurfaceRecordOptions(const Acts::Surface* targetSurf,
78 double extraPath = 0.):
79 target{targetSurf}, extraPathLength{extraPath}{}
80
82 std::variant<const Acts::TrackingVolume*,
83 const Acts::Surface*> target{};
86 double extraPathLength{0.};
88 double pathLimit{1._km};
94 bool recordSensitive{true};
97 bool recordMaterial{false};
100 bool recordPassive{false};
101 };
102
109 virtual Acts::Result<BoundParamVec_t> propagateAndRecord(const EventContext& ctx,
110 const Acts::BoundTrackParameters& startParameters,
111 const SurfaceRecordOptions& recordOpts) const = 0;
112
113
125 virtual Acts::Result<PropagationOutput> propagationSteps(const EventContext& ctx,
126 const Acts::BoundTrackParameters& startParameters,
127 const Acts::Surface& target,
128 Acts::Direction navDir = Acts::Direction::Forward(),
129 double pathLimit = 1._km) const = 0;
142 virtual Acts::Result<Acts::BoundTrackParameters> propagate(const EventContext& ctx,
143 const Acts::BoundTrackParameters& startParameters,
144 const Acts::Surface& target,
145 Acts::Direction navDir = Acts::Direction::Forward(),
146 double pathLimit = 1._km) const = 0;
156 virtual Acts::Result<Acts::BoundTrackParameters> propagate(const EventContext& ctx,
157 const Acts::BoundTrackParameters& startParameters,
158 Acts::Direction navDir = Acts::Direction::Forward(),
159 double pathLimit = 1._km) const = 0;
160 };
161
162}
163
164#endif
Tool to extrapolate bound track parameters through the Acts::TrackingGeometry.
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< PropagationOutput > propagationSteps(const EventContext &ctx, const Acts::BoundTrackParameters &startParameters, Acts::Direction navDir=Acts::Direction::Forward(), 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< Acts::BoundTrackParameters > propagate(const EventContext &ctx, const Acts::BoundTrackParameters &startParameters, const Acts::Surface &target, Acts::Direction navDir=Acts::Direction::Forward(), double pathLimit=1._km) const =0
Extrapolates the track parameters from a start to a target surface and returns the extrapolated track...
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::Surface &target, Acts::Direction navDir=Acts::Direction::Forward(), double pathLimit=1._km) const =0
Extrapolate the track parameters from a start to a target surface and record the peformed steps & all...
DeclareInterfaceID(ActsTrk::IExtrapolationTool, 1, 0)
virtual Acts::Result< Acts::BoundTrackParameters > propagate(const EventContext &ctx, const Acts::BoundTrackParameters &startParameters, Acts::Direction navDir=Acts::Direction::Forward(), double pathLimit=1._km) const =0
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.
VolumeAbort
Enumeration to define at which stage the propagation shall be terminated.
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.
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.