Celeritas
0.5.0-86+4a8eea4
|
Management particle and material cutoffs. More...
#include <CutoffParams.hh>
Classes | |
struct | Input |
Input data to construct this class. More... | |
Public Types | |
Type aliases | |
using | SPConstParticles = std::shared_ptr< ParticleParams const > |
using | SPConstMaterials = std::shared_ptr< MaterialParams const > |
using | MaterialCutoffs = std::vector< ParticleCutoff > |
Public Types inherited from celeritas::ParamsDataInterface< CutoffParamsData > | |
using | HostRef = HostCRef< CutoffParamsData > |
using | DeviceRef = DeviceCRef< CutoffParamsData > |
Public Member Functions | |
CutoffParams (Input const &input) | |
Construct on both host and device. | |
CutoffView | get (MaterialId material) const |
Access cutoffs on host. | |
HostRef const & | host_ref () const final |
Access cutoff data on the host. | |
DeviceRef const & | device_ref () const final |
Access cutoff data on the device. | |
Public Member Functions inherited from celeritas::ParamsDataInterface< CutoffParamsData > | |
CutoffParamsData< Ownership::const_reference, M > const & | ref () const |
Dispatch a "ref" call to host or device data. | |
Static Public Member Functions | |
static std::shared_ptr< CutoffParams > | from_import (ImportData const &data, SPConstParticles particle_params, SPConstMaterials material_params) |
Construct with imported data. | |
Additional Inherited Members | |
Protected Member Functions inherited from celeritas::ParamsDataInterface< CutoffParamsData > | |
CELER_DEFAULT_COPY_MOVE (ParamsDataInterface) | |
Management particle and material cutoffs.
Geant4 provides accessors to its production cuts from its G4MaterialCutsCouple
class, which couples cutoff and material data. During import, for simplicity, G4's production cuts are stored alongside the material information, in ImportPhysMaterial
. Since this is a direct import, the cutoff map in ImportPhysMaterial
stores only the cuts available in Geant4, i.e. only values for gammas, electrons, positrons, and protons.
In Celeritas, particle cutoff is stored contiguously in a single vector of size num_particles * num_materials, which stores all particle cutoffs for all materials. During import, any particle that is not in Geant4's list receives a zero cutoff value. This opens the possibility to expand cutoffs in the future, when data is not imported anymore.
The Input
structure provides a failsafe mechanism to construct the host/device data.
Some processes (e.g. photoelectric effect, decay) can produce secondaries below the production threshold, while others (e.g. bremsstrahlung, ionization) use the production cut as their instrinsic limit. By default all of these secondaries are transported, even if their energy is below the threshold. If the apply_post_interaction
option is enabled, any secondary photon, electron, or positron with energy below the cutoff will be killed (the flag will be ignored for other particle types).