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";
93 MF_LOG_DEBUG(
"FastOpticalPhysics") <<
"PARTICLES BEING CONSTRUCTED IN FAST OPTICAL PHYSICS";
95 G4OpticalPhoton::OpticalPhotonDefinition();
101 G4Electron::Electron();
102 G4Positron::Positron();
103 G4MuonPlus::MuonPlus();
104 G4MuonMinus::MuonMinus();
107 G4PionPlus::PionPlusDefinition();
108 G4PionMinus::PionMinusDefinition();
109 G4KaonPlus::KaonPlusDefinition();
110 G4KaonMinus::KaonMinusDefinition();
114 G4AntiProton::AntiProton();
117 G4Deuteron::Deuteron();
121 G4GenericIon::GenericIonDefinition();
128 MF_LOG_DEBUG(
"FastOpticalPhysics") <<
"PROCESSES BEING CONSTRUCTED IN OPTICAL PHYSICS";
144 mf::LogInfo(
"FastOpticalPhysics") <<
"Cerenkov enabled : " << CerenkovEnabled;
145 static G4ParticleTable* fParticleTable = G4ParticleTable::GetParticleTable();
146 G4ParticleTable::G4PTblDicIterator* aParticleIterator;
147 aParticleIterator = fParticleTable->GetIterator();
148 aParticleIterator->reset();
149 while ((*aParticleIterator)()) {
150 G4ParticleDefinition* particle = aParticleIterator->value();
151 G4ProcessManager* pmanager = particle->GetProcessManager();
152 G4String particleName = particle->GetParticleName();
160 pmanager->AddProcess(ptr);
161 pmanager->SetProcessOrderingToLast(ptr, idxAtRest);
162 pmanager->SetProcessOrderingToLast(ptr, idxPostStep);
165 if (particleName ==
"opticalphoton") {
166 mf::LogInfo(
"FastOptical") <<
" AddDiscreteProcess to OpticalPhoton ";
virtual bool CerenkovLightEnabled() const =0
Utilities related to art service access.
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
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