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, and GeantGeoParams 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, 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).