60 const std::string& name,
61 const IInterface* parent);
66 virtual Acts::Result<PropagationOutput>
68 const Acts::BoundTrackParameters& startParameters,
69 Acts::Direction navDir = Acts::Direction::Forward(),
70 double pathLimit = std::numeric_limits<double>::max())
const override;
73 Acts::Result<Acts::BoundTrackParameters>
75 const Acts::BoundTrackParameters& startParameters,
76 Acts::Direction navDir = Acts::Direction::Forward(),
77 double pathLimit = std::numeric_limits<double>::max())
const override;
79 virtual Acts::Result<PropagationOutput>
81 const Acts::BoundTrackParameters& startParameters,
82 const Acts::Surface& target,
83 Acts::Direction navDir = Acts::Direction::Forward(),
84 double pathLimit = std::numeric_limits<double>::max())
const override;
87 Acts::Result<Acts::BoundTrackParameters>
89 const Acts::BoundTrackParameters& startParameters,
90 const Acts::Surface& target,
91 Acts::Direction navDir = Acts::Direction::Forward(),
92 double pathLimit = std::numeric_limits<double>::max())
const override;
96 Acts::MagneticFieldContext
102 std::unique_ptr<const ActsExtrapolationDetail::VariantPropagator>
m_varProp;
103 std::unique_ptr<const Acts::Logger>
m_logger{
nullptr};
107 PublicToolHandle<ActsTrk::ITrackingGeometryTool>
m_trackingGeometryTool{
this,
"TrackingGeometryTool",
"ActsTrackingGeometryTool"};
109 Gaudi::Property<std::string>
m_fieldMode{
this,
"FieldMode",
"ATLAS",
"Either ATLAS or Constant or StraightLine"};
110 Gaudi::Property<std::vector<double>>
m_constantFieldVector{
this,
"ConstantFieldVector", {0, 0, 0},
"Constant field value to use if FieldMode == Constant"};
112 Gaudi::Property<double>
m_ptLoopers{
this,
"PtLoopers", 300,
"PT loop protection threshold. Will be converted to Acts MeV unit"};
113 Gaudi::Property<double>
m_maxStepSize{
this,
"MaxStepSize", 10,
"Max step size in Acts m unit"};
114 Gaudi::Property<unsigned>
m_maxStep{
this,
"MaxSteps", 100000,
"Max number of steps"};
115 Gaudi::Property<unsigned>
m_maxSurfSkip{
this,
"MaxSurfaceSkip" ,100,
"Maximum number of surfaces to be tried by the navigator"};
116 Gaudi::Property<double>
m_surfTolerance{
this,
"OnSurfaceTolerance", Acts::s_onSurfaceTolerance,
117 "Tolerance to consider track parameters on surface"};
118 Gaudi::Property<unsigned>
m_pathLimit{
this,
"PathLimit", 50,
"Maximum path length to be considered during propagation in Acts m unit"};
120 Gaudi::Property<bool>
m_interactionMultiScatering{
this,
"InteractionMultiScatering",
false,
"Whether to consider multiple scattering in the interactor"};
121 Gaudi::Property<bool>
m_interactionEloss{
this,
"InteractionEloss",
false,
"Whether to consider energy loss in the interactor"};
122 Gaudi::Property<bool>
m_interactionRecord{
this,
"InteractionRecord",
false,
"Whether to record all material interactions"};
124 template<
typename OptionsType>
127 const Acts::MagneticFieldContext& mctx,
128 const Acts::BoundTrackParameters& startParameters,
129 Acts::Direction navDir,
130 double pathLimit)
const;