ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
detray::random_track_generator< track_t, generator_t > Class Template Reference

Generates track states with random momentum directions. More...

#include <detray/test/common/event_generator/random_track_generator.hpp>

Inheritance diagram for detray::random_track_generator< track_t, generator_t >:
[legend]
Collaboration diagram for detray::random_track_generator< track_t, generator_t >:
[legend]

Public Types

using configuration = random_track_generator_config<scalar_t>
 Configure how tracks are generated.
using iterator_t = iterator
 Iterator type used to enumerate generated tracks.
using track_type = track_t
 Track type produced by the generator.

Public Member Functions

constexpr random_track_generator ()=default
 Default constructor.
constexpr random_track_generator (const configuration &cfg)
 Construct from external configuration.
 random_track_generator (random_track_generator &&other) noexcept
 Move constructor.
 random_track_generator (std::size_t n_tracks_, darray< scalar_t, 2 > mom_range={1.f *unit< scalar_t >::GeV, 1.f *unit< scalar_t >::GeV}, scalar_t charge=-1.f *unit< scalar_t >::e)
 Paramtetrized constructor for quick construction of simple tasks.
auto begin () noexcept -> iterator
constexpr configuration & config ()
 Access the configuration.
auto end () noexcept -> iterator
constexpr auto size () const noexcept -> std::size_t

Detailed Description

template<typename track_t, typename generator_t = detail::random_numbers<dscalar<typename track_t::algebra_type>>>
class detray::random_track_generator< track_t, generator_t >

Generates track states with random momentum directions.

Generates the phi and theta angles of the track momentum according to a given random number distribution.

Template Parameters
track_tthe type of track parametrization that should be used.
generator_tsource of random numbers
Note
Since the random number generator might not be copy constructible, neither is this generator. The iterators hold a reference to the rand generator, which must not be invalidated during the iteration.
the random numbers are clamped to fit the phi/theta ranges. This can effect distribution mean etc.

Constructor & Destructor Documentation

◆ random_track_generator() [1/3]

template<typename track_t, typename generator_t = detail::random_numbers<dscalar<typename track_t::algebra_type>>>
detray::random_track_generator< track_t, generator_t >::random_track_generator ( const configuration & cfg)
explicitconstexpr

Construct from external configuration.

Parameters
cfgTrack generation configuration.

◆ random_track_generator() [2/3]

template<typename track_t, typename generator_t = detail::random_numbers<dscalar<typename track_t::algebra_type>>>
detray::random_track_generator< track_t, generator_t >::random_track_generator ( std::size_t n_tracks_,
darray< scalar_t, 2 > mom_range = {1.f * unit<scalar_t>::GeV, 1.f * unit<scalar_t>::GeV},
scalar_t charge = -1.f * unit<scalar_t>::e )
explicit

Paramtetrized constructor for quick construction of simple tasks.

Note
For more complex tasks, use the configuration type
Parameters
n_tracks_the number of steps in the theta space
mom_rangethe range of the track momentum (in GeV)
chargecharge of particle (e)

◆ random_track_generator() [3/3]

template<typename track_t, typename generator_t = detail::random_numbers<dscalar<typename track_t::algebra_type>>>
detray::random_track_generator< track_t, generator_t >::random_track_generator ( random_track_generator< track_t, generator_t > && other)
noexcept

Move constructor.

Parameters
otherGenerator to move from.

Member Function Documentation

◆ begin()

template<typename track_t, typename generator_t = detail::random_numbers<dscalar<typename track_t::algebra_type>>>
auto detray::random_track_generator< track_t, generator_t >::begin ( ) ->iterator
noexcept
Returns
the generator in initial state.
Iterator at the beginning of the generated tracks.
Note
the underlying random number generator has deleted copy constructor, so the iterator needs to be built from scratch

◆ config()

template<typename track_t, typename generator_t = detail::random_numbers<dscalar<typename track_t::algebra_type>>>
configuration & detray::random_track_generator< track_t, generator_t >::config ( )
constexpr

Access the configuration.

Returns
Mutable track generation configuration.

◆ end()

template<typename track_t, typename generator_t = detail::random_numbers<dscalar<typename track_t::algebra_type>>>
auto detray::random_track_generator< track_t, generator_t >::end ( ) ->iterator
noexcept
Returns
the generator in end state
Iterator past the final generated track.

◆ size()

template<typename track_t, typename generator_t = detail::random_numbers<dscalar<typename track_t::algebra_type>>>
auto detray::random_track_generator< track_t, generator_t >::size ( ) const->std::size_t
constexprnoexcept
Returns
the number of tracks that will be generated
Number of tracks configured for generation.