Celeritas  0.5.0-56+6b053cd
Classes | Public Member Functions | List of all members
celeritas::AtomicRelaxation Class Reference

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

Detailed Description

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.

Constructor & Destructor Documentation

◆ AtomicRelaxation()

CELER_FUNCTION celeritas::AtomicRelaxation::AtomicRelaxation ( AtomicRelaxParamsRef const &  shared,
CutoffView const &  cutoffs,
ElementId  el_id,
SubshellId  shell_id,
Span< Secondary secondaries,
Span< SubshellId vacancies 
)
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.

Member Function Documentation

◆ sample_transition()

template<class Engine >
CELER_FUNCTION auto celeritas::AtomicRelaxation::sample_transition ( AtomicRelaxSubshell const &  shell,
Engine &  rng 
) -> TransitionId
inline

Sample an atomic transition.

TODO: refactor to use a Selector-like algorithm that allows a "remainder" that indicates "not sampled".


The documentation for this class was generated from the following file: