68 eLossDirectory->
SetGuidance(
"Commands for EM processes.");
70 mscDirectory->
SetGuidance(
"Commands for EM scattering processes.");
72 emDirectory->
SetGuidance(
"General commands for EM processes.");
75 flucCmd->
SetGuidance(
"Enable/disable energy loss fluctuations.");
81 rangeCmd->
SetGuidance(
"Enable/disable CSDA range calculation");
87 lpmCmd->
SetGuidance(
"Enable/disable LPM effect calculation");
93 splCmd->
SetGuidance(
"Enable/disable usage spline for Physics Vectors");
99 rsCmd->
SetGuidance(
"Enable/disable use of cut in range as a final range");
105 aplCmd->
SetGuidance(
"Enable/disable applying cuts for gamma processes");
111 deCmd->
SetGuidance(
"Enable/disable atomic deexcitation");
117 dirFluoCmd->
SetGuidance(
"Enable/disable usage of Bearden fluorescence files");
123 auCmd->
SetGuidance(
"Enable/disable Auger electrons production");
129 auCascadeCmd->
SetGuidance(
"Enable/disable simulation of cascade of Auger electrons");
135 pixeCmd->
SetGuidance(
"Enable/disable PIXE simulation");
141 dcutCmd->
SetGuidance(
"Enable/Disable usage of cuts in de-excitation module");
147 latCmd->
SetGuidance(
"Enable/disable sampling of lateral displacement");
152 mulatCmd =
new G4UIcmdWithABool(
"/process/msc/MuHadLateralDisplacement",
this);
153 mulatCmd->
SetGuidance(
"Enable/disable sampling of lateral displacement for muons and hadrons");
158 catCmd =
new G4UIcmdWithABool(
"/process/msc/DisplacementBeyondSafety",
this);
159 catCmd->
SetGuidance(
"Enable/disable displacement at geometry boundary");
165 delCmd->
SetGuidance(
"Enable usage of angular generator");
171 IntegCmd->
SetGuidance(
"Switch true/false the integral option");
177 mottCmd->
SetGuidance(
"Enable usage of Mott corrections for e- elastic scattering");
183 birksCmd->
SetGuidance(
"Enable usage of built-in Birks saturation");
189 minSubSecCmd->
SetGuidance(
"Set the ratio subcut/cut ");
194 minEnCmd->
SetGuidance(
"Set the min kinetic energy for EM tables");
200 maxEnCmd->
SetGuidance(
"Set the max kinetic energy for EM tables");
206 cenCmd->
SetGuidance(
"Set the max kinetic energy for CSDA table");
212 lowEnCmd->
SetGuidance(
"Set the lowest kinetic energy for e+-");
218 lowhEnCmd->
SetGuidance(
"Set the lowest kinetic energy for muons and hadrons");
224 lllCmd->
SetGuidance(
"Set linearLossLimit parameter");
229 brCmd->
SetGuidance(
"Set bremsstrahlung energy threshold");
235 labCmd->
SetGuidance(
"Set lambdaFactor parameter for integral option");
240 mscfCmd->
SetGuidance(
"Set factor for computation of a limit for -t (invariant trasfer)");
247 angCmd->
SetGuidance(
"Set the limit on the polar angle for msc and single scattering");
253 frCmd->
SetGuidance(
"Set RangeFactor for msc processes of e+-");
260 fr1Cmd->
SetGuidance(
"Set RangeFactor for msc processes of muons/hadrons");
267 fgCmd->
SetGuidance(
"Set GeomFactor parameter for msc processes");
274 skinCmd->
SetGuidance(
"Set skin parameter for msc processes");
279 dedxCmd->
SetGuidance(
"Set number of bins for EM tables");
285 lamCmd->
SetGuidance(
"Set number of bins for EM tables");
291 amCmd->
SetGuidance(
"Set number of bins per decade for EM tables");
297 verCmd->
SetGuidance(
"Set verbose level for EM physics");
303 ver1Cmd->
SetGuidance(
"Set verbose level for EM physics");
309 ver2Cmd->
SetGuidance(
"Set worker verbose level for EM physics");
315 mscCmd->
SetGuidance(
"Set msc step limitation type");
317 mscCmd->
SetCandidates(
"Minimal UseSafety UseSafetyPlus UseDistanceToBoundary");
321 msc1Cmd->
SetGuidance(
"Set msc step limitation type for muons/hadrons");
323 msc1Cmd->
SetCandidates(
"Minimal UseSafety UseSafetyPlus UseDistanceToBoundary");
327 pixeXsCmd->
SetGuidance(
"The name of PIXE cross section");
329 pixeXsCmd->
SetCandidates(
"ECPSSR_Analytical Empirical ECPSSR_FormFactor");
333 pixeeXsCmd->
SetGuidance(
"The name of PIXE cross section for electron");
335 pixeeXsCmd->
SetCandidates(
"ECPSSR_Analytical Empirical Livermore Penelope");
338 paiCmd =
new G4UIcommand(
"/process/em/AddPAIRegion",
this);
339 paiCmd->
SetGuidance(
"Activate PAI in the G4Region.");
340 paiCmd->
SetGuidance(
" partName : particle name (default - all)");
355 meCmd->
SetGuidance(
"Activate MicroElec model in the G4Region");
359 dnaCmd =
new G4UIcommand(
"/process/em/AddDNARegion",
this);
360 dnaCmd->
SetGuidance(
"Activate DNA in a G4Region.");
362 dnaCmd->
SetGuidance(
" dnaType : DNA_opt0, DNA_opt1, DNA_opt2");
371 mscoCmd =
new G4UIcommand(
"/process/em/AddEmRegion",
this);
372 mscoCmd->
SetGuidance(
"Add optional EM configuration for a G4Region.");
374 mscoCmd->
SetGuidance(
" mscType : G4EmStandard, G4EmStandard_opt1, ...");
383 dumpCmd =
new G4UIcommand(
"/process/em/printParameters",
this);
386 SubSecCmd =
new G4UIcommand(
"/process/eLoss/subsec",
this);
387 SubSecCmd->
SetGuidance(
"Switch true/false the subcutoff generation per region.");
398 StepFuncCmd =
new G4UIcommand(
"/process/eLoss/StepFunction",
this);
399 StepFuncCmd->
SetGuidance(
"Set the energy loss step limitation parameters for e+-.");
400 StepFuncCmd->
SetGuidance(
" dRoverR : max Range variation per step");
401 StepFuncCmd->
SetGuidance(
" finalRange: range for final step");
416 StepFuncCmd1 =
new G4UIcommand(
"/process/eLoss/StepFunctionMuHad",
this);
417 StepFuncCmd1->
SetGuidance(
"Set the energy loss step limitation parameters for muon/hadron.");
418 StepFuncCmd1->
SetGuidance(
" dRoverR : max Range variation per step");
419 StepFuncCmd1->
SetGuidance(
" finalRange: range for final step");
434 deexCmd =
new G4UIcommand(
"/process/em/deexcitation",
this);
435 deexCmd->
SetGuidance(
"Set deexcitation flags per G4Region.");
454 bfCmd =
new G4UIcommand(
"/process/em/setBiasingFactor",
this);
455 bfCmd->
SetGuidance(
"Set factor for the process cross section.");
458 bfCmd->
SetGuidance(
" flagFact : flag to change weight");
470 fiCmd =
new G4UIcommand(
"/process/em/setForcedInteraction",
this);
471 fiCmd->
SetGuidance(
"Set factor for the process cross section.");
474 fiCmd->
SetGuidance(
" tlength : fixed target length");
476 fiCmd->
SetGuidance(
" tflag : flag to change weight");
494 bsCmd =
new G4UIcommand(
"/process/em/setSecBiasing",
this);
495 bsCmd->
SetGuidance(
"Set bremsstrahlung or delta-e- splitting/Russian roullette per region.");
498 bsCmd->
SetGuidance(
" bFactor : number of splitted gamma or probability of Russian roulette");
499 bsCmd->
SetGuidance(
" bEnergy : max energy of a secondary for this biasing method");
519 nffCmd->
SetGuidance(
"Define typy of nuclear form-factor");
529 delete eLossDirectory;
603 G4bool physicsModified =
false;
604 if (command == flucCmd) {
606 physicsModified =
true;
607 }
else if (command == rangeCmd) {
609 }
else if (command == lpmCmd) {
611 physicsModified =
true;
612 }
else if (command == splCmd) {
614 physicsModified =
true;
615 }
else if (command == rsCmd) {
617 physicsModified =
true;
618 }
else if (command == aplCmd) {
620 physicsModified =
true;
621 }
else if (command == deCmd) {
623 physicsModified =
true;
624 }
else if (command == dirFluoCmd) {
626 }
else if (command == auCmd) {
628 physicsModified =
true;
629 }
else if (command == auCascadeCmd) {
631 physicsModified =
true;
632 }
else if (command == pixeCmd) {
634 physicsModified =
true;
635 }
else if (command == dcutCmd) {
637 physicsModified =
true;
638 }
else if (command == latCmd) {
640 physicsModified =
true;
641 }
else if (command == mulatCmd) {
643 physicsModified =
true;
644 }
else if (command == catCmd) {
646 physicsModified =
true;
647 }
else if (command == delCmd) {
649 }
else if (command == IntegCmd) {
651 physicsModified =
true;
652 }
else if (command == mottCmd) {
654 }
else if (command == birksCmd) {
657 }
else if (command == minSubSecCmd) {
659 }
else if (command == minEnCmd) {
661 physicsModified =
true;
662 }
else if (command == maxEnCmd) {
664 physicsModified =
true;
665 }
else if (command == cenCmd) {
667 physicsModified =
true;
668 }
else if (command == lowEnCmd) {
670 physicsModified =
true;
671 }
else if (command == lowhEnCmd) {
673 physicsModified =
true;
674 }
else if (command == lllCmd) {
676 physicsModified =
true;
677 }
else if (command == brCmd) {
679 physicsModified =
true;
680 }
else if (command == labCmd) {
682 physicsModified =
true;
683 }
else if (command == mscfCmd) {
685 physicsModified =
true;
686 }
else if (command == angCmd) {
688 physicsModified =
true;
689 }
else if (command == frCmd) {
691 physicsModified =
true;
692 }
else if (command == fr1Cmd) {
694 physicsModified =
true;
695 }
else if (command == fgCmd) {
697 physicsModified =
true;
698 }
else if (command == skinCmd) {
700 physicsModified =
true;
702 }
else if (command == dedxCmd) {
704 physicsModified =
true;
705 }
else if (command == lamCmd) {
707 physicsModified =
true;
708 }
else if (command == amCmd) {
710 physicsModified =
true;
711 }
else if (command == verCmd) {
713 }
else if (command == ver1Cmd) {
715 }
else if (command == ver2Cmd) {
718 }
else if (command == mscCmd || command == msc1Cmd) {
720 if(newValue ==
"Minimal") {
722 }
else if(newValue ==
"UseDistanceToBoundary") {
724 }
else if(newValue ==
"UseSafety") {
726 }
else if(newValue ==
"UseSafetyPlus") {
729 G4cout <<
"### G4EmParametersMessenger WARNING: StepLimit type <"
730 << newValue <<
"> unknown!" <<
G4endl;
733 if (command == mscCmd) {
738 physicsModified =
true;
739 }
else if (command == pixeXsCmd) {
741 physicsModified =
true;
742 }
else if (command == pixeeXsCmd) {
744 physicsModified =
true;
745 }
else if (command == paiCmd) {
747 std::istringstream is(newValue);
748 is >> s1 >> s2 >> s3;
750 }
else if (command == meCmd) {
752 }
else if (command == dnaCmd) {
754 std::istringstream is(newValue);
756 theParameters->
AddDNA(s1, s2);
757 }
else if (command == mscoCmd) {
759 std::istringstream is(newValue);
761 theParameters->
AddMsc(s1, s2);
762 }
else if (command == dumpCmd) {
763 theParameters->
Dump();
764 }
else if (command == SubSecCmd) {
766 std::istringstream is(newValue);
769 if(s1 ==
"true") { yes =
true; }
771 }
else if (command == StepFuncCmd || command == StepFuncCmd1) {
774 std::istringstream is(newValue);
775 is >> v1 >> v2 >> unt;
777 if(command == StepFuncCmd) {
782 physicsModified =
true;
783 }
else if (command == deexCmd) {
784 G4String s1 (
""), s2(
""), s3(
""), s4(
"");
785 G4bool b2(
false), b3(
false), b4(
false);
786 std::istringstream is(newValue);
787 is >> s1 >> s2 >> s3 >> s4;
788 if(s2 ==
"true") { b2 =
true; }
789 if(s3 ==
"true") { b3 =
true; }
790 if(s4 ==
"true") { b4 =
true; }
792 physicsModified =
true;
793 }
else if (command == bfCmd) {
796 std::istringstream is(newValue);
797 is >>
s0 >> v1 >> s1;
799 if(s1 ==
"true") { yes =
true; }
801 physicsModified =
true;
802 }
else if (command == fiCmd) {
804 G4String s1(
""),s2(
""),s3(
""),unt(
"mm");
805 std::istringstream is(newValue);
806 is >> s1 >> s2 >> v1 >> unt >> s3;
808 if(s3 ==
"true") { yes =
true; }
811 physicsModified =
true;
812 }
else if (command == bsCmd) {
815 std::istringstream is(newValue);
816 is >> s1 >> s2 >> fb >> en >> unt;
819 physicsModified =
true;
820 }
else if (command == nffCmd) {
823 else if(newValue ==
"Gaussian") { x =
fGaussianNF; }
824 else if(newValue ==
"Flat") { x =
fFlatNF; }
826 physicsModified =
true;
828 if(physicsModified) {
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
void SetLossFluctuations(G4bool val)
void SetParameter(G4UIparameter *const newParameter)
virtual void SetNewValue(G4UIcommand *, G4String) override
void SetApplyCuts(G4bool val)
void SetProcessBiasingFactor(const G4String &procname, G4double val, G4bool wflag)
void SetVerbose(G4int val)
void ActivateSecondaryBiasing(const G4String &name, const G4String ®ion, G4double factor, G4double energyLimit)
void SetDeexcitationIgnoreCut(G4bool val)
void SetUseMottCorrection(G4bool val)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
void SetLowestElectronEnergy(G4double val)
void SetLatDisplacementBeyondSafety(G4bool val)
static G4int GetNewIntValue(const char *paramString)
void SetMscStepLimitType(G4MscStepLimitType val)
G4EmParametersMessenger(G4EmParameters *)
void SetParameterRange(const char *theRange)
void SetBeardenFluoDir(G4bool val)
void SetLinearLossLimit(G4double val)
void SetAuger(G4bool val)
void SetDefaultValue(const char *theDefaultValue)
void SetNumberOfBins(G4int val)
void SetMinSubRange(G4double val)
void SetMaxEnergyForCSDARange(G4double val)
void SetUnitCategory(const char *unitCategory)
void SetStepFunctionMuHad(G4double v1, G4double v2)
static G4double GetNewDoubleValue(const char *paramString)
void SetPIXEElectronCrossSectionModel(const G4String &)
void SetDeexActiveRegion(const G4String ®ion, G4bool fdeex, G4bool fauger, G4bool fpixe)
void SetMaxEnergy(G4double val)
void SetBremsstrahlungTh(G4double val)
static G4bool GetNewBoolValue(const char *paramString)
void SetDefaultValue(G4bool defVal)
static G4UImanager * GetUIpointer()
void SetBirksActive(G4bool val)
void AddPAIModel(const G4String &particle, const G4String ®ion, const G4String &type)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
void SetLateralDisplacement(G4bool val)
void SetWorkerVerbose(G4int val)
void SetPIXECrossSectionModel(const G4String &)
G4GLOB_DLL std::ostream G4cout
void SetMscRangeFactor(G4double val)
static G4double GetNewDoubleValue(const char *paramString)
void SetRange(const char *rs)
void SetGuidance(const char *aGuidance)
void SetAugerCascade(G4bool val)
void SetNumberOfBinsPerDecade(G4int val)
void SetNuclearFormfactorType(G4NuclearFormfactorType val)
void SetLowestMuHadEnergy(G4double val)
void SetMscGeomFactor(G4double val)
void AvailableForStates(G4ApplicationState s1)
void SetMscMuHadStepLimitType(G4MscStepLimitType val)
void AddDNA(const G4String ®ion, const G4String &type)
void SetSubCutoff(G4bool val, const G4String ®ion="")
void SetBuildCSDARange(G4bool val)
void AddMicroElec(const G4String ®ion)
void SetMscMuHadRangeFactor(G4double val)
void SetSpline(G4bool val)
void SetMuHadLateralDisplacement(G4bool val)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
virtual ~G4EmParametersMessenger()
void SetMinEnergy(G4double val)
static G4double ValueOf(const char *unitName)
void SetDefaultValue(G4double defVal)
void SetIntegral(G4bool val)
void AddMsc(const G4String ®ion, const G4String &type)
void ActivateAngularGeneratorForIonisation(G4bool val)
void ActivateForcedInteraction(const G4String &procname, const G4String ®ion, G4double length, G4bool wflag)
void SetUseCutAsFinalRange(G4bool val)
void SetCandidates(const char *candidateList)
void SetDefaultValue(G4int defVal)
void SetMscThetaLimit(G4double val)
void SetLambdaFactor(G4double val)
void SetFactorForAngleLimit(G4double val)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
void SetStepFunction(G4double v1, G4double v2)
G4int ApplyCommand(const char *aCommand)
void SetMscSkin(G4double val)