68 fExcitationRatio(0.0),
70 fFiniteRiseTime(false),
71 fScintillationByParticleType(false)
77 fProcessUse.push_back(
true);
78 fProcessVerbose.push_back(verbose);
79 fProcessTrackSecondariesFirst.push_back(
true);
92 void G4OpticalPhysics::PrintStatistics()
const
98 if ( ! fProcessUse[i] ) {
104 G4cout <<
" Max number of photons per step: " << fMaxNumPhotons <<
G4endl;
105 G4cout <<
" Max beta change per step: " << fMaxBetaChange <<
G4endl;
106 if ( fProcessTrackSecondariesFirst[
kCerenkov] )
G4cout <<
" Track secondaries first: activated" <<
G4endl;
109 if (fScintillationByParticleType)
110 G4cout <<
" Scintillation by Particle Type: activated " <<
G4endl;
112 G4cout <<
" ExcitationRatio: " << fExcitationRatio <<
G4endl;
116 G4cout <<
" WLS process time profile: " << fProfile <<
G4endl;
145 G4cout <<
"G4OpticalPhysics:: Add Optical Physics Processes"<<
G4endl;
148 std::vector<G4VProcess*> OpProcesses;
159 OpProcesses[
kRayleigh] = OpRayleighScatteringProcess;
160 OpProcesses[
kMieHG] = OpMieHGScatteringProcess;
164 OpProcesses[
kBoundary] = OpBoundaryProcess;
168 OpProcesses[
kWLS] = OpWLSProcess;
174 std::ostringstream o;
175 o <<
"Optical Photon without a Process Manager";
176 G4Exception(
"G4OpticalPhysics::ConstructProcess()",
"",
182 if ( fProcessUse[i] ) {
192 OpProcesses[
kCerenkov] = CerenkovProcess;
223 std::ostringstream o;
224 o <<
"Particle " << particleName <<
"without a Process Manager";
225 G4Exception(
"G4OpticalPhysics::ConstructProcess()",
"",
246 if ( fProcessUse[i] ) OpProcesses[i]->SetVerboseLevel(fProcessVerbose[i]);
258 fYieldFactor = yieldFactor;
266 fExcitationRatio = excitationRatio;
274 fMaxNumPhotons = maxNumPhotons;
282 fMaxBetaChange = maxBetaChange;
303 fScintillationByParticleType = scintillationByParticleType;
308 G4bool trackSecondariesFirst)
310 if ( index >= kNoProcess )
return;
311 if ( fProcessTrackSecondariesFirst[index] == trackSecondariesFirst )
return;
312 fProcessTrackSecondariesFirst[index] = trackSecondariesFirst;
322 fFiniteRiseTime = finiteRiseTime;
334 if ( index >= kNoProcess )
return;
335 if ( fProcessUse[index] == isUse )
return;
336 fProcessUse[index] = isUse;
344 if ( index >= kNoProcess )
return;
345 if ( fProcessVerbose[index] == verbose )
return;
346 fProcessVerbose[index] = verbose;
static void SetScintillationByParticleType(const G4bool)
static void SetMaxBetaChangePerStep(const G4double d)
void SetProcessVerbose(G4int, G4int)
static G4LossTableManager * Instance()
static void SetFiniteRiseTime(const G4bool state)
Number of processes, no selected process.
virtual void ConstructParticle()
void AddScintillationSaturation(G4EmSaturation *)
static void SetTrackSecondariesFirst(const G4bool state)
void SetMaxBetaChangePerStep(G4double)
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
Scintillation process index.
G4bool IsApplicable(const G4ParticleDefinition &aParticleType)
Mie scattering process index.
void SetFiniteRiseTime(G4bool)
Absorption process index.
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleName() const
void SetScintillationByParticleType(G4bool)
static void UseTimeProfile(const G4String name)
virtual void ConstructProcess()
virtual ~G4OpticalPhysics()
static void SetScintillationYieldFactor(const G4double yieldfactor)
G4GLOB_DLL std::ostream G4cout
void SetMaxNumPhotonsPerStep(G4int)
static void AddSaturation(G4EmSaturation *)
#define aParticleIterator
void Configure(G4OpticalProcessIndex, G4bool)
G4int AddProcess(G4VProcess *aProcess, G4int ordAtRestDoIt=ordInActive, G4int ordAlongSteptDoIt=ordInActive, G4int ordPostStepDoIt=ordInActive)
G4EmSaturation * EmSaturation()
G4_DECLARE_PHYSCONSTR_FACTORY(G4OpticalPhysics)
static void SetMaxNumPhotonsPerStep(const G4int NumPhotons)
void SetProcessOrdering(G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt, G4int ordDoIt=ordDefault)
Wave Length Shifting process index.
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
static void SetScintillationExcitationRatio(const G4double ratio)
static G4OpticalPhoton * OpticalPhoton()
void SetScintillationExcitationRatio(G4double)
G4String G4OpticalProcessName(G4int)
Return the name for a given optical process index.
G4OpticalPhysics(G4int verbose=0, const G4String &name="Optical")
void SetScintillationYieldFactor(G4double)
static void SetTrackSecondariesFirst(const G4bool state)
void SetProcessOrderingToLast(G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt)
void SetWLSTimeProfile(G4String)
void SetTrackSecondariesFirst(G4OpticalProcessIndex, G4bool)
static G4OpticalPhoton * OpticalPhotonDefinition()
Rayleigh scattering process index.
G4bool IsApplicable(const G4ParticleDefinition &aParticleType)