Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/utils/src/G4OpticalParametersMessenger.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  1 //
  2 // ********************************************************************
  3 // * License and Disclaimer                                           *
  4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.                             *
 10 // *                                                                  *
 11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                                                  *
 18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // ********************************************************************
 25 //
 26 //
 27 //----------------------------------------------------------------------------
 28 //
 29 // ClassName:   G4OpticalParametersMessenger
 30 //
 31 // Author:      P.Gumplinger 30.09.2009 //
 32 //
 33 // Modified:    P.Gumplinger 29.09.2011
 34 //              (based on code from I. Hrivnacova)
 35 //
 36 //----------------------------------------------------------------------------
 37 //
 38 
 39 #include "G4OpticalParametersMessenger.hh"
 40 #include "G4OpticalParameters.hh"
 41 
 42 #include "G4UIcommand.hh"
 43 #include "G4UIdirectory.hh"
 44 #include "G4UIcmdWithABool.hh"
 45 #include "G4UIcmdWithAString.hh"
 46 #include "G4UIcmdWithADouble.hh"
 47 #include "G4UIcmdWithAnInteger.hh"
 48 #include "G4UIcmdWithADoubleAndUnit.hh"
 49 #include "G4UImanager.hh"
 50 #include "G4UIparameter.hh"
 51 
 52 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 53 
 54 G4OpticalParametersMessenger::G4OpticalParametersMessenger(
 55   G4OpticalParameters* opticalParameters)
 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   // general commands
 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;
 91   for(G4int i = 0; i < kNoProcess; ++i)
 92   {
 93     candidates += G4OpticalProcessName(i);
 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);
103   fActivateProcessCmd->AvailableForStates(G4State_PreInit);
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");
110   fVerboseCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
111 
112   fDumpCmd = new G4UIcommand("/process/optical/printParameters", this);
113   fDumpCmd->SetGuidance("Print all optical parameters.");
114 
115   // Cerenkov ////////////////////
116   fCerenkovMaxPhotonsCmd =
117     new G4UIcmdWithAnInteger("/process/optical/cerenkov/setMaxPhotons", this);
118   fCerenkovMaxPhotonsCmd->SetGuidance("Set maximum number of photons per step");
119   fCerenkovMaxPhotonsCmd->SetParameterName("CerenkovMaxPhotons", false);
120   fCerenkovMaxPhotonsCmd->SetRange("CerenkovMaxPhotons>=0");
121   fCerenkovMaxPhotonsCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
122 
123   fCerenkovMaxBetaChangeCmd =
124     new G4UIcmdWithADouble("/process/optical/cerenkov/setMaxBetaChange", this);
125   fCerenkovMaxBetaChangeCmd->SetGuidance(
126     "Set maximum change of beta of parent particle per step (in percent)");
127   fCerenkovMaxBetaChangeCmd->SetParameterName("CerenkovMaxBetaChange", false);
128   fCerenkovMaxBetaChangeCmd->SetRange("CerenkovMaxBetaChange>=0");
129   fCerenkovMaxBetaChangeCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
130 
131   fCerenkovStackPhotonsCmd =
132     new G4UIcmdWithABool("/process/optical/cerenkov/setStackPhotons", this);
133   fCerenkovStackPhotonsCmd->SetGuidance(
134     "Set whether or not to stack secondary Cerenkov photons");
135   fCerenkovStackPhotonsCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
136 
137   fCerenkovTrackSecondariesFirstCmd = new G4UIcmdWithABool(
138     "/process/optical/cerenkov/setTrackSecondariesFirst", this);
139   fCerenkovTrackSecondariesFirstCmd->SetGuidance(
140     "Whether to track secondary Cerenkov photons before the primary.");
141   fCerenkovTrackSecondariesFirstCmd->AvailableForStates(G4State_PreInit,
142                                                         G4State_Idle);
143 
144   fCerenkovVerboseLevelCmd =
145     new G4UIcmdWithAnInteger("/process/optical/cerenkov/verbose", this);
146   fCerenkovVerboseLevelCmd->SetGuidance("Verbose level for Cerenkov process.");
147   fCerenkovVerboseLevelCmd->SetParameterName("verbose", true);
148   fCerenkovVerboseLevelCmd->SetRange("verbose >= 0 && verbose <= 2");
149   fCerenkovVerboseLevelCmd->SetDefaultValue(2);
150   fCerenkovVerboseLevelCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
151 
152   // Scintillation //////////////////////////
153   fScintByParticleTypeCmd = new G4UIcmdWithABool(
154     "/process/optical/scintillation/setByParticleType", this);
155   fScintByParticleTypeCmd->SetGuidance(
156     "Activate/Inactivate scintillation process by particle type");
157   fScintByParticleTypeCmd->SetParameterName(
158     "ScintillationByParticleTypeActivation", false);
159   fScintByParticleTypeCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
160 
161   fScintTrackInfoCmd =
162     new G4UIcmdWithABool("/process/optical/scintillation/setTrackInfo", this);
163   fScintTrackInfoCmd->SetGuidance(
164     "Activate/Inactivate scintillation TrackInformation");
165   fScintTrackInfoCmd->SetParameterName("ScintillationTrackInfo", false);
166   fScintTrackInfoCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
167 
168   fScintFiniteRiseTimeCmd = new G4UIcmdWithABool(
169     "/process/optical/scintillation/setFiniteRiseTime", this);
170   fScintFiniteRiseTimeCmd->SetGuidance(
171     "Set option of a finite rise-time for G4Scintillation");
172   fScintFiniteRiseTimeCmd->SetGuidance(
173     "If set, the G4Scintillation process expects the user to have set the");
174   fScintFiniteRiseTimeCmd->SetGuidance(
175     "constant material property SCINTILLATIONRISETIME{1,2,3}");
176   fScintFiniteRiseTimeCmd->SetParameterName("FiniteRiseTime", false);
177   fScintFiniteRiseTimeCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
178 
179   fScintStackPhotonsCmd = new G4UIcmdWithABool(
180     "/process/optical/scintillation/setStackPhotons", this);
181   fScintStackPhotonsCmd->SetGuidance(
182     "Set whether or not to stack secondary Scintillation photons");
183   fScintStackPhotonsCmd->SetParameterName("ScintillationStackPhotons", true);
184   fScintStackPhotonsCmd->SetDefaultValue(true);
185   fScintStackPhotonsCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
186 
187   fScintTrackSecondariesFirstCmd = new G4UIcmdWithABool(
188     "/process/optical/scintillation/setTrackSecondariesFirst", this);
189   fScintTrackSecondariesFirstCmd->SetGuidance(
190     "Whether to track scintillation secondaries before primary.");
191   fScintTrackSecondariesFirstCmd->AvailableForStates(G4State_PreInit,
192                                                      G4State_Idle);
193 
194   fScintVerboseLevelCmd =
195     new G4UIcmdWithAnInteger("/process/optical/scintillation/verbose", this);
196   fScintVerboseLevelCmd->SetGuidance(
197     "Verbose level for scintillation process.");
198   fScintVerboseLevelCmd->SetParameterName("verbose", true);
199   fScintVerboseLevelCmd->SetRange("verbose >= 0 && verbose <= 2");
200   fScintVerboseLevelCmd->AvailableForStates(G4State_Idle, G4State_PreInit);
201 
202   // WLS   //////////////////////////////////
203   fWLSTimeProfileCmd =
204     new G4UIcmdWithAString("/process/optical/wls/setTimeProfile", this);
205   fWLSTimeProfileCmd->SetGuidance(
206     "Set the WLS time profile (delta or exponential)");
207   fWLSTimeProfileCmd->SetParameterName("WLSTimeProfile", false);
208   fWLSTimeProfileCmd->SetCandidates("delta exponential");
209   fWLSTimeProfileCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
210 
211   fWLSVerboseLevelCmd =
212     new G4UIcmdWithAnInteger("/process/optical/wls/verbose", this);
213   fWLSVerboseLevelCmd->SetGuidance("Verbose level for WLS process.");
214   fWLSVerboseLevelCmd->SetParameterName("verbose", true);
215   fWLSVerboseLevelCmd->SetRange("verbose >= 0 && verbose <= 2");
216   fWLSVerboseLevelCmd->SetDefaultValue(1);
217   fWLSVerboseLevelCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
218 
219   // WLS2   //////////////////////////////////
220   fWLS2TimeProfileCmd =
221     new G4UIcmdWithAString("/process/optical/wls2/setTimeProfile", this);
222   fWLS2TimeProfileCmd->SetGuidance(
223     "Set the WLS2 time profile (delta or exponential)");
224   fWLS2TimeProfileCmd->SetParameterName("WLS2TimeProfile", false);
225   fWLS2TimeProfileCmd->SetCandidates("delta exponential");
226   fWLS2TimeProfileCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
227 
228   fWLS2VerboseLevelCmd =
229     new G4UIcmdWithAnInteger("/process/optical/wls2/verbose", this);
230   fWLS2VerboseLevelCmd->SetGuidance("Verbose level for WLS2 process.");
231   fWLS2VerboseLevelCmd->SetParameterName("verbose", true);
232   fWLS2VerboseLevelCmd->SetRange("verbose >= 0 && verbose <= 2");
233   fWLS2VerboseLevelCmd->SetDefaultValue(1);
234   fWLS2VerboseLevelCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
235 
236   // boundary //////////////////////////////////////
237   fBoundaryInvokeSDCmd =
238     new G4UIcmdWithABool("/process/optical/boundary/setInvokeSD", this);
239   fBoundaryInvokeSDCmd->SetGuidance(
240     "Set option for calling InvokeSD in G4OpBoundaryProcess");
241   fBoundaryInvokeSDCmd->SetParameterName("InvokeSD", false);
242   fBoundaryInvokeSDCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
243 
244   fBoundaryVerboseLevelCmd =
245     new G4UIcmdWithAnInteger("/process/optical/boundary/verbose", this);
246   fBoundaryVerboseLevelCmd->SetGuidance("Verbose level for boundary process.");
247   fBoundaryVerboseLevelCmd->SetParameterName("verbose", true);
248   fBoundaryVerboseLevelCmd->SetRange("verbose >= 0 && verbose <= 2");
249   fBoundaryVerboseLevelCmd->SetDefaultValue(1);
250   fBoundaryVerboseLevelCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
251 
252   // absorption //////////////////////////////////////
253   fAbsorptionVerboseLevelCmd =
254     new G4UIcmdWithAnInteger("/process/optical/absorption/verbose", this);
255   fAbsorptionVerboseLevelCmd->SetGuidance(
256     "Verbose level for absorption process.");
257   fAbsorptionVerboseLevelCmd->SetParameterName("verbose", true);
258   fAbsorptionVerboseLevelCmd->SetRange("verbose >= 0 && verbose <= 2");
259   fAbsorptionVerboseLevelCmd->SetDefaultValue(1);
260   fAbsorptionVerboseLevelCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
261 
262   // rayleigh //////////////////////////////////////
263   fRayleighVerboseLevelCmd =
264     new G4UIcmdWithAnInteger("/process/optical/rayleigh/verbose", this);
265   fRayleighVerboseLevelCmd->SetGuidance("Verbose level for Rayleigh process.");
266   fRayleighVerboseLevelCmd->SetParameterName("verbose", true);
267   fRayleighVerboseLevelCmd->SetRange("verbose >= 0 && verbose <= 2");
268   fRayleighVerboseLevelCmd->SetDefaultValue(1);
269   fRayleighVerboseLevelCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
270 
271   // mie //////////////////////////////////////
272   fMieVerboseLevelCmd =
273     new G4UIcmdWithAnInteger("/process/optical/mie/verbose", this);
274   fMieVerboseLevelCmd->SetGuidance("Verbose level for Mie process.");
275   fMieVerboseLevelCmd->SetParameterName("verbose", true);
276   fMieVerboseLevelCmd->SetRange("verbose >= 0 && verbose <= 2");
277   fMieVerboseLevelCmd->SetDefaultValue(1);
278   fMieVerboseLevelCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
279 }
280 
281 G4OpticalParametersMessenger::~G4OpticalParametersMessenger()
282 {
283   delete fDir;
284   delete fCerenkovDir;
285   delete fScintDir;
286   delete fWlsDir;
287   delete fBoundaryDir;
288   delete fMieDir;
289   delete fAbsDir;
290   delete fRaylDir;
291   delete fActivateProcessCmd;
292   delete fVerboseCmd;
293   delete fDumpCmd;
294   delete fCerenkovMaxPhotonsCmd;
295   delete fCerenkovMaxBetaChangeCmd;
296   delete fCerenkovStackPhotonsCmd;
297   delete fCerenkovTrackSecondariesFirstCmd;
298   delete fCerenkovVerboseLevelCmd;
299   delete fScintByParticleTypeCmd;
300   delete fScintTrackInfoCmd;
301   delete fScintStackPhotonsCmd;
302   delete fScintVerboseLevelCmd;
303   delete fScintFiniteRiseTimeCmd;
304   delete fScintTrackSecondariesFirstCmd;
305   delete fWLSTimeProfileCmd;
306   delete fWLSVerboseLevelCmd;
307   delete fWLS2TimeProfileCmd;
308   delete fWLS2VerboseLevelCmd;
309   delete fAbsorptionVerboseLevelCmd;
310   delete fRayleighVerboseLevelCmd;
311   delete fMieVerboseLevelCmd;
312   delete fBoundaryVerboseLevelCmd;
313   delete fBoundaryInvokeSDCmd;
314 }
315 
316 void G4OpticalParametersMessenger::SetNewValue(G4UIcommand* command,
317                                                G4String newValue)
318 {
319   // physics needs to be rebuilt for all commands
320   G4bool physicsModified = true;
321 
322   /// Apply command to the associated object.
323   if(command == fActivateProcessCmd)
324   {
325     std::istringstream is(newValue.data());
326     G4String pn;
327     G4String flag;
328     is >> pn >> flag;
329     G4bool value = G4UIcommand::ConvertToBool(flag);
330     params->SetProcessActivation(pn, value);
331   }
332   else if(command == fVerboseCmd)
333   {
334     params->SetVerboseLevel(fVerboseCmd->GetNewIntValue(newValue));
335   }
336   else if(command == fDumpCmd)
337   {
338     params->Dump();
339   }
340   else if(command == fCerenkovMaxPhotonsCmd)
341   {
342     params->SetCerenkovMaxPhotonsPerStep(
343       fCerenkovMaxPhotonsCmd->GetNewIntValue(newValue));
344     G4cout << "Cerenkov max photons: " << params->GetCerenkovMaxPhotonsPerStep()
345            << G4endl;
346   }
347   else if(command == fCerenkovMaxBetaChangeCmd)
348   {
349     params->SetCerenkovMaxBetaChange(
350       fCerenkovMaxBetaChangeCmd->GetNewDoubleValue(newValue));
351   }
352   else if(command == fCerenkovStackPhotonsCmd)
353   {
354     params->SetCerenkovStackPhotons(
355       fCerenkovStackPhotonsCmd->GetNewBoolValue(newValue));
356   }
357   else if(command == fCerenkovTrackSecondariesFirstCmd)
358   {
359     params->SetCerenkovTrackSecondariesFirst(
360       fCerenkovTrackSecondariesFirstCmd->GetNewBoolValue(newValue));
361   }
362   else if(command == fCerenkovVerboseLevelCmd)
363   {
364     params->SetCerenkovVerboseLevel(
365       fCerenkovVerboseLevelCmd->GetNewIntValue(newValue));
366   }
367   else if(command == fScintByParticleTypeCmd)
368   {
369     params->SetScintByParticleType(
370       fScintByParticleTypeCmd->GetNewBoolValue(newValue));
371   }
372   else if(command == fScintTrackInfoCmd)
373   {
374     params->SetScintTrackInfo(fScintTrackInfoCmd->GetNewBoolValue(newValue));
375   }
376   else if(command == fScintFiniteRiseTimeCmd)
377   {
378     params->SetScintFiniteRiseTime(
379       fScintFiniteRiseTimeCmd->GetNewBoolValue(newValue));
380   }
381   else if(command == fScintStackPhotonsCmd)
382   {
383     params->SetScintStackPhotons(
384       fScintStackPhotonsCmd->GetNewBoolValue(newValue));
385   }
386   else if(command == fScintTrackSecondariesFirstCmd)
387   {
388     params->SetScintTrackSecondariesFirst(
389       fScintTrackSecondariesFirstCmd->GetNewBoolValue(newValue));
390   }
391   else if(command == fScintVerboseLevelCmd)
392   {
393     params->SetScintVerboseLevel(
394       fScintVerboseLevelCmd->GetNewIntValue(newValue));
395   }
396   else if(command == fWLSTimeProfileCmd)
397   {
398     params->SetWLSTimeProfile(newValue);
399   }
400   else if(command == fWLSVerboseLevelCmd)
401   {
402     params->SetWLSVerboseLevel(fWLSVerboseLevelCmd->GetNewIntValue(newValue));
403   }
404   else if(command == fWLS2TimeProfileCmd)
405   {
406     params->SetWLS2TimeProfile(newValue);
407   }
408   else if(command == fWLS2VerboseLevelCmd)
409   {
410     params->SetWLS2VerboseLevel(fWLS2VerboseLevelCmd->GetNewIntValue(newValue));
411   }
412   else if(command == fAbsorptionVerboseLevelCmd)
413   {
414     params->SetAbsorptionVerboseLevel(
415       fAbsorptionVerboseLevelCmd->GetNewIntValue(newValue));
416   }
417   else if(command == fRayleighVerboseLevelCmd)
418   {
419     params->SetRayleighVerboseLevel(
420       fRayleighVerboseLevelCmd->GetNewIntValue(newValue));
421   }
422   else if(command == fMieVerboseLevelCmd)
423   {
424     params->SetMieVerboseLevel(fMieVerboseLevelCmd->GetNewIntValue(newValue));
425   }
426   else if(command == fBoundaryVerboseLevelCmd)
427   {
428     params->SetBoundaryVerboseLevel(
429       fBoundaryVerboseLevelCmd->GetNewIntValue(newValue));
430   }
431   else if(command == fBoundaryInvokeSDCmd)
432   {
433     params->SetBoundaryInvokeSD(
434       fBoundaryInvokeSDCmd->GetNewBoolValue(newValue));
435   }
436   if(physicsModified)
437   {
438     G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
439   }
440 }
441