ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
detray::propagator< stepper_t, navigator_t, actor_chain_t > Struct Template Reference

Templated propagator class, using a stepper and a navigator object in succession. More...

#include <detray/propagator/propagator.hpp>

Inheritance diagram for detray::propagator< stepper_t, navigator_t, actor_chain_t >:
[legend]
Collaboration diagram for detray::propagator< stepper_t, navigator_t, actor_chain_t >:
[legend]

Classes

struct  state_base
 Propagation that state aggregates a stepping and a navigation state. More...

Public Types

using actor_chain_type = actor_chain_t
 Chain of actors invoked during propagation.
using algebra_type = typename detector_type::algebra_type
 Algebra backend used by the detector.
using bound_track_parameters_type
 Bound track parameter representation accepted by the stepper.
using detector_type = typename navigator_type::detector_type
 Detector described by the navigator.
using free_track_parameters_type
 Free track parameter representation advanced by the stepper.
using intersection_type = typename navigator_type::intersection_type
 Intersection representation produced by the navigator.
using navigator_type = navigator_t
 Navigator implementation used to find geometry intersections.
using scalar_type = dscalar<algebra_type>
 Scalar type associated with the detector algebra.
using state = state_base<false>
 Owning propagation state type.
using stepper_type = stepper_t
 Stepper implementation used to advance the track.

Public Member Functions

constexpr propagator (const propagation::config &cfg)
 Construct from a propagator configuration.
template<bool is_owning>
bool finished (const state_base< is_owning > &propagation) const
 Propagate method finale: Return whether or not the propagation completed successfully.
template<bool is_owning>
auto is_paused (const state_base< is_owning > &propagation) const -> bool
template<bool is_owning>
std::string print (state_base< is_owning > &propagation) const
 Format propagation state for diagnostic output.
template<bool is_owning>
bool propagate (state_base< is_owning > &propagation)
 Overload for empty actor chain.
template<typename actor_states_t, bool is_owning>
requires (concepts::is_state_of<actor_states_t, actor_chain_type>)
bool propagate (state_base< is_owning > &propagation, actor_states_t actor_state_refs=dtuple<>{}) const
 Propagate method: Coordinates the calls of the stepper, navigator and all registered actors.
template<bool is_owning>
void resume (state_base< is_owning > &propagation) const
 Revive the propagation.

Public Attributes

const propagation::config & m_cfg
 Propagation and stepping configuration; lifetime must outlive this object.
navigator_t m_navigator {}
 Geometry navigation algorithm.
stepper_t m_stepper {}
 Track integration algorithm.
const actor_chain_type run_actors {}
 Register the actor types.

Detailed Description

template<typename stepper_t, typename navigator_t, concepts::actor_chain actor_chain_t>
struct detray::propagator< stepper_t, navigator_t, actor_chain_t >

Templated propagator class, using a stepper and a navigator object in succession.

Template Parameters
stepper_tfor the transport
navigator_tfor the navigation

Member Typedef Documentation

◆ bound_track_parameters_type

template<typename stepper_t, typename navigator_t, concepts::actor_chain actor_chain_t>
using detray::propagator< stepper_t, navigator_t, actor_chain_t >::bound_track_parameters_type
Initial value:
typename stepper_t::bound_track_parameters_type

Bound track parameter representation accepted by the stepper.

◆ free_track_parameters_type

template<typename stepper_t, typename navigator_t, concepts::actor_chain actor_chain_t>
using detray::propagator< stepper_t, navigator_t, actor_chain_t >::free_track_parameters_type
Initial value:
typename stepper_t::free_track_parameters_type

Free track parameter representation advanced by the stepper.

Constructor & Destructor Documentation

◆ propagator()

template<typename stepper_t, typename navigator_t, concepts::actor_chain actor_chain_t>
detray::propagator< stepper_t, navigator_t, actor_chain_t >::propagator ( const propagation::config & cfg)
explicitconstexpr

Construct from a propagator configuration.

Parameters
cfgPropagation configuration, retained by reference.

Member Function Documentation

◆ finished()

template<typename stepper_t, typename navigator_t, concepts::actor_chain actor_chain_t>
template<bool is_owning>
bool detray::propagator< stepper_t, navigator_t, actor_chain_t >::finished ( const state_base< is_owning > & propagation) const

Propagate method finale: Return whether or not the propagation completed successfully.

Parameters
propagationthe state of a propagation flow
Returns
propagation success.

◆ is_paused()

template<typename stepper_t, typename navigator_t, concepts::actor_chain actor_chain_t>
template<bool is_owning>
auto detray::propagator< stepper_t, navigator_t, actor_chain_t >::is_paused ( const state_base< is_owning > & propagation) const->bool
Returns
true if the
Parameters
propagationis suspended

◆ print()

template<typename stepper_t, typename navigator_t, concepts::actor_chain actor_chain_t>
template<bool is_owning>
std::string detray::propagator< stepper_t, navigator_t, actor_chain_t >::print ( state_base< is_owning > & propagation) const

Format propagation state for diagnostic output.

Parameters
propagationState to describe.
Returns
Human-readable status, navigation, and track information.

◆ propagate() [1/2]

template<typename stepper_t, typename navigator_t, concepts::actor_chain actor_chain_t>
template<bool is_owning>
bool detray::propagator< stepper_t, navigator_t, actor_chain_t >::propagate ( state_base< is_owning > & propagation)

Overload for empty actor chain.

Parameters
propagationState of the propagation flow.
Returns
True if propagation completed or was paused; false if aborted.

◆ propagate() [2/2]

template<typename stepper_t, typename navigator_t, concepts::actor_chain actor_chain_t>
template<typename actor_states_t, bool is_owning>
requires (concepts::is_state_of<actor_states_t, actor_chain_type>)
bool detray::propagator< stepper_t, navigator_t, actor_chain_t >::propagate ( state_base< is_owning > & propagation,
actor_states_t actor_state_refs = dtuple<>{} ) const

Propagate method: Coordinates the calls of the stepper, navigator and all registered actors.

Parameters
propagationthe state of a propagation flow
actor_state_refstuple containing references to the actor states
Returns
propagation success.

◆ resume()

template<typename stepper_t, typename navigator_t, concepts::actor_chain actor_chain_t>
template<bool is_owning>
void detray::propagator< stepper_t, navigator_t, actor_chain_t >::resume ( state_base< is_owning > & propagation) const

Revive the propagation.

Parameters
propagationState to resume.