42 #include "Geant4/G4Alpha.hh"
43 #include "Geant4/G4AntiProton.hh"
44 #include "Geant4/G4Cerenkov.hh"
45 #include "Geant4/G4Deuteron.hh"
46 #include "Geant4/G4Electron.hh"
47 #include "Geant4/G4Gamma.hh"
48 #include "Geant4/G4GenericIon.hh"
49 #include "Geant4/G4He3.hh"
50 #include "Geant4/G4KaonMinus.hh"
51 #include "Geant4/G4KaonPlus.hh"
52 #include "Geant4/G4LossTableManager.hh"
53 #include "Geant4/G4MuonMinus.hh"
54 #include "Geant4/G4MuonPlus.hh"
55 #include "Geant4/G4OpAbsorption.hh"
56 #include "Geant4/G4OpBoundaryProcess.hh"
57 #include "Geant4/G4OpRayleigh.hh"
58 #include "Geant4/G4OpWLS.hh"
59 #include "Geant4/G4OpticalPhoton.hh"
60 #include "Geant4/G4ParticleDefinition.hh"
61 #include "Geant4/G4ParticleTable.hh"
62 #include "Geant4/G4PionMinus.hh"
63 #include "Geant4/G4PionPlus.hh"
64 #include "Geant4/G4Positron.hh"
65 #include "Geant4/G4ProcessManager.hh"
66 #include "Geant4/G4Proton.hh"
67 #include "Geant4/G4Scintillation.hh"
68 #include "Geant4/G4Triton.hh"
76 #include "messagefacility/MessageLogger/MessageLogger.h"
86 : G4VPhysicsConstructor(name), fSimpleBoundary{detProp.
SimpleBoundary()}
88 G4LossTableManager::Instance();
89 mf::LogInfo(
"OpticalPhysics") <<
"OBJECT BEING CONSTRUCTED IN OPTICAL PHYSICS";
96 MF_LOG_DEBUG(
"OpticalPhysics") <<
"PARTICLES BEING CONSTRUCTED IN OPTICAL PHYSICS";
98 G4OpticalPhoton::OpticalPhotonDefinition();
104 G4Electron::Electron();
105 G4Positron::Positron();
106 G4MuonPlus::MuonPlus();
107 G4MuonMinus::MuonMinus();
110 G4PionPlus::PionPlusDefinition();
111 G4PionMinus::PionMinusDefinition();
112 G4KaonPlus::KaonPlusDefinition();
113 G4KaonMinus::KaonMinusDefinition();
117 G4AntiProton::AntiProton();
120 G4Deuteron::Deuteron();
124 G4GenericIon::GenericIonDefinition();
134 MF_LOG_DEBUG(
"OpticalPhysics") <<
"PROCESSES BEING CONSTRUCTED IN OPTICAL PHYSICS";
155 G4EmSaturation* emSaturation = G4LossTableManager::Instance()->EmSaturation();
160 mf::LogInfo(
"OpticalPhysics") <<
"Cerenkov light enabled : " << CerenkovLightEnabled;
161 static G4ParticleTable* fParticleTable = G4ParticleTable::GetParticleTable();
162 G4ParticleTable::G4PTblDicIterator* aParticleIterator;
163 aParticleIterator = fParticleTable->GetIterator();
165 aParticleIterator->reset();
166 while ((*aParticleIterator)()) {
167 G4ParticleDefinition* particle = aParticleIterator->value();
168 G4ProcessManager* pmanager = particle->GetProcessManager();
169 G4String particleName = particle->GetParticleName();
180 if (particleName ==
"opticalphoton") {
181 mf::LogInfo(
"OpticalPhysics") <<
" AddDiscreteProcess to OpticalPhoton ";
virtual bool CerenkovLightEnabled() const =0
Utilities related to art service access.
void ConstructParticle() override
Discrete process for reflection and diffusion at optical interfaces.
OpBoundaryProcessSimple * fTheBoundaryProcess
G4Cerenkov * fTheCerenkovProcess
G4OpBoundaryProcess * fTheBoundaryProcess_g4
bool SimpleBoundary() const
void ConstructProcess() override
OpticalPhysics(detinfo::DetectorPropertiesData const &detProp, G4int ver=0, G4String const &name="G4Optical")
G4OpAbsorption * fTheAbsorptionProcess
G4OpRayleigh * fTheRayleighScatteringProcess
G4Scintillation * fTheScintillationProcess