Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 // 27 // 15.03.2016 V.Ivanchenko 28 // 29 // List of parameters of the pre-compound model 30 // and the deexcitation module 31 // 32 // Verbosity level depends on the local verbosity level and the verbosity 33 // level of hadronics defined in G4HadronicParameters 34 // 35 // OPTxs is a type of model for inverse cross section. It is different 36 // for pre-compound and de-excitation (fPrecoType and fDeexType). 37 // Possible types: 38 // 0 - Dostrovski's parameterization 39 // 1 - G4NeutronInelasticXS or G4ParticleInelasticXS 40 // 2 - Chatterjee's paramaterization 41 // 3 - Kalbach's parameterization 42 // 43 44 #ifndef G4DeexPrecoParameters_h 45 #define G4DeexPrecoParameters_h 1 46 47 #include "globals.hh" 48 49 enum G4DeexChannelType 50 { 51 fEvaporation = 0, 52 fGEM, 53 fCombined, 54 fGEMVI, 55 fDummy 56 }; 57 58 class G4StateManager; 59 class G4DeexParametersMessenger; 60 61 class G4DeexPrecoParameters 62 { 63 public: 64 65 G4DeexPrecoParameters(); 66 67 ~G4DeexPrecoParameters(); 68 69 void SetDefaults(); 70 71 // printing 72 std::ostream& StreamInfo(std::ostream& os) const; 73 void Dump(); 74 friend std::ostream& operator<< (std::ostream& os, 75 const G4DeexPrecoParameters&); 76 77 G4int GetVerbose() const; 78 79 // inline access methods 80 inline G4double GetLevelDensity() const; 81 82 inline G4double GetR0() const; 83 84 inline G4double GetTransitionsR0() const; 85 86 inline G4double GetFBUEnergyLimit() const; 87 88 inline G4double GetFermiEnergy() const; 89 90 inline G4double GetPrecoLowEnergy() const; 91 92 inline G4double GetPrecoHighEnergy() const; 93 94 inline G4double GetPhenoFactor() const; 95 96 inline G4double GetMinExcitation() const; 97 98 inline G4double GetNuclearLevelWidth() const; 99 100 inline G4double GetMaxLifeTime() const; 101 102 inline G4double GetMinExPerNucleounForMF() const; 103 104 inline G4int GetMinZForPreco() const; 105 106 inline G4int GetMinAForPreco() const; 107 108 inline G4int GetPrecoModelType() const; 109 110 inline G4int GetDeexModelType() const; 111 112 inline G4int GetTwoJMAX() const; 113 114 inline G4int GetUploadZ() const; 115 116 inline G4bool NeverGoBack() const; 117 118 inline G4bool UseSoftCutoff() const; 119 120 inline G4bool UseCEM() const; 121 122 inline G4bool UseGNASH() const; 123 124 inline G4bool UseHETC() const; 125 126 inline G4bool UseAngularGen() const; 127 128 inline G4bool PrecoDummy() const; 129 130 inline G4bool CorrelatedGamma() const; 131 132 inline G4bool GetInternalConversionFlag() const; 133 134 inline G4bool GetLevelDensityFlag() const; 135 136 inline G4bool GetDiscreteExcitationFlag() const; 137 138 inline G4bool StoreICLevelData() const; 139 140 inline G4bool IsomerProduction() const; 141 142 inline G4DeexChannelType GetDeexChannelsType() const; 143 144 // Set methods 145 146 void SetLevelDensity(G4double); 147 148 void SetR0(G4double); 149 150 void SetTransitionsR0(G4double); 151 152 void SetFBUEnergyLimit(G4double); 153 154 void SetFermiEnergy(G4double); 155 156 void SetPrecoLowEnergy(G4double); 157 158 void SetPrecoHighEnergy(G4double); 159 160 void SetPhenoFactor(G4double); 161 162 void SetMinExcitation(G4double); 163 164 void SetNuclearLevelWidth(G4double); 165 166 void SetMaxLifeTime(G4double); 167 168 void SetMinExPerNucleounForMF(G4double); 169 170 void SetMinEForMultiFrag(G4double); 171 172 void SetMinZForPreco(G4int); 173 174 void SetMinAForPreco(G4int); 175 176 void SetPrecoModelType(G4int); 177 178 void SetDeexModelType(G4int); 179 180 void SetTwoJMAX(G4int); 181 182 void SetVerbose(G4int); 183 184 void SetNeverGoBack(G4bool); 185 186 void SetUseSoftCutoff(G4bool); 187 188 void SetUseCEM(G4bool); 189 190 void SetUseGNASH(G4bool); 191 192 void SetUseHETC(G4bool); 193 194 void SetUseAngularGen(G4bool); 195 196 void SetPrecoDummy(G4bool); 197 198 void SetCorrelatedGamma(G4bool); 199 200 void SetStoreICLevelData(G4bool); 201 202 // obsolete method (use previous) 203 void SetStoreAllLevels(G4bool); 204 205 void SetInternalConversionFlag(G4bool); 206 207 void SetLevelDensityFlag(G4bool); 208 209 void SetDiscreteExcitationFlag(G4bool); 210 211 void SetIsomerProduction(G4bool); 212 213 void SetDeexChannelsType(G4DeexChannelType); 214 215 G4DeexPrecoParameters(const G4DeexPrecoParameters & right) = delete; 216 const G4DeexPrecoParameters& operator= 217 (const G4DeexPrecoParameters &right) = delete; 218 G4bool operator==(const G4DeexPrecoParameters &right) const = delete; 219 G4bool operator!=(const G4DeexPrecoParameters &right) const = delete; 220 221 private: 222 223 void Initialise(); 224 225 G4bool IsLocked() const; 226 227 G4DeexParametersMessenger* theMessenger; 228 G4StateManager* fStateManager; 229 230 // Level density parameter 231 G4double fLevelDensity; 232 233 // Nuclear radius r0 234 G4double fR0; 235 236 // Nuclear radius r0 for transitions 237 G4double fTransitionsR0; 238 239 // upper limit of level energy for Fermi Break-up model 240 G4double fFBUEnergyLimit; 241 242 // Fermi energy level 243 G4double fFermiEnergy; 244 245 // Excitation per nucleon limits 246 G4double fPrecoLowEnergy; 247 G4double fPrecoHighEnergy; 248 249 // Preco phenomenological factor 250 G4double fPhenoFactor; 251 252 // Excitation handler 253 G4double fMinExcitation; 254 G4double fNuclearLevelWidth; 255 G4double fMaxLifeTime; 256 257 // Multi-fragmentation model 258 G4double fMinExPerNucleounForMF; 259 260 // Cross section type 261 G4int fPrecoType; 262 G4int fDeexType; 263 264 G4int fTwoJMAX; 265 266 // Preco model 267 G4int fMinZForPreco; 268 G4int fMinAForPreco; 269 270 G4int fVerbose; 271 272 // Preco flags 273 G4bool fNeverGoBack; 274 G4bool fUseSoftCutoff; 275 G4bool fUseCEM; 276 G4bool fUseGNASH; 277 G4bool fUseHETC; 278 G4bool fUseAngularGen; 279 G4bool fPrecoDummy; 280 281 // Deex flags 282 G4bool fCorrelatedGamma; 283 G4bool fStoreAllLevels; 284 G4bool fInternalConversion; 285 G4bool fLD; 286 G4bool fFD; 287 G4bool fIsomerFlag; 288 G4bool fIsPrinted{false}; 289 290 // type of a set of de-exitation channels 291 G4DeexChannelType fDeexChannelType; 292 }; 293 294 inline G4double G4DeexPrecoParameters::GetLevelDensity() const 295 { 296 return fLevelDensity; 297 } 298 299 inline G4double G4DeexPrecoParameters::GetR0() const 300 { 301 return fR0; 302 } 303 304 inline G4double G4DeexPrecoParameters::GetTransitionsR0() const 305 { 306 return fTransitionsR0; 307 } 308 309 inline G4double G4DeexPrecoParameters::GetFBUEnergyLimit() const 310 { 311 return fFBUEnergyLimit; 312 } 313 314 inline G4double G4DeexPrecoParameters::GetFermiEnergy() const 315 { 316 return fFermiEnergy; 317 } 318 319 inline G4double G4DeexPrecoParameters::GetPrecoLowEnergy() const 320 { 321 return fPrecoLowEnergy; 322 } 323 324 inline G4double G4DeexPrecoParameters::GetPrecoHighEnergy() const 325 { 326 return fPrecoHighEnergy; 327 } 328 329 inline G4double G4DeexPrecoParameters::GetPhenoFactor() const 330 { 331 return fPhenoFactor; 332 } 333 334 inline G4double G4DeexPrecoParameters::GetMinExcitation() const 335 { 336 return fMinExcitation; 337 } 338 339 inline G4double G4DeexPrecoParameters::GetNuclearLevelWidth() const 340 { 341 return fNuclearLevelWidth; 342 } 343 344 inline G4double G4DeexPrecoParameters::GetMaxLifeTime() const 345 { 346 return fMaxLifeTime; 347 } 348 349 inline G4double G4DeexPrecoParameters::GetMinExPerNucleounForMF() const 350 { 351 return fMinExPerNucleounForMF; 352 } 353 354 inline G4int G4DeexPrecoParameters::GetMinZForPreco() const 355 { 356 return fMinZForPreco; 357 } 358 359 inline G4int G4DeexPrecoParameters::GetMinAForPreco() const 360 { 361 return fMinAForPreco; 362 } 363 364 inline G4int G4DeexPrecoParameters::GetPrecoModelType() const 365 { 366 return fPrecoType; 367 } 368 369 inline G4int G4DeexPrecoParameters::GetDeexModelType() const 370 { 371 return fDeexType; 372 } 373 374 inline G4int G4DeexPrecoParameters::GetTwoJMAX() const 375 { 376 return fTwoJMAX; 377 } 378 379 inline G4bool G4DeexPrecoParameters::NeverGoBack() const 380 { 381 return fNeverGoBack; 382 } 383 384 inline G4bool G4DeexPrecoParameters::UseSoftCutoff() const 385 { 386 return fUseSoftCutoff; 387 } 388 389 inline G4bool G4DeexPrecoParameters::UseCEM() const 390 { 391 return fUseCEM; 392 } 393 394 inline G4bool G4DeexPrecoParameters::UseGNASH() const 395 { 396 return fUseGNASH; 397 } 398 399 inline G4bool G4DeexPrecoParameters::UseHETC() const 400 { 401 return fUseHETC; 402 } 403 404 inline G4bool G4DeexPrecoParameters::UseAngularGen() const 405 { 406 return fUseAngularGen; 407 } 408 409 inline G4bool G4DeexPrecoParameters::PrecoDummy() const 410 { 411 return fPrecoDummy; 412 } 413 414 inline G4bool G4DeexPrecoParameters::CorrelatedGamma() const 415 { 416 return fCorrelatedGamma; 417 } 418 419 inline G4bool G4DeexPrecoParameters::StoreICLevelData() const 420 { 421 return fStoreAllLevels; 422 } 423 424 inline G4bool G4DeexPrecoParameters::GetInternalConversionFlag() const 425 { 426 return fInternalConversion; 427 } 428 429 inline G4bool G4DeexPrecoParameters::GetLevelDensityFlag() const 430 { 431 return fLD; 432 } 433 434 inline G4bool G4DeexPrecoParameters::GetDiscreteExcitationFlag() const 435 { 436 return fFD; 437 } 438 439 inline G4bool G4DeexPrecoParameters::IsomerProduction() const 440 { 441 return fIsomerFlag; 442 } 443 444 inline G4DeexChannelType G4DeexPrecoParameters::GetDeexChannelsType() const 445 { 446 return fDeexChannelType; 447 } 448 449 #endif 450