12#include "detray/definitions/algebra.hpp"
13#include "detray/definitions/detail/qualifiers.hpp"
14#include "detray/propagator/actors/parameter_updater.hpp"
15#include "detray/propagator/base_actor.hpp"
16#include "detray/tracks/bound_track_parameters.hpp"
17#include "detray/tracks/free_track_parameters.hpp"
20#include "detray/test/utils/data_record.hpp"
22namespace detray::actor {
25template <concepts::algebra algebra_t,
template <
typename...>
class vector_t>
32 friend struct step_tracer;
39 explicit state(vecmem::memory_resource& resource) : m_steps(&resource) {}
43 explicit state(vector_t<step_data_t>&& steps) : m_steps(std::move(steps)) {}
58 vector_t<step_data_t> m_steps;
65 template <
typename propagator_state_t>
67 propagator_state_t& prop_state)
const {
68 tracer_state.m_steps.push_back(collect_data(prop_state));
76 template <
typename propagator_state_t>
78 state& tracer_state, propagator_state_t& prop_state,
80 const auto& navigation = prop_state.navigation();
81 assert(navigation.is_on_surface());
85 if (!tracer_state.m_steps.empty() &&
86 navigation.geometry_identifier() ==
87 tracer_state.m_steps.back().identifier()) {
90 tracer_state.m_steps.push_back(
97 template <
typename propagator_state_t>
99 propagator_state_t& prop_state,
101 const auto& navigation = prop_state.navigation();
102 const auto& stepping = prop_state.stepping();
104 const auto geo_id{navigation.is_on_surface()
105 ? navigation.geometry_identifier()
108 return {stepping.step_size(),
109 stepping.path_length(),
110 stepping.n_total_trials(),
111 navigation.direction(),
115 stepping.transport_jacobian()};
Unique identifier for geometry objects, based on the ACTS GeometryIdentifier.
Definition identifier.hpp:36
Result of the param. transporter: bound track parameters at dest. sf.
Definition parameter_updater.hpp:210
constexpr const bound_track_parameters< algebra_t > & destination_params() const
Definition parameter_updater.hpp:236
Actor state that collects the data.
Definition step_tracer.hpp:31
state(vector_t< step_data_t > &&steps)
Construct from externally provided vector for the.
Definition step_tracer.hpp:43
auto && release_step_data() &&
Move the recorded step data out of the actor.
Definition step_tracer.hpp:54
state(vecmem::memory_resource &resource)
Construct the vector containers with a given resource.
Definition step_tracer.hpp:39
const auto & get_step_data() const
Access to the recorded step data of every step along the track - const.
Definition step_tracer.hpp:49
Collect information at every step.
Definition step_tracer.hpp:26
void operator()(state &tracer_state, propagator_state_t &prop_state, const parameter_transporter_result< algebra_t > &res) const
Collect only when transport to bound track parameters happens.
Definition step_tracer.hpp:77
step_record< algebra_t > step_data_t
Type used to store one step's data.
Definition step_tracer.hpp:28
void operator()(state &tracer_state, propagator_state_t &prop_state) const
Collect data at every step.
Definition step_tracer.hpp:66
Base class actor implementation.
Definition base_actor.hpp:20
Combine the bound track parameter vector with the covariance and associated surface.
Definition bound_track_parameters.hpp:297
Data for a single step.
Definition data_record.hpp:174