Geant4_10
G4EmManagerMessenger.cc
Go to the documentation of this file.
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 // $Id: G4EmManagerMessenger.cc 66241 2012-12-13 18:34:42Z gunter $
27 //
28 // -------------------------------------------------------------------
29 //
30 // GEANT4 Class file
31 //
32 // File name: G4EmManagerMessenger
33 //
34 // Author: Vladimir Ivanchenko created from G4EnergyLossMessenger
35 //
36 // Creation date: 22-05-2013
37 //
38 // Modifications:
39 //
40 // -------------------------------------------------------------------
41 //
42 
43 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
44 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
45 
46 #include "G4EmManagerMessenger.hh"
47 
48 #include "G4UIdirectory.hh"
49 #include "G4UIcommand.hh"
50 #include "G4UIparameter.hh"
51 #include "G4UIcmdWithABool.hh"
52 #include "G4UIcmdWithAnInteger.hh"
53 #include "G4UIcmdWithADouble.hh"
55 #include "G4UIcmdWithAString.hh"
56 #include "G4UImanager.hh"
57 #include "G4MscStepLimitType.hh"
58 #include "G4EmManager.hh"
59 
60 #include <sstream>
61 
62 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
63 
65 {
66  eLossDirectory = new G4UIdirectory("/process/eLoss/");
67  eLossDirectory->SetGuidance("Commands for EM processes.");
68  mscDirectory = new G4UIdirectory("/process/msc/");
69  mscDirectory->SetGuidance("Commands for EM scattering processes.");
70  emDirectory = new G4UIdirectory("/process/em/");
71  emDirectory->SetGuidance("General commands for EM processes.");
72 
73  EnlossFlucCmd = new G4UIcmdWithABool("/process/eLoss/fluct",this);
74  EnlossFlucCmd->SetGuidance("Enable/disable energy loss fluctuations.");
75  EnlossFlucCmd->SetParameterName("choice",true);
76  EnlossFlucCmd->SetDefaultValue(true);
78 
79  RndmStepCmd = new G4UIcmdWithABool("/process/eLoss/useCutAsFinalRange",this);
80  RndmStepCmd->SetGuidance("Use cut in range as a final range");
81  RndmStepCmd->SetParameterName("choice",true);
82  RndmStepCmd->SetDefaultValue(false);
84 
85  SubSecCmd = new G4UIcmdWithABool("/process/eLoss/subsec",this);
86  SubSecCmd->SetGuidance("Switch true/false the subcutoff generation.");
87  SubSecCmd->SetParameterName("choice",true);
88  SubSecCmd->SetDefaultValue(true);
90 
91  MinSubSecCmd = new G4UIcmdWithADouble("/process/eLoss/minsubsec",this);
92  MinSubSecCmd->SetGuidance("Set the ratio subcut/cut ");
93  MinSubSecCmd->SetParameterName("rcmin",true);
95 
96  StepFuncCmd = new G4UIcommand("/process/eLoss/StepFunction",this);
97  StepFuncCmd->SetGuidance("Set the energy loss step limitation parameters.");
98  StepFuncCmd->SetGuidance(" dRoverR : max Range variation per step");
99  StepFuncCmd->SetGuidance(" finalRange: range for final step");
100 
101  G4UIparameter* dRoverRPrm = new G4UIparameter("dRoverR",'d',false);
102  dRoverRPrm->SetGuidance("max Range variation per step (fractional number)");
103  dRoverRPrm->SetParameterRange("dRoverR>0. && dRoverR<=1.");
104  StepFuncCmd->SetParameter(dRoverRPrm);
105 
106  G4UIparameter* finalRangePrm = new G4UIparameter("finalRange",'d',false);
107  finalRangePrm->SetGuidance("range for final step");
108  finalRangePrm->SetParameterRange("finalRange>0.");
109  StepFuncCmd->SetParameter(finalRangePrm);
110 
111  G4UIparameter* unitPrm = new G4UIparameter("unit",'s',true);
112  unitPrm->SetGuidance("unit of finalRange");
113  unitPrm->SetDefaultValue("mm");
114  G4String unitCandidates =
116  unitPrm->SetParameterCandidates(unitCandidates);
117 
118  StepFuncCmd->SetParameter(unitPrm);
120 
121  MinEnCmd = new G4UIcmdWithADoubleAndUnit("/process/eLoss/minKinEnergy",this);
122  MinEnCmd->SetGuidance("Set the min kinetic energy");
123  MinEnCmd->SetParameterName("emin",true);
124  MinEnCmd->SetUnitCategory("Energy");
126 
127  MaxEnCmd = new G4UIcmdWithADoubleAndUnit("/process/eLoss/maxKinEnergy",this);
128  MaxEnCmd->SetGuidance("Set the max kinetic energy");
129  MaxEnCmd->SetParameterName("emax",true);
130  MaxEnCmd->SetUnitCategory("Energy");
132 
133  IntegCmd = new G4UIcmdWithABool("/process/eLoss/integral",this);
134  IntegCmd->SetGuidance("Switch true/false the integral option");
135  IntegCmd->SetParameterName("integ",true);
136  IntegCmd->SetDefaultValue(true);
138 
139  rangeCmd = new G4UIcmdWithABool("/process/eLoss/CSDARange",this);
140  rangeCmd->SetGuidance("Switch true/false the CSDA range calculation");
141  rangeCmd->SetParameterName("range",true);
142  rangeCmd->SetDefaultValue(true);
144 
145  lpmCmd = new G4UIcmdWithABool("/process/eLoss/LPM",this);
146  lpmCmd->SetGuidance("The flag of the LPM effect calculation");
147  lpmCmd->SetParameterName("lpm",true);
148  lpmCmd->SetDefaultValue(true);
150 
151  splCmd = new G4UIcmdWithABool("/process/em/spline",this);
152  splCmd->SetGuidance("The flag of usage spline for Physics Vectors");
153  splCmd->SetParameterName("spl",true);
154  splCmd->SetDefaultValue(false);
156  /*
157  aplCmd = new G4UIcmdWithABool("/process/em/applyCuts",this);
158  aplCmd->SetGuidance("The flag to Apply Cuts for gamma processes");
159  aplCmd->SetParameterName("apl",true);
160  aplCmd->SetDefaultValue(false);
161  aplCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
162 
163  deCmd = new G4UIcmdWithABool("/process/em/fluo",this);
164  deCmd->SetGuidance("The flag to enable/disable deexcitation");
165  deCmd->SetParameterName("fluoFlag",true);
166  deCmd->SetDefaultValue(false);
167  deCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
168 
169  auCmd = new G4UIcmdWithABool("/process/em/auger",this);
170  auCmd->SetGuidance("The flag to enable/disable Auger electrons");
171  auCmd->SetParameterName("augerFlag",true);
172  auCmd->SetDefaultValue(false);
173  auCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
174 
175  pixeCmd = new G4UIcmdWithABool("/process/em/pixe",this);
176  pixeCmd->SetGuidance("The flag to enable/disable PIXE");
177  pixeCmd->SetParameterName("pixeFlag",true);
178  pixeCmd->SetDefaultValue(false);
179  pixeCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
180 
181  pixeXsCmd = new G4UIcmdWithAString("/process/em/pixeXSmodel",this);
182  pixeXsCmd->SetGuidance("The name of PIXE cross section");
183  pixeXsCmd->SetParameterName("pixeXS",true);
184  pixeXsCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
185 
186  pixeeXsCmd = new G4UIcmdWithAString("/process/em/pixeElecXSmodel",this);
187  pixeeXsCmd->SetGuidance("The name of PIXE cross section for electron");
188  pixeeXsCmd->SetParameterName("pixeEXS",true);
189  pixeeXsCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
190 
191  deexCmd = new G4UIcommand("/process/em/deexcitation",this);
192  deexCmd->SetGuidance("Set deexcitation flags per G4Region.");
193  deexCmd->SetGuidance(" regName : G4Region name");
194  deexCmd->SetGuidance(" flagFluo : Fluorescence");
195  deexCmd->SetGuidance(" flagAuger : Auger");
196  deexCmd->SetGuidance(" flagPIXE : PIXE");
197 
198  G4UIparameter* regName = new G4UIparameter("regName",'s',false);
199  deexCmd->SetParameter(regName);
200 
201  G4UIparameter* flagFluo = new G4UIparameter("flagFluo",'s',false);
202  deexCmd->SetParameter(flagFluo);
203 
204  G4UIparameter* flagAuger = new G4UIparameter("flagAuger",'s',false);
205  deexCmd->SetParameter(flagAuger);
206 
207  G4UIparameter* flagPIXE = new G4UIparameter("flagPIXE",'s',false);
208  deexCmd->SetParameter(flagPIXE);
209  */
210  dedxCmd = new G4UIcmdWithAnInteger("/process/eLoss/binsDEDX",this);
211  dedxCmd->SetGuidance("Set number of bins for DEDX tables");
212  dedxCmd->SetParameterName("binsDEDX",true);
213  dedxCmd->SetDefaultValue(77);
215 
216  lamCmd = new G4UIcmdWithAnInteger("/process/eLoss/binsLambda",this);
217  lamCmd->SetGuidance("Set number of bins for Lambda tables");
218  lamCmd->SetParameterName("binsL",true);
219  lamCmd->SetDefaultValue(77);
221  /*
222  verCmd = new G4UIcmdWithAnInteger("/process/eLoss/verbose",this);
223  verCmd->SetGuidance("Set verbose level for EM physics");
224  verCmd->SetParameterName("verb",true);
225  verCmd->SetDefaultValue(1);
226  verCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
227 
228  ver1Cmd = new G4UIcmdWithAnInteger("/process/em/verbose",this);
229  ver1Cmd->SetGuidance("Set verbose level for EM physics");
230  ver1Cmd->SetParameterName("verb1",true);
231  ver1Cmd->SetDefaultValue(1);
232  ver1Cmd->AvailableForStates(G4State_PreInit,G4State_Idle);
233  */
234  lllCmd = new G4UIcmdWithADouble("/process/eLoss/linLossLimit",this);
235  lllCmd->SetGuidance("Set linearLossLimit parameter");
236  lllCmd->SetParameterName("linlim",true);
238  /*
239  labCmd = new G4UIcmdWithADouble("/process/eLoss/LambdaFactor",this);
240  labCmd->SetGuidance("Set lambdaFactor parameter for integral option");
241  labCmd->SetParameterName("Fl",true);
242  labCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
243 
244  mscCmd = new G4UIcmdWithAString("/process/msc/StepLimit",this);
245  mscCmd->SetGuidance("Set msc step limitation type");
246  mscCmd->SetParameterName("StepLim",true);
247  mscCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
248 
249  latCmd = new G4UIcmdWithABool("/process/msc/LateralDisplacement",this);
250  latCmd->SetGuidance("Set flag of sampling of lateral displacement");
251  latCmd->SetParameterName("lat",true);
252  latCmd->SetDefaultValue(true);
253  latCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
254 
255  frCmd = new G4UIcmdWithADouble("/process/msc/RangeFactor",this);
256  frCmd->SetGuidance("Set RangeFactor parameter for msc processes");
257  frCmd->SetParameterName("Fr",true);
258  frCmd->SetRange("Fr>0");
259  frCmd->SetDefaultValue(0.04);
260  frCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
261 
262  fgCmd = new G4UIcmdWithADouble("/process/msc/GeomFactor",this);
263  fgCmd->SetGuidance("Set GeomFactor parameter for msc processes");
264  fgCmd->SetParameterName("Fg",true);
265  fgCmd->SetRange("Fg>0");
266  fgCmd->SetDefaultValue(3.5);
267  fgCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
268 
269  mscfCmd = new G4UIcmdWithADouble("/process/msc/FactorForAngleLimit",this);
270  mscfCmd->SetGuidance("Set factor for computation of a limit for -t (invariant trasfer)");
271  mscfCmd->SetParameterName("Fact",true);
272  mscfCmd->SetRange("Fact>0");
273  mscfCmd->SetDefaultValue(1.);
274  mscfCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
275 
276  skinCmd = new G4UIcmdWithADouble("/process/msc/Skin",this);
277  skinCmd->SetGuidance("Set skin parameter for msc processes");
278  skinCmd->SetParameterName("skin",true);
279  skinCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
280 
281  angCmd = new G4UIcmdWithADoubleAndUnit("/process/msc/ThetaLimit",this);
282  angCmd->SetGuidance("Set the limit on the polar angle for msc and single scattering");
283  angCmd->SetParameterName("theta",true);
284  angCmd->SetUnitCategory("Angle");
285  angCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
286 
287  bfCmd = new G4UIcommand("/process/em/setBiasingFactor",this);
288  bfCmd->SetGuidance("Set factor for the process cross section.");
289  bfCmd->SetGuidance(" procName : process name");
290  bfCmd->SetGuidance(" procFact : factor");
291  bfCmd->SetGuidance(" flagFact : flag to change weight");
292 
293  G4UIparameter* procName = new G4UIparameter("procName",'s',false);
294  bfCmd->SetParameter(procName);
295 
296  G4UIparameter* procFact = new G4UIparameter("procFact",'d',false);
297  bfCmd->SetParameter(procFact);
298 
299  G4UIparameter* flagFact = new G4UIparameter("flagFact",'s',false);
300  bfCmd->SetParameter(flagFact);
301  bfCmd->AvailableForStates(G4State_Idle);
302 
303  fiCmd = new G4UIcommand("/process/em/setForcedInteraction",this);
304  fiCmd->SetGuidance("Set factor for the process cross section.");
305  fiCmd->SetGuidance(" procNam : process name");
306  fiCmd->SetGuidance(" regNam : region name");
307  fiCmd->SetGuidance(" tlength : fixed target length");
308  fiCmd->SetGuidance(" tflag : flag to change weight");
309 
310  G4UIparameter* procNam = new G4UIparameter("procNam",'s',false);
311  fiCmd->SetParameter(procNam);
312 
313  G4UIparameter* regNam = new G4UIparameter("regNam",'s',false);
314  fiCmd->SetParameter(regNam);
315 
316  G4UIparameter* tlength = new G4UIparameter("tlength",'d',false);
317  fiCmd->SetParameter(tlength);
318 
319  G4UIparameter* unitT = new G4UIparameter("unitT",'s',true);
320  fiCmd->SetParameter(unitT);
321  unitT->SetGuidance("unit of tlength");
322 
323  G4UIparameter* flagT = new G4UIparameter("tflag",'s',true);
324  fiCmd->SetParameter(flagT);
325  fiCmd->AvailableForStates(G4State_Idle);
326 
327  brCmd = new G4UIcommand("/process/em/setSecBiasing",this);
328  brCmd->SetGuidance("Set bremsstrahlung or delta-electron splitting/Russian roullette per region.");
329  brCmd->SetGuidance(" bProcNam : process name");
330  brCmd->SetGuidance(" bRegNam : region name");
331  brCmd->SetGuidance(" bFactor : number of splitted gamma or probability of Russian roulette");
332  brCmd->SetGuidance(" bEnergy : max energy of a secondary for this biasing method");
333 
334  G4UIparameter* bProcNam = new G4UIparameter("bProcNam",'s',false);
335  brCmd->SetParameter(bProcNam);
336 
337  G4UIparameter* bRegNam = new G4UIparameter("bRegNam",'s',false);
338  brCmd->SetParameter(bRegNam);
339 
340  G4UIparameter* bFactor = new G4UIparameter("bFactor",'d',false);
341  brCmd->SetParameter(bFactor);
342 
343  G4UIparameter* bEnergy = new G4UIparameter("bEnergy",'d',false);
344  brCmd->SetParameter(bEnergy);
345 
346  G4UIparameter* bUnit = new G4UIparameter("bUnit",'s',true);
347  brCmd->SetParameter(bUnit);
348  brCmd->SetGuidance("unit of energy");
349 
350  brCmd->AvailableForStates(G4State_Idle);
351  */
352 }
353 
354 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
355 
357 {
358  delete RndmStepCmd;
359  delete EnlossFlucCmd;
360  delete SubSecCmd;
361  delete MinSubSecCmd;
362  delete StepFuncCmd;
363  delete deexCmd;
364  delete eLossDirectory;
365  delete mscDirectory;
366  delete emDirectory;
367  delete MinEnCmd;
368  delete MaxEnCmd;
369  delete IntegCmd;
370  delete rangeCmd;
371  delete lpmCmd;
372  delete splCmd;
373  delete lllCmd;
374  delete lamCmd;
375  delete dedxCmd;
376  /*
377  delete aplCmd;
378  delete latCmd;
379  delete verCmd;
380  delete ver1Cmd;
381  delete mscCmd;
382  delete deCmd;
383  delete auCmd;
384  delete pixeCmd;
385  delete pixeXsCmd;
386  delete pixeeXsCmd;
387  delete frCmd;
388  delete fgCmd;
389  delete labCmd;
390  delete skinCmd;
391  delete angCmd;
392  delete mscfCmd;
393  delete bfCmd;
394  delete fiCmd;
395  delete brCmd;
396  */
397 }
398 
399 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
400 
402 {
403  if (command == RndmStepCmd) {
404  theManager->SetRandomStep(RndmStepCmd->GetNewBoolValue(newValue));
405  } else if (command == EnlossFlucCmd) {
406  theManager->SetLossFluctuations(EnlossFlucCmd->GetNewBoolValue(newValue));
407  } else if(command == SubSecCmd) {
408  theManager->SetSubCutoff(SubSecCmd->GetNewBoolValue(newValue));
409  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
410  } else if (command == MinSubSecCmd) {
411  theManager->SetMinSubRange(MinSubSecCmd->GetNewDoubleValue(newValue));
412  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
413  } else if (command == StepFuncCmd) {
414  G4double v1,v2;
415  G4String unt;
416  std::istringstream is(newValue);
417  is >> v1 >> v2 >> unt;
418  v2 *= G4UIcommand::ValueOf(unt);
419  theManager->SetStepFunction(v1,v2);
420  /*
421  } else if (command == deexCmd) {
422  G4String s1 (""), s2(""), s3(""), s4("");
423  G4bool b2(false), b3(false), b4(false);
424  std::istringstream is(newValue);
425  is >> s1 >> s2 >> s3 >> s4;
426  if(s2 == "true") { b2 = true; }
427  if(s3 == "true") { b3 = true; }
428  if(s4 == "true") { b4 = true; }
429  theManager->SetDeexcitationActiveRegion(s1,b2,b3,b4);
430  } else if (command == deCmd) {
431  theManager->SetFluo(deCmd->GetNewBoolValue(newValue));
432  } else if (command == auCmd) {
433  theManager->SetAuger(auCmd->GetNewBoolValue(newValue));
434  } else if (command == pixeCmd) {
435  theManager->SetPIXE(pixeCmd->GetNewBoolValue(newValue));
436  } else if (command == pixeXsCmd) {
437  G4String name;
438  if (newValue == "ecpssr_analytical")
439  {name = "ECPSSR_Analytical";}
440  else if (newValue == "ecpssr_interpolated")
441  {name = "ECPSSR_FormFactor";}
442  else
443  {name = newValue;}
444  theManager->SetPIXECrossSectionModel(name);
445  } else if (command == pixeeXsCmd) {
446  theManager->SetPIXEElectronCrossSectionModel(newValue);
447  } else if (command == mscCmd) {
448  if(newValue == "Minimal")
449  theManager->SetMscStepLimitation(fMinimal);
450 
451  else if(newValue == "UseDistanceToBoundary")
452  theManager->SetMscStepLimitation(fUseDistanceToBoundary);
453 
454  else if(newValue == "UseSafety")
455  theManager->SetMscStepLimitation(fUseSafety);
456 
457  else {
458  G4cout << "### G4EmManagerMessenger WARNING: StepLimit type <"
459  << newValue << "> unknown!" << G4endl;
460  return;
461  }
462  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
463 */
464  } else if (command == MinEnCmd) {
465  theManager->SetMinEnergy(MinEnCmd->GetNewDoubleValue(newValue));
466  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
467  } else if (command == MaxEnCmd) {
468  theManager->SetMaxEnergy(MaxEnCmd->GetNewDoubleValue(newValue));
469  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
470  } else if (command == IntegCmd) {
471  theManager->SetIntegral(IntegCmd->GetNewBoolValue(newValue));
472  } else if (command == rangeCmd) {
473  theManager->SetBuildCSDARange(rangeCmd->GetNewBoolValue(newValue));
474  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
475  } else if (command == lpmCmd) {
476  theManager->SetLPMFlag(lpmCmd->GetNewBoolValue(newValue));
477  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
478  } else if (command == splCmd) {
479  theManager->SetSplineFlag(splCmd->GetNewBoolValue(newValue));
480  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
481  /*
482  } else if (command == aplCmd) {
483  theManager->SetApplyCuts(aplCmd->GetNewBoolValue(newValue));
484  } else if (command == latCmd) {
485  theManager->SetMscLateralDisplacement(latCmd->GetNewBoolValue(newValue));
486  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
487  } else if (command == verCmd) {
488  theManager->SetVerbose(verCmd->GetNewIntValue(newValue));
489  } else if (command == ver1Cmd) {
490  theManager->SetVerbose(ver1Cmd->GetNewIntValue(newValue));
491 */
492  } else if (command == lllCmd) {
493  theManager->SetLinearLossLimit(lllCmd->GetNewDoubleValue(newValue));
494  /*
495  } else if (command == labCmd) {
496  theManager->SetLambdaFactor(labCmd->GetNewDoubleValue(newValue));
497  } else if (command == skinCmd) {
498  theManager->SetSkin(skinCmd->GetNewDoubleValue(newValue));
499  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
500 */
501  } else if (command == dedxCmd) {
502  theManager->SetDEDXBinning(dedxCmd->GetNewIntValue(newValue));
503  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
504  } else if (command == lamCmd) {
505  theManager->SetLambdaBinning(lamCmd->GetNewIntValue(newValue));
506  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
507  /*
508  } else if (command == frCmd) {
509  theManager->SetMscRangeFactor(frCmd->GetNewDoubleValue(newValue));
510  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
511  } else if (command == fgCmd) {
512  theManager->SetMscGeomFactor(fgCmd->GetNewDoubleValue(newValue));
513  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
514  } else if (command == mscfCmd) {
515  theManager->SetFactorForAngleLimit(mscfCmd->GetNewDoubleValue(newValue));
516  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
517  } else if (command == angCmd) {
518  theManager->SetPolarAngleLimit(angCmd->GetNewDoubleValue(newValue));
519  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
520  } else if (command == bfCmd) {
521  G4double v1(1.0);
522  G4String s0(""),s1("");
523  std::istringstream is(newValue);
524  is >> s0 >> v1 >> s1;
525  G4bool yes = false;
526  if(s1 == "true") { yes = true; }
527  theManager->SetProcessBiasingFactor(s0,v1,yes);
528  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
529  } else if (command == fiCmd) {
530  G4double v1(0.0);
531  G4String s1(""),s2(""),s3(""),unt("mm");
532  std::istringstream is(newValue);
533  is >> s1 >> s2 >> v1 >> unt >> s3;
534  G4bool yes = false;
535  if(s3 == "true") { yes = true; }
536  v1 *= G4UIcommand::ValueOf(unt);
537  theManager->ActivateForcedInteraction(s1,v1,s2,yes);
538  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
539  } else if (command == brCmd) {
540  G4double fb(1.0),en(1.e+30);
541  G4String s1(""),s2(""),unt("MeV");
542  std::istringstream is(newValue);
543  is >> s1 >> s2 >> fb >> en >> unt;
544  en *= G4UIcommand::ValueOf(unt);
545  if (s1=="phot"||s1=="compt"||s1=="conv")
546  theManager->ActivateSecondaryBiasingForGamma(s1,s2,fb,en);
547  else theManager->ActivateSecondaryBiasing(s1,s2,fb,en);
548  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
549 */
550  }
551 }
552 
553 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void SetParameter(G4UIparameter *const newParameter)
Definition: G4UIcommand.hh:152
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
static G4int GetNewIntValue(const char *paramString)
void SetParameterRange(const char *theRange)
void SetParameterCandidates(const char *theString)
void SetMaxEnergy(G4double val)
Definition: G4EmManager.cc:690
void SetSplineFlag(G4bool val)
Definition: G4EmManager.cc:875
const char * p
Definition: xmltok.h:285
void SetRandomStep(G4bool val)
Definition: G4EmManager.cc:665
G4EmManagerMessenger(G4EmManager *)
void SetLossFluctuations(G4bool val)
Definition: G4EmManager.cc:620
void SetDefaultValue(const char *theDefaultValue)
void SetUnitCategory(const char *unitCategory)
static G4double GetNewDoubleValue(const char *paramString)
void SetSubCutoff(G4bool val, const G4Region *r=0)
Definition: G4EmManager.cc:630
static G4bool GetNewBoolValue(const char *paramString)
void SetDefaultValue(G4bool defVal)
static G4UImanager * GetUIpointer()
Definition: G4UImanager.cc:58
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
void SetIntegral(G4bool val)
Definition: G4EmManager.cc:640
static G4String UnitsList(const char *unitCategory)
Definition: G4UIcommand.cc:306
void SetBuildCSDARange(G4bool val)
Definition: G4EmManager.cc:815
static G4double GetNewDoubleValue(const char *paramString)
void SetGuidance(const char *aGuidance)
Definition: G4UIcommand.hh:161
void SetDEDXBinning(G4int val)
Definition: G4EmManager.cc:722
void AvailableForStates(G4ApplicationState s1)
Definition: G4UIcommand.cc:225
void SetLinearLossLimit(G4double val)
Definition: G4EmManager.cc:806
void SetLambdaBinning(G4int val)
Definition: G4EmManager.cc:740
void SetLPMFlag(G4bool val)
Definition: G4EmManager.cc:861
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
static G4double ValueOf(const char *unitName)
Definition: G4UIcommand.cc:294
void SetStepFunction(G4double v1, G4double v2)
Definition: G4EmManager.cc:794
void SetDefaultValue(G4int defVal)
double G4double
Definition: G4Types.hh:76
void SetGuidance(const char *theGuidance)
void SetMinSubRange(G4double val)
Definition: G4EmManager.cc:655
void SetMinEnergy(G4double val)
Definition: G4EmManager.cc:675
static G4String CategoryOf(const char *unitName)
Definition: G4UIcommand.cc:301
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
virtual void SetNewValue(G4UIcommand *, G4String)
G4int ApplyCommand(const char *aCommand)
Definition: G4UImanager.cc:419