ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
detray::actor::random_scatterer< algebra_t > Struct Template Reference

Actor that applies random energy loss and multiple scattering in material. More...

#include <detray/test/utils/random_scatterer.hpp>

Inheritance diagram for detray::actor::random_scatterer< algebra_t >:
[legend]
Collaboration diagram for detray::actor::random_scatterer< algebra_t >:
[legend]

Classes

struct  kernel
 Material store visitor. More...
struct  state
 Per-propagation state for random scattering and energy loss. More...

Public Types

using interaction_type = interaction<scalar_type>
 Material interaction calculator type.
using scalar_type = dscalar<algebra_t>
 Scalar type used for the simulation quantities.
using transform3_type = dtransform3D<algebra_t>
 3D transform type.
using vector3_type = dvector3D<algebra_t>
 3D vector type used for directions.

Public Member Functions

template<typename generator_t>
scalar_type attenuate (const scalar_type mpv, const scalar_type sigma, const scalar_type m0, const scalar_type p0, generator_t &generator) const
 Get the new momentum from the landau distribution.
template<typename propagator_state_t>
void operator() (state &simulator_state, propagator_state_t &prop_state, parameter_transporter_result< algebra_t > &res) const
 Apply the sampled material effects to the transported parameters.
template<typename generator_t>
vector3_type scatter (const vector3_type &dir, const scalar_type projected_scattering_angle, generator_t &generator) const
 Scatter the direction with projected scattering angle.

Detailed Description

template<concepts::algebra algebra_t>
struct detray::actor::random_scatterer< algebra_t >

Actor that applies random energy loss and multiple scattering in material.

Member Function Documentation

◆ attenuate()

template<concepts::algebra algebra_t>
template<typename generator_t>
scalar_type detray::actor::random_scatterer< algebra_t >::attenuate ( const scalar_type mpv,
const scalar_type sigma,
const scalar_type m0,
const scalar_type p0,
generator_t & generator ) const

Get the new momentum from the landau distribution.

Parameters
mpvMost probable energy loss.
sigmaEnergy loss scale.
m0Particle mass.
p0Initial momentum magnitude.
generatorRandom number generator.
Returns
Momentum magnitude after energy loss.

◆ operator()()

template<concepts::algebra algebra_t>
template<typename propagator_state_t>
void detray::actor::random_scatterer< algebra_t >::operator() ( state & simulator_state,
propagator_state_t & prop_state,
parameter_transporter_result< algebra_t > & res ) const

Apply the sampled material effects to the transported parameters.

Parameters
simulator_stateActor state with material effects and RNG.
prop_statePropagator state.
resParameter transport result to update.

◆ scatter()

template<concepts::algebra algebra_t>
template<typename generator_t>
vector3_type detray::actor::random_scatterer< algebra_t >::scatter ( const vector3_type & dir,
const scalar_type projected_scattering_angle,
generator_t & generator ) const

Scatter the direction with projected scattering angle.

Parameters
dirinput direction
projected_scattering_angleprojected scattering angle
generatorrandom generator
Returns
the new direction from random scattering