12#include "detray/definitions/algebra.hpp"
13#include "detray/definitions/detail/qualifiers.hpp"
14#include "detray/definitions/units.hpp"
15#include "detray/utils/axis_rotation.hpp"
16#include "detray/utils/unit_vectors.hpp"
24template <concepts::algebra algebra_t>
38 template <
typename generator_t>
41 generator_t& generator)
const {
46 : std::normal_distribution<scalar_type>(0.f, angle)(generator)};
48 const scalar_type r_phi{std::uniform_real_distribution<scalar_type>(
Detray include(s).
Definition array_operators.hpp:18
get_scalar_t< A, T > dscalar
Scalar type for algebra A and value type T.
Definition algebra.hpp:64
get_vector3D_t< A, T > dvector3D
Three-dimensional vector type for algebra A and value type T.
Definition algebra.hpp:80
Helper struct to rotate a vector around a given axis and angle counterclockwisely.
Definition axis_rotation.hpp:21
static constexpr scalar_t pi
π
Definition units.hpp:136
Generates a random direction after multiple scattering.
Definition scattering_helper.hpp:25
dvector3D< algebra_t > vector3_type
3D vector type used for directions.
Definition scattering_helper.hpp:30
dscalar< algebra_t > scalar_type
Scalar type used for angles.
Definition scattering_helper.hpp:28
vector3_type operator()(const vector3_type &dir, const scalar_type angle, generator_t &generator) const
Operator to scatter the direction with scattering angle.
Definition scattering_helper.hpp:39
Build the curvilinear unit basis perpendicular to a three-dimensional direction.
Definition unit_vectors.hpp:22
vector3_t make_curvilinear_unit_u(const vector3_t &dir)
Construct the first curvilinear unit vector U for the given direction.
Definition unit_vectors.hpp:31