Geant4  v4-10.4-release
 모두 클래스 네임스페이스들 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 Friends 매크로 그룹들 페이지들
G4EmParametersMessenger.cc
이 파일의 문서화 페이지로 가기
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: G4EmParametersMessenger.cc 66241 2012-12-13 18:34:42Z gunter $
27 //
28 // -------------------------------------------------------------------
29 //
30 // GEANT4 Class file
31 //
32 // File name: G4EmParametersMessenger
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 
47 #include "G4UIdirectory.hh"
48 #include "G4UIcommand.hh"
49 #include "G4UIparameter.hh"
50 #include "G4UIcmdWithABool.hh"
51 #include "G4UIcmdWithAnInteger.hh"
52 #include "G4UIcmdWithADouble.hh"
54 #include "G4UIcmdWithAString.hh"
55 #include "G4UImanager.hh"
56 #include "G4MscStepLimitType.hh"
58 #include "G4EmParameters.hh"
59 
60 #include <sstream>
61 
62 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
63 
65  : theParameters(ptr)
66 {
67  gconvDirectory = new G4UIdirectory("/process/gconv/");
68  gconvDirectory->SetGuidance("Commands for EM gamma conversion BH5D model.");
69  eLossDirectory = new G4UIdirectory("/process/eLoss/");
70  eLossDirectory->SetGuidance("Commands for EM processes.");
71  mscDirectory = new G4UIdirectory("/process/msc/");
72  mscDirectory->SetGuidance("Commands for EM scattering processes.");
73  emDirectory = new G4UIdirectory("/process/em/");
74  emDirectory->SetGuidance("General commands for EM processes.");
75  dnaDirectory = new G4UIdirectory("/process/dna/");
76  dnaDirectory->SetGuidance("Commands for DNA processes.");
77 
78  flucCmd = new G4UIcmdWithABool("/process/eLoss/fluct",this);
79  flucCmd->SetGuidance("Enable/disable energy loss fluctuations.");
80  flucCmd->SetParameterName("choice",true);
81  flucCmd->SetDefaultValue(true);
83 
84  rangeCmd = new G4UIcmdWithABool("/process/eLoss/CSDARange",this);
85  rangeCmd->SetGuidance("Enable/disable CSDA range calculation");
86  rangeCmd->SetParameterName("range",true);
87  rangeCmd->SetDefaultValue(false);
89 
90  lpmCmd = new G4UIcmdWithABool("/process/eLoss/LPM",this);
91  lpmCmd->SetGuidance("Enable/disable LPM effect calculation");
92  lpmCmd->SetParameterName("lpm",true);
93  lpmCmd->SetDefaultValue(true);
95 
96  splCmd = new G4UIcmdWithABool("/process/em/spline",this);
97  splCmd->SetGuidance("Enable/disable usage spline for Physics Vectors");
98  splCmd->SetParameterName("spl",true);
99  splCmd->SetDefaultValue(false);
101 
102  rsCmd = new G4UIcmdWithABool("/process/eLoss/useCutAsFinalRange",this);
103  rsCmd->SetGuidance("Enable/disable use of cut in range as a final range");
104  rsCmd->SetParameterName("choice",true);
105  rsCmd->SetDefaultValue(false);
107 
108  aplCmd = new G4UIcmdWithABool("/process/em/applyCuts",this);
109  aplCmd->SetGuidance("Enable/disable applying cuts for gamma processes");
110  aplCmd->SetParameterName("apl",true);
111  aplCmd->SetDefaultValue(false);
113 
114  deCmd = new G4UIcmdWithABool("/process/em/fluo",this);
115  deCmd->SetGuidance("Enable/disable atomic deexcitation");
116  deCmd->SetParameterName("fluoFlag",true);
117  deCmd->SetDefaultValue(false);
119 
120  dirFluoCmd = new G4UIcmdWithABool("/process/em/fluoBearden",this);
121  dirFluoCmd->SetGuidance("Enable/disable usage of Bearden fluorescence files");
122  dirFluoCmd->SetParameterName("fluoBeardenFlag",true);
123  dirFluoCmd->SetDefaultValue(false);
125 
126  auCmd = new G4UIcmdWithABool("/process/em/auger",this);
127  auCmd->SetGuidance("Enable/disable Auger electrons production");
128  auCmd->SetParameterName("augerFlag",true);
129  auCmd->SetDefaultValue(false);
131 
132  auCascadeCmd = new G4UIcmdWithABool("/process/em/augerCascade",this);
133  auCascadeCmd->SetGuidance("Enable/disable simulation of cascade of Auger electrons");
134  auCascadeCmd->SetParameterName("augerCascadeFlag",true);
137 
138  pixeCmd = new G4UIcmdWithABool("/process/em/pixe",this);
139  pixeCmd->SetGuidance("Enable/disable PIXE simulation");
140  pixeCmd->SetParameterName("pixeFlag",true);
141  pixeCmd->SetDefaultValue(false);
143 
144  dcutCmd = new G4UIcmdWithABool("/process/em/deexcitationIgnoreCut",this);
145  dcutCmd->SetGuidance("Enable/Disable usage of cuts in de-excitation module");
146  dcutCmd->SetParameterName("deexcut",true);
147  dcutCmd->SetDefaultValue(false);
149 
150  latCmd = new G4UIcmdWithABool("/process/msc/LateralDisplacement",this);
151  latCmd->SetGuidance("Enable/disable sampling of lateral displacement");
152  latCmd->SetParameterName("lat",true);
153  latCmd->SetDefaultValue(true);
155 
156  lat96Cmd = new G4UIcmdWithABool("/process/msc/LateralDisplacementAlg96",this);
157  lat96Cmd->SetGuidance("Enable/disable sampling of lateral displacement");
158  lat96Cmd->SetParameterName("lat96",true);
159  lat96Cmd->SetDefaultValue(false);
161 
162  mulatCmd = new G4UIcmdWithABool("/process/msc/MuHadLateralDisplacement",this);
163  mulatCmd->SetGuidance("Enable/disable sampling of lateral displacement for muons and hadrons");
164  mulatCmd->SetParameterName("mulat",true);
165  mulatCmd->SetDefaultValue(true);
167 
168  catCmd = new G4UIcmdWithABool("/process/msc/DisplacementBeyondSafety",this);
169  catCmd->SetGuidance("Enable/disable displacement at geometry boundary");
170  catCmd->SetParameterName("cat",true);
171  catCmd->SetDefaultValue(false);
173 
174  delCmd = new G4UIcmdWithABool("/process/eLoss/UseAngularGenerator",this);
175  delCmd->SetGuidance("Enable usage of angular generator for ionisation");
176  delCmd->SetParameterName("del",true);
177  delCmd->SetDefaultValue(false);
179 
180  IntegCmd = new G4UIcmdWithABool("/process/eLoss/integral",this);
181  IntegCmd->SetGuidance("Switch true/false the integral option");
182  IntegCmd->SetParameterName("integ",true);
183  IntegCmd->SetDefaultValue(true);
185 
186  mottCmd = new G4UIcmdWithABool("/process/msc/UseMottCorrection",this);
187  mottCmd->SetGuidance("Enable usage of Mott corrections for e- elastic scattering");
188  mottCmd->SetParameterName("mott",true);
189  mottCmd->SetDefaultValue(false);
191 
192  birksCmd = new G4UIcmdWithABool("/process/msc/UseG4EmSaturation",this);
193  birksCmd->SetGuidance("Enable usage of built-in Birks saturation");
194  birksCmd->SetParameterName("birks",true);
195  birksCmd->SetDefaultValue(false);
197 
198  dnafCmd = new G4UIcmdWithABool("/process/dna/UseDNAFast",this);
199  dnafCmd->SetGuidance("Enable usage of fast sampling for DNA models");
200  dnafCmd->SetParameterName("dnaf",true);
201  dnafCmd->SetDefaultValue(false);
203 
204  dnasCmd = new G4UIcmdWithABool("/process/dna/UseDNAStationary",this);
205  dnasCmd->SetGuidance("Enable usage of Stationary option for DNA models");
206  dnasCmd->SetParameterName("dnas",true);
207  dnasCmd->SetDefaultValue(false);
209 
210  dnamscCmd = new G4UIcmdWithABool("/process/dna/UseDNAElectronMsc",this);
211  dnamscCmd->SetGuidance("Enable usage of e- msc for DNA");
212  dnamscCmd->SetParameterName("dnamsc",true);
213  dnamscCmd->SetDefaultValue(false);
215 
216  sharkCmd = new G4UIcmdWithABool("/process/em/UseGammaShark",this);
217  sharkCmd->SetGuidance("Enable gamma super-process");
218  sharkCmd->SetParameterName("shark",true);
219  sharkCmd->SetDefaultValue(false);
221 
222  minSubSecCmd = new G4UIcmdWithADouble("/process/eLoss/minsubsec",this);
223  minSubSecCmd->SetGuidance("Set the ratio subcut/cut ");
224  minSubSecCmd->SetParameterName("rcmin",true);
226 
227  minEnCmd = new G4UIcmdWithADoubleAndUnit("/process/eLoss/minKinEnergy",this);
228  minEnCmd->SetGuidance("Set the min kinetic energy for EM tables");
229  minEnCmd->SetParameterName("emin",true);
230  minEnCmd->SetUnitCategory("Energy");
232 
233  maxEnCmd = new G4UIcmdWithADoubleAndUnit("/process/eLoss/maxKinEnergy",this);
234  maxEnCmd->SetGuidance("Set the max kinetic energy for EM tables");
235  maxEnCmd->SetParameterName("emax",true);
236  maxEnCmd->SetUnitCategory("Energy");
238 
239  cenCmd = new G4UIcmdWithADoubleAndUnit("/process/eLoss/maxKinEnergyCSDA",this);
240  cenCmd->SetGuidance("Set the max kinetic energy for CSDA table");
241  cenCmd->SetParameterName("emaxCSDA",true);
242  cenCmd->SetUnitCategory("Energy");
244 
245  lowEnCmd = new G4UIcmdWithADoubleAndUnit("/process/em/lowestElectronEnergy",this);
246  lowEnCmd->SetGuidance("Set the lowest kinetic energy for e+-");
247  lowEnCmd->SetParameterName("elow",true);
248  lowEnCmd->SetUnitCategory("Energy");
250 
251  lowhEnCmd = new G4UIcmdWithADoubleAndUnit("/process/em/lowestMuHadEnergy",this);
252  lowhEnCmd->SetGuidance("Set the lowest kinetic energy for muons and hadrons");
253  lowhEnCmd->SetParameterName("elowh",true);
254  lowhEnCmd->SetUnitCategory("Energy");
256 
257  lowEn3Cmd = new G4UIcmdWithADoubleAndUnit("/process/em/lowestTripletEnergy",this);
258  lowEn3Cmd->SetGuidance("Set the lowest kinetic energy for triplet production");
259  lowEn3Cmd->SetParameterName("elow3",true);
260  lowEn3Cmd->SetUnitCategory("Energy");
262 
263  lllCmd = new G4UIcmdWithADouble("/process/eLoss/linLossLimit",this);
264  lllCmd->SetGuidance("Set linearLossLimit parameter");
265  lllCmd->SetParameterName("linlim",true);
267 
268  brCmd = new G4UIcmdWithADoubleAndUnit("/process/eLoss/bremThreshold",this);
269  brCmd->SetGuidance("Set bremsstrahlung energy threshold");
270  brCmd->SetParameterName("emaxBrem",true);
271  brCmd->SetUnitCategory("Energy");
273 
274  labCmd = new G4UIcmdWithADouble("/process/eLoss/LambdaFactor",this);
275  labCmd->SetGuidance("Set lambdaFactor parameter for integral option");
276  labCmd->SetParameterName("Fl",true);
278 
279  mscfCmd = new G4UIcmdWithADouble("/process/msc/FactorForAngleLimit",this);
280  mscfCmd->SetGuidance("Set factor for computation of a limit for -t (invariant trasfer)");
281  mscfCmd->SetParameterName("Fact",true);
282  mscfCmd->SetRange("Fact>0");
285 
286  angCmd = new G4UIcmdWithADoubleAndUnit("/process/msc/ThetaLimit",this);
287  angCmd->SetGuidance("Set the limit on the polar angle for msc and single scattering");
288  angCmd->SetParameterName("theta",true);
289  angCmd->SetUnitCategory("Angle");
291 
292  msceCmd = new G4UIcmdWithADoubleAndUnit("/process/msc/EnergyLimit",this);
293  msceCmd->SetGuidance("Set the upper energy limit for msc");
294  msceCmd->SetParameterName("mscE",true);
295  msceCmd->SetUnitCategory("Energy");
297 
298  frCmd = new G4UIcmdWithADouble("/process/msc/RangeFactor",this);
299  frCmd->SetGuidance("Set RangeFactor for msc processes of e+-");
300  frCmd->SetParameterName("Fr",true);
301  frCmd->SetRange("Fr>0");
302  frCmd->SetDefaultValue(0.04);
304 
305  fr1Cmd = new G4UIcmdWithADouble("/process/msc/RangeFactorMuHad",this);
306  fr1Cmd->SetGuidance("Set RangeFactor for msc processes of muons/hadrons");
307  fr1Cmd->SetParameterName("Fr1",true);
308  fr1Cmd->SetRange("Fr1>0");
309  fr1Cmd->SetDefaultValue(0.2);
311 
312  fgCmd = new G4UIcmdWithADouble("/process/msc/GeomFactor",this);
313  fgCmd->SetGuidance("Set GeomFactor parameter for msc processes");
314  fgCmd->SetParameterName("Fg",true);
315  fgCmd->SetRange("Fg>0");
316  fgCmd->SetDefaultValue(3.5);
318 
319  skinCmd = new G4UIcmdWithADouble("/process/msc/Skin",this);
320  skinCmd->SetGuidance("Set skin parameter for msc processes");
321  skinCmd->SetParameterName("skin",true);
323 
324  screCmd = new G4UIcmdWithADouble("/process/msc/ScreeningFactor",this);
325  screCmd->SetGuidance("Set screening factor");
326  screCmd->SetParameterName("screen",true);
328 
329  dedxCmd = new G4UIcmdWithAnInteger("/process/eLoss/binsDEDX",this);
330  dedxCmd->SetGuidance("Set number of bins for EM tables");
331  dedxCmd->SetParameterName("binsDEDX",true);
334 
335  lamCmd = new G4UIcmdWithAnInteger("/process/eLoss/binsLambda",this);
336  lamCmd->SetGuidance("Set number of bins for EM tables");
337  lamCmd->SetParameterName("binsL",true);
338  lamCmd->SetDefaultValue(84);
340 
341  amCmd = new G4UIcmdWithAnInteger("/process/eLoss/binsPerDecade",this);
342  amCmd->SetGuidance("Set number of bins per decade for EM tables");
343  amCmd->SetParameterName("bins",true);
346 
347  verCmd = new G4UIcmdWithAnInteger("/process/eLoss/verbose",this);
348  verCmd->SetGuidance("Set verbose level for EM physics");
349  verCmd->SetParameterName("verb",true);
352 
353  ver1Cmd = new G4UIcmdWithAnInteger("/process/em/verbose",this);
354  ver1Cmd->SetGuidance("Set verbose level for EM physics");
355  ver1Cmd->SetParameterName("verb1",true);
358 
359  ver2Cmd = new G4UIcmdWithAnInteger("/process/em/workerVerbose",this);
360  ver2Cmd->SetGuidance("Set worker verbose level for EM physics");
361  ver2Cmd->SetParameterName("verb2",true);
364 
365  mscCmd = new G4UIcmdWithAString("/process/msc/StepLimit",this);
366  mscCmd->SetGuidance("Set msc step limitation type");
367  mscCmd->SetParameterName("StepLim",true);
368  mscCmd->SetCandidates("Minimal UseSafety UseSafetyPlus UseDistanceToBoundary");
370 
371  msc1Cmd = new G4UIcmdWithAString("/process/msc/StepLimitMuHad",this);
372  msc1Cmd->SetGuidance("Set msc step limitation type for muons/hadrons");
373  msc1Cmd->SetParameterName("StepLim1",true);
374  msc1Cmd->SetCandidates("Minimal UseSafety UseSafetyPlus UseDistanceToBoundary");
376 
377  pixeXsCmd = new G4UIcmdWithAString("/process/em/pixeXSmodel",this);
378  pixeXsCmd->SetGuidance("The name of PIXE cross section");
379  pixeXsCmd->SetParameterName("pixeXS",true);
380  pixeXsCmd->SetCandidates("ECPSSR_Analytical Empirical ECPSSR_FormFactor");
382 
383  pixeeXsCmd = new G4UIcmdWithAString("/process/em/pixeElecXSmodel",this);
384  pixeeXsCmd->SetGuidance("The name of PIXE cross section for electron");
385  pixeeXsCmd->SetParameterName("pixeEXS",true);
386  pixeeXsCmd->SetCandidates("ECPSSR_Analytical Empirical Livermore Penelope");
388 
389  dnaSolCmd = new G4UIcmdWithAString("/process/dna/e-SolvationSubType",this);
390  dnaSolCmd->SetGuidance("The name of e- solvation DNA model");
391  dnaSolCmd->SetParameterName("dnaSol",true);
392  dnaSolCmd->SetCandidates("Ritchie1994 Terrisol1990 Meesungnoen2002");
394 
395  paiCmd = new G4UIcommand("/process/em/AddPAIRegion",this);
396  paiCmd->SetGuidance("Activate PAI in the G4Region.");
397  paiCmd->SetGuidance(" partName : particle name (default - all)");
398  paiCmd->SetGuidance(" regName : G4Region name");
399  paiCmd->SetGuidance(" paiType : PAI, PAIphoton");
401 
402  G4UIparameter* part = new G4UIparameter("partName",'s',false);
403  paiCmd->SetParameter(part);
404 
405  G4UIparameter* pregName = new G4UIparameter("regName",'s',false);
406  paiCmd->SetParameter(pregName);
407 
408  G4UIparameter* ptype = new G4UIparameter("type",'s',false);
409  paiCmd->SetParameter(ptype);
410 
411  meCmd = new G4UIcmdWithAString("/process/em/AddMicroElecRegion",this);
412  meCmd->SetGuidance("Activate MicroElec model in the G4Region");
413  meCmd->SetParameterName("MicroElec",true);
415 
416  dnaCmd = new G4UIcommand("/process/em/AddDNARegion",this);
417  dnaCmd->SetGuidance("Activate DNA in a G4Region.");
418  dnaCmd->SetGuidance(" regName : G4Region name");
419  dnaCmd->SetGuidance(" dnaType : DNA_opt0, DNA_opt1, DNA_opt2");
421 
422  G4UIparameter* regName = new G4UIparameter("regName",'s',false);
423  dnaCmd->SetParameter(regName);
424 
425  G4UIparameter* type = new G4UIparameter("dnaType",'s',false);
426  dnaCmd->SetParameter(type);
427 
428  mscoCmd = new G4UIcommand("/process/em/AddEmRegion",this);
429  mscoCmd->SetGuidance("Add optional EM configuration for a G4Region.");
430  mscoCmd->SetGuidance(" regName : G4Region name");
431  mscoCmd->SetGuidance(" mscType : G4EmStandard, G4EmStandard_opt1, ...");
433 
434  G4UIparameter* mregName = new G4UIparameter("regName",'s',false);
435  mscoCmd->SetParameter(mregName);
436 
437  G4UIparameter* mtype = new G4UIparameter("mscType",'s',false);
438  mscoCmd->SetParameter(mtype);
439 
440  dumpCmd = new G4UIcommand("/process/em/printParameters",this);
441  dumpCmd->SetGuidance("Print all EM parameters.");
442 
443  SubSecCmd = new G4UIcommand("/process/eLoss/subsec",this);
444  SubSecCmd->SetGuidance("Switch true/false the subcutoff generation per region.");
445  SubSecCmd->SetGuidance(" subSec : true/false");
446  SubSecCmd->SetGuidance(" Region : region name");
448 
449  G4UIparameter* subSec = new G4UIparameter("subSec",'s',false);
450  SubSecCmd->SetParameter(subSec);
451 
452  G4UIparameter* subSecReg = new G4UIparameter("Region",'s',false);
453  SubSecCmd->SetParameter(subSecReg);
454 
455  StepFuncCmd = new G4UIcommand("/process/eLoss/StepFunction",this);
456  StepFuncCmd->SetGuidance("Set the energy loss step limitation parameters for e+-.");
457  StepFuncCmd->SetGuidance(" dRoverR : max Range variation per step");
458  StepFuncCmd->SetGuidance(" finalRange: range for final step");
460 
461  G4UIparameter* dRoverRPrm = new G4UIparameter("dRoverR",'d',false);
462  dRoverRPrm->SetParameterRange("dRoverR>0. && dRoverR<=1.");
463  StepFuncCmd->SetParameter(dRoverRPrm);
464 
465  G4UIparameter* finalRangePrm = new G4UIparameter("finalRange",'d',false);
466  finalRangePrm->SetParameterRange("finalRange>0.");
467  StepFuncCmd->SetParameter(finalRangePrm);
468 
469  G4UIparameter* unitPrm = new G4UIparameter("unit",'s',true);
470  unitPrm->SetDefaultValue("mm");
471  StepFuncCmd->SetParameter(unitPrm);
472 
473  StepFuncCmd1 = new G4UIcommand("/process/eLoss/StepFunctionMuHad",this);
474  StepFuncCmd1->SetGuidance("Set the energy loss step limitation parameters for muon/hadron.");
475  StepFuncCmd1->SetGuidance(" dRoverR : max Range variation per step");
476  StepFuncCmd1->SetGuidance(" finalRange: range for final step");
478 
479  G4UIparameter* dRoverRPrm1 = new G4UIparameter("dRoverRMuHad",'d',false);
480  dRoverRPrm1->SetParameterRange("dRoverRMuHad>0. && dRoverRMuHad<=1.");
481  StepFuncCmd1->SetParameter(dRoverRPrm1);
482 
483  G4UIparameter* finalRangePrm1 = new G4UIparameter("finalRangeMuHad",'d',false);
484  finalRangePrm1->SetParameterRange("finalRangeMuHad>0.");
485  StepFuncCmd1->SetParameter(finalRangePrm1);
486 
487  G4UIparameter* unitPrm1 = new G4UIparameter("unit",'s',true);
488  unitPrm1->SetDefaultValue("mm");
489  StepFuncCmd1->SetParameter(unitPrm1);
490 
491  deexCmd = new G4UIcommand("/process/em/deexcitation",this);
492  deexCmd->SetGuidance("Set deexcitation flags per G4Region.");
493  deexCmd->SetGuidance(" regName : G4Region name");
494  deexCmd->SetGuidance(" flagFluo : Fluorescence");
495  deexCmd->SetGuidance(" flagAuger : Auger");
496  deexCmd->SetGuidance(" flagPIXE : PIXE");
498 
499  G4UIparameter* regNameD = new G4UIparameter("regName",'s',false);
500  deexCmd->SetParameter(regNameD);
501 
502  G4UIparameter* flagFluo = new G4UIparameter("flagFluo",'s',false);
503  deexCmd->SetParameter(flagFluo);
504 
505  G4UIparameter* flagAuger = new G4UIparameter("flagAuger",'s',false);
506  deexCmd->SetParameter(flagAuger);
507 
508  G4UIparameter* flagPIXE = new G4UIparameter("flagPIXE",'s',false);
509  deexCmd->SetParameter(flagPIXE);
510 
511  bfCmd = new G4UIcommand("/process/em/setBiasingFactor",this);
512  bfCmd->SetGuidance("Set factor for the process cross section.");
513  bfCmd->SetGuidance(" procName : process name");
514  bfCmd->SetGuidance(" procFact : factor");
515  bfCmd->SetGuidance(" flagFact : flag to change weight");
517 
518  G4UIparameter* procName = new G4UIparameter("procName",'s',false);
519  bfCmd->SetParameter(procName);
520 
521  G4UIparameter* procFact = new G4UIparameter("procFact",'d',false);
522  bfCmd->SetParameter(procFact);
523 
524  G4UIparameter* flagFact = new G4UIparameter("flagFact",'s',false);
525  bfCmd->SetParameter(flagFact);
526 
527  fiCmd = new G4UIcommand("/process/em/setForcedInteraction",this);
528  fiCmd->SetGuidance("Set factor for the process cross section.");
529  fiCmd->SetGuidance(" procNam : process name");
530  fiCmd->SetGuidance(" regNam : region name");
531  fiCmd->SetGuidance(" tlength : fixed target length");
532  fiCmd->SetGuidance(" unitT : length unit");
533  fiCmd->SetGuidance(" tflag : flag to change weight");
535 
536  G4UIparameter* procNam = new G4UIparameter("procNam",'s',false);
537  fiCmd->SetParameter(procNam);
538 
539  G4UIparameter* regNam = new G4UIparameter("regNam",'s',false);
540  fiCmd->SetParameter(regNam);
541 
542  G4UIparameter* tlength = new G4UIparameter("tlength",'d',false);
543  fiCmd->SetParameter(tlength);
544 
545  G4UIparameter* unitT = new G4UIparameter("unitT",'s',true);
546  fiCmd->SetParameter(unitT);
547 
548  G4UIparameter* flagT = new G4UIparameter("tflag",'s',true);
549  fiCmd->SetParameter(flagT);
550 
551  bsCmd = new G4UIcommand("/process/em/setSecBiasing",this);
552  bsCmd->SetGuidance("Set bremsstrahlung or delta-e- splitting/Russian roullette per region.");
553  bsCmd->SetGuidance(" bProcNam : process name");
554  bsCmd->SetGuidance(" bRegNam : region name");
555  bsCmd->SetGuidance(" bFactor : number of splitted gamma or probability of Russian roulette");
556  bsCmd->SetGuidance(" bEnergy : max energy of a secondary for this biasing method");
557  bsCmd->SetGuidance(" bUnit : energy unit");
559 
560  G4UIparameter* bProcNam = new G4UIparameter("bProcNam",'s',false);
561  bsCmd->SetParameter(bProcNam);
562 
563  G4UIparameter* bRegNam = new G4UIparameter("bRegNam",'s',false);
564  bsCmd->SetParameter(bRegNam);
565 
566  G4UIparameter* bFactor = new G4UIparameter("bFactor",'d',false);
567  bsCmd->SetParameter(bFactor);
568 
569  G4UIparameter* bEnergy = new G4UIparameter("bEnergy",'d',false);
570  bsCmd->SetParameter(bEnergy);
571 
572  G4UIparameter* bUnit = new G4UIparameter("bUnit",'s',true);
573  bsCmd->SetParameter(bUnit);
574 
575  nffCmd = new G4UIcmdWithAString("/process/em/setNuclearFormFactor",this);
576  nffCmd->SetGuidance("Define typy of nuclear form-factor");
577  nffCmd->SetParameterName("NucFF",true);
578  nffCmd->SetCandidates("None Exponential Gaussian Flat");
580 
581  tripletCmd = new G4UIcmdWithAnInteger("/process/gconv/conversionType",this);
582  tripletCmd->SetGuidance("gamma conversion triplet/nuclear genaration type:");
583  tripletCmd->SetGuidance("0 - (default) both triplet and nuclear");
584  tripletCmd->SetGuidance("1 - force nuclear");
585  tripletCmd->SetGuidance("2 - force triplet");
586  tripletCmd->SetParameterName("type",false);
587  tripletCmd->SetRange("type >= 0 && type <= 2");
590 
591  onIsolatedCmd = new G4UIcmdWithABool("/process/gconv/onIsolated",this);
592  onIsolatedCmd->SetGuidance("Conversion on isolated charged particles");
593  onIsolatedCmd->SetGuidance("false (default) : atomic electron screening");
594  onIsolatedCmd->SetGuidance("true : conversion on isolated particles.");
595  onIsolatedCmd->SetParameterName("flag",false);
598 }
599 
600 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
601 
603 {
604  delete gconvDirectory;
605  delete eLossDirectory;
606  delete mscDirectory;
607  delete emDirectory;
608  delete dnaDirectory;
609 
610  delete flucCmd;
611  delete rangeCmd;
612  delete lpmCmd;
613  delete splCmd;
614  delete rsCmd;
615  delete aplCmd;
616  delete deCmd;
617  delete dirFluoCmd;
618  delete auCmd;
619  delete auCascadeCmd;
620  delete pixeCmd;
621  delete dcutCmd;
622  delete latCmd;
623  delete lat96Cmd;
624  delete mulatCmd;
625  delete catCmd;
626  delete delCmd;
627  delete IntegCmd;
628  delete mottCmd;
629  delete birksCmd;
630  delete dnafCmd;
631  delete dnasCmd;
632  delete dnamscCmd;
633  delete sharkCmd;
634 
635  delete minSubSecCmd;
636  delete minEnCmd;
637  delete maxEnCmd;
638  delete cenCmd;
639  delete lowEnCmd;
640  delete lowhEnCmd;
641  delete lowEn3Cmd;
642  delete lllCmd;
643  delete brCmd;
644  delete labCmd;
645  delete mscfCmd;
646  delete angCmd;
647  delete msceCmd;
648  delete frCmd;
649  delete fr1Cmd;
650  delete fgCmd;
651  delete skinCmd;
652  delete screCmd;
653 
654  delete dedxCmd;
655  delete lamCmd;
656  delete amCmd;
657  delete verCmd;
658  delete ver1Cmd;
659  delete ver2Cmd;
660 
661  delete mscCmd;
662  delete msc1Cmd;
663 
664  delete pixeXsCmd;
665  delete pixeeXsCmd;
666  delete dnaSolCmd;
667 
668  delete paiCmd;
669  delete meCmd;
670  delete dnaCmd;
671  delete mscoCmd;
672  delete dumpCmd;
673 
674  delete SubSecCmd;
675  delete StepFuncCmd;
676  delete StepFuncCmd1;
677  delete deexCmd;
678  delete bfCmd;
679  delete fiCmd;
680  delete bsCmd;
681  delete nffCmd;
682 
683  delete onIsolatedCmd;
684  delete tripletCmd;
685 }
686 
687 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
688 
690  G4String newValue)
691 {
692  G4bool physicsModified = false;
693  if (command == flucCmd) {
695  physicsModified = true;
696  } else if (command == rangeCmd) {
698  } else if (command == lpmCmd) {
700  physicsModified = true;
701  } else if (command == splCmd) {
703  } else if (command == rsCmd) {
705  physicsModified = true;
706  } else if (command == aplCmd) {
708  physicsModified = true;
709  } else if (command == deCmd) {
711  physicsModified = true;
712  } else if (command == dirFluoCmd) {
714  } else if (command == auCmd) {
716  physicsModified = true;
717  } else if (command == auCascadeCmd) {
719  physicsModified = true;
720  } else if (command == pixeCmd) {
722  physicsModified = true;
723  } else if (command == dcutCmd) {
725  physicsModified = true;
726  } else if (command == latCmd) {
728  physicsModified = true;
729  } else if (command == lat96Cmd) {
731  physicsModified = true;
732  } else if (command == mulatCmd) {
734  physicsModified = true;
735  } else if (command == catCmd) {
737  physicsModified = true;
738  } else if (command == delCmd) {
740  } else if (command == IntegCmd) {
742  physicsModified = true;
743  } else if (command == mottCmd) {
745  } else if (command == birksCmd) {
747  } else if (command == dnafCmd) {
749  } else if (command == dnasCmd) {
751  } else if (command == dnamscCmd) {
753  } else if (command == dnaSolCmd) {
755  if(newValue == "Ritchie1994") {
756  ttt = fRitchie1994eSolvation;
757  } else if(newValue == "Terrisol1990") {
759  } else if (newValue == "Meesungnoen2002") {
761  }
763  } else if (command == sharkCmd) {
765 
766  } else if (command == minSubSecCmd) {
768  } else if (command == minEnCmd) {
770  } else if (command == maxEnCmd) {
772  } else if (command == cenCmd) {
774  physicsModified = true;
775  } else if (command == lowEnCmd) {
777  physicsModified = true;
778  } else if (command == lowEn3Cmd) {
780  physicsModified = true;
781  } else if (command == lowhEnCmd) {
783  physicsModified = true;
784  } else if (command == lllCmd) {
786  physicsModified = true;
787  } else if (command == brCmd) {
789  physicsModified = true;
790  } else if (command == labCmd) {
792  physicsModified = true;
793  } else if (command == mscfCmd) {
795  } else if (command == angCmd) {
797  physicsModified = true;
798  } else if (command == msceCmd) {
800  } else if (command == frCmd) {
802  physicsModified = true;
803  } else if (command == fr1Cmd) {
805  physicsModified = true;
806  } else if (command == fgCmd) {
808  physicsModified = true;
809  } else if (command == skinCmd) {
811  physicsModified = true;
812  } else if (command == screCmd) {
814 
815  } else if (command == dedxCmd) {
817  } else if (command == lamCmd) {
819  } else if (command == amCmd) {
821  } else if (command == verCmd) {
823  } else if (command == ver1Cmd) {
825  physicsModified = true;
826  } else if (command == ver2Cmd) {
828  physicsModified = true;
829 
830  } else if (command == mscCmd || command == msc1Cmd) {
831  G4MscStepLimitType msctype = fUseSafety;
832  if(newValue == "Minimal") {
833  msctype = fMinimal;
834  } else if(newValue == "UseDistanceToBoundary") {
835  msctype = fUseDistanceToBoundary;
836  } else if(newValue == "UseSafety") {
837  msctype = fUseSafety;
838  } else if(newValue == "UseSafetyPlus") {
839  msctype = fUseSafetyPlus;
840  } else {
842  ed << " StepLimit type <" << newValue << "> unknown!";
843  G4Exception("G4EmParametersMessenger", "em0044", JustWarning, ed);
844  return;
845  }
846  if (command == mscCmd) {
848  } else {
850  }
851  physicsModified = true;
852  } else if (command == pixeXsCmd) {
854  physicsModified = true;
855  } else if (command == pixeeXsCmd) {
857  physicsModified = true;
858  } else if (command == paiCmd) {
859  G4String s1(""),s2(""),s3("");
860  std::istringstream is(newValue);
861  is >> s1 >> s2 >> s3;
862  theParameters->AddPAIModel(s1, s2, s3);
863  } else if (command == meCmd) {
864  theParameters->AddMicroElec(newValue);
865  } else if (command == dnaCmd) {
866  G4String s1(""),s2("");
867  std::istringstream is(newValue);
868  is >> s1 >> s2;
869  theParameters->AddDNA(s1, s2);
870  } else if (command == mscoCmd) {
871  G4String s1(""),s2("");
872  std::istringstream is(newValue);
873  is >> s1 >> s2;
874  theParameters->AddPhysics(s1, s2);
875  } else if (command == dumpCmd) {
876  theParameters->Dump();
877  } else if (command == SubSecCmd) {
878  G4String s1, s2;
879  std::istringstream is(newValue);
880  is >> s1 >> s2;
881  G4bool yes = false;
882  if(s1 == "true") { yes = true; }
883  theParameters->SetSubCutoff(yes,s2);
884  } else if (command == StepFuncCmd || command == StepFuncCmd1) {
885  G4double v1,v2;
886  G4String unt;
887  std::istringstream is(newValue);
888  is >> v1 >> v2 >> unt;
889  v2 *= G4UIcommand::ValueOf(unt);
890  if(command == StepFuncCmd) {
892  } else {
894  }
895  physicsModified = true;
896  } else if (command == deexCmd) {
897  G4String s1 (""), s2(""), s3(""), s4("");
898  G4bool b2(false), b3(false), b4(false);
899  std::istringstream is(newValue);
900  is >> s1 >> s2 >> s3 >> s4;
901  if(s2 == "true") { b2 = true; }
902  if(s3 == "true") { b3 = true; }
903  if(s4 == "true") { b4 = true; }
904  theParameters->SetDeexActiveRegion(s1,b2,b3,b4);
905  physicsModified = true;
906  } else if (command == bfCmd) {
907  G4double v1(1.0);
908  G4String s0(""),s1("");
909  std::istringstream is(newValue);
910  is >> s0 >> v1 >> s1;
911  G4bool yes = false;
912  if(s1 == "true") { yes = true; }
914  physicsModified = true;
915  } else if (command == fiCmd) {
916  G4double v1(0.0);
917  G4String s1(""),s2(""),s3(""),unt("mm");
918  std::istringstream is(newValue);
919  is >> s1 >> s2 >> v1 >> unt >> s3;
920  G4bool yes = false;
921  if(s3 == "true") { yes = true; }
922  v1 *= G4UIcommand::ValueOf(unt);
924  physicsModified = true;
925  } else if (command == bsCmd) {
926  G4double fb(1.0),en(1.e+30);
927  G4String s1(""),s2(""),unt("MeV");
928  std::istringstream is(newValue);
929  is >> s1 >> s2 >> fb >> en >> unt;
930  en *= G4UIcommand::ValueOf(unt);
932  physicsModified = true;
933  } else if (command == nffCmd) {
935  if(newValue == "Exponential") { x = fExponentialNF; }
936  else if(newValue == "Gaussian") { x = fGaussianNF; }
937  else if(newValue == "Flat") { x = fFlatNF; }
938  else if(newValue != "None") {
940  ed << " NuclearFormFactor type <" << newValue << "> unknown!";
941  G4Exception("G4EmParametersMessenger", "em0044", JustWarning, ed);
942  return;
943  }
945  } else if ( command==tripletCmd ) {
947  physicsModified = true;
948  } else if ( command==onIsolatedCmd ) {
950  physicsModified = true;
951  }
952 
953  if(physicsModified) {
954  G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
955  }
956 }
957 
958 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
Float_t x
Definition: compare.C:6
static G4double ValueOf(const char *unitName)
Definition: G4UIcommand.cc:311
void SetMaxEnergy(G4double val)
void SetGuidance(const char *aGuidance)
Definition: G4UIcommand.hh:161
void SetMscEnergyLimit(G4double val)
void SetDeexcitationIgnoreCut(G4bool val)
G4UIcmdWithADoubleAndUnit * maxEnCmd
G4UIcmdWithADoubleAndUnit * angCmd
void SetBremsstrahlungTh(G4double val)
void SetMinSubRange(G4double val)
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:45
void SetMscMuHadStepLimitType(G4MscStepLimitType val)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
G4MscStepLimitType
void SetLambdaFactor(G4double val)
void SetSpline(G4bool val)
void SetUseCutAsFinalRange(G4bool val)
void SetPIXEElectronCrossSectionModel(const G4String &)
G4int ApplyCommand(const char *aCommand)
Definition: G4UImanager.cc:466
void SetDefaultValue(G4bool defVal)
void SetDefaultValue(G4int defVal)
void SetMuHadLateralDisplacement(G4bool val)
void SetBeardenFluoDir(G4bool val)
void AddPhysics(const G4String &region, const G4String &type)
void SetVerbose(G4int val)
void SetStepFunctionMuHad(G4double v1, G4double v2)
void SetLPM(G4bool val)
void SetRange(const char *rs)
Definition: G4UIcommand.hh:125
static G4double GetNewDoubleValue(const char *paramString)
void SetOnIsolated(G4bool val)
void AddPAIModel(const G4String &particle, const G4String &region, const G4String &type)
void ActivateSecondaryBiasing(const G4String &name, const G4String &region, G4double factor, G4double energyLimit)
void SetBuildCSDARange(G4bool val)
void SetLossFluctuations(G4bool val)
void SetLowestTripletEnergy(G4double val)
G4UIcmdWithAnInteger * tripletCmd
static G4UImanager * GetUIpointer()
Definition: G4UImanager.cc:73
void ActivateAngularGeneratorForIonisation(G4bool val)
static G4bool GetNewBoolValue(const char *paramString)
void SetParameterRange(const char *theRange)
void SetLateralDisplacement(G4bool val)
G4UIcmdWithAnInteger * lamCmd
void SetParameter(G4UIparameter *const newParameter)
Definition: G4UIcommand.hh:152
void SetMinEnergy(G4double val)
void SetDefaultValue(const char *theDefaultValue)
static G4double GetNewDoubleValue(const char *paramString)
void SetMscSkin(G4double val)
double G4double
Definition: G4Types.hh:76
bool G4bool
Definition: G4Types.hh:79
TString part[npart]
Definition: Style.C:32
void SetDNAStationary(G4bool val)
G4UIcmdWithADouble * minSubSecCmd
void SetMscThetaLimit(G4double val)
void SetMscMuHadRangeFactor(G4double val)
void SetConversionType(G4int val)
G4UIcmdWithAnInteger * verCmd
void SetStepFunction(G4double v1, G4double v2)
G4UIcmdWithADoubleAndUnit * minEnCmd
void SetLowestElectronEnergy(G4double val)
void SetMscRangeFactor(G4double val)
void SetUnitCategory(const char *unitCategory)
void SetPIXECrossSectionModel(const G4String &)
void SetSubCutoff(G4bool val, const G4String &region="")
void SetFactorForAngleLimit(G4double val)
void SetLatDisplacementBeyondSafety(G4bool val)
void SetFluo(G4bool val)
G4UIcmdWithADoubleAndUnit * lowhEnCmd
void SetPixe(G4bool val)
void AddMicroElec(const G4String &region)
G4UIcmdWithAnInteger * amCmd
void SetAuger(G4bool val)
void SetCandidates(const char *candidateList)
void SetNumberOfBinsPerDecade(G4int val)
void AddDNA(const G4String &region, const G4String &type)
void SetIntegral(G4bool val)
TFile fb("Li6.root")
void SetBirksActive(G4bool val)
void ActivateForcedInteraction(const G4String &procname, const G4String &region, G4double length, G4bool wflag)
void SetLowestMuHadEnergy(G4double val)
void SetMscStepLimitType(G4MscStepLimitType val)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.hh:65
void SetAugerCascade(G4bool val)
G4UIcmdWithADoubleAndUnit * lowEnCmd
void SetDNAFast(G4bool val)
void SetNuclearFormfactorType(G4NuclearFormfactorType val)
G4NuclearFormfactorType
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
void SetDefaultValue(G4double defVal)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
static G4int GetNewIntValue(const char *paramString)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
G4UIcmdWithAnInteger * dedxCmd
void SetLinearLossLimit(G4double val)
void SetWorkerVerbose(G4int val)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
G4UIcmdWithADoubleAndUnit * msceCmd
void SetMscGeomFactor(G4double val)
void SetMaxEnergyForCSDARange(G4double val)
void SetGammaSharkActive(G4bool val)
void SetDeexActiveRegion(const G4String &region, G4bool fdeex, G4bool fauger, G4bool fpixe)
void SetLateralDisplacementAlg96(G4bool val)
void SetScreeningFactor(G4double val)
void SetProcessBiasingFactor(const G4String &procname, G4double val, G4bool wflag)
void SetNumberOfBins(G4int val)
G4UIcmdWithADoubleAndUnit * lowEn3Cmd
G4UIcmdWithAnInteger * ver2Cmd
void SetUseMottCorrection(G4bool val)
void Dump() const
G4DNAModelSubType
G4EmParametersMessenger(G4EmParameters *)
void AvailableForStates(G4ApplicationState s1)
Definition: G4UIcommand.cc:242
G4UIcmdWithAnInteger * ver1Cmd
G4UIcmdWithADoubleAndUnit * cenCmd
void SetDNAeSolvationSubType(G4DNAModelSubType val)
virtual void SetNewValue(G4UIcommand *, G4String) override
G4UIcmdWithADoubleAndUnit * brCmd
void SetApplyCuts(G4bool val)