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