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
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