File indexing completed on 2025-07-11 07:49:53
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 using options_type = propagator_options_t;
0039 using stepper_state_type = stepper_state_t;
0040 using navigator_state_type = navigator_state_t;
0041
0042
0043
0044
0045
0046
0047
0048
0049 PropagatorState(const propagator_options_t& topts, stepper_state_t steppingIn,
0050 navigator_state_t navigationIn)
0051 : geoContext(topts.geoContext),
0052 options(topts),
0053 stepping{std::move(steppingIn)},
0054 navigation{std::move(navigationIn)} {}
0055
0056 using detail::Extendable<extension_state_t...>::get;
0057 using detail::Extendable<extension_state_t...>::tuple;
0058
0059
0060 std::reference_wrapper<const GeometryContext> geoContext;
0061
0062
0063 propagator_options_t options;
0064
0065
0066 PropagatorStage stage = PropagatorStage::invalid;
0067
0068
0069 Vector3 position = Vector3::Zero();
0070
0071
0072 Vector3 direction = Vector3::Zero();
0073
0074
0075 stepper_state_t stepping;
0076
0077
0078 navigator_state_t navigation;
0079
0080
0081 std::size_t steps = 0;
0082
0083
0084 double pathLength = 0.;
0085
0086
0087 PropagatorStatistics statistics;
0088 };
0089
0090 }