50 :
G4UImessenger(), theParams(params), cmdDir(0), localCmdDir(false) {
52 CreateDirectory(
"/process/had/cascade/",
"Bertini-esque cascade parameters");
54 verboseCmd = CreateCommand<G4UIcmdWithAnInteger>(
"verbose",
55 "Enable information messages");
56 balanceCmd = CreateCommand<G4UIcmdWithABool>(
"checkBalance",
57 "Enable internal conservation checking");
58 reportCmd = CreateCommand<G4UIcmdWithoutParameter>(
"report",
59 "Dump all non-default parameter settings");
60 usePreCoCmd = CreateCommand<G4UIcmdWithABool>(
"usePreCompound",
61 "Use PreCompoundModel for nuclear de-excitation");
62 doCoalCmd = CreateCommand<G4UIcmdWithABool>(
"doCoalescence",
63 "Apply final-state nucleon clustering");
64 historyCmd = CreateCommand<G4UIcmdWithABool>(
"showHistory",
65 "Collect and report full structure of cascade");
66 use3BodyCmd = CreateCommand<G4UIcmdWithABool>(
"use3BodyMom",
67 "Use three-body momentum parametrizations");
68 usePSCmd = CreateCommand<G4UIcmdWithABool>(
"usePhaseSpace",
69 "Use Kopylov N-body momentum generator");
70 randomFileCmd = CreateCommand<G4UIcmdWithAString>(
"randomFile",
71 "Save random-engine to file at each interaction");
72 nucUseBestCmd = CreateCommand<G4UIcmdWithABool>(
"useBestNuclearModel",
73 "Use all physical-units for nuclear structure");
74 nucRad2parCmd = CreateCommand<G4UIcmdWithADouble>(
"useTwoParamNuclearRadius",
75 "Use R = C1*cbrt(A) + C2/cbrt(A)");
76 nucRadScaleCmd = CreateCommand<G4UIcmdWithADouble>(
"nuclearRadiusScale",
77 "Set length scale for nuclear model");
78 nucRadSmallCmd = CreateCommand<G4UIcmdWithADouble>(
"smallNucleusRadius",
79 "Set radius of A<4 nuclei");
80 nucRadAlphaCmd = CreateCommand<G4UIcmdWithADouble>(
"alphaRadiusScale",
81 "Fraction of small-radius for He-4");
82 nucRadTrailingCmd = CreateCommand<G4UIcmdWithADouble>(
"shadowningRadius",
83 "Effective nucleon radius for trailing effect");
84 nucFermiScaleCmd = CreateCommand<G4UIcmdWithADouble>(
"fermiScale",
85 "Scale factor for fermi momentum");
86 nucXsecScaleCmd = CreateCommand<G4UIcmdWithADouble>(
"crossSectionScale",
87 "Scale fator for total cross-sections");
88 nucGammaQDCmd = CreateCommand<G4UIcmdWithADouble>(
"gammaQuasiDeutScale",
89 "Scale factor for gamma-quasideutron cross-sections");
90 coalDPmax2Cmd = CreateCommand<G4UIcmdWithADouble>(
"cluster2DPmax",
91 "Maximum momentum for p-n clusters");
92 coalDPmax3Cmd = CreateCommand<G4UIcmdWithADouble>(
"cluster3DPmax",
93 "Maximum momentum for ppn/pnn clusters");
94 coalDPmax4Cmd = CreateCommand<G4UIcmdWithADouble>(
"cluster4DPmax",
95 "Maximum momentum for alpha clusters");
107 delete randomFileCmd;
108 delete nucUseBestCmd;
109 delete nucRad2parCmd;
110 delete nucRadScaleCmd;
111 delete nucRadSmallCmd;
112 delete nucRadAlphaCmd;
113 delete nucRadTrailingCmd;
114 delete nucFermiScaleCmd;
115 delete nucXsecScaleCmd;
116 delete nucGammaQDCmd;
117 delete coalDPmax2Cmd;
118 delete coalDPmax3Cmd;
119 delete coalDPmax4Cmd;
120 if (localCmdDir)
delete cmdDir;
133 if (fullPath(0) !=
'/') fullPath.
prepend(
"/");
134 if (fullPath(fullPath.length()-1) !=
'/') fullPath.
append(
"/");
138 if (foundPath) cmdDir =
dynamic_cast<G4UIdirectory*
>(foundPath);
151 if (cmd == reportCmd) theParams->DumpConfig(
G4cout);
153 if (cmd == verboseCmd)
154 theParams->G4CASCADE_VERBOSE = strdup(arg.c_str());
156 if (cmd == balanceCmd)
157 theParams->G4CASCADE_CHECK_ECONS =
StoB(arg) ? strdup(arg.c_str()) : 0;
159 if (cmd == usePreCoCmd)
160 theParams->G4CASCADE_USE_PRECOMPOUND =
StoB(arg) ? strdup(arg.c_str()) : 0;
162 if (cmd == doCoalCmd)
163 theParams->G4CASCADE_DO_COALESCENCE =
StoB(arg) ? strdup(arg.c_str()) : 0;
165 if (cmd == historyCmd)
166 theParams->G4CASCADE_SHOW_HISTORY =
StoB(arg) ? strdup(arg.c_str()) : 0;
168 if (cmd == use3BodyCmd)
169 theParams->G4CASCADE_USE_3BODYMOM =
StoB(arg) ? strdup(arg.c_str()) : 0;
172 theParams->G4CASCADE_USE_PHASESPACE =
StoB(arg) ? strdup(arg.c_str()) : 0;
174 if (cmd == randomFileCmd)
175 theParams->G4CASCADE_RANDOM_FILE = arg.empty() ? 0 : strdup(arg.c_str());
177 if (cmd == nucUseBestCmd)
178 theParams->G4NUCMODEL_USE_BEST =
StoB(arg) ? strdup(arg.c_str()) : 0;
180 if (cmd == nucRad2parCmd)
181 theParams->G4NUCMODEL_RAD_2PAR = strdup(arg.c_str());
183 if (cmd == nucRadScaleCmd)
184 theParams->G4NUCMODEL_RAD_SCALE = strdup(arg.c_str());
186 if (cmd == nucRadSmallCmd)
187 theParams->G4NUCMODEL_RAD_SMALL = strdup(arg.c_str());
189 if (cmd == nucRadAlphaCmd)
190 theParams->G4NUCMODEL_RAD_ALPHA = strdup(arg.c_str());
192 if (cmd == nucRadTrailingCmd)
193 theParams->G4NUCMODEL_RAD_TRAILING = strdup(arg.c_str());
195 if (cmd == nucFermiScaleCmd)
196 theParams->G4NUCMODEL_FERMI_SCALE = strdup(arg.c_str());
198 if (cmd == nucXsecScaleCmd)
199 theParams->G4NUCMODEL_XSEC_SCALE = strdup(arg.c_str());
201 if (cmd == nucGammaQDCmd)
202 theParams->G4NUCMODEL_GAMMAQD = strdup(arg.c_str());
204 if (cmd == coalDPmax2Cmd)
205 theParams->DPMAX_2CLUSTER = strdup(arg.c_str());
207 if (cmd == coalDPmax3Cmd)
208 theParams->DPMAX_3CLUSTER = strdup(arg.c_str());
210 if (cmd == coalDPmax4Cmd)
211 theParams->DPMAX_4CLUSTER = strdup(arg.c_str());
213 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)