ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
ActsFatras::Simulation< charged_selector_t, charged_simulator_t, neutral_selector_t, neutral_simulator_t > Struct Template Reference

Multi-particle/event simulation. More...

#include <ActsFatras/Kernel/Simulation.hpp>

Public Member Functions

 Simulation (charged_simulator_t &&charged_, neutral_simulator_t &&neutral_)
 Construct from the single charged/neutral particle simulators.
template<typename generator_t, typename input_particles_t, typename output_particles_t, typename hits_t>
Acts::Result< std::vector< FailedParticle > > simulate (const Acts::GeometryContext &geoCtx, const Acts::MagneticFieldContext &magCtx, generator_t &generator, const input_particles_t &inputParticles, output_particles_t &simulatedParticlesInitial, output_particles_t &simulatedParticlesFinal, hits_t &hits) const
 Simulate multiple particles and generated secondaries.

Public Attributes

charged_simulator_t charged
 Simulator for charged particles.
neutral_simulator_t neutral
 Simulator for neutral particles.
charged_selector_t selectCharged
 Selector for charged particle simulation.
neutral_selector_t selectNeutral
 Selector for neutral particle simulation.

Detailed Description

template<typename charged_selector_t, typename charged_simulator_t, typename neutral_selector_t, typename neutral_simulator_t>
struct ActsFatras::Simulation< charged_selector_t, charged_simulator_t, neutral_selector_t, neutral_simulator_t >

Multi-particle/event simulation.

Template Parameters
charged_selector_tCallable selector type for charged particles
charged_simulator_tSingle particle simulator for charged particles
neutral_selector_tCallable selector type for neutral particles
neutral_simulator_tSingle particle simulator for neutral particles

The selector types for charged and neutral particles do not need to check for the particle charge. This is done automatically by the simulator to ensure consistency.

Constructor & Destructor Documentation

◆ Simulation()

template<typename charged_selector_t, typename charged_simulator_t, typename neutral_selector_t, typename neutral_simulator_t>
ActsFatras::Simulation< charged_selector_t, charged_simulator_t, neutral_selector_t, neutral_simulator_t >::Simulation ( charged_simulator_t && charged_,
neutral_simulator_t && neutral_ )

Construct from the single charged/neutral particle simulators.

Parameters
charged_Simulator for charged particles
neutral_Simulator for neutral particles

Member Function Documentation

◆ simulate()

template<typename charged_selector_t, typename charged_simulator_t, typename neutral_selector_t, typename neutral_simulator_t>
template<typename generator_t, typename input_particles_t, typename output_particles_t, typename hits_t>
Acts::Result< std::vector< FailedParticle > > ActsFatras::Simulation< charged_selector_t, charged_simulator_t, neutral_selector_t, neutral_simulator_t >::simulate ( const Acts::GeometryContext & geoCtx,
const Acts::MagneticFieldContext & magCtx,
generator_t & generator,
const input_particles_t & inputParticles,
output_particles_t & simulatedParticlesInitial,
output_particles_t & simulatedParticlesFinal,
hits_t & hits ) const

Simulate multiple particles and generated secondaries.

Parameters
geoCtxis the geometry context to access surface geometries
magCtxis the magnetic field context to access field values
generatoris the random number generator
inputParticlescontains all particles that should be simulated
simulatedParticlesInitialcontains initial particle states
simulatedParticlesFinalcontains final particle states
hitscontains all generated hits
Return values
Acts::Result::Errorif there is a fundamental issue
Acts::Result::Successwith all particles that failed to simulate
Warning
Particle-hit association is based on particle ids generated during the simulation. This requires that all input particles must have generation and sub-particle number set to zero.
Note
Parameter edge-cases can lead to errors in the underlying propagator and thus to particles that fail to simulate. Here, full events are simulated and the failure to simulate one particle should not be considered a general failure of the simulator. Instead, a list of particles that fail to simulate is provided to the user. It is the users responsibility to handle them.
Failed particles are removed from the regular output, i.e. they do not appear in the simulated particles containers nor do they generate hits.

This takes all input particles and simulates those passing the selection using the appropriate simulator. All selected particle states including additional ones generated from interactions are stored in separate output containers; both the initial state at the production vertex and the final state after propagation are stored. Hits generated from selected input and generated particles are stored in the hit container.

Template Parameters
generator_tis the type of the random number generator
input_particles_tis a Container for particles
output_particles_tis a SequenceContainer for particles
hits_tis a SequenceContainer for hits

Member Data Documentation

◆ charged

template<typename charged_selector_t, typename charged_simulator_t, typename neutral_selector_t, typename neutral_simulator_t>
charged_simulator_t ActsFatras::Simulation< charged_selector_t, charged_simulator_t, neutral_selector_t, neutral_simulator_t >::charged

Simulator for charged particles.

◆ neutral

template<typename charged_selector_t, typename charged_simulator_t, typename neutral_selector_t, typename neutral_simulator_t>
neutral_simulator_t ActsFatras::Simulation< charged_selector_t, charged_simulator_t, neutral_selector_t, neutral_simulator_t >::neutral

Simulator for neutral particles.

◆ selectCharged

template<typename charged_selector_t, typename charged_simulator_t, typename neutral_selector_t, typename neutral_simulator_t>
charged_selector_t ActsFatras::Simulation< charged_selector_t, charged_simulator_t, neutral_selector_t, neutral_simulator_t >::selectCharged

Selector for charged particle simulation.

◆ selectNeutral

template<typename charged_selector_t, typename charged_simulator_t, typename neutral_selector_t, typename neutral_simulator_t>
neutral_selector_t ActsFatras::Simulation< charged_selector_t, charged_simulator_t, neutral_selector_t, neutral_simulator_t >::selectNeutral

Selector for neutral particle simulation.