5 #ifndef ACTSGEOMETRY_ACTSEXTRAPOLATIONTOOL_H
6 #define ACTSGEOMETRY_ACTSEXTRAPOLATIONTOOL_H
11 #include "GaudiKernel/IInterface.h"
12 #include "GaudiKernel/ServiceHandle.h"
13 #include "Gaudi/Property.h"
14 #include "GaudiKernel/EventContext.h"
21 #include "Acts/Propagator/Propagator.hpp"
29 #include "Acts/MagneticField/ConstantBField.hpp"
30 #include "Acts/MagneticField/MagneticFieldContext.hpp"
31 #include "Acts/Propagator/detail/SteppingLogger.hpp"
32 #include "Acts/Propagator/StandardAborters.hpp"
33 #include "Acts/Propagator/SurfaceCollector.hpp"
34 #include "Acts/Utilities/Result.hpp"
35 #include "Acts/Definitions/Units.hpp"
36 #include "Acts/Utilities/Helpers.hpp"
37 #include "Acts/Utilities/Logger.hpp"
74 const Acts::BoundTrackParameters& startParameters,
75 Acts::Direction navDir = Acts::Direction::Forward,
79 std::optional<const Acts::CurvilinearTrackParameters>
81 const Acts::BoundTrackParameters& startParameters,
82 Acts::Direction navDir = Acts::Direction::Forward,
88 const Acts::BoundTrackParameters& startParameters,
89 const Acts::Surface&
target,
90 Acts::Direction navDir = Acts::Direction::Forward,
94 std::optional<const Acts::BoundTrackParameters>
96 const Acts::BoundTrackParameters& startParameters,
97 const Acts::Surface&
target,
98 Acts::Direction navDir = Acts::Direction::Forward,
110 Acts::MagneticFieldContext
117 std::unique_ptr<const ActsExtrapolationDetail::VariantPropagator>
m_varProp;
118 std::unique_ptr<const Acts::Logger>
m_logger{
nullptr};
124 Gaudi::Property<std::string>
m_fieldMode{
this,
"FieldMode",
"ATLAS",
"Either ATLAS or Constant"};
125 Gaudi::Property<std::vector<double>>
m_constantFieldVector{
this,
"ConstantFieldVector", {0, 0, 0},
"Constant field value to use if FieldMode == Constant"};
127 Gaudi::Property<double>
m_ptLoopers{
this,
"PtLoopers", 300,
"PT loop protection threshold. Will be converted to Acts MeV unit"};
128 Gaudi::Property<double>
m_maxStepSize{
this,
"MaxStepSize", 10,
"Max step size in Acts m unit"};
129 Gaudi::Property<double>
m_maxStep{
this,
"MaxSteps", 4000,
"Max number of steps"};
132 Gaudi::Property<bool>
m_interactionMultiScatering{
this,
"InteractionMultiScatering",
false,
"Whether to consider multiple scattering in the interactor"};
133 Gaudi::Property<bool>
m_interactionEloss{
this,
"InteractionEloss",
false,
"Whether to consider energy loss in the interactor"};
134 Gaudi::Property<bool>
m_interactionRecord{
this,
"InteractionRecord",
false,
"Whether to record all material interactions"};
136 template<
typename OptionsType>
139 const Acts::MagneticFieldContext& mctx,
140 const Acts::BoundTrackParameters& startParameters,
141 Acts::Direction navDir,
142 double pathLimit)
const;