63 fOpticalPhysics(opticalPhysics),
65 fActivateProcessCmd(0),
66 fSetOpProcessVerboseCmd(0),
67 fSetCerenkovMaxPhotonsCmd(0),
68 fSetCerenkovMaxBetaChangeCmd(0),
69 fSetCerenkovStackPhotonsCmd(0),
70 fSetScintillationYieldFactorCmd(0),
71 fSetScintillationByParticleTypeCmd(0),
72 fSetScintillationTrackInfoCmd(0),
73 fSetScintillationStackPhotonsCmd(0),
74 fSetWLSTimeProfileCmd(0),
75 fSetTrackSecondariesFirstCmd(0),
76 fSetFiniteRiseTimeCmd(0),
79 G4bool toBeBroadcasted =
false;
80 fDir =
new G4UIdirectory(
"/process/optical/defaults/",toBeBroadcasted);
81 fDir->
SetGuidance(
"Commands related to the optical physics simulation engine.");
82 fDir2 =
new G4UIdirectory(
"/process/optical/",toBeBroadcasted);
83 fDir2->
SetGuidance(
"Commands related to the optical physics simulation engine.");
85 fActivateProcessCmd=
new G4UIcommand(
"/process/optical/processActivation",
this);
86 fActivateProcessCmd->
SetGuidance(
"Activate/deactivate the specified optical process");
104 fSetOpProcessVerboseCmd->
SetGuidance(
"Set default verbosity level for optical processes");
107 fSetOpProcessVerboseCmd->
SetRange(
"ver>=0");
111 fSetTrackSecondariesFirstCmd =
new G4UIcommand(
"/process/optical/setTrackSecondariesFirst",
this);
112 fSetTrackSecondariesFirstCmd->
SetGuidance(
"Activate/deactivate tracking of secondaries before finishing their parent track");
123 fSetCerenkovMaxPhotonsCmd =
new G4UIcmdWithAnInteger(
"/process/optical/defaults/cerenkov/setMaxPhotons",
this);
124 fSetCerenkovMaxPhotonsCmd->
SetGuidance(
"Set default maximum number of photons per step");
125 fSetCerenkovMaxPhotonsCmd->
SetGuidance(
"Note this command is used to set the default value,");
126 fSetCerenkovMaxPhotonsCmd->
SetGuidance(
"if process is not active command will not have effect.");
128 fSetCerenkovMaxPhotonsCmd->
SetRange(
"CerenkovMaxPhotons>=0");
131 fSetCerenkovMaxBetaChangeCmd =
new G4UIcmdWithADouble(
"/process/optical/defaults/cerenkov/setMaxBetaChange",
this);
132 fSetCerenkovMaxBetaChangeCmd->
SetGuidance(
"Set default maximum change of beta of parent particle per step");
133 fSetCerenkovMaxBetaChangeCmd->
SetGuidance(
"Note this command is used to set the default value,");
134 fSetCerenkovMaxBetaChangeCmd->
SetGuidance(
"if process is not active command will not have effect.");
135 fSetCerenkovMaxBetaChangeCmd->
SetParameterName(
"CerenkovMaxBetaChange",
false);
136 fSetCerenkovMaxBetaChangeCmd->
SetRange(
"CerenkovMaxBetaChange>=0");
139 fSetCerenkovStackPhotonsCmd =
new G4UIcmdWithABool(
"/process/optical/defaults/cerenkov/setStackPhotons",
this);
140 fSetCerenkovStackPhotonsCmd->
SetGuidance(
"Set default whether or not to stack secondary Cerenkov photons");
141 fSetCerenkovStackPhotonsCmd->
SetGuidance(
"Note this command is used to set the default value,");
142 fSetCerenkovStackPhotonsCmd->
SetGuidance(
"if process is not active command will not have effect.");
143 fSetCerenkovStackPhotonsCmd->
SetParameterName(
"CerenkovStackPhotons",
true);
146 fSetScintillationYieldFactorCmd =
new G4UIcmdWithADouble(
"/process/optical/defaults/scintillation/setYieldFactor",
this);
147 fSetScintillationYieldFactorCmd->
SetGuidance(
"Set scintillation yield factor");
148 fSetScintillationYieldFactorCmd->
SetGuidance(
"Note this command is used to set the default value,");
149 fSetScintillationYieldFactorCmd->
SetGuidance(
"if process is not active command will not have effect.");
150 fSetScintillationYieldFactorCmd->
SetParameterName(
"ScintillationYieldFactor",
false);
151 fSetScintillationYieldFactorCmd->
SetRange(
"ScintillationYieldFactor>=0");
154 fSetScintillationByParticleTypeCmd =
new G4UIcmdWithABool(
"/process/optical/defaults/scintillation/setByParticleType",
this);
155 fSetScintillationByParticleTypeCmd->
SetGuidance(
"Activate/Inactivate scintillation process by particle type");
156 fSetScintillationByParticleTypeCmd->
SetGuidance(
"Note this command is used to set the default value,");
157 fSetScintillationByParticleTypeCmd->
SetGuidance(
"if process is not active command will not have effect.");
158 fSetScintillationByParticleTypeCmd->
SetParameterName(
"ScintillationByParticleTypeActivation",
false);
161 fSetScintillationTrackInfoCmd =
new G4UIcmdWithABool(
"/process/optical/defaults/scintillation/setTrackInfo",
this);
162 fSetScintillationTrackInfoCmd->
SetGuidance(
"Activate/Inactivate scintillation TrackInformation");
163 fSetScintillationTrackInfoCmd->
SetParameterName(
"ScintillationTrackInfo",
false);
166 fSetFiniteRiseTimeCmd =
new G4UIcmdWithABool(
"/process/optical/defaults/scintillation/setFiniteRiseTime",
this);
167 fSetFiniteRiseTimeCmd->
SetGuidance(
"Set option of a finite rise-time for G4Scintillation");
168 fSetFiniteRiseTimeCmd->
SetGuidance(
"If set, the G4Scintillation process expects the user to have set the constant material property FAST/SLOWSCINTILLATIONRISETIME");
169 fSetFiniteRiseTimeCmd->
SetGuidance(
"Note this command is used to set the default value,");
170 fSetFiniteRiseTimeCmd->
SetGuidance(
"if process is not active command will not have effect.");
174 fSetScintillationStackPhotonsCmd =
new G4UIcmdWithABool(
"/process/optical/defaults/scintillation/setStackPhotons",
this);
175 fSetScintillationStackPhotonsCmd->
SetGuidance(
"Set default whether or not to stack secondary Scintillation photons");
176 fSetScintillationStackPhotonsCmd->
SetGuidance(
"Note this command is used to set the default value,");
177 fSetScintillationStackPhotonsCmd->
SetGuidance(
"if process is not active command will not have effect.");
178 fSetScintillationStackPhotonsCmd->
SetParameterName(
"ScintillationStackPhotons",
true);
181 fSetWLSTimeProfileCmd =
new G4UIcmdWithAString(
"/process/optical/defaults/wls/setTimeProfile",
this);
182 fSetWLSTimeProfileCmd->
SetGuidance(
"Set the WLS time profile (delta or exponential)");
187 fSetInvokeSDCmd =
new G4UIcmdWithABool(
"/process/optical/defaults/boundary/setInvokeSD",
this);
188 fSetInvokeSDCmd->
SetGuidance(
"Set option for calling InvokeSD in G4OpBoundaryProcess");
199 delete fActivateProcessCmd;
200 delete fSetOpProcessVerboseCmd;
201 delete fSetCerenkovMaxPhotonsCmd;
202 delete fSetCerenkovMaxBetaChangeCmd;
203 delete fSetCerenkovStackPhotonsCmd;
204 delete fSetScintillationYieldFactorCmd;
205 delete fSetScintillationByParticleTypeCmd;
206 delete fSetScintillationTrackInfoCmd;
207 delete fSetScintillationStackPhotonsCmd;
208 delete fSetWLSTimeProfileCmd;
209 delete fSetTrackSecondariesFirstCmd;
210 delete fSetFiniteRiseTimeCmd;
211 delete fSetInvokeSDCmd;
219 if (command == fActivateProcessCmd) {
220 std::istringstream is(newValue.
data());
224 if ( pn ==
"Cerenkov" ) {
226 }
else if ( pn ==
"Scintillation" ) {
228 }
else if ( pn ==
"OpAbsorption" ) {
230 }
else if ( pn ==
"OpRayleigh" ) {
232 }
else if ( pn ==
"OpMieHG" ) {
233 fSelectedProcessIndex =
kMieHG;
234 }
else if ( pn ==
"OpBoundary" ) {
236 }
else if ( pn ==
"OpWLS" ) {
237 fSelectedProcessIndex =
kWLS;
240 msg <<
"Not allowed process name: "<<pn<<
" (UI: "<<newValue<<
")";
244 fOpticalPhysics->
Configure(fSelectedProcessIndex,value);
246 else if (command == fSetTrackSecondariesFirstCmd )
248 std::istringstream is(newValue.
data());
252 if ( pn ==
"Cerenkov" ) {
254 }
else if ( pn ==
"Scintillation" ) {
256 }
else if ( pn ==
"OpAbsorption" ) {
258 }
else if ( pn ==
"OpRayleigh" ) {
260 }
else if ( pn ==
"OpMieHG" ) {
261 fSelectedProcessIndex =
kMieHG;
262 }
else if ( pn ==
"OpBoundary" ) {
264 }
else if ( pn ==
"OpWLS" ) {
265 fSelectedProcessIndex =
kWLS;
268 msg <<
"Not allowed process name: "<<pn<<
" (UI: "<<newValue<<
")";
274 else if (command == fSetOpProcessVerboseCmd) {
277 else if (command == fSetCerenkovMaxPhotonsCmd) {
282 else if (command == fSetCerenkovMaxBetaChangeCmd) {
287 else if (command == fSetCerenkovStackPhotonsCmd) {
292 else if (command == fSetScintillationYieldFactorCmd) {
297 else if (command == fSetScintillationByParticleTypeCmd) {
302 else if (command == fSetScintillationTrackInfoCmd) {
307 else if (command == fSetFiniteRiseTimeCmd) {
312 else if (command == fSetScintillationStackPhotonsCmd) {
317 else if (command == fSetWLSTimeProfileCmd) {
320 else if (command == fSetInvokeSDCmd) {
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
virtual void SetNewValue(G4UIcommand *, G4String)
void SetParameter(G4UIparameter *const newParameter)
Number of processes, no selected process.
std::ostringstream G4ExceptionDescription
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
static G4int GetNewIntValue(const char *paramString)
void SetMaxBetaChangePerStep(G4double)
void SetParameterCandidates(const char *theString)
virtual ~G4OpticalPhysicsMessenger()
void SetDefaultValue(const char *theDefaultValue)
Scintillation process index.
Mie scattering process index.
void SetFiniteRiseTime(G4bool)
Absorption process index.
static G4bool GetNewBoolValue(const char *paramString)
void SetScintillationByParticleType(G4bool)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
void SetMaxNumPhotonsPerStep(G4int)
const XML_Char int const XML_Char * value
static G4bool ConvertToBool(const char *st)
void Configure(G4OpticalProcessIndex, G4bool)
static G4double GetNewDoubleValue(const char *paramString)
void SetRange(const char *rs)
void SetGuidance(const char *aGuidance)
void AvailableForStates(G4ApplicationState s1)
void SetVerboseLevel(G4int value)
Wave Length Shifting process index.
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
const char * data() const
G4String G4OpticalProcessName(G4int)
Return the name for a given optical process index.
void SetScintillationYieldFactor(G4double)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
void SetScintillationStackPhotons(G4bool)
void SetScintillationTrackInfo(G4bool)
void SetWLSTimeProfile(G4String)
void SetTrackSecondariesFirst(G4OpticalProcessIndex, G4bool)
void SetCandidates(const char *candidateList)
void SetDefaultValue(G4int defVal)
Rayleigh scattering process index.
void SetGuidance(const char *theGuidance)
void SetCerenkovStackPhotons(G4bool)
G4OpticalPhysicsMessenger(G4OpticalPhysics *)