52 :
G4UImessenger(), theParams(params), cmdDir(0), localCmdDir(false) {
55 CreateDirectory(
"/process/had/cascade/",
"Bertini-esque cascade parameters");
57 verboseCmd = CreateCommand<G4UIcmdWithAnInteger>(
"verbose",
58 "Enable information messages");
59 balanceCmd = CreateCommand<G4UIcmdWithABool>(
"checkBalance",
60 "Enable internal conservation checking");
61 reportCmd = CreateCommand<G4UIcmdWithoutParameter>(
"report",
62 "Dump all non-default parameter settings");
63 usePreCoCmd = CreateCommand<G4UIcmdWithABool>(
"usePreCompound",
64 "Use PreCompoundModel for nuclear de-excitation");
65 doCoalCmd = CreateCommand<G4UIcmdWithABool>(
"doCoalescence",
66 "Apply final-state nucleon clustering");
67 piNAbsCmd = CreateCommand<G4UIcmdWithADouble>(
"piNAbsorption",
68 "Probability for pion absorption on single nucleon");
69 historyCmd = CreateCommand<G4UIcmdWithABool>(
"showHistory",
70 "Collect and report full structure of cascade");
71 use3BodyCmd = CreateCommand<G4UIcmdWithABool>(
"use3BodyMom",
72 "Use three-body momentum parametrizations");
73 usePSCmd = CreateCommand<G4UIcmdWithABool>(
"usePhaseSpace",
74 "Use Kopylov N-body momentum generator");
75 randomFileCmd = CreateCommand<G4UIcmdWithAString>(
"randomFile",
76 "Save random-engine to file at each interaction");
77 nucUseBestCmd = CreateCommand<G4UIcmdWithABool>(
"useBestNuclearModel",
78 "Use all physical-units for nuclear structure");
79 nucRad2parCmd = CreateCommand<G4UIcmdWithADouble>(
"useTwoParamNuclearRadius",
80 "Use R = C1*cbrt(A) + C2/cbrt(A)");
81 nucRadScaleCmd = CreateCommand<G4UIcmdWithADouble>(
"nuclearRadiusScale",
82 "Set length scale for nuclear model");
83 nucRadSmallCmd = CreateCommand<G4UIcmdWithADouble>(
"smallNucleusRadius",
84 "Set radius of A<4 nuclei");
85 nucRadAlphaCmd = CreateCommand<G4UIcmdWithADouble>(
"alphaRadiusScale",
86 "Fraction of small-radius for He-4");
87 nucRadTrailingCmd = CreateCommand<G4UIcmdWithADouble>(
"shadowningRadius",
88 "Effective nucleon radius for trailing effect");
89 nucFermiScaleCmd = CreateCommand<G4UIcmdWithADouble>(
"fermiScale",
90 "Scale factor for fermi momentum");
91 nucXsecScaleCmd = CreateCommand<G4UIcmdWithADouble>(
"crossSectionScale",
92 "Scale fator for total cross-sections");
93 nucGammaQDCmd = CreateCommand<G4UIcmdWithADouble>(
"gammaQuasiDeutScale",
94 "Scale factor for gamma-quasideutron cross-sections");
95 coalDPmax2Cmd = CreateCommand<G4UIcmdWithADouble>(
"cluster2DPmax",
96 "Maximum momentum for p-n clusters");
97 coalDPmax3Cmd = CreateCommand<G4UIcmdWithADouble>(
"cluster3DPmax",
98 "Maximum momentum for ppn/pnn clusters");
99 coalDPmax4Cmd = CreateCommand<G4UIcmdWithADouble>(
"cluster4DPmax",
100 "Maximum momentum for alpha clusters");
113 delete randomFileCmd;
114 delete nucUseBestCmd;
115 delete nucRad2parCmd;
116 delete nucRadScaleCmd;
117 delete nucRadSmallCmd;
118 delete nucRadAlphaCmd;
119 delete nucRadTrailingCmd;
120 delete nucFermiScaleCmd;
121 delete nucXsecScaleCmd;
122 delete nucGammaQDCmd;
123 delete coalDPmax2Cmd;
124 delete coalDPmax3Cmd;
125 delete coalDPmax4Cmd;
126 if (localCmdDir)
delete cmdDir;
139 if (fullPath(0) !=
'/') fullPath.
prepend(
"/");
140 if (fullPath(fullPath.length()-1) !=
'/') fullPath.
append(
"/");
144 if (foundPath) cmdDir =
dynamic_cast<G4UIdirectory*
>(foundPath);
157 if (cmd == reportCmd) theParams->DumpConfig(
G4cout);
159 if (cmd == verboseCmd)
160 theParams->G4CASCADE_VERBOSE = strdup(arg.c_str());
162 if (cmd == balanceCmd)
163 theParams->G4CASCADE_CHECK_ECONS =
StoB(arg) ? strdup(arg.c_str()) : 0;
165 if (cmd == usePreCoCmd)
166 theParams->G4CASCADE_USE_PRECOMPOUND =
StoB(arg) ? strdup(arg.c_str()) : 0;
168 if (cmd == doCoalCmd)
169 theParams->G4CASCADE_DO_COALESCENCE =
StoB(arg) ? strdup(arg.c_str()) : 0;
171 if (cmd == piNAbsCmd)
172 theParams->G4CASCADE_PIN_ABSORPTION = strdup(arg.c_str());
174 if (cmd == historyCmd)
175 theParams->G4CASCADE_SHOW_HISTORY =
StoB(arg) ? strdup(arg.c_str()) : 0;
177 if (cmd == use3BodyCmd)
178 theParams->G4CASCADE_USE_3BODYMOM =
StoB(arg) ? strdup(arg.c_str()) : 0;
181 theParams->G4CASCADE_USE_PHASESPACE =
StoB(arg) ? strdup(arg.c_str()) : 0;
183 if (cmd == randomFileCmd)
184 theParams->G4CASCADE_RANDOM_FILE = arg.empty() ? 0 : strdup(arg.c_str());
186 if (cmd == nucUseBestCmd)
187 theParams->G4NUCMODEL_USE_BEST =
StoB(arg) ? strdup(arg.c_str()) : 0;
191 if (cmd == nucRad2parCmd)
192 theParams->G4NUCMODEL_RAD_2PAR =
StoB(arg) ? strdup(arg.c_str()) : 0;
194 if (cmd == nucRadScaleCmd)
195 theParams->G4NUCMODEL_RAD_SCALE = strdup(arg.c_str());
197 if (cmd == nucRadSmallCmd)
198 theParams->G4NUCMODEL_RAD_SMALL = strdup(arg.c_str());
200 if (cmd == nucRadAlphaCmd)
201 theParams->G4NUCMODEL_RAD_ALPHA = strdup(arg.c_str());
203 if (cmd == nucRadTrailingCmd)
204 theParams->G4NUCMODEL_RAD_TRAILING = strdup(arg.c_str());
206 if (cmd == nucFermiScaleCmd)
207 theParams->G4NUCMODEL_FERMI_SCALE = strdup(arg.c_str());
209 if (cmd == nucXsecScaleCmd)
210 theParams->G4NUCMODEL_XSEC_SCALE = strdup(arg.c_str());
212 if (cmd == nucGammaQDCmd)
213 theParams->G4NUCMODEL_GAMMAQD = strdup(arg.c_str());
215 if (cmd == coalDPmax2Cmd)
216 theParams->DPMAX_2CLUSTER = strdup(arg.c_str());
218 if (cmd == coalDPmax3Cmd)
219 theParams->DPMAX_3CLUSTER = strdup(arg.c_str());
221 if (cmd == coalDPmax4Cmd)
222 theParams->DPMAX_4CLUSTER = strdup(arg.c_str());
224 theParams->Initialize();
G4GLOB_DLL std::ostream G4cout
virtual ~G4CascadeParamMessenger()
virtual void SetNewValue(G4UIcommand *command, G4String newValue)
G4CascadeParamMessenger(G4CascadeParameters *params)
void CreateDirectory(const char *path, const char *desc)
G4String & append(const G4String &)
G4String & prepend(const char *)
G4UIcommand * FindPath(const char *commandPath) const
void SetGuidance(const char *aGuidance)
G4UIcommandTree * GetTree() const
static G4UImanager * GetUIpointer()