56 : params(opticalParameters)
57
58{
59 G4bool toBeBroadcasted =
false;
60 fDir = new G4UIdirectory("/process/optical/", toBeBroadcasted);
61 fDir->SetGuidance(
62 "Commands related to the optical physics simulation engine.");
63
64 fCerenkovDir =
65 new G4UIdirectory("/process/optical/cerenkov/", toBeBroadcasted);
66 fCerenkovDir->SetGuidance("Cerenkov process commands");
67 fScintDir =
68 new G4UIdirectory("/process/optical/scintillation/", toBeBroadcasted);
69 fScintDir->SetGuidance("Scintillation process commands");
70 fWlsDir = new G4UIdirectory("/process/optical/wls/", toBeBroadcasted);
71 fWlsDir->SetGuidance("Wave length shifting process commands");
72 fWls2Dir = new G4UIdirectory("/process/optical/wls2/", toBeBroadcasted);
73 fWls2Dir->SetGuidance("Second Wave length shifting process commands");
74 fBoundaryDir =
75 new G4UIdirectory("/process/optical/boundary/", toBeBroadcasted);
76 fBoundaryDir->SetGuidance("Boundary scattering commands");
77 fMieDir = new G4UIdirectory("/process/optical/mie/", toBeBroadcasted);
78 fMieDir->SetGuidance("Mie scattering process commands");
79 fAbsDir = new G4UIdirectory("/process/optical/absorption/", toBeBroadcasted);
80 fAbsDir->SetGuidance("absorption process commands");
81 fRaylDir = new G4UIdirectory("/process/optical/rayleigh/", toBeBroadcasted);
82 fRaylDir->SetGuidance("Rayleigh scattering commands");
83
84
85 fActivateProcessCmd =
86 new G4UIcommand("/process/optical/processActivation", this);
87 fActivateProcessCmd->SetGuidance(
88 "Activate/deactivate the specified optical process");
89 auto par = new G4UIparameter("proc_name", 's', false);
90 G4String candidates;
92 {
94 candidates += G4String(" ");
95 }
96 par->SetParameterCandidates(candidates);
97 par->SetGuidance("the process name");
98 fActivateProcessCmd->SetParameter(par);
99 par = new G4UIparameter("flag", 'b', true);
100 par->SetDefaultValue(true);
101 par->SetGuidance("activation flag");
102 fActivateProcessCmd->SetParameter(par);
104
105 fVerboseCmd = new G4UIcmdWithAnInteger("/process/optical/verbose", this);
106 fVerboseCmd->SetGuidance("Set default verbose level for optical processes");
107 fVerboseCmd->SetParameterName("ver", true);
108 fVerboseCmd->SetDefaultValue(1);
109 fVerboseCmd->SetRange("ver>=0");
111
112 fDumpCmd = new G4UIcommand("/process/optical/printParameters", this);
113 fDumpCmd->SetGuidance("Print all optical parameters.");
114 fDumpCmd->SetToBeBroadcasted(false);
115
116 fXRayCmd = new G4UIcommand("/process/optical/XRayModel", this);
117 fXRayCmd->SetGuidance("Add XRay model per G4LogicalVolume.");
118 fXRayCmd->SetGuidance(" lvName : G4LogicalVolume name");
119 fXRayCmd->SetGuidance(" xrayType : X-Ray model type");
121 fXRayCmd->SetToBeBroadcasted(false);
122 auto lvName = new G4UIparameter("lvName",'s',false);
123 fXRayCmd->SetParameter(lvName);
124 auto xrayT = new G4UIparameter("xrayT",'s',false);
125 fXRayCmd->SetParameter(xrayT);
126
127
128 fCerenkovMaxPhotonsCmd =
129 new G4UIcmdWithAnInteger("/process/optical/cerenkov/setMaxPhotons", this);
130 fCerenkovMaxPhotonsCmd->SetGuidance("Set maximum number of photons per step");
131 fCerenkovMaxPhotonsCmd->SetParameterName("CerenkovMaxPhotons", false);
132 fCerenkovMaxPhotonsCmd->SetRange("CerenkovMaxPhotons>=0");
134
135 fCerenkovMaxBetaChangeCmd =
136 new G4UIcmdWithADouble("/process/optical/cerenkov/setMaxBetaChange", this);
137 fCerenkovMaxBetaChangeCmd->SetGuidance(
138 "Set maximum change of beta of parent particle per step (in percent)");
139 fCerenkovMaxBetaChangeCmd->SetParameterName("CerenkovMaxBetaChange", false);
140 fCerenkovMaxBetaChangeCmd->SetRange("CerenkovMaxBetaChange>=0");
142
143 fCerenkovStackPhotonsCmd =
144 new G4UIcmdWithABool("/process/optical/cerenkov/setStackPhotons", this);
145 fCerenkovStackPhotonsCmd->SetGuidance(
146 "Set whether or not to stack secondary Cerenkov photons");
148
149 fCerenkovOffloadPhotonsCmd =
150 new G4UIcmdWithABool("/process/optical/cerenkov/setOffloadPhotons", this);
151 fCerenkovOffloadPhotonsCmd->SetGuidance(
152 "Set whether or not to offload secondary Cerenkov photons");
153 fCerenkovOffloadPhotonsCmd->SetParameterName("CerenkovOffloadPhotons", false);
154 fCerenkovOffloadPhotonsCmd->SetDefaultValue(false);
156
157 fCerenkovTrackSecondariesFirstCmd = new G4UIcmdWithABool(
158 "/process/optical/cerenkov/setTrackSecondariesFirst", this);
159 fCerenkovTrackSecondariesFirstCmd->SetGuidance(
160 "Whether to track secondary Cerenkov photons before the primary.");
163
164 fCerenkovVerboseLevelCmd =
165 new G4UIcmdWithAnInteger("/process/optical/cerenkov/verbose", this);
166 fCerenkovVerboseLevelCmd->SetGuidance("Verbose level for Cerenkov process.");
167 fCerenkovVerboseLevelCmd->SetParameterName("verbose", true);
168 fCerenkovVerboseLevelCmd->SetRange("verbose >= 0 && verbose <= 2");
169 fCerenkovVerboseLevelCmd->SetDefaultValue(2);
171
172
173 fScintByParticleTypeCmd = new G4UIcmdWithABool(
174 "/process/optical/scintillation/setByParticleType", this);
175 fScintByParticleTypeCmd->SetGuidance(
176 "Activate/Inactivate scintillation process by particle type");
177 fScintByParticleTypeCmd->SetParameterName(
178 "ScintillationByParticleTypeActivation", false);
180
181 fScintTrackInfoCmd =
182 new G4UIcmdWithABool("/process/optical/scintillation/setTrackInfo", this);
183 fScintTrackInfoCmd->SetGuidance(
184 "Activate/Inactivate scintillation TrackInformation");
185 fScintTrackInfoCmd->SetParameterName("ScintillationTrackInfo", false);
187
188 fScintFiniteRiseTimeCmd = new G4UIcmdWithABool(
189 "/process/optical/scintillation/setFiniteRiseTime", this);
190 fScintFiniteRiseTimeCmd->SetGuidance(
191 "Set option of a finite rise-time for G4Scintillation");
192 fScintFiniteRiseTimeCmd->SetGuidance(
193 "If set, the G4Scintillation process expects the user to have set the");
194 fScintFiniteRiseTimeCmd->SetGuidance(
195 "constant material property SCINTILLATIONRISETIME{1,2,3}");
196 fScintFiniteRiseTimeCmd->SetParameterName("FiniteRiseTime", false);
198
199 fScintStackPhotonsCmd = new G4UIcmdWithABool(
200 "/process/optical/scintillation/setStackPhotons", this);
201 fScintStackPhotonsCmd->SetGuidance(
202 "Set whether or not to stack secondary Scintillation photons");
203 fScintStackPhotonsCmd->SetParameterName("ScintillationStackPhotons", true);
204 fScintStackPhotonsCmd->SetDefaultValue(true);
206
207 fScintOffloadPhotonsCmd = new G4UIcmdWithABool(
208 "/process/optical/scintillation/setOffloadPhotons", this);
209 fScintOffloadPhotonsCmd->SetGuidance(
210 "Set whether or not to offload secondary scintillation photons");
211 fScintOffloadPhotonsCmd->SetParameterName("ScintillationOffloadPhotons", false);
212 fScintOffloadPhotonsCmd->SetDefaultValue(false);
214
215 fScintTrackSecondariesFirstCmd = new G4UIcmdWithABool(
216 "/process/optical/scintillation/setTrackSecondariesFirst", this);
217 fScintTrackSecondariesFirstCmd->SetGuidance(
218 "Whether to track scintillation secondaries before primary.");
221
222 fScintVerboseLevelCmd =
223 new G4UIcmdWithAnInteger("/process/optical/scintillation/verbose", this);
224 fScintVerboseLevelCmd->SetGuidance(
225 "Verbose level for scintillation process.");
226 fScintVerboseLevelCmd->SetParameterName("verbose", true);
227 fScintVerboseLevelCmd->SetRange("verbose >= 0 && verbose <= 2");
229
230
231 fWLSTimeProfileCmd =
232 new G4UIcmdWithAString("/process/optical/wls/setTimeProfile", this);
233 fWLSTimeProfileCmd->SetGuidance(
234 "Set the WLS time profile (delta or exponential)");
235 fWLSTimeProfileCmd->SetParameterName("WLSTimeProfile", false);
236 fWLSTimeProfileCmd->SetCandidates("delta exponential");
238
239 fWLSVerboseLevelCmd =
240 new G4UIcmdWithAnInteger("/process/optical/wls/verbose", this);
241 fWLSVerboseLevelCmd->SetGuidance("Verbose level for WLS process.");
242 fWLSVerboseLevelCmd->SetParameterName("verbose", true);
243 fWLSVerboseLevelCmd->SetRange("verbose >= 0 && verbose <= 2");
244 fWLSVerboseLevelCmd->SetDefaultValue(1);
246
247
248 fWLS2TimeProfileCmd =
249 new G4UIcmdWithAString("/process/optical/wls2/setTimeProfile", this);
250 fWLS2TimeProfileCmd->SetGuidance(
251 "Set the WLS2 time profile (delta or exponential)");
252 fWLS2TimeProfileCmd->SetParameterName("WLS2TimeProfile", false);
253 fWLS2TimeProfileCmd->SetCandidates("delta exponential");
255
256 fWLS2VerboseLevelCmd =
257 new G4UIcmdWithAnInteger("/process/optical/wls2/verbose", this);
258 fWLS2VerboseLevelCmd->SetGuidance("Verbose level for WLS2 process.");
259 fWLS2VerboseLevelCmd->SetParameterName("verbose", true);
260 fWLS2VerboseLevelCmd->SetRange("verbose >= 0 && verbose <= 2");
261 fWLS2VerboseLevelCmd->SetDefaultValue(1);
263
264
265 fBoundaryInvokeSDCmd =
266 new G4UIcmdWithABool("/process/optical/boundary/setInvokeSD", this);
267 fBoundaryInvokeSDCmd->SetGuidance(
268 "Set option for calling InvokeSD in G4OpBoundaryProcess");
269 fBoundaryInvokeSDCmd->SetParameterName("InvokeSD", false);
271
272 fBoundaryVerboseLevelCmd =
273 new G4UIcmdWithAnInteger("/process/optical/boundary/verbose", this);
274 fBoundaryVerboseLevelCmd->SetGuidance("Verbose level for boundary process.");
275 fBoundaryVerboseLevelCmd->SetParameterName("verbose", true);
276 fBoundaryVerboseLevelCmd->SetRange("verbose >= 0 && verbose <= 2");
277 fBoundaryVerboseLevelCmd->SetDefaultValue(1);
279
280
281 fAbsorptionVerboseLevelCmd =
282 new G4UIcmdWithAnInteger("/process/optical/absorption/verbose", this);
283 fAbsorptionVerboseLevelCmd->SetGuidance(
284 "Verbose level for absorption process.");
285 fAbsorptionVerboseLevelCmd->SetParameterName("verbose", true);
286 fAbsorptionVerboseLevelCmd->SetRange("verbose >= 0 && verbose <= 2");
287 fAbsorptionVerboseLevelCmd->SetDefaultValue(1);
289
290
291 fRayleighVerboseLevelCmd =
292 new G4UIcmdWithAnInteger("/process/optical/rayleigh/verbose", this);
293 fRayleighVerboseLevelCmd->SetGuidance("Verbose level for Rayleigh process.");
294 fRayleighVerboseLevelCmd->SetParameterName("verbose", true);
295 fRayleighVerboseLevelCmd->SetRange("verbose >= 0 && verbose <= 2");
296 fRayleighVerboseLevelCmd->SetDefaultValue(1);
298
299
300 fMieVerboseLevelCmd =
301 new G4UIcmdWithAnInteger("/process/optical/mie/verbose", this);
302 fMieVerboseLevelCmd->SetGuidance("Verbose level for Mie process.");
303 fMieVerboseLevelCmd->SetParameterName("verbose", true);
304 fMieVerboseLevelCmd->SetRange("verbose >= 0 && verbose <= 2");
305 fMieVerboseLevelCmd->SetDefaultValue(1);
307}
@ kNoProcess
Number of processes, no selected process.
G4String G4OpticalProcessName(G4int)
Return the name for a given optical process index.