Celeritas
0.5.0-86+4a8eea4
|
An interface/factory method for creating models. More...
#include <Process.hh>
Public Types | |
Type aliases | |
using | SPConstModel = std::shared_ptr< Model const > |
using | UPConstGridBuilder = std::unique_ptr< ValueGridBuilder const > |
using | VecModel = std::vector< SPConstModel > |
using | StepLimitBuilders = ValueGridArray< UPConstGridBuilder > |
using | ActionIdIter = RangeIter< ActionId > |
Public Member Functions | |
virtual | ~Process () |
Default destructor. | |
virtual VecModel | build_models (ActionIdIter start_id) const =0 |
Construct the models associated with this process. | |
virtual StepLimitBuilders | step_limits (Applicability range) const =0 |
Get the interaction cross sections for the given energy range. | |
virtual bool | use_integral_xs () const =0 |
Whether to use the integral method to sample interaction length. | |
virtual std::string_view | label () const =0 |
Name of the process. | |
Protected Member Functions | |
Process ()=default | |
CELER_DEFAULT_COPY_MOVE (Process) | |
An interface/factory method for creating models.
Currently processes pull their data from Geant4 which combines multiple model cross sections into an individual range for each particle type. Therefore we make the process responsible for providing the combined cross section values – currently this will use preprocessed Geant4 data but later we could provide helper functions so that each Process can individually combine its models.
Each process has an interaction ("post step doit") and may have both energy loss and range limiters.
The StepLimitBuilders is a fixed-size array corresponding to the physics interface enum ValueGridType
:
|
protecteddefault |
Allow construction and assignment only through daughter classes
|
protected |
Allow construction and assignment only through daughter classes