Problem definition¶
Celeritas contains several high-level “parameter” classes that allow setup-time access to problem data. These classes all correspond directly to “TrackView” classes (see the developer documentation for details).
-
class GeoParamsInterface¶
Interface class for accessing host geometry metadata.
This class is implemented by
OrangeParams
to allow navigation with the ORANGE geometry implementation,VecgeomParams
for using VecGeom, andGeantGeoParams
for testing with the Geant4-provided navigator.Subclassed by celeritas::GeantGeoParams, celeritas::GeoParamsSurfaceInterface, celeritas::VecgeomParams
-
class MaterialParams : public celeritas::ParamsDataInterface<MaterialParamsData>¶
Manage material, element, and nuclide properties.
Materials in Celeritas currently correspond to “material cut couples” in Geant4, i.e. the outer product of geometry model-defined materials and user-defined physics regions.
- Todo:
Replace id_to_label etc. with direct access to LabelIdMultiMap
Isotope metadata
Number of distinct isotope definitions
-
class ParticleParams : public celeritas::ParamsDataInterface<ParticleParamsData>¶
Data management for Standard Model particle classifications.
This class represents “per-problem” shared data about standard model particles being used.
The ParticleParams is constructed on the host with a vector that combines metadata (used for debugging output and interfacing with physics setup) and data (used for on-device transport). Each entry in the construction is assigned a unique
ParticleId
used for runtime access.The PDG Monte Carlo number is a unique “standard model” identifier for a particle. See “Monte Carlo Particle Numbering Scheme” in the “Review of
Particle Physics”:
https://pdg.lbl.gov/2020/reviews/rpp2020-rev-monte-carlo-numbering.pdf It should be used to identify particle types during construction time.
-
class PhysicsParams : public celeritas::ParamsDataInterface<PhysicsParamsData>¶
Manage physics processes and models.
The physics params takes a vector of processes and sets up the processes and models. It constructs data and mappings of data:
particle type and process to tabulated values of cross sections etc,
particle type to applicable processes
During construction it constructs models and their corresponding list of
ActionId
values, as well as the tables of cross section data. Besides the individual interaction kernels, the physics parameters manage additional actions:”pre-step”: calculate physics step limits
”along-step”: propagate, apply energy loss, multiple scatter
”range”: limit step by energy loss
”discrete-select”: sample a process for a discrete interaction, or reject due to integral cross sectionl
”integral-rejected”: do not apply a discrete interaction
”failure”: model failed to allocate secondaries
-
class CutoffParams : public celeritas::ParamsDataInterface<CutoffParamsData>¶
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, inImportPhysMaterial
. Since this is a direct import, the cutoff map inImportPhysMaterial
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).