|
|
|||
File indexing completed on 2026-11-07 10:11:32
0001 //------------------------------- -*- C++ -*- -------------------------------// 0002 // Copyright Celeritas contributors: see top-level COPYRIGHT file for details 0003 // SPDX-License-Identifier: (Apache-2.0 OR MIT) 0004 //---------------------------------------------------------------------------// 0005 //! \file celeritas/g4/SupportedEmStandardPhysics.hh 0006 //---------------------------------------------------------------------------// 0007 #pragma once 0008 0009 #include <G4VPhysicsConstructor.hh> 0010 0011 #include "celeritas/ext/GeantPhysicsOptions.hh" 0012 0013 class G4ParticleDefinition; 0014 0015 namespace celeritas 0016 { 0017 //---------------------------------------------------------------------------// 0018 /*! 0019 * Construct G4EmStandardPhysics processes that are implemented in Celeritas. 0020 * 0021 * This physics list is targeted at HEP experiments and reproduces most of the 0022 * Geant4 G4EmStandardPhysics. 0023 * 0024 * Limitations: 0025 * - No support for generic ions 0026 * - No hadronic EM interactions 0027 * - Wentzel VI MSC is not supported 0028 * - No polarized gamma processes 0029 * 0030 * Electron/positron processes: 0031 * 0032 * | Processes | Model classes | 0033 * | ---------------------------- | ---------------------------- | 0034 * | Pair annihilation | G4eeToTwoGammaModel | 0035 * | Ionization | G4MollerBhabhaModel | 0036 * | Bremsstrahlung (low E) | G4SeltzerBergerModel | 0037 * | Bremsstrahlung (high E) | G4eBremsstrahlungRelModel | 0038 * | Coulomb scattering | G4eCoulombScatteringModel | 0039 * | Multiple scattering (low E) | G4UrbanMscModel | 0040 * | Multiple scattering (high E) | G4WentzelVIModel | 0041 * | Electro nuclear | G4ElectroVDNuclearModel | 0042 * 0043 * Gamma processes: 0044 * 0045 * | Processes | Model classes | 0046 * | -------------------- | ----------------------------- | 0047 * | Compton scattering | G4KleinNishinaCompton | 0048 * | Photoelectric effect | G4LivermorePhotoElectricModel | 0049 * | Rayleigh scattering | G4LivermoreRayleighModel | 0050 * | Gamma conversion | G4PairProductionRelModel | 0051 * | Gamma nuclear | QGSP/Bertini/LEND 0052 * 0053 * If the \c gamma_general option is enabled, we create a single unified 0054 * \c G4GammaGeneralProcess process, which embeds these other processes and 0055 * calculates a combined total cross section. It's faster in Geant4 but 0056 * shouldn't result in statistically different answers. 0057 * 0058 * Muon processes are disabled by default: 0059 * 0060 * | Processes | Model classes | 0061 * | ---------------------------- | ---------------------------- | 0062 * | Pair production | G4MuPairProductionModel | 0063 * | Ionization (low E, mu-) | G4ICRU73QOModel | 0064 * | Ionization (low E, mu+) | G4BraggModel | 0065 * | Ionization (high E) | G4MuBetheBlochModel | 0066 * | Bremsstrahlung | G4MuBremsstrahlungModel | 0067 * | Coulomb scattering | G4eCoulombScatteringModel | 0068 * | Multiple scattering | G4WentzelVIModel | 0069 * 0070 * \warning For muon-catalyzed fusion physics, the \c G4MuonMinusAtomicCapture 0071 * , which is a \c G4VRestProcess with \c G4ProcessType::fHadronic , is added 0072 * for \c mu- and is the exception to the EM-only rule. It does not require 0073 * importing any cross section tables, but its inclusion enables muCF physics. 0074 * This design decision may need revisiting in the future. 0075 * 0076 * \note Prior to version 11.1.0, Geant4 used the \c G4BetheBlochModel for muon 0077 * ionization between 200 keV and 1 GeV and the \c G4MuBetheBlochModel above 1 0078 * GeV. Since version 11.1.0, the \c G4MuBetheBlochModel is used for all 0079 * energies above 200 keV. 0080 */ 0081 class SupportedEmStandardPhysics : public G4VPhysicsConstructor 0082 { 0083 public: 0084 //!@{ 0085 //! \name Type aliases 0086 using Options = GeantPhysicsOptions; 0087 //!@} 0088 0089 public: 0090 // Set up during construction 0091 explicit SupportedEmStandardPhysics(Options const& options); 0092 0093 // Set up minimal EM particle list 0094 void ConstructParticle() override; 0095 // Set up process list 0096 void ConstructProcess() override; 0097 0098 private: 0099 Options options_; 0100 0101 // Add EM processes for photons 0102 void add_gamma_processes(); 0103 // Add EM processes for electrons and positrons 0104 void add_e_processes(G4ParticleDefinition* p); 0105 // Add EM processes for muons 0106 void add_mu_processes(G4ParticleDefinition* p); 0107 }; 0108 0109 //---------------------------------------------------------------------------// 0110 } // namespace celeritas
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|