ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
ActsFatras::PointLikeProcess< physics_t, input_particle_selector_t, output_particle_selector_t, child_particle_selector_t > Struct Template Reference

A point like simulation process based on a physics model plus selectors. More...

#include <ActsFatras/Kernel/PointLikeProcess.hpp>

Inheritance diagram for ActsFatras::PointLikeProcess< physics_t, input_particle_selector_t, output_particle_selector_t, child_particle_selector_t >:
[legend]
Collaboration diagram for ActsFatras::PointLikeProcess< physics_t, input_particle_selector_t, output_particle_selector_t, child_particle_selector_t >:
[legend]

Public Member Functions

template<class generator_t>
std::pair< double, double > generatePathLimits (generator_t &generator, const Particle &particle) const
 Generate path limits for the process.
template<class generator_t>
bool run (generator_t &rng, Particle &particle, std::vector< Particle > &generatedParticles) const
 Run the process.

Public Attributes

physics_t physics
 The physics interactions implementation.
child_particle_selector_t selectChildParticle
 Child selection: if a generated child particle should be kept.
input_particle_selector_t selectInputParticle
 Input selection: if this process applies to this particle.
output_particle_selector_t selectOutputParticle
 Output selection: if the particle is still valid after the interaction.

Detailed Description

template<detail::PointLikeProcessConcept physics_t, typename input_particle_selector_t, typename output_particle_selector_t, typename child_particle_selector_t = output_particle_selector_t>
struct ActsFatras::PointLikeProcess< physics_t, input_particle_selector_t, output_particle_selector_t, child_particle_selector_t >

A point like simulation process based on a physics model plus selectors.

Template Parameters
physics_tis the physics model type
input_particle_selector_tis the input particle selector
output_particle_selector_tis the output particle selector
child_particle_selector_tis the child particle selector

The physics model type must provide a call operator with the following two member functions

// generate X0/L0 limits
template <typename generator_t>
std::pair<Scalar, Scalar>
generatePathLimits(
    generator& rng,
    const Particle& particle) const

// run the process simulation
template <typename generator_t>
bool
run(
    generator_t& rng,
    Particle& particle,
    std::vector<Particle>& generatedParticles) const

The return type of generatePathLimits() can be any Container with Particle elements.

The input selector defines whether the process is applied while the output selector defines a break condition, i.e. whether to continue simulating the particle propagation. The child selector is used to filter the generated child particles.

Note
The output and child particle selectors are identical unless the child particle selector is explicitly specified.

Member Function Documentation

◆ generatePathLimits()

template<detail::PointLikeProcessConcept physics_t, typename input_particle_selector_t, typename output_particle_selector_t, typename child_particle_selector_t = output_particle_selector_t>
template<class generator_t>
std::pair< double, double > ActsFatras::PointLikeProcess< physics_t, input_particle_selector_t, output_particle_selector_t, child_particle_selector_t >::generatePathLimits ( generator_t & generator,
const Particle & particle ) const

Generate path limits for the process.

Parameters
generatorRandom number generator
particleInput particle
Returns
Pair of minimum and maximum path limits

◆ run()

template<detail::PointLikeProcessConcept physics_t, typename input_particle_selector_t, typename output_particle_selector_t, typename child_particle_selector_t = output_particle_selector_t>
template<class generator_t>
bool ActsFatras::PointLikeProcess< physics_t, input_particle_selector_t, output_particle_selector_t, child_particle_selector_t >::run ( generator_t & rng,
Particle & particle,
std::vector< Particle > & generatedParticles ) const

Run the process.

Parameters
rngRandom number generator
particleInput particle
generatedParticlesOutput vector of generated particles
Returns
True if process was applied