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 transWithMscCmd->
SetGuidance(
"Enable/disable the G4TransportationWithMsc process");
390 transWithMscCmd->
SetCandidates(
"Disabled Enabled MultipleSteps");
395 mscCmd->
SetGuidance(
"Set msc step limitation type");
397 mscCmd->
SetCandidates(
"Minimal UseSafety UseSafetyPlus UseDistanceToBoundary");
402 msc1Cmd->
SetGuidance(
"Set msc step limitation type for muons/hadrons");
404 msc1Cmd->
SetCandidates(
"Minimal UseSafety UseSafetyPlus UseDistanceToBoundary");
408 dumpCmd =
new G4UIcommand(
"/process/em/printParameters",
this);
414 nffCmd->
SetGuidance(
"Define type of nuclear form-factor");
421 ssCmd->
SetGuidance(
"Define type of e+- single scattering model");
428 fluc1Cmd->
SetGuidance(
"Define type of energy loss fluctuation model");
435 tripletCmd->
SetGuidance(
"gamma conversion triplet/nuclear generation type:");
436 tripletCmd->
SetGuidance(
"0 - (default) both triplet and nuclear");
440 tripletCmd->
SetRange(
"type >= 0 && type <= 2");
446 onIsolatedCmd->
SetGuidance(
"Conversion on isolated charged particles");
447 onIsolatedCmd->
SetGuidance(
"false (default) : atomic electron screening");
448 onIsolatedCmd->
SetGuidance(
"true : conversion on isolated particles.");
459 delete gconvDirectory;
460 delete eLossDirectory;
478 delete onIsolatedCmd;
513 delete transWithMscCmd;
530 G4bool physicsModified =
false;
531 if (command == flucCmd) {
533 physicsModified =
true;
534 }
else if (command == rangeCmd) {
536 }
else if (command == lpmCmd) {
538 physicsModified =
true;
539 }
else if (command == rsCmd) {
541 physicsModified =
true;
542 }
else if (command == aplCmd) {
544 physicsModified =
true;
545 }
else if (command == intCmd) {
547 }
else if (command == latCmd) {
549 physicsModified =
true;
550 }
else if (command == lat96Cmd) {
552 physicsModified =
true;
553 }
else if (command == mulatCmd) {
555 physicsModified =
true;
556 }
else if (command == delCmd) {
558 }
else if (command == mottCmd) {
560 }
else if (command == birksCmd) {
562 }
else if (command == icru90Cmd) {
564 }
else if (command == sharkCmd) {
566 }
else if (command == poCmd) {
568 }
else if (command == sampleTCmd) {
570 }
else if (command == mudatCmd) {
572 }
else if (command == peKCmd) {
574 }
else if (command == mscPCmd) {
577 }
else if (command == minEnCmd) {
579 }
else if (command == maxEnCmd) {
581 }
else if (command == max5DCmd) {
583 }
else if (command == cenCmd) {
585 physicsModified =
true;
586 }
else if (command == lowEnCmd) {
588 physicsModified =
true;
589 }
else if (command == lowEn3Cmd) {
591 physicsModified =
true;
592 }
else if (command == lowhEnCmd) {
594 physicsModified =
true;
595 }
else if (command == lllCmd) {
597 physicsModified =
true;
598 }
else if (command == brCmd) {
600 physicsModified =
true;
601 }
else if (command == br1Cmd) {
603 physicsModified =
true;
604 }
else if (command == labCmd) {
606 physicsModified =
true;
607 }
else if (command == mscfCmd) {
609 }
else if (command == angCmd) {
611 }
else if (command == msceCmd) {
613 }
else if (command == nielCmd) {
615 }
else if (command == frCmd) {
617 physicsModified =
true;
618 }
else if (command == fr1Cmd) {
620 physicsModified =
true;
621 }
else if (command == fgCmd) {
623 physicsModified =
true;
624 }
else if (command == skinCmd) {
626 physicsModified =
true;
627 }
else if (command == safCmd) {
629 }
else if (command == llimCmd) {
631 }
else if (command == screCmd) {
633 }
else if (command == amCmd) {
635 }
else if (command == verCmd) {
637 }
else if (command == ver1Cmd) {
639 }
else if (command == ver2Cmd) {
641 }
else if (command == dumpCmd) {
643 theParameters->
Dump();
644 }
else if (command == transWithMscCmd) {
646 if(newValue ==
"Disabled") {
647 type = G4TransportationWithMscType::fDisabled;
648 }
else if(newValue ==
"Enabled") {
649 type = G4TransportationWithMscType::fEnabled;
650 }
else if(newValue ==
"MultipleSteps") {
651 type = G4TransportationWithMscType::fMultipleSteps;
654 ed <<
" TransportationWithMsc type <" << newValue <<
"> unknown!";
658 }
else if (command == mscCmd || command == msc1Cmd) {
660 if(newValue ==
"Minimal") {
662 }
else if(newValue ==
"UseDistanceToBoundary") {
664 }
else if(newValue ==
"UseSafety") {
666 }
else if(newValue ==
"UseSafetyPlus") {
670 ed <<
" StepLimit type <" << newValue <<
"> unknown!";
674 if (command == mscCmd) {
679 physicsModified =
true;
680 }
else if (command == nffCmd) {
683 else if(newValue ==
"Gaussian") { x =
fGaussianNF; }
684 else if(newValue ==
"Flat") { x =
fFlatNF; }
685 else if(newValue !=
"None") {
687 ed <<
" NuclearFormFactor type <" << newValue <<
"> unknown!";
692 }
else if (command == ssCmd) {
694 if(newValue ==
"DPWA") { x =
fDPWA; }
695 else if(newValue ==
"Mott") { x =
fMott; }
696 else if(newValue !=
"WVI") {
698 ed <<
" G4eSingleScatteringType type <" << newValue <<
"> unknown!";
703 }
else if (command == fluc1Cmd) {
708 }
else if ( command==tripletCmd ) {
710 }
else if ( command==onIsolatedCmd ) {
712 physicsModified =
true;
715 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 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()