Physics¶
Note
For discussion of model and process naming, see issue 1562 .
The selection and data used to create physics classes will be defined underneath this struct.
-
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
- Todo:
How to better group these, especially when adding hadronic/photonuclear/decay/…?
Public Members
-
EmPhysics em
Physics that applies to offloaded EM particles.
-
OpticalPhysics optical
Physics for optical photons.
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
-
BremsstrahlungProcess brems
Bremsstrahlung process.
-
PairProductionProcess pair_production
Electron+positron pair production process.
-
PhotoelectricProcess photoelectric
Photoelectric effect.
-
AtomicRelaxation atomic_relaxation
Atomic relaxation.
-
ProcessBuilderMap user_processes
Add custom user processes.
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.
- Todo:
Move cherenkov/scintillation to a OpticalGenPhysics class.
Optical photon generation from EM particles
- Todo:
Replace with physics input data
-
bool cherenkov = {false}
Generate Cherenkov photons.
-
bool scintillation = {false}
Generate scintillation photons.
Public Functions
-
inline explicit operator bool() const
Whether optical physics is enabled.
- Todo:
Move optical bulk models here
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.
Interstitial materials are the interstitial materials per geometric surface. The last entry is used as the default surface.
- Todo:
rename OpticalSurfacePhysics
Public Functions
-
inline explicit operator bool() const
Whether the data are assigned.
Processes¶
-
struct BremsstrahlungProcess
Construct a physics process for bremsstrahlung.
Public Functions
-
inline explicit operator bool() const
TODO: macroscopic xs tables.
Whether process has data and is to be used
Public Members
-
SeltzerBergerModel sb
Lower-energy electron/positron.
-
RelBremsModel rel
High-energy electron/positron.
-
MuBremsModel mu
Muon (-/+)
-
inline explicit operator bool() const
-
struct PairProductionProcess
Construct a physics process for electron/positron pair production.
Public Functions
-
inline explicit operator bool() const
Whether process has data and is to be used.
Public Members
-
BetheHeitlerProductionModel bethe_heitler
Pair production from gammas.
-
MuPairProductionModel mu
Pair production from muons.
-
inline explicit operator bool() const
-
struct PhotoelectricProcess
Construct a physics process for photoelectric effect.
Public Functions
-
inline explicit operator bool() const
Whether process has data and is to be used.
-
inline explicit operator bool() const
-
struct AtomicRelaxation
Emit fluorescence photons/auger electrons from atomic de-excitation.
- Todo:
Since multiple processes can cause the loss of a bound electron, we should have a separate “deexcitation” process that manages this efficiently. (Or perhaps a “generator” class to emit many simultaneously.)
Public Functions
-
inline explicit operator bool() const
True if data is assigned.
Public Members
-
std::map<AtomicNumber, ImportAtomicRelaxation> atomic_xs
Differential cross sections [(log MeV, unitless) -> millibarn].
Models¶
-
struct SeltzerBergerModel
Seltzer-Berger bremsstrahlung model.
Public Functions
-
inline explicit operator bool() const
TODO: microscopic elemental xs tables.
Whether model has data and is to be used
Public Members
-
std::map<AtomicNumber, inp::TwodGrid> atomic_xs
Differential cross sections [(log MeV, unitless) -> millibarn].
-
inline explicit operator bool() const
-
struct RelBremsModel
Relativistic bremsstrahlung model.
Public Functions
-
inline explicit operator bool() const
Whether model has data and is to be used.
Public Members
-
bool enable_lpm = {true}
Account for LPM effect at very high energies.
-
inline explicit operator bool() const
-
struct MuBremsModel
Muon bremsstrahlung model.
Public Functions
-
inline explicit operator bool() const
Whether model has data and is to be used.
-
inline explicit operator bool() const
-
struct BetheHeitlerProductionModel
Bethe-Heitler relativistic pair production from gammas.
Public Functions
-
inline explicit operator bool() const
Whether model has data and is to be used.
-
inline explicit operator bool() const
-
struct MuPairProductionModel
Pair production from muons.
Public Functions
-
inline explicit operator bool() const
True if data is assigned.
Public Members
-
MuPairProductionEnergyTransferTable muppet_table
Grid for sampling the energy of the electron-positron.
-
inline explicit operator bool() const
-
struct LivermorePhotoModel
Livermore photoelectric effect model.
Public Functions
-
inline explicit operator bool() const
Whether model has data and is to be used.
Public Members
-
std::map<AtomicNumber, LivermoreXs> atomic_xs
Tabulated microsopic cross sections [MeV -> b].
-
inline explicit operator bool() const