Celeritas
0.5.0-86+4a8eea4
|
Simulate particle emission from atomic deexcitation. More...
#include <AtomicRelaxation.hh>
Classes | |
struct | result_type |
Public Types | |
Type aliases | |
using | Energy = units::MevEnergy |
Public Member Functions | |
CELER_FUNCTION | AtomicRelaxation (AtomicRelaxParamsRef const &shared, CutoffView const &cutoffs, ElementId el_id, SubshellId shell_id, Span< Secondary > secondaries, Span< SubshellId > vacancies) |
Construct with shared and state data. More... | |
template<class Engine > | |
CELER_FUNCTION result_type | operator() (Engine &rng) |
Simulate atomic relaxation with an initial vacancy in the given shell ID. | |
template<class Engine > | |
CELER_FUNCTION auto | sample_transition (AtomicRelaxSubshell const &shell, Engine &rng) -> TransitionId |
Sample an atomic transition. More... | |
Simulate particle emission from atomic deexcitation.
The EADL radiative and non-radiative transition data is used to simulate the emission of fluorescence photons and (optionally) Auger electrons given an initial shell vacancy created by a primary process.
|
inline |
Construct with shared and state data.
The secondaries must have enough storage allocated for particles produced in atomic relaxation and the vacancies must have enough storage allocated for the stack of subshell IDs: this should be handled in code before construction.
The precondition of the element having relaxation data is satisfied by the AtomicRelaxationHelper – it is only "true" if a distribution can be emitted.
|
inline |
Sample an atomic transition.
TODO: refactor to use a Selector-like algorithm that allows a "remainder" that indicates "not sampled".