65 gconvDirectory->
SetGuidance(
"Commands for EM gamma conversion BH5D model.");
67 eLossDirectory->
SetGuidance(
"Commands for EM processes.");
69 mscDirectory->
SetGuidance(
"Commands for EM scattering processes.");
71 emDirectory->
SetGuidance(
"General commands for EM processes.");
73 dnaDirectory->
SetGuidance(
"Commands for DNA processes.");
76 flucCmd->
SetGuidance(
"Enable/disable energy loss fluctuations.");
82 rangeCmd->
SetGuidance(
"Enable/disable CSDA range calculation");
88 lpmCmd->
SetGuidance(
"Enable/disable LPM effect calculation");
94 splCmd->
SetGuidance(
"Enable/disable usage spline for Physics Vectors");
100 rsCmd->
SetGuidance(
"Enable/disable use of cut in range as a final range");
106 aplCmd->
SetGuidance(
"Enable/disable applying cuts for gamma processes");
112 latCmd->
SetGuidance(
"Enable/disable sampling of lateral displacement");
117 lat96Cmd =
new G4UIcmdWithABool(
"/process/msc/LateralDisplacementAlg96",
this);
118 lat96Cmd->
SetGuidance(
"Enable/disable sampling of lateral displacement");
123 mulatCmd =
new G4UIcmdWithABool(
"/process/msc/MuHadLateralDisplacement",
this);
124 mulatCmd->
SetGuidance(
"Enable/disable sampling of lateral displacement for muons and hadrons");
130 delCmd->
SetGuidance(
"Enable usage of angular generator for ionisation");
136 IntegCmd->
SetGuidance(
"Switch true/false the integral option");
142 mottCmd->
SetGuidance(
"Enable usage of Mott corrections for e- elastic scattering");
148 birksCmd->
SetGuidance(
"Enable usage of built-in Birks saturation");
154 sharkCmd->
SetGuidance(
"Enable gamma, e+- general process");
160 sampleTCmd->
SetGuidance(
"Enable usage of sampling table for secondary generation");
166 icru90Cmd->
SetGuidance(
"Enable usage of ICRU90 stopping powers");
172 mudatCmd->
SetGuidance(
"Enable usage of muon data from file");
178 minSubSecCmd->
SetGuidance(
"Set the ratio subcut/cut ");
183 minEnCmd->
SetGuidance(
"Set the min kinetic energy for EM tables");
189 maxEnCmd->
SetGuidance(
"Set the max kinetic energy for EM tables");
195 cenCmd->
SetGuidance(
"Set the max kinetic energy for CSDA table");
201 max5DCmd->
SetGuidance(
"Set the max kinetic energy for 5D muon pair production");
207 lowEnCmd->
SetGuidance(
"Set the lowest kinetic energy for e+-");
213 lowhEnCmd->
SetGuidance(
"Set the lowest kinetic energy for muons and hadrons");
219 lowEn3Cmd->
SetGuidance(
"Set the lowest kinetic energy for triplet production");
225 lllCmd->
SetGuidance(
"Set linearLossLimit parameter");
230 brCmd->
SetGuidance(
"Set e+- bremsstrahlung energy threshold");
236 br1Cmd->
SetGuidance(
"Set muon/hadron bremsstrahlung energy threshold");
242 labCmd->
SetGuidance(
"Set lambdaFactor parameter for integral option");
247 mscfCmd->
SetGuidance(
"Set factor for computation of a limit for -t (invariant transfer)");
254 angCmd->
SetGuidance(
"Set the limit on the polar angle for msc and single scattering");
260 msceCmd->
SetGuidance(
"Set the upper energy limit for msc");
266 nielCmd->
SetGuidance(
"Set the upper energy limit for NIEL");
272 frCmd->
SetGuidance(
"Set RangeFactor for msc processes of e+-");
279 fr1Cmd->
SetGuidance(
"Set RangeFactor for msc processes of muons/hadrons");
286 fgCmd->
SetGuidance(
"Set GeomFactor parameter for msc processes");
293 skinCmd->
SetGuidance(
"Set skin parameter for msc processes");
308 llimCmd->
SetGuidance(
"Set the upper energy limit for NIEL");
314 dedxCmd->
SetGuidance(
"Set number of bins for EM tables");
320 lamCmd->
SetGuidance(
"Set number of bins for EM tables");
326 amCmd->
SetGuidance(
"Set number of bins per decade for EM tables");
332 verCmd->
SetGuidance(
"Set verbose level for EM physics");
338 ver1Cmd->
SetGuidance(
"Set verbose level for EM physics");
344 ver2Cmd->
SetGuidance(
"Set worker verbose level for EM physics");
350 mscCmd->
SetGuidance(
"Set msc step limitation type");
352 mscCmd->
SetCandidates(
"Minimal UseSafety UseSafetyPlus UseDistanceToBoundary");
356 msc1Cmd->
SetGuidance(
"Set msc step limitation type for muons/hadrons");
358 msc1Cmd->
SetCandidates(
"Minimal UseSafety UseSafetyPlus UseDistanceToBoundary");
361 dumpCmd =
new G4UIcommand(
"/process/em/printParameters",
this);
365 nffCmd->
SetGuidance(
"Define type of nuclear form-factor");
371 ssCmd->
SetGuidance(
"Define type of e+- single scattering model");
377 tripletCmd->
SetGuidance(
"gamma conversion triplet/nuclear generation type:");
378 tripletCmd->
SetGuidance(
"0 - (default) both triplet and nuclear");
382 tripletCmd->
SetRange(
"type >= 0 && type <= 2");
387 onIsolatedCmd->
SetGuidance(
"Conversion on isolated charged particles");
388 onIsolatedCmd->
SetGuidance(
"false (default) : atomic electron screening");
389 onIsolatedCmd->
SetGuidance(
"true : conversion on isolated particles.");
399 delete gconvDirectory;
400 delete eLossDirectory;
419 delete onIsolatedCmd;
469 G4bool physicsModified =
false;
470 if (command == flucCmd) {
472 physicsModified =
true;
473 }
else if (command == rangeCmd) {
475 }
else if (command == lpmCmd) {
477 physicsModified =
true;
478 }
else if (command == splCmd) {
480 }
else if (command == rsCmd) {
482 physicsModified =
true;
483 }
else if (command == aplCmd) {
485 physicsModified =
true;
486 }
else if (command == latCmd) {
488 physicsModified =
true;
489 }
else if (command == lat96Cmd) {
491 physicsModified =
true;
492 }
else if (command == mulatCmd) {
494 physicsModified =
true;
495 }
else if (command == delCmd) {
497 }
else if (command == IntegCmd) {
499 physicsModified =
true;
500 }
else if (command == mottCmd) {
502 }
else if (command == birksCmd) {
504 }
else if (command == icru90Cmd) {
506 }
else if (command == sharkCmd) {
508 }
else if (command == sampleTCmd) {
510 }
else if (command == mudatCmd) {
513 }
else if (command == minSubSecCmd) {
515 }
else if (command == minEnCmd) {
517 }
else if (command == maxEnCmd) {
519 }
else if (command == max5DCmd) {
521 }
else if (command == cenCmd) {
523 physicsModified =
true;
524 }
else if (command == lowEnCmd) {
526 physicsModified =
true;
527 }
else if (command == lowEn3Cmd) {
529 physicsModified =
true;
530 }
else if (command == lowhEnCmd) {
532 physicsModified =
true;
533 }
else if (command == lllCmd) {
535 physicsModified =
true;
536 }
else if (command == brCmd) {
538 physicsModified =
true;
539 }
else if (command == br1Cmd) {
541 physicsModified =
true;
542 }
else if (command == labCmd) {
544 physicsModified =
true;
545 }
else if (command == mscfCmd) {
547 }
else if (command == angCmd) {
549 physicsModified =
true;
550 }
else if (command == msceCmd) {
552 }
else if (command == nielCmd) {
554 }
else if (command == frCmd) {
556 physicsModified =
true;
557 }
else if (command == fr1Cmd) {
559 physicsModified =
true;
560 }
else if (command == fgCmd) {
562 physicsModified =
true;
563 }
else if (command == skinCmd) {
565 physicsModified =
true;
566 }
else if (command == safCmd) {
568 physicsModified =
true;
569 }
else if (command == llimCmd) {
571 physicsModified =
true;
572 }
else if (command == screCmd) {
574 }
else if (command == dedxCmd) {
576 }
else if (command == lamCmd) {
578 }
else if (command == amCmd) {
580 }
else if (command == verCmd) {
582 }
else if (command == ver1Cmd) {
584 physicsModified =
true;
585 }
else if (command == ver2Cmd) {
587 physicsModified =
true;
588 }
else if (command == dumpCmd) {
589 theParameters->
Dump();
590 }
else if (command == mscCmd || command == msc1Cmd) {
592 if(newValue ==
"Minimal") {
594 }
else if(newValue ==
"UseDistanceToBoundary") {
596 }
else if(newValue ==
"UseSafety") {
598 }
else if(newValue ==
"UseSafetyPlus") {
602 ed <<
" StepLimit type <" << newValue <<
"> unknown!";
606 if (command == mscCmd) {
611 physicsModified =
true;
612 }
else if (command == nffCmd) {
615 else if(newValue ==
"Gaussian") { x =
fGaussianNF; }
616 else if(newValue ==
"Flat") { x =
fFlatNF; }
617 else if(newValue !=
"None") {
619 ed <<
" NuclearFormFactor type <" << newValue <<
"> unknown!";
624 }
else if (command == ssCmd) {
626 if(newValue ==
"DPWA") { x =
fDPWA; }
627 else if(newValue ==
"Mott") { x =
fMott; }
628 else if(newValue !=
"WVI") {
630 ed <<
" G4eSingleScatteringType type <" << newValue <<
"> unknown!";
635 }
else if ( command==tripletCmd ) {
637 physicsModified =
true;
638 }
else if ( command==onIsolatedCmd ) {
640 physicsModified =
true;
643 if(physicsModified) {
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
virtual ~G4EmParametersMessenger()
virtual void SetNewValue(G4UIcommand *, G4String) override
G4EmParametersMessenger(G4EmParameters *)
void SetLambdaFactor(G4double val)
void SetMinEnergy(G4double val)
void SetLowestElectronEnergy(G4double val)
void SetBuildCSDARange(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 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 SetConversionType(G4int val)
void SetUseICRU90Data(G4bool val)
void SetOnIsolated(G4bool val)
void SetIntegral(G4bool val)
void SetUseMottCorrection(G4bool val)
void SetLowestMuHadEnergy(G4double val)
void SetMaxEnergy(G4double val)
void SetNumberOfBins(G4int val)
void SetSpline(G4bool val)
void SetMinSubRange(G4double val)
void SetSingleScatteringType(G4eSingleScatteringType val)
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 SetGuidance(const char *aGuidance)
void SetRange(const char *rs)
void AvailableForStates(G4ApplicationState s1)
G4int ApplyCommand(const char *aCommand)
static G4UImanager * GetUIpointer()