87 G4cout <<
"G4OpticalPhysics:: Add Optical Physics Processes" <<
G4endl;
95 if (
nullptr == pManager)
98 ed <<
"Optical Photon without a Process Manager";
103 if (params->GetProcessActivation(
"OpAbsorption")) {
108 if (params->GetProcessActivation(
"OpRayleigh")) {
113 if (params->GetProcessActivation(
"OpMieHG")) {
118 if (params->GetProcessActivation(
"OpBoundary")) {
123 if (params->GetProcessActivation(
"OpWLS")) {
128 if (params->GetProcessActivation(
"OpWLS2")) {
134 if (params->CerenkovGeneral()) {
138 else if (params->GetProcessActivation(
"Cerenkov")) {
144 if (params->GetProcessActivation(
"Scintillation")) {
147 scint->AddSaturation(emSaturation);
152 myParticleIterator->reset();
154 while((*myParticleIterator)())
156 auto particle = myParticleIterator->value();
157 if (particle->IsShortLived()) {
continue; }
159 pManager = particle->GetProcessManager();
160 if (
nullptr == pManager) {
162 ed <<
"Particle " << particle->GetParticleName() <<
"without a Process Manager";
168 if (
nullptr != theCerenkov && theCerenkov->
IsApplicable(*particle)) {
172 if (
nullptr != theScint && theScint->
IsApplicable(*particle)) {
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
#define G4_DECLARE_PHYSCONSTR_FACTORY(physics_constructor)
G4GLOB_DLL std::ostream G4cout
static G4LossTableManager * Instance()
G4EmSaturation * EmSaturation()
void SetVerboseLevel(G4int)
static G4OpticalParameters * Instance()
static G4OpticalPhoton * OpticalPhotonDefinition()
static G4OpticalPhoton * OpticalPhoton()
void ConstructProcess() override
void ConstructParticle() override
void PrintStatistics() const
G4OpticalPhysics(G4int verbose=0, const G4String &name="Optical")
G4ProcessManager * GetProcessManager() const
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4int AddProcess(G4VProcess *aProcess, G4int ordAtRestDoIt=ordInActive, G4int ordAlongSteptDoIt=ordInActive, G4int ordPostStepDoIt=ordInActive)
void SetProcessOrderingToLast(G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt)
static G4QuasiOpticalPhoton * QuasiOpticalPhotonDefinition()
G4VPhysicsConstructor(const G4String &="")
G4ParticleTable::G4PTblDicIterator * GetParticleIterator() const
virtual G4bool IsApplicable(const G4ParticleDefinition &)