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

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

#include <ActsFatras/Kernel/ContinuousProcess.hpp>

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

Public Member Functions

template<typename generator_t>
bool operator() (generator_t &generator, const Acts::MaterialSlab &slab, Particle &particle, std::vector< Particle > &generated) const
 Execute the physics process considering the configured selectors.

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::ContinuousProcessConcept physics_t, typename input_particle_selector_t, typename output_particle_selector_t, typename child_particle_selector_t = output_particle_selector_t>
struct ActsFatras::ContinuousProcess< physics_t, input_particle_selector_t, output_particle_selector_t, child_particle_selector_t >

A continuous 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 signature

<Particle Container>
operator()(
    generator_t& generator,
    const Acts::MaterialSlab& slab,
    Particle& particle) const

The return type 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

◆ operator()()

template<detail::ContinuousProcessConcept physics_t, typename input_particle_selector_t, typename output_particle_selector_t, typename child_particle_selector_t = output_particle_selector_t>
template<typename generator_t>
bool ActsFatras::ContinuousProcess< physics_t, input_particle_selector_t, output_particle_selector_t, child_particle_selector_t >::operator() ( generator_t & generator,
const Acts::MaterialSlab & slab,
Particle & particle,
std::vector< Particle > & generated ) const

Execute the physics process considering the configured selectors.

Parameters
[in]generatoris the random number generator
[in]slabis the passed material
[in,out]particleis the particle being updated
[out]generatedis the container of generated particles
Returns
Break condition, i.e. whether this process stops the propagation
Template Parameters
generator_tmust be a RandomNumberEngine

Member Data Documentation

◆ physics

template<detail::ContinuousProcessConcept physics_t, typename input_particle_selector_t, typename output_particle_selector_t, typename child_particle_selector_t = output_particle_selector_t>
physics_t ActsFatras::ContinuousProcess< physics_t, input_particle_selector_t, output_particle_selector_t, child_particle_selector_t >::physics

The physics interactions implementation.

◆ selectChildParticle

template<detail::ContinuousProcessConcept 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::ContinuousProcess< 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::ContinuousProcessConcept 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::ContinuousProcess< 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::ContinuousProcessConcept 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::ContinuousProcess< 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.