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
template<class generator_t>
bool run (generator_t &rng, Particle &particle, std::vector< Particle > &generatedParticles) const

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

◆ 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

Member Data Documentation

◆ physics

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

The physics interactions implementation.

◆ selectChildParticle

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

Child selection: if a generated child particle should be kept.

◆ selectInputParticle

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

Input selection: if this process applies to this particle.

◆ selectOutputParticle

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

Output selection: if the particle is still valid after the interaction.