Physics¶
-
struct Physics
Set up physics options.
- Todo:
Move optical and hadronic physics options from
celeritas::GeantPhysicsOptions
Move particle data from
celeritas::ImportParticle
Add function for injecting user processes for
celeritas::PhysicsParams
Public Members
-
std::optional<EmPhysics> em = {std::in_place}
Enable electromagnetic physics.
-
std::optional<OpticalPhysics> optical
Enable optical photon physics.
-
std::optional<HadronicPhysics> hadronic
Enable hadronic physics.
-
std::optional<DecayPhysics> decay
Enable decay physics.
Electromagnetic¶
-
struct EmPhysics
Electromagnetic physics processes and options.
- Todo:
The ProcessBuilder is the “general” process builder type and should be refactored once import data is moved into the
inp
classes. Theuser_processes
can be set externally or viaFrameworkInput.geant.ignore_processes
.
Public Members
-
std::optional<BremsProcess> brems = {std::in_place}
Bremsstrahlung process.
-
std::optional<PairProductionProcess> pair_production = {std::in_place}
Electron+positron pair production process.
Decay¶
-
struct DecayPhysics
Decay processes and options.
Hadronic¶
-
struct HadronicPhysics
Hadronic physics processes and options.
This can be used to enable or set up Geant4 hadronic physics.
Optical¶
Optical photon _generation_ is a part of the standard stepping loop that manages
EM, decay, and hadronic physics, but its _transport_ has its own separate
stepping loop, where surface physics is the most complex part. Therefore, the
OpticalPhysics
input includes optical photon _generation_ processes (such as
Cherenkov and scintillation) and surface physics information. The latter
describing how optical photons should interact with it.
-
struct OpticalPhysics
Optical physics processes, options, and surface definitions.
Optical photon generation
- Todo:
Replace with a mapping of volume to
ScintillationPhysics
orCherenkovPhysics
-
bool cherenkov = {true}
Generate Cherenkov photons.
-
bool scintillation = {true}
Generate scintillation photons.
Public Functions
-
inline explicit operator bool() const
Whether the data are assigned.
Celeritas’ SurfacePhysics
implementation is designed differently from Geant4
and is meant to reduce code branching. In Geant4 one single model (e.g. Unified)
encompasses interface type (e.g. dielectric-dielectric), multiple reflection
mechanisms (specular spike, specular lobe, etc.), and surface roughness types
(polished or Gaussian). Celeritas describes an optical surface based on its
interface type, the possible reflection mechanisms it can undergo, its
roughness, and other parameters, such as detector efficiency in case it is a
scoring surface for an optical detector such as a PMT or SiPM. A specific Geant4
model (e.g. Unified) is simply a specific combination of such characteristics.
This “model unfolding” leads to a less simple input definition compared to
Geant4, but allows for a more general surface definition system. This leads to
better extensibility and reduces kernel size/complexity on the GPU.
-
struct SurfacePhysics
Surface physics definition.
Maps all optical surfaces with interaction models and surface parameters.
Public Functions
-
inline explicit operator bool() const
Whether the data are assigned.
-
inline explicit operator bool() const
Processes¶
-
struct BremsProcess
Construct a physics process for bremsstrahlung.
Models¶
-
struct SeltzerBergerModel
Seltzer-Berger bremsstrahlung model.
- Todo:
Move
sb_data
from celeritas::ImportData here.
-
struct RelBremsModel
Relativistic bremsstrahlung model.
Public Members
-
bool enable_lpm = {true}
Account for LPM effect at very high energies.
-
bool enable_lpm = {true}
-
struct MuBremsModel
Muon bremsstrahlung model.