File indexing completed on 2025-10-14 07:59:58
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/Definitions/Algebra.hpp"
0012 #include "Acts/Geometry/GeometryContext.hpp"
0013 #include "Acts/Propagator/PropagatorStatistics.hpp"
0014 #include "Acts/Utilities/detail/Extendable.hpp"
0015
0016 #include <functional>
0017
0018 namespace Acts {
0019
0020
0021 enum class PropagatorStage {
0022 invalid,
0023 prePropagation,
0024 postPropagation,
0025 preStep,
0026 postStep,
0027 };
0028
0029
0030
0031
0032
0033
0034
0035 template <typename propagator_options_t, typename stepper_state_t,
0036 typename navigator_state_t, typename... extension_state_t>
0037 struct PropagatorState : private detail::Extendable<extension_state_t...> {
0038
0039 using options_type = propagator_options_t;
0040
0041 using stepper_state_type = stepper_state_t;
0042
0043 using navigator_state_type = navigator_state_t;
0044
0045
0046
0047
0048
0049
0050
0051
0052 PropagatorState(const propagator_options_t& topts, stepper_state_t steppingIn,
0053 navigator_state_t navigationIn)
0054 : geoContext(topts.geoContext),
0055 options(topts),
0056 stepping{std::move(steppingIn)},
0057 navigation{std::move(navigationIn)} {}
0058
0059 using detail::Extendable<extension_state_t...>::get;
0060 using detail::Extendable<extension_state_t...>::tuple;
0061
0062
0063 std::reference_wrapper<const GeometryContext> geoContext;
0064
0065
0066 propagator_options_t options;
0067
0068
0069 PropagatorStage stage = PropagatorStage::invalid;
0070
0071
0072 Vector3 position = Vector3::Zero();
0073
0074
0075 Vector3 direction = Vector3::Zero();
0076
0077
0078 stepper_state_t stepping;
0079
0080
0081 navigator_state_t navigation;
0082
0083
0084 std::size_t steps = 0;
0085
0086
0087 double pathLength = 0.;
0088
0089
0090 PropagatorStatistics statistics;
0091 };
0092
0093 }