50 #include "messagefacility/MessageLogger/MessageLogger.h"
52 #include "Geant4/G4LossTableManager.hh"
53 #include "Geant4/G4ParticleDefinition.hh"
54 #include "Geant4/G4ParticleTable.hh"
55 #include "Geant4/G4ProcessManager.hh"
57 #include "Geant4/G4Alpha.hh"
58 #include "Geant4/G4AntiProton.hh"
59 #include "Geant4/G4Deuteron.hh"
60 #include "Geant4/G4Electron.hh"
61 #include "Geant4/G4Gamma.hh"
62 #include "Geant4/G4GenericIon.hh"
63 #include "Geant4/G4He3.hh"
64 #include "Geant4/G4KaonMinus.hh"
65 #include "Geant4/G4KaonPlus.hh"
66 #include "Geant4/G4MuonMinus.hh"
67 #include "Geant4/G4MuonPlus.hh"
68 #include "Geant4/G4OpticalPhoton.hh"
69 #include "Geant4/G4PionMinus.hh"
70 #include "Geant4/G4PionPlus.hh"
71 #include "Geant4/G4Positron.hh"
72 #include "Geant4/G4Proton.hh"
73 #include "Geant4/G4Triton.hh"
75 #include "Geant4/G4Cerenkov.hh"
76 #include "Geant4/G4OpAbsorption.hh"
77 #include "Geant4/G4OpRayleigh.hh"
78 #include "Geant4/G4OpWLS.hh"
84 : G4VPhysicsConstructor(name)
86 G4LossTableManager::Instance();
87 mf::LogInfo(
"FastOpticalPhysics") <<
"OBJECT BEING CONSTRUCTED IN OPTICAL PHYSICS";
94 MF_LOG_DEBUG(
"FastOpticalPhysics") <<
"PARTICLES BEING CONSTRUCTED IN FAST OPTICAL PHYSICS";
96 G4OpticalPhoton::OpticalPhotonDefinition();
102 G4Electron::Electron();
103 G4Positron::Positron();
104 G4MuonPlus::MuonPlus();
105 G4MuonMinus::MuonMinus();
108 G4PionPlus::PionPlusDefinition();
109 G4PionMinus::PionMinusDefinition();
110 G4KaonPlus::KaonPlusDefinition();
111 G4KaonMinus::KaonMinusDefinition();
115 G4AntiProton::AntiProton();
118 G4Deuteron::Deuteron();
122 G4GenericIon::GenericIonDefinition();
130 MF_LOG_DEBUG(
"FastOpticalPhysics") <<
"PROCESSES BEING CONSTRUCTED IN OPTICAL PHYSICS";
146 mf::LogInfo(
"FastOpticalPhysics") <<
"Cerenkov enabled : " << CerenkovEnabled;
147 static G4ParticleTable* fParticleTable = G4ParticleTable::GetParticleTable();
148 G4ParticleTable::G4PTblDicIterator* aParticleIterator;
149 aParticleIterator = fParticleTable->GetIterator();
150 aParticleIterator->reset();
151 while ((*aParticleIterator)()) {
152 G4ParticleDefinition* particle = aParticleIterator->value();
153 G4ProcessManager* pmanager = particle->GetProcessManager();
154 G4String particleName = particle->GetParticleName();
162 pmanager->AddProcess(ptr);
163 pmanager->SetProcessOrderingToLast(ptr, idxAtRest);
164 pmanager->SetProcessOrderingToLast(ptr, idxPostStep);
167 if (particleName ==
"opticalphoton") {
168 mf::LogInfo(
"FastOptical") <<
" AddDiscreteProcess to OpticalPhoton ";
virtual bool CerenkovLightEnabled() const =0
Utilities related to art service access.
G4OpAbsorption * fTheAbsorptionProcess
Discrete process for reflection and diffusion at optical interfaces.
void ConstructProcess() override
std::unique_ptr< OpFastScintillation > fTheScintillationProcess
OpBoundaryProcessSimple * fTheBoundaryProcess
G4OpRayleigh * fTheRayleighScatteringProcess
void ConstructParticle() override
FastOpticalPhysics(G4int ver=0, const G4String &name="FastOptical")
G4Cerenkov * fTheCerenkovProcess