File ContinuousProcess.hpp

namespace ActsFatras
template<typename physics_t, typename input_particle_selector_t, typename output_particle_selector_t, typename child_particle_selector_t = output_particle_selector_t>
struct ContinuousProcess
#include <ActsFatras/Kernel/ContinuousProcess.hpp>

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

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 explicitely specified.

Template Parameters
  • physics_t – is the physics model type

  • input_particle_selector_t – is the input particle selector

  • output_particle_selector_t – is the output particle selector

  • child_particle_selector_t – is the child particle selector

Public Functions

template<typename generator_t>
inline bool operator()(generator_t &generator, const Acts::MaterialSlab &slab, Particle &particle, std::vector<Particle> &generated) const

Execute the physics process considering the configured selectors.

Parameters
  • generator[in] is the random number generator

  • slab[in] is the passed material

  • particle[inout] is the particle being updated

  • generated[out] is the container of generated particles

Template Parameters

generator_t – must be a RandomNumberEngine

Returns

Break condition, i.e. whether this process stops the propagation

Public Members

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.