70 fExcitationRatio(0.0),
72 fFiniteRiseTime(false),
73 fScintillationByParticleType(false),
74 fScintillationTrackInfo(false),
76 fCerenkovStackPhotons(true),
77 fScintillationStackPhotons(true)
112 G4cout <<
" Track secondaries first: activated" <<
G4endl;
115 G4cout <<
" Track secondaries first: inactivated" <<
G4endl;
120 G4cout <<
" Scintillation by Particle Type: activated " <<
G4endl;
124 G4cout <<
" Track secondaries first: activated" <<
G4endl;
127 G4cout <<
" Track secondaries first: inactivated" <<
G4endl;
150 #define DIR_CMDS "/process/optical"
151 #define GUIDANCE "Commands related to the optical physics simulation engine for "
153 namespace UIhelpers {
163 "Set the verbose level");
178 "Set the WLS time profile (delta or exponential)");
192 "Set option of a finite rise-time for G4Scintillation - If set, the G4Scintillation process expects the user to have set the constant material property FAST/SLOWSCINTILLATIONRISETIME");
198 "Set scintillation yield factor");
205 "Set scintillation excitation ratio");
212 "Activate/Inactivate scintillation process by particle type");
218 "Activate/Inactivate scintillation track info");
224 "Set option to track secondaries before finishing their parent track");
238 "Set maximum number of photons per step");
245 "Set maximum change of beta of parent particle per step");
252 "Set option to track secondaries before finishing their parent track");
273 G4cout <<
"G4OpticalPhysics:: Add Optical Physics Processes"<<
G4endl;
276 std::vector<G4VProcess*> OpProcesses;
288 OpProcesses[
kRayleigh] = OpRayleighScatteringProcess;
292 OpProcesses[
kMieHG] = OpMieHGScatteringProcess;
297 OpProcesses[
kBoundary] = OpBoundaryProcess;
302 OpProcesses[
kWLS] = OpWLSProcess;
308 std::ostringstream o;
309 o <<
"Optical Photon without a Process Manager";
310 G4Exception(
"G4OpticalPhysics::ConstructProcess()",
"",
340 OpProcesses[
kCerenkov] = CerenkovProcess;
343 myParticleIterator->reset();
345 while( (*myParticleIterator)() ){
352 std::ostringstream o;
353 o <<
"Particle " << particleName <<
"without a Process Manager";
354 G4Exception(
"G4OpticalPhysics::ConstructProcess()",
"",
442 G4bool trackSecondariesFirst)
#define G4_DECLARE_PHYSCONSTR_FACTORY(physics_constructor)
void SetScintillationExcitationRatio(const G4double ratio)
This class is generic messenger.
G4String fProfile
the WLS process time profile
Rayleigh scattering process index.
void SetCerenkovStackPhotons(G4bool)
void SetProcessOrderingToLast(G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt)
Scintillation process index.
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
void SetStackPhotons(const G4bool)
virtual ~G4OpticalPhysics()
void SetFiniteRiseTime(G4bool)
std::vector< G4bool > fProcessTrackSecondariesFirst
void Configure(G4OpticalProcessIndex, G4bool)
void SetMaxBetaChangePerStep(const G4double d)
const G4String & GetParticleName() const
void SetTrackSecondariesFirst(const G4bool state)
void SetMaxNumPhotonsPerStep(const G4int NumPhotons)
Command & SetDefaultValue(const G4String &)
G4bool fScintillationStackPhotons
option to allow stacking of secondary Scintillation photons
Absorption process index.
void SetProcessOrdering(G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt, G4int ordDoIt=ordDefault)
void PrintStatistics() const
Command & DeclareMethod(const G4String &name, const G4AnyMethod &fun, const G4String &doc="")
void SetTrackSecondariesFirst(const G4bool state)
virtual void ConstructParticle()
G4double fExcitationRatio
scintillation excitation ratio
std::vector< G4bool > fProcessUse
void SetMaxBetaChangePerStep(G4double)
void SetScintillationExcitationRatio(G4double)
void UseTimeProfile(const G4String name)
Number of processes, no selected process.
G4int AddProcess(G4VProcess *aProcess, G4int ordAtRestDoIt=ordInActive, G4int ordAlongSteptDoIt=ordInActive, G4int ordPostStepDoIt=ordInActive)
G4bool fScintillationByParticleType
void SetScintillationByParticleType(G4bool)
Command & SetStates(G4ApplicationState s0)
G4int fMaxNumPhotons
max number of Cerenkov photons per step
static G4OpticalPhoton * OpticalPhoton()
G4double fYieldFactor
scintillation yield factor
void SetScintillationTrackInfo(const G4bool trackType)
G4bool fCerenkovStackPhotons
option to allow stacking of secondary Cerenkov photons
static G4OpticalPhoton * OpticalPhotonDefinition()
void buildCommands(T *proc, const char *dir, const char *guidance)
void SetScintillationStackPhotons(G4bool)
G4String G4OpticalProcessName(G4int)
Return the name for a given optical process index.
G4OpticalPhysics(G4int verbose=0, const G4String &name="Optical")
Command & SetCandidates(const G4String &)
void SetScintillationYieldFactor(G4double)
void SetTrackSecondariesFirst(G4OpticalProcessIndex, G4bool)
void SetScintillationByParticleType(const G4bool)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Command & SetParameterName(const G4String &, G4bool, G4bool=false)
G4EmSaturation * EmSaturation()
void AddSaturation(G4EmSaturation *sat)
G4ProcessManager * GetProcessManager() const
G4bool fScintillationTrackInfo
G4GLOB_DLL std::ostream G4cout
static G4LossTableManager * Instance()
G4ParticleTable::G4PTblDicIterator * GetParticleIterator() const
G4bool IsApplicable(const G4ParticleDefinition &aParticleType) override
Wave Length Shifting process index.
void SetMaxNumPhotonsPerStep(G4int)
void SetScintillationYieldFactor(const G4double yieldfactor)
virtual void ConstructProcess()
void SetFiniteRiseTime(const G4bool state)
void SetStackPhotons(const G4bool)
G4double fMaxBetaChange
max change of beta per step
void SetScintillationTrackInfo(G4bool)
G4OpticalPhysicsMessenger * fMessenger
void SetWLSTimeProfile(G4String)
Mie scattering process index.
G4bool IsApplicable(const G4ParticleDefinition &aParticleType) override