ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
detray::rk_stepper< magnetic_field_t, algebra_t, constraint_t, policy_t, inspector_t, flags_v >::state Struct Reference

Per-track integration state maintained by the stepper. More...

#include <detray/propagator/rk_stepper.hpp>

Inheritance diagram for detray::rk_stepper< magnetic_field_t, algebra_t, constraint_t, policy_t, inspector_t, flags_v >::state:
[legend]
Collaboration diagram for detray::rk_stepper< magnetic_field_t, algebra_t, constraint_t, policy_t, inspector_t, flags_v >::state:
[legend]

Public Types

using base_state
 Base state holding common track and transport data.

Public Member Functions

template<concepts::detector detector_t>
 state (const bound_track_parameters_type &bound_params, const magnetic_field_t &mag_field, const detector_t &det, const typename detector_t::geometry_context &ctx)
 Construct from bound parameters, field, and detector geometry.
 state (const free_track_parameters_type &t, const magnetic_field_t &mag_field)
 Construct from free parameters and a magnetic field.
scalar_type d2qopdsdqop (const scalar_type qop, const material< scalar_type > *vol_mat_ptr) const
 Evaluate d(d(qop)/ds)dqop.
scalar_type dqopds (const material< scalar_type > *vol_mat_ptr) const
 Evaluate d(qop)/ds.
void dqopds (const scalar_type &s)
 Set d(qop)/ds.
scalar_type dqopds (const scalar_type qop, const material< scalar_type > *vol_mat_ptr) const
 Evaluate the charge-over-momentum derivative at a supplied value.
vector3_type dtds () const
 Evaluate dtds, where t is the unit tangential direction.
void dtds (const vector3_type &v)
 Set dtds, where t is the unit tangential direction.
const magnetic_field_type & field () const
scalar_type next_step_size () const
template<typename... Args>
void run_inspector (const stepping::config &cfg, const char *message, const scalar_type dist, Args &&... args)
 Call the stepping inspector.
void set_next_step_size (const scalar_type step)
 Set the next step size.

Static Public Attributes

static constexpr const stepping::id id = stepping::id::e_rk
 Identifier for Runge-Kutta stepping.

Detailed Description

template<typename magnetic_field_t, concepts::algebra algebra_t, typename constraint_t = unconstrained_step<dscalar<algebra_t>>, typename policy_t = stepper_rk_policy<dscalar<algebra_t>>, typename inspector_t = stepping::void_inspector, std::uint32_t flags_v = (static_cast<std::uint32_t>( rk_stepper_flags::e_allow_covariance_transport) | static_cast<std::uint32_t>( rk_stepper_flags::e_allow_field_gradient))>
struct detray::rk_stepper< magnetic_field_t, algebra_t, constraint_t, policy_t, inspector_t, flags_v >::state

Per-track integration state maintained by the stepper.

Member Typedef Documentation

◆ base_state

template<typename magnetic_field_t, concepts::algebra algebra_t, typename constraint_t = unconstrained_step<dscalar<algebra_t>>, typename policy_t = stepper_rk_policy<dscalar<algebra_t>>, typename inspector_t = stepping::void_inspector, std::uint32_t flags_v = (static_cast<std::uint32_t>( rk_stepper_flags::e_allow_covariance_transport) | static_cast<std::uint32_t>( rk_stepper_flags::e_allow_field_gradient))>
using detray::rk_stepper< magnetic_field_t, algebra_t, constraint_t, policy_t, inspector_t, flags_v >::state::base_state
Initial value:
typename base_type::template state<transport_jacobian_type>
state(const free_track_parameters_type &t, const magnetic_field_t &mag_field)
Construct from free parameters and a magnetic field.
Definition rk_stepper.hpp:121

Base state holding common track and transport data.

Constructor & Destructor Documentation

◆ state() [1/2]

template<typename magnetic_field_t, concepts::algebra algebra_t, typename constraint_t = unconstrained_step<dscalar<algebra_t>>, typename policy_t = stepper_rk_policy<dscalar<algebra_t>>, typename inspector_t = stepping::void_inspector, std::uint32_t flags_v = (static_cast<std::uint32_t>( rk_stepper_flags::e_allow_covariance_transport) | static_cast<std::uint32_t>( rk_stepper_flags::e_allow_field_gradient))>
detray::rk_stepper< magnetic_field_t, algebra_t, constraint_t, policy_t, inspector_t, flags_v >::state::state ( const free_track_parameters_type & t,
const magnetic_field_t & mag_field )

Construct from free parameters and a magnetic field.

Parameters
tInitial free track parameters.
mag_fieldMagnetic field used for integration.

◆ state() [2/2]

template<typename magnetic_field_t, concepts::algebra algebra_t, typename constraint_t = unconstrained_step<dscalar<algebra_t>>, typename policy_t = stepper_rk_policy<dscalar<algebra_t>>, typename inspector_t = stepping::void_inspector, std::uint32_t flags_v = (static_cast<std::uint32_t>( rk_stepper_flags::e_allow_covariance_transport) | static_cast<std::uint32_t>( rk_stepper_flags::e_allow_field_gradient))>
template<concepts::detector detector_t>
detray::rk_stepper< magnetic_field_t, algebra_t, constraint_t, policy_t, inspector_t, flags_v >::state::state ( const bound_track_parameters_type & bound_params,
const magnetic_field_t & mag_field,
const detector_t & det,
const typename detector_t::geometry_context & ctx )

Construct from bound parameters, field, and detector geometry.

Parameters
bound_paramsInitial bound track parameters.
mag_fieldMagnetic field used for integration.
detDetector used to resolve bound parameters.
ctxGeometry context for detector transforms.

Member Function Documentation

◆ d2qopdsdqop()

template<typename magnetic_field_t, concepts::algebra algebra_t, typename constraint_t = unconstrained_step<dscalar<algebra_t>>, typename policy_t = stepper_rk_policy<dscalar<algebra_t>>, typename inspector_t = stepping::void_inspector, std::uint32_t flags_v = (static_cast<std::uint32_t>( rk_stepper_flags::e_allow_covariance_transport) | static_cast<std::uint32_t>( rk_stepper_flags::e_allow_field_gradient))>
scalar_type detray::rk_stepper< magnetic_field_t, algebra_t, constraint_t, policy_t, inspector_t, flags_v >::state::d2qopdsdqop ( const scalar_type qop,
const material< scalar_type > * vol_mat_ptr ) const

Evaluate d(d(qop)/ds)dqop.

Parameters
qopCharge-over-momentum at which to evaluate.
vol_mat_ptrMaterial in the current volume, or null in vacuum.
Returns
Derivative of the charge-over-momentum derivative.

◆ dqopds() [1/3]

template<typename magnetic_field_t, concepts::algebra algebra_t, typename constraint_t = unconstrained_step<dscalar<algebra_t>>, typename policy_t = stepper_rk_policy<dscalar<algebra_t>>, typename inspector_t = stepping::void_inspector, std::uint32_t flags_v = (static_cast<std::uint32_t>( rk_stepper_flags::e_allow_covariance_transport) | static_cast<std::uint32_t>( rk_stepper_flags::e_allow_field_gradient))>
scalar_type detray::rk_stepper< magnetic_field_t, algebra_t, constraint_t, policy_t, inspector_t, flags_v >::state::dqopds ( const material< scalar_type > * vol_mat_ptr) const

Evaluate d(qop)/ds.

Parameters
vol_mat_ptrMaterial in the current volume, or null in vacuum.
Returns
Derivative of charge-over-momentum with path length.

◆ dqopds() [2/3]

template<typename magnetic_field_t, concepts::algebra algebra_t, typename constraint_t = unconstrained_step<dscalar<algebra_t>>, typename policy_t = stepper_rk_policy<dscalar<algebra_t>>, typename inspector_t = stepping::void_inspector, std::uint32_t flags_v = (static_cast<std::uint32_t>( rk_stepper_flags::e_allow_covariance_transport) | static_cast<std::uint32_t>( rk_stepper_flags::e_allow_field_gradient))>
void detray::rk_stepper< magnetic_field_t, algebra_t, constraint_t, policy_t, inspector_t, flags_v >::state::dqopds ( const scalar_type & s)

Set d(qop)/ds.

Parameters
sDerivative value.

◆ dqopds() [3/3]

template<typename magnetic_field_t, concepts::algebra algebra_t, typename constraint_t = unconstrained_step<dscalar<algebra_t>>, typename policy_t = stepper_rk_policy<dscalar<algebra_t>>, typename inspector_t = stepping::void_inspector, std::uint32_t flags_v = (static_cast<std::uint32_t>( rk_stepper_flags::e_allow_covariance_transport) | static_cast<std::uint32_t>( rk_stepper_flags::e_allow_field_gradient))>
scalar_type detray::rk_stepper< magnetic_field_t, algebra_t, constraint_t, policy_t, inspector_t, flags_v >::state::dqopds ( const scalar_type qop,
const material< scalar_type > * vol_mat_ptr ) const

Evaluate the charge-over-momentum derivative at a supplied value.

Parameters
qopCharge-over-momentum at which to evaluate.
vol_mat_ptrMaterial in the current volume, or null in vacuum.
Returns
Derivative of charge-over-momentum with path length.

◆ dtds() [1/2]

template<typename magnetic_field_t, concepts::algebra algebra_t, typename constraint_t = unconstrained_step<dscalar<algebra_t>>, typename policy_t = stepper_rk_policy<dscalar<algebra_t>>, typename inspector_t = stepping::void_inspector, std::uint32_t flags_v = (static_cast<std::uint32_t>( rk_stepper_flags::e_allow_covariance_transport) | static_cast<std::uint32_t>( rk_stepper_flags::e_allow_field_gradient))>
vector3_type detray::rk_stepper< magnetic_field_t, algebra_t, constraint_t, policy_t, inspector_t, flags_v >::state::dtds ( ) const

Evaluate dtds, where t is the unit tangential direction.

Returns
Direction derivative at the current track state.

◆ dtds() [2/2]

template<typename magnetic_field_t, concepts::algebra algebra_t, typename constraint_t = unconstrained_step<dscalar<algebra_t>>, typename policy_t = stepper_rk_policy<dscalar<algebra_t>>, typename inspector_t = stepping::void_inspector, std::uint32_t flags_v = (static_cast<std::uint32_t>( rk_stepper_flags::e_allow_covariance_transport) | static_cast<std::uint32_t>( rk_stepper_flags::e_allow_field_gradient))>
void detray::rk_stepper< magnetic_field_t, algebra_t, constraint_t, policy_t, inspector_t, flags_v >::state::dtds ( const vector3_type & v)

Set dtds, where t is the unit tangential direction.

Parameters
vDirection derivative.

◆ field()

template<typename magnetic_field_t, concepts::algebra algebra_t, typename constraint_t = unconstrained_step<dscalar<algebra_t>>, typename policy_t = stepper_rk_policy<dscalar<algebra_t>>, typename inspector_t = stepping::void_inspector, std::uint32_t flags_v = (static_cast<std::uint32_t>( rk_stepper_flags::e_allow_covariance_transport) | static_cast<std::uint32_t>( rk_stepper_flags::e_allow_field_gradient))>
const magnetic_field_type & detray::rk_stepper< magnetic_field_t, algebra_t, constraint_t, policy_t, inspector_t, flags_v >::state::field ( ) const
Returns
the B-field view

◆ next_step_size()

template<typename magnetic_field_t, concepts::algebra algebra_t, typename constraint_t = unconstrained_step<dscalar<algebra_t>>, typename policy_t = stepper_rk_policy<dscalar<algebra_t>>, typename inspector_t = stepping::void_inspector, std::uint32_t flags_v = (static_cast<std::uint32_t>( rk_stepper_flags::e_allow_covariance_transport) | static_cast<std::uint32_t>( rk_stepper_flags::e_allow_field_gradient))>
scalar_type detray::rk_stepper< magnetic_field_t, algebra_t, constraint_t, policy_t, inspector_t, flags_v >::state::next_step_size ( ) const
Returns
the next step size to be taken on the following step.

◆ run_inspector()

template<typename magnetic_field_t, concepts::algebra algebra_t, typename constraint_t = unconstrained_step<dscalar<algebra_t>>, typename policy_t = stepper_rk_policy<dscalar<algebra_t>>, typename inspector_t = stepping::void_inspector, std::uint32_t flags_v = (static_cast<std::uint32_t>( rk_stepper_flags::e_allow_covariance_transport) | static_cast<std::uint32_t>( rk_stepper_flags::e_allow_field_gradient))>
template<typename... Args>
void detray::rk_stepper< magnetic_field_t, algebra_t, constraint_t, policy_t, inspector_t, flags_v >::state::run_inspector ( const stepping::config & cfg,
const char * message,
const scalar_type dist,
Args &&... args )

Call the stepping inspector.

Parameters
cfgStepping configuration.
messageDiagnostic label.
distDistance to the next surface.
argsAdditional inspector-specific data.

◆ set_next_step_size()

template<typename magnetic_field_t, concepts::algebra algebra_t, typename constraint_t = unconstrained_step<dscalar<algebra_t>>, typename policy_t = stepper_rk_policy<dscalar<algebra_t>>, typename inspector_t = stepping::void_inspector, std::uint32_t flags_v = (static_cast<std::uint32_t>( rk_stepper_flags::e_allow_covariance_transport) | static_cast<std::uint32_t>( rk_stepper_flags::e_allow_field_gradient))>
void detray::rk_stepper< magnetic_field_t, algebra_t, constraint_t, policy_t, inspector_t, flags_v >::state::set_next_step_size ( const scalar_type step)

Set the next step size.

Parameters
stepSigned next step size.