Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 #include "G4ParticleHPMessenger.hh" 27 28 #include "G4HadronicParameters.hh" 29 #include "G4ParticleHPManager.hh" 30 #include "G4SystemOfUnits.hh" 31 #include "G4UIcmdWithABool.hh" 32 #include "G4UIcmdWithADouble.hh" 33 #include "G4UIcmdWithADoubleAndUnit.hh" 34 #include "G4UIcmdWithAString.hh" 35 #include "G4UIcmdWithAnInteger.hh" 36 #include "G4UIcommand.hh" 37 #include "G4UIdirectory.hh" 38 #include "G4UIparameter.hh" 39 #include "G4UnitsTable.hh" 40 41 G4ParticleHPMessenger::G4ParticleHPMessenger(G 42 { 43 ParticleHPDir = new G4UIdirectory("/process/ 44 ParticleHPDir->SetGuidance("UI commands of P 45 46 PhotoEvaCmd = new G4UIcmdWithAString("/proce 47 PhotoEvaCmd->SetGuidance( 48 " Force the use of the Photon Evaporation 49 "data."); 50 PhotoEvaCmd->SetParameterName("choice", fals 51 PhotoEvaCmd->SetCandidates("true false"); 52 PhotoEvaCmd->AvailableForStates(G4State_PreI 53 54 SkipMissingCmd = new G4UIcmdWithAString("/pr 55 SkipMissingCmd->SetGuidance( 56 "Use only exact isotope data files, instea 57 SkipMissingCmd->SetGuidance( 58 "In this case if the exact file is not ava 59 SkipMissingCmd->SetParameterName("choice", f 60 SkipMissingCmd->SetCandidates("true false"); 61 SkipMissingCmd->AvailableForStates(G4State_P 62 63 NeglectDopplerCmd = 64 new G4UIcmdWithAString("/process/had/parti 65 NeglectDopplerCmd->SetGuidance( 66 "Switch off the Doppler broadening due to 67 NeglectDopplerCmd->SetGuidance("This option 68 NeglectDopplerCmd->SetParameterName("choice" 69 NeglectDopplerCmd->SetCandidates("true false 70 NeglectDopplerCmd->AvailableForStates(G4Stat 71 72 DoNotAdjustFSCmd = 73 new G4UIcmdWithAString("/process/had/parti 74 DoNotAdjustFSCmd->SetGuidance("Disable to ad 75 DoNotAdjustFSCmd->SetParameterName("choice", 76 DoNotAdjustFSCmd->SetCandidates("true false" 77 DoNotAdjustFSCmd->AvailableForStates(G4State 78 79 ProduceFissionFragementCmd = 80 new G4UIcmdWithAString("/process/had/parti 81 ProduceFissionFragementCmd->SetGuidance("Ena 82 ProduceFissionFragementCmd->SetParameterName 83 ProduceFissionFragementCmd->SetCandidates("t 84 ProduceFissionFragementCmd->AvailableForStat 85 86 WendtFissionModelCmd = 87 new G4UIcmdWithAString("/process/had/parti 88 WendtFissionModelCmd->SetGuidance("Enable us 89 WendtFissionModelCmd->SetParameterName("choi 90 WendtFissionModelCmd->SetCandidates("true fa 91 WendtFissionModelCmd->AvailableForStates(G4S 92 93 NRESP71Cmd = new G4UIcmdWithAString("/proces 94 NRESP71Cmd->SetGuidance("Enable to use NRESP 95 NRESP71Cmd->SetParameterName("choice", false 96 NRESP71Cmd->SetCandidates("true false"); 97 NRESP71Cmd->AvailableForStates(G4State_PreIn 98 99 VerboseCmd = new G4UIcmdWithAnInteger("/proc 100 VerboseCmd->SetGuidance("Set Verbose level o 101 VerboseCmd->SetParameterName("verbose_level" 102 VerboseCmd->SetDefaultValue(1); 103 VerboseCmd->SetRange("verbose_level >=0"); 104 VerboseCmd->AvailableForStates(G4State_PreIn 105 106 UseDBRCCmd = new G4UIcmdWithABool("/process/ 107 UseDBRCCmd->SetGuidance("Enable use of Doppl 108 UseDBRCCmd->SetDefaultValue(false); 109 UseDBRCCmd->AvailableForStates(G4State_PreIn 110 111 MaxEnergySVTCmd = new G4UIcmdWithADoubleAndU 112 MaxEnergySVTCmd->SetGuidance("Energy thresho 113 MaxEnergySVTCmd->SetGuidance("The default is 114 MaxEnergySVTCmd->SetParameterName("MaxEnergy 115 MaxEnergySVTCmd->SetRange("MaxEnergySVT>=0." 116 MaxEnergySVTCmd->SetUnitCategory("Energy"); 117 MaxEnergySVTCmd->AvailableForStates(G4State_ 118 119 MinADBRCCmd = new G4UIcmdWithADouble("/proce 120 MinADBRCCmd->SetGuidance("Atomic mass in neu 121 MinADBRCCmd->SetGuidance("The default is A=2 122 MinADBRCCmd->SetParameterName("MinASVT", fal 123 MinADBRCCmd->SetRange("MinASVT>=0."); 124 MinADBRCCmd->SetDefaultValue(200); 125 MinADBRCCmd->AvailableForStates(G4State_PreI 126 127 MinEnergyDBRCCmd = new G4UIcmdWithADoubleAnd 128 MinEnergyDBRCCmd->SetGuidance( 129 "Energy threshold under which the DBRC met 130 MinEnergyDBRCCmd->SetGuidance("The default v 131 MinEnergyDBRCCmd->SetParameterName("MinEnerg 132 MinEnergyDBRCCmd->SetRange("MinEnergyDBRC>0. 133 MinEnergyDBRCCmd->SetUnitCategory("Energy"); 134 MinEnergyDBRCCmd->SetDefaultValue(0.1 * CLHE 135 MinEnergyDBRCCmd->AvailableForStates(G4State 136 137 MaxEnergyDBRCCmd = new G4UIcmdWithADoubleAnd 138 MaxEnergyDBRCCmd->SetGuidance("Energy thresh 139 MaxEnergyDBRCCmd->SetGuidance("The default v 140 MaxEnergyDBRCCmd->SetParameterName("MaxEnerg 141 MaxEnergyDBRCCmd->SetRange("MaxEnergyDBRC>0. 142 MaxEnergyDBRCCmd->SetUnitCategory("Energy"); 143 MaxEnergyDBRCCmd->SetDefaultValue(210. * CLH 144 MaxEnergyDBRCCmd->AvailableForStates(G4State 145 } 146 147 G4ParticleHPMessenger::~G4ParticleHPMessenger( 148 { 149 delete ParticleHPDir; 150 delete PhotoEvaCmd; 151 delete SkipMissingCmd; 152 delete NeglectDopplerCmd; 153 delete DoNotAdjustFSCmd; 154 delete ProduceFissionFragementCmd; 155 delete WendtFissionModelCmd; 156 delete NRESP71Cmd; 157 delete VerboseCmd; 158 delete UseDBRCCmd; 159 delete MaxEnergySVTCmd; 160 delete MinADBRCCmd; 161 delete MinEnergyDBRCCmd; 162 delete MaxEnergyDBRCCmd; 163 } 164 165 void G4ParticleHPMessenger::SetNewValue(G4UIco 166 { 167 G4bool bValue = false; 168 if (newValue == "true") bValue = true; 169 170 if (command == PhotoEvaCmd) { 171 if (manager->GetUseOnlyPhotoEvaporation() 172 manager->SetUseOnlyPhotoEvaporation(bVal 173 #ifdef G4VERBOSE 174 if (G4HadronicParameters::Instance()->Ge 175 G4cout << G4endl 176 << "=== G4ParticleHPMessenger C 177 << bValue << " ===" << G4endl; 178 } 179 if (bValue) { 180 G4cout << " -> Forced the use of th 181 "capture final state data)" 182 << G4endl; 183 } 184 else { 185 G4cout << " -> Go back to use the d 186 } 187 #endif 188 } 189 } 190 191 if (command == SkipMissingCmd) { 192 if (manager->GetSkipMissingIsotopes() != b 193 manager->SetSkipMissingIsotopes(bValue); 194 #ifdef G4VERBOSE 195 if (G4HadronicParameters::Instance()->Ge 196 G4cout << G4endl << "=== G4ParticleHPM 197 << bValue << " ===" << G4endl; 198 } 199 if (bValue) { 200 G4cout 201 << " -> Use only exact isotope da 202 "to be used: \n" 203 << " if the exact file is not 204 << G4endl; 205 } 206 else { 207 G4cout << " -> Go back to the defau 208 "isotope data files are not 209 << G4endl; 210 } 211 #endif 212 } 213 } 214 215 if (command == NeglectDopplerCmd) { 216 if (manager->GetNeglectDoppler() != bValue 217 manager->SetNeglectDoppler(bValue); 218 #ifdef G4VERBOSE 219 if (G4HadronicParameters::Instance()->Ge 220 G4cout << G4endl << "=== G4ParticleHPM 221 << bValue << " ===" << G4endl; 222 } 223 if (bValue) { 224 G4cout << " -> Switched off the Dop 225 "target nucleus: \n" 226 << " on-the-fly Doppler b 227 "calculations of \n" 228 << " capture, elastic, fi 229 "neutrons below 20 MeV.\n" 230 << " This option provides 231 } 232 else { 233 G4cout 234 << " -> Go back to the default, i 235 << G4endl; 236 } 237 #endif 238 } 239 } 240 241 if (command == DoNotAdjustFSCmd) { 242 if (manager->GetDoNotAdjustFinalState() != 243 manager->SetDoNotAdjustFinalState(bValue 244 #ifdef G4VERBOSE 245 if (G4HadronicParameters::Instance()->Ge 246 G4cout << G4endl << "=== G4ParticleHPM 247 << bValue << " ===" << G4endl; 248 } 249 if (bValue) { 250 G4cout 251 << " -> Disabled the adjustment o 252 << G4endl; 253 } 254 else { 255 G4cout << " -> Go back to the defau 256 "conservation !" 257 << G4endl; 258 } 259 #endif 260 } 261 } 262 263 if (command == ProduceFissionFragementCmd) { 264 if (manager->GetProduceFissionFragments() 265 manager->SetProduceFissionFragments(bVal 266 #ifdef G4VERBOSE 267 if (G4HadronicParameters::Instance()->Ge 268 G4cout << G4endl 269 << "=== G4ParticleHPMessenger C 270 << bValue << " ===" << G4endl; 271 } 272 if (bValue) { 273 G4cout << " -> Enabled the generati 274 } 275 else { 276 G4cout << " -> Go back to the defau 277 << G4endl; 278 } 279 #endif 280 } 281 } 282 283 if (command == WendtFissionModelCmd) { 284 if (manager->GetUseWendtFissionModel() != 285 manager->SetUseWendtFissionModel(bValue) 286 // Make sure both fission fragment model 287 if (bValue) manager->SetProduceFissionFr 288 #ifdef G4VERBOSE 289 if (G4HadronicParameters::Instance()->Ge 290 G4cout << G4endl << "=== G4ParticleHPM 291 << bValue << " ===" << G4endl; 292 } 293 if (bValue) { 294 G4cout << " -> Enabled the use of W 295 } 296 else { 297 G4cout << " -> Go back to the defau 298 << G4endl; 299 } 300 #endif 301 } 302 } 303 304 if (command == NRESP71Cmd) { 305 if (manager->GetUseNRESP71Model() != bValu 306 manager->SetUseNRESP71Model(bValue); 307 #ifdef G4VERBOSE 308 if (G4HadronicParameters::Instance()->Ge 309 G4cout << G4endl << "=== G4ParticleHPM 310 << bValue << " ===" << G4endl; 311 } 312 if (bValue) { 313 G4cout << " -> Enabled the use of N 314 } 315 else { 316 G4cout << " -> Go back to the defau 317 } 318 #endif 319 } 320 } 321 322 if (command == VerboseCmd) { 323 G4int verboseLevel = VerboseCmd->ConvertTo 324 if (manager->GetVerboseLevel() != verboseL 325 manager->SetVerboseLevel(verboseLevel); 326 #ifdef G4VERBOSE 327 if (G4HadronicParameters::Instance()->Ge 328 G4cout << G4endl << "=== G4ParticleHPM 329 << verboseLevel << " ===" << G4 330 } 331 #endif 332 } 333 } 334 335 if (command == UseDBRCCmd) { 336 bValue = UseDBRCCmd->GetNewBoolValue(newVa 337 if (manager->GetUseDBRC() != bValue) { 338 manager->SetUseDBRC(bValue); 339 #ifdef G4VERBOSE 340 if (G4HadronicParameters::Instance()->Ge 341 G4cout << G4endl << "=== G4ParticleHPM 342 << " ===" << G4endl; 343 } 344 if (bValue) { 345 G4cout << " -> Using the DBRC algor 346 } 347 else { 348 G4cout << " -> Do not use the DBRC 349 } 350 #endif 351 } 352 } 353 354 if (command == MaxEnergySVTCmd) { 355 G4double energymax = MaxEnergySVTCmd->GetN 356 if (G4HadronicParameters::Instance()->GetN 357 G4HadronicParameters::Instance()->SetNeu 358 #ifdef G4VERBOSE 359 if (G4HadronicParameters::Instance()->Ge 360 G4cout << G4endl 361 << "=== G4ParticleHPMessenger C 362 G4cout << "max energy: " << G4BestUnit 363 } 364 #endif 365 } 366 } 367 368 if (command == MinADBRCCmd) { 369 G4double Amin = MinADBRCCmd->GetNewDoubleV 370 if (manager->GetMinADBRC() != Amin) { 371 manager->SetMinADBRC(Amin); 372 #ifdef G4VERBOSE 373 if (G4HadronicParameters::Instance()->Ge 374 G4cout << G4endl 375 << "=== G4ParticleHPMessenger C 376 G4cout << "min A: " << Amin << G4endl; 377 } 378 #endif 379 } 380 } 381 382 if (command == MinEnergyDBRCCmd) { 383 G4double energymin = MinEnergyDBRCCmd->Get 384 if (manager->GetMinEnergyDBRC() != energym 385 manager->SetMinEnergyDBRC(energymin); 386 #ifdef G4VERBOSE 387 if (G4HadronicParameters::Instance()->Ge 388 G4cout << G4endl 389 << "=== G4ParticleHPMessenger C 390 G4cout << "min energy: " << G4BestUnit 391 } 392 #endif 393 } 394 } 395 396 if (command == MaxEnergyDBRCCmd) { 397 G4double energymax = MaxEnergyDBRCCmd->Get 398 if (manager->GetMaxEnergyDBRC() != energym 399 manager->SetMaxEnergyDBRC(energymax); 400 #ifdef G4VERBOSE 401 if (G4HadronicParameters::Instance()->Ge 402 G4cout << G4endl 403 << "=== G4ParticleHPMessenger C 404 G4cout << "max energy: " << G4BestUnit 405 } 406 #endif 407 } 408 } 409 410 } 411