65 emDirectory->
SetGuidance(
"General commands for EM processes.");
67 eLossDirectory->
SetGuidance(
"Commands for energy loss processes.");
69 mscDirectory->
SetGuidance(
"Commands for EM scattering processes.");
71 gconvDirectory->
SetGuidance(
"Commands for EM gamma conversion BH5D model.");
73 dnaDirectory->
SetGuidance(
"Commands for DNA processes.");
76 flucCmd->
SetGuidance(
"Enable/disable energy loss fluctuations.");
83 rangeCmd->
SetGuidance(
"Enable/disable CSDA range calculation");
90 lpmCmd->
SetGuidance(
"Enable/disable LPM effect calculation");
97 rsCmd->
SetGuidance(
"Enable/disable use of cut in range as a final range");
104 aplCmd->
SetGuidance(
"Enable/disable applying cuts for gamma processes");
111 intCmd->
SetGuidance(
"Enable/disable integral method.");
118 latCmd->
SetGuidance(
"Enable/disable sampling of lateral displacement");
124 lat96Cmd =
new G4UIcmdWithABool(
"/process/msc/LateralDisplacementAlg96",
this);
125 lat96Cmd->
SetGuidance(
"Enable/disable sampling of lateral displacement");
131 mulatCmd =
new G4UIcmdWithABool(
"/process/msc/MuHadLateralDisplacement",
this);
132 mulatCmd->
SetGuidance(
"Enable/disable sampling of lateral displacement for muons and hadrons");
139 delCmd->
SetGuidance(
"Enable usage of angular generator for ionisation");
146 mottCmd->
SetGuidance(
"Enable usage of Mott corrections for e- elastic scattering");
153 birksCmd->
SetGuidance(
"Enable usage of built-in Birks saturation");
160 sharkCmd->
SetGuidance(
"Enable gamma, e+- general process");
172 sampleTCmd->
SetGuidance(
"Enable usage of sampling table for secondary generation");
179 icru90Cmd->
SetGuidance(
"Enable usage of ICRU90 stopping powers");
186 mudatCmd->
SetGuidance(
"Enable usage of muon data from file");
193 peKCmd->
SetGuidance(
"Enable sampling of photoeffect below K-shell");
200 mscPCmd->
SetGuidance(
"Enable msc positron correction");
207 minEnCmd->
SetGuidance(
"Set the min kinetic energy for EM tables");
214 maxEnCmd->
SetGuidance(
"Set the max kinetic energy for EM tables");
221 cenCmd->
SetGuidance(
"Set the max kinetic energy for CSDA table");
228 max5DCmd->
SetGuidance(
"Set the max kinetic energy for 5D muon pair production");
235 lowEnCmd->
SetGuidance(
"Set the lowest kinetic energy for e+-");
242 lowhEnCmd->
SetGuidance(
"Set the lowest kinetic energy for muons and hadrons");
249 lowEn3Cmd->
SetGuidance(
"Set the lowest kinetic energy for triplet production");
256 lllCmd->
SetGuidance(
"Set linearLossLimit parameter");
262 brCmd->
SetGuidance(
"Set e+- bremsstrahlung energy threshold");
269 br1Cmd->
SetGuidance(
"Set muon/hadron bremsstrahlung energy threshold");
276 labCmd->
SetGuidance(
"Set lambdaFactor parameter for integral option");
282 mscfCmd->
SetGuidance(
"Set factor for computation of a limit for -t (invariant transfer)");
290 angCmd->
SetGuidance(
"Set the limit on the polar angle for msc and single scattering");
297 msceCmd->
SetGuidance(
"Set the upper energy limit for msc");
304 nielCmd->
SetGuidance(
"Set the upper energy limit for NIEL");
311 frCmd->
SetGuidance(
"Set RangeFactor for msc processes of e+-");
319 fr1Cmd->
SetGuidance(
"Set RangeFactor for msc processes of muons/hadrons");
327 fgCmd->
SetGuidance(
"Set GeomFactor parameter for msc processes");
335 skinCmd->
SetGuidance(
"Set skin parameter for msc processes");
353 llimCmd->
SetGuidance(
"Set the upper energy limit for NIEL");
360 amCmd->
SetGuidance(
"Set number of bins per decade for EM tables");
367 verCmd->
SetGuidance(
"Set verbose level for EM physics");
374 ver1Cmd->
SetGuidance(
"Set verbose level for EM physics");
381 ver2Cmd->
SetGuidance(
"Set worker verbose level for EM physics");
388 nFreeCmd->
SetGuidance(
"Set number for logarithmic bin search algorithm");
395 transWithMscCmd->
SetGuidance(
"Enable/disable the G4TransportationWithMsc process");
397 transWithMscCmd->
SetCandidates(
"Disabled Enabled MultipleSteps");
402 mscCmd->
SetGuidance(
"Set msc step limitation type");
404 mscCmd->
SetCandidates(
"Minimal UseSafety UseSafetyPlus UseDistanceToBoundary");
409 msc1Cmd->
SetGuidance(
"Set msc step limitation type for muons/hadrons");
411 msc1Cmd->
SetCandidates(
"Minimal UseSafety UseSafetyPlus UseDistanceToBoundary");
415 dumpCmd =
new G4UIcommand(
"/process/em/printParameters",
this);
421 nffCmd->
SetGuidance(
"Define type of nuclear form-factor");
428 ssCmd->
SetGuidance(
"Define type of e+- single scattering model");
435 fluc1Cmd->
SetGuidance(
"Define type of energy loss fluctuation model");
442 tripletCmd->
SetGuidance(
"gamma conversion triplet/nuclear generation type:");
443 tripletCmd->
SetGuidance(
"0 - (default) both triplet and nuclear");
447 tripletCmd->
SetRange(
"type >= 0 && type <= 2");
453 onIsolatedCmd->
SetGuidance(
"Conversion on isolated charged particles");
454 onIsolatedCmd->
SetGuidance(
"false (default) : atomic electron screening");
455 onIsolatedCmd->
SetGuidance(
"true : conversion on isolated particles.");
466 delete gconvDirectory;
467 delete eLossDirectory;
485 delete onIsolatedCmd;
520 delete transWithMscCmd;
538 G4bool physicsModified =
false;
539 if (command == flucCmd) {
541 physicsModified =
true;
542 }
else if (command == rangeCmd) {
544 }
else if (command == lpmCmd) {
546 physicsModified =
true;
547 }
else if (command == rsCmd) {
549 physicsModified =
true;
550 }
else if (command == aplCmd) {
552 physicsModified =
true;
553 }
else if (command == intCmd) {
555 }
else if (command == latCmd) {
557 physicsModified =
true;
558 }
else if (command == lat96Cmd) {
560 physicsModified =
true;
561 }
else if (command == mulatCmd) {
563 physicsModified =
true;
564 }
else if (command == delCmd) {
566 }
else if (command == mottCmd) {
568 }
else if (command == birksCmd) {
570 }
else if (command == icru90Cmd) {
572 }
else if (command == sharkCmd) {
574 }
else if (command == poCmd) {
576 }
else if (command == sampleTCmd) {
578 }
else if (command == mudatCmd) {
580 }
else if (command == peKCmd) {
582 }
else if (command == mscPCmd) {
585 }
else if (command == minEnCmd) {
587 }
else if (command == maxEnCmd) {
589 }
else if (command == max5DCmd) {
591 }
else if (command == cenCmd) {
593 physicsModified =
true;
594 }
else if (command == lowEnCmd) {
596 physicsModified =
true;
597 }
else if (command == lowEn3Cmd) {
599 physicsModified =
true;
600 }
else if (command == lowhEnCmd) {
602 physicsModified =
true;
603 }
else if (command == lllCmd) {
605 physicsModified =
true;
606 }
else if (command == brCmd) {
608 physicsModified =
true;
609 }
else if (command == br1Cmd) {
611 physicsModified =
true;
612 }
else if (command == labCmd) {
614 physicsModified =
true;
615 }
else if (command == mscfCmd) {
617 }
else if (command == angCmd) {
619 }
else if (command == msceCmd) {
621 }
else if (command == nielCmd) {
623 }
else if (command == frCmd) {
625 physicsModified =
true;
626 }
else if (command == fr1Cmd) {
628 physicsModified =
true;
629 }
else if (command == fgCmd) {
631 physicsModified =
true;
632 }
else if (command == skinCmd) {
634 physicsModified =
true;
635 }
else if (command == safCmd) {
637 }
else if (command == llimCmd) {
639 }
else if (command == screCmd) {
641 }
else if (command == amCmd) {
643 }
else if (command == verCmd) {
645 }
else if (command == ver1Cmd) {
647 }
else if (command == ver2Cmd) {
649 }
else if (command == nFreeCmd) {
651 }
else if (command == dumpCmd) {
653 theParameters->
Dump();
654 }
else if (command == transWithMscCmd) {
656 if(newValue ==
"Disabled") {
658 }
else if(newValue ==
"Enabled") {
660 }
else if(newValue ==
"MultipleSteps") {
664 ed <<
" TransportationWithMsc type <" << newValue <<
"> unknown!";
668 }
else if (command == mscCmd || command == msc1Cmd) {
670 if(newValue ==
"Minimal") {
672 }
else if(newValue ==
"UseDistanceToBoundary") {
674 }
else if(newValue ==
"UseSafety") {
676 }
else if(newValue ==
"UseSafetyPlus") {
680 ed <<
" StepLimit type <" << newValue <<
"> unknown!";
684 if (command == mscCmd) {
689 physicsModified =
true;
690 }
else if (command == nffCmd) {
693 else if(newValue ==
"Gaussian") { x =
fGaussianNF; }
694 else if(newValue ==
"Flat") { x =
fFlatNF; }
695 else if(newValue !=
"None") {
697 ed <<
" NuclearFormFactor type <" << newValue <<
"> unknown!";
702 }
else if (command == ssCmd) {
704 if(newValue ==
"DPWA") { x =
fDPWA; }
705 else if(newValue ==
"Mott") { x =
fMott; }
706 else if(newValue !=
"WVI") {
708 ed <<
" G4eSingleScatteringType type <" << newValue <<
"> unknown!";
713 }
else if (command == fluc1Cmd) {
718 }
else if ( command==tripletCmd ) {
720 }
else if ( command==onIsolatedCmd ) {
722 physicsModified =
true;
725 if(physicsModified) {
G4TransportationWithMscType
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
void SetNewValue(G4UIcommand *, G4String) override
G4EmParametersMessenger(G4EmParameters *)
~G4EmParametersMessenger() override
void SetLambdaFactor(G4double val)
void SetMinEnergy(G4double val)
void SetLowestElectronEnergy(G4double val)
void SetBuildCSDARange(G4bool val)
void SetEnablePolarisation(G4bool val)
void SetNumberOfBinsPerDecade(G4int val)
void SetGeneralProcessActive(G4bool val)
void SetMscSafetyFactor(G4double val)
void SetLateralDisplacementAlg96(G4bool val)
void SetFactorForAngleLimit(G4double val)
void SetRetrieveMuDataFromFile(G4bool v)
void SetMscMuHadRangeFactor(G4double val)
void SetMaxEnergyFor5DMuPair(G4double val)
void SetLinearLossLimit(G4double val)
void SetMscThetaLimit(G4double val)
void SetLossFluctuations(G4bool val)
void SetLowestTripletEnergy(G4double val)
void SetMuHadLateralDisplacement(G4bool val)
void SetNumberForFreeVector(G4int val)
void ActivateAngularGeneratorForIonisation(G4bool val)
void SetScreeningFactor(G4double val)
void SetNuclearFormfactorType(G4NuclearFormfactorType val)
void SetLateralDisplacement(G4bool val)
void SetWorkerVerbose(G4int val)
void SetUseCutAsFinalRange(G4bool val)
void SetBirksActive(G4bool val)
void SetMuHadBremsstrahlungTh(G4double val)
void SetFluctuationType(G4EmFluctuationType val)
void SetVerbose(G4int val)
void SetMscGeomFactor(G4double val)
void SetMscLambdaLimit(G4double val)
void SetMscSkin(G4double val)
void SetApplyCuts(G4bool val)
void SetEnableSamplingTable(G4bool val)
void SetMaxNIELEnergy(G4double val)
void SetMaxEnergyForCSDARange(G4double val)
void SetMscMuHadStepLimitType(G4MscStepLimitType val)
void SetMscStepLimitType(G4MscStepLimitType val)
void SetMscEnergyLimit(G4double val)
void SetBremsstrahlungTh(G4double val)
void SetIsPrintedFlag(G4bool val)
void SetConversionType(G4int val)
void SetUseICRU90Data(G4bool val)
void SetOnIsolated(G4bool val)
void SetTransportationWithMsc(G4TransportationWithMscType val)
void SetIntegral(G4bool val)
void SetUseMottCorrection(G4bool val)
void SetMscPositronCorrection(G4bool v)
void SetLowestMuHadEnergy(G4double val)
void SetMaxEnergy(G4double val)
void SetSingleScatteringType(G4eSingleScatteringType val)
void SetPhotoeffectBelowKShell(G4bool v)
void SetMscRangeFactor(G4double val)
static G4bool GetNewBoolValue(const char *paramString)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
void SetDefaultValue(G4bool defVal)
void SetUnitCategory(const char *unitCategory)
static G4double GetNewDoubleValue(const char *paramString)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
static G4double GetNewDoubleValue(const char *paramString)
void SetDefaultValue(G4double defVal)
void SetCandidates(const char *candidateList)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
static G4int GetNewIntValue(const char *paramString)
void SetDefaultValue(G4int defVal)
void SetToBeBroadcasted(G4bool val)
void SetGuidance(const char *aGuidance)
void SetRange(const char *rs)
void AvailableForStates(G4ApplicationState s1)
G4int ApplyCommand(const char *aCommand)
static G4UImanager * GetUIpointer()