ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
Acts
ActsGeometryInterfaces
ActsGeometryInterfaces
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
8
#include "
AthenaBaseComps/AthAlgTool.h
"
9
#include "GaudiKernel/IInterface.h"
10
#include "GaudiKernel/IAlgTool.h"
11
#include "GaudiKernel/EventContext.h"
12
#include "
TrkEventPrimitives/ParticleHypothesis.h
"
13
14
#include "
ActsGeometryInterfaces/GeometryContext.h
"
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
using namespace
Acts::UnitLiterals;
25
26
namespace
ActsTrk
{
30
class
IExtrapolationTool
:
virtual
public
IAlgTool {
31
public
:
32
DeclareInterfaceID
(
ActsTrk::IExtrapolationTool
, 1, 0);
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>,
44
RecordedMaterial
>;
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
68
struct
SurfaceRecordOptions
{
74
explicit
SurfaceRecordOptions
(
const
Acts::TrackingVolume* targetVol,
75
VolumeAbort
abordCond =
VolumeAbort::atExit
):
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};
92
VolumeAbort
stopVolumeFlag
{
VolumeAbort::atExit
};
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
AthAlgTool.h
GeometryContext.h
ParticleHypothesis.h
ActsTrk::IExtrapolationTool
Tool to extrapolate bound track parameters through the Acts::TrackingGeometry.
Definition
IExtrapolationTool.h:30
ActsTrk::IExtrapolationTool::VolumeAbort
VolumeAbort
Enumeration to define at which stage the propagation shall be terminated.
Definition
IExtrapolationTool.h:36
ActsTrk::IExtrapolationTool::VolumeAbort::atExit
@ atExit
Definition
IExtrapolationTool.h:38
ActsTrk::IExtrapolationTool::VolumeAbort::atEntrance
@ atEntrance
Definition
IExtrapolationTool.h:37
ActsTrk::IExtrapolationTool::propagate
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.
ActsTrk::IExtrapolationTool::PropagationOutput
std::pair< std::vector< Acts::detail::Step >, RecordedMaterial > PropagationOutput
Abrivation of the recorded steps and the allocated material.
Definition
IExtrapolationTool.h:43
ActsTrk::IExtrapolationTool::RecordedMaterial
Acts::MaterialInteractor::result_type RecordedMaterial
Abrivation of the recorded material.
Definition
IExtrapolationTool.h:41
ActsTrk::IExtrapolationTool::propagateAndRecord
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...
ActsTrk::IExtrapolationTool::propagationSteps
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...
ActsTrk::IExtrapolationTool::propagationSteps
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...
ActsTrk::IExtrapolationTool::propagate
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...
ActsTrk::IExtrapolationTool::DeclareInterfaceID
DeclareInterfaceID(ActsTrk::IExtrapolationTool, 1, 0)
ActsTrk::IExtrapolationTool::propagate
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...
ActsTrk::IExtrapolationTool::BoundParamVec_t
std::vector< Acts::BoundTrackParameters > BoundParamVec_t
Abrivation of the recorded surfaces along the propagation.
Definition
IExtrapolationTool.h:46
ActsTrk
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Definition
MdtCalibInput.h:31
ActsTrk::IExtrapolationTool::SurfaceRecordOptions
Configuration struct to steer the propagation with surface record.
Definition
IExtrapolationTool.h:68
ActsTrk::IExtrapolationTool::SurfaceRecordOptions::extraPathLength
double extraPathLength
Define the extra path length that the propagator may continue after the target surface has been reach...
Definition
IExtrapolationTool.h:87
ActsTrk::IExtrapolationTool::SurfaceRecordOptions::target
std::variant< const Acts::TrackingVolume *, const Acts::Surface * > target
Specify the target volume until which the extrapolation should be persued.
Definition
IExtrapolationTool.h:84
ActsTrk::IExtrapolationTool::SurfaceRecordOptions::stopVolumeFlag
VolumeAbort stopVolumeFlag
Flag toggling how the propagation should end if the volume is a target.
Definition
IExtrapolationTool.h:92
ActsTrk::IExtrapolationTool::SurfaceRecordOptions::recordMaterial
bool recordMaterial
Flag to toggle whether track parameters at material surfaces shall be created if crossed.
Definition
IExtrapolationTool.h:100
ActsTrk::IExtrapolationTool::SurfaceRecordOptions::navDir
Acts::Direction navDir
The direction of the extrapolation.
Definition
IExtrapolationTool.h:94
ActsTrk::IExtrapolationTool::SurfaceRecordOptions::recordSensitive
bool recordSensitive
Flag to toggle whether track parameters at sensitive surfaces shall be created if crossed.
Definition
IExtrapolationTool.h:97
ActsTrk::IExtrapolationTool::SurfaceRecordOptions::pathLimit
double pathLimit
Maximum path limit before aborting the extrapolation.
Definition
IExtrapolationTool.h:89
ActsTrk::IExtrapolationTool::SurfaceRecordOptions::SurfaceRecordOptions
SurfaceRecordOptions(const Acts::TrackingVolume *targetVol, VolumeAbort abordCond=VolumeAbort::atExit)
Record option constructor with a target volume as input.
Definition
IExtrapolationTool.h:74
ActsTrk::IExtrapolationTool::SurfaceRecordOptions::SurfaceRecordOptions
SurfaceRecordOptions(const Acts::Surface *targetSurf, double extraPath=0.)
Definition
IExtrapolationTool.h:78
ActsTrk::IExtrapolationTool::SurfaceRecordOptions::recordPassive
bool recordPassive
Flag to toggle whether track parameters at portal or passive surfaces shall be created if crossed.
Definition
IExtrapolationTool.h:103
Generated on
for ATLAS Offline Software by
1.17.0