Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-10 09:18:12

0001 //
0002 // ********************************************************************
0003 // * License and Disclaimer                                           *
0004 // *                                                                  *
0005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
0006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
0007 // * conditions of the Geant4 Software License,  included in the file *
0008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
0009 // * include a list of copyright holders.                             *
0010 // *                                                                  *
0011 // * Neither the authors of this software system, nor their employing *
0012 // * institutes,nor the agencies providing financial support for this *
0013 // * work  make  any representation or  warranty, express or implied, *
0014 // * regarding  this  software system or assume any liability for its *
0015 // * use.  Please see the license in the file  LICENSE  and URL above *
0016 // * for the full disclaimer and the limitation of liability.         *
0017 // *                                                                  *
0018 // * This  code  implementation is the result of  the  scientific and *
0019 // * technical work of the GEANT4 collaboration.                      *
0020 // * By using,  copying,  modifying or  distributing the software (or *
0021 // * any work based  on the software)  you  agree  to acknowledge its *
0022 // * use  in  resulting  scientific  publications,  and indicate your *
0023 // * acceptance of all terms of the Geant4 Software license.          *
0024 // ********************************************************************
0025 //
0026 //
0027 // 15.03.2016 V.Ivanchenko 
0028 //
0029 // List of parameters of the pre-compound model
0030 // and the deexcitation module
0031 //
0032 // Verbosity level depends on the local verbosity level and the verbosity
0033 // level of hadronics defined in G4HadronicParameters
0034 //
0035 // OPTxs is a type of model for inverse cross section. It is different
0036 // for pre-compound and de-excitation (fPrecoType and fDeexType).
0037 // Possible types:
0038 //    0 - Dostrovski's parameterization
0039 //    1 - G4NeutronInelasticXS or G4ParticleInelasticXS
0040 //    2 - Chatterjee's paramaterization
0041 //    3 - Kalbach's parameterization
0042 //
0043 
0044 #ifndef G4DeexPrecoParameters_h
0045 #define G4DeexPrecoParameters_h 1
0046 
0047 #include "globals.hh"
0048 
0049 enum G4DeexChannelType
0050 {
0051   fEvaporation = 0,
0052   fGEM,
0053   fCombined,
0054   fGEMVI,
0055   fDummy
0056 };
0057 
0058 enum G4PreCompoundType
0059 {
0060   eDefault = 0,
0061   eDeexcitation,
0062   ePrecoInterface
0063 };
0064 
0065 enum G4FermiBreakUpType
0066 {
0067   bModelVI = 0,
0068   bModelAN,
0069   bDummy
0070 };
0071 
0072 class G4StateManager;
0073 class G4DeexParametersMessenger;
0074 
0075 class G4DeexPrecoParameters
0076 {
0077 public:
0078 
0079   G4DeexPrecoParameters();
0080 
0081   ~G4DeexPrecoParameters();
0082 
0083   void SetDefaults();
0084 
0085   // printing
0086   std::ostream& StreamInfo(std::ostream& os) const;
0087   void Dump();
0088   friend std::ostream& operator<< (std::ostream& os, 
0089                    const G4DeexPrecoParameters&);
0090 
0091   G4int GetVerbose() const;
0092 
0093   // inline access methods 
0094   inline G4double GetLevelDensity() const;
0095 
0096   inline G4double GetR0() const;
0097 
0098   inline G4double GetTransitionsR0() const;
0099 
0100   inline G4double GetFBUEnergyLimit() const;
0101 
0102   inline G4double GetFermiEnergy() const;
0103 
0104   inline G4double GetPrecoLowEnergy() const;
0105 
0106   inline G4double GetPrecoHighEnergy() const;
0107 
0108   inline G4double GetPhenoFactor() const;
0109 
0110   inline G4double GetMinExcitation() const;
0111 
0112   inline G4double GetNuclearLevelWidth() const;
0113 
0114   inline G4double GetMaxLifeTime() const;
0115 
0116   inline G4double GetMinExPerNucleounForMF() const;
0117 
0118   inline G4int GetMinZForPreco() const;
0119 
0120   inline G4int GetMinAForPreco() const;
0121 
0122   // should be renamed 
0123   inline G4int GetPrecoModelType() const;
0124 
0125   // should be renamed 
0126   inline G4int GetDeexModelType() const;
0127 
0128   inline G4int GetTwoJMAX() const;
0129 
0130   inline G4int GetUploadZ() const;
0131 
0132   inline G4bool NeverGoBack() const;
0133 
0134   inline G4bool UseSoftCutoff() const;
0135 
0136   inline G4bool UseCEM() const;
0137 
0138   inline G4bool UseGNASH() const;
0139 
0140   inline G4bool UseHETC() const;
0141 
0142   inline G4bool UseAngularGen() const;
0143 
0144   inline G4bool PrecoDummy() const;
0145 
0146   inline G4bool CorrelatedGamma() const;
0147 
0148   inline G4bool GetInternalConversionFlag() const;
0149 
0150   inline G4bool GetLevelDensityFlag() const;
0151 
0152   inline G4bool GetDiscreteExcitationFlag() const;
0153 
0154   inline G4bool StoreICLevelData() const;
0155 
0156   inline G4bool IsomerProduction() const;
0157 
0158   inline G4DeexChannelType GetDeexChannelsType() const;
0159 
0160   inline G4PreCompoundType GetPreCompoundType() const;
0161 
0162   inline G4FermiBreakUpType GetFermiBreakUpType() const;
0163 
0164   // Set methods 
0165   void SetLevelDensity(G4double);
0166 
0167   void SetR0(G4double);
0168 
0169   void SetTransitionsR0(G4double);
0170 
0171   void SetFBUEnergyLimit(G4double);
0172 
0173   void SetFermiEnergy(G4double);
0174 
0175   void SetPrecoLowEnergy(G4double);
0176 
0177   void SetPrecoHighEnergy(G4double);
0178 
0179   void SetPhenoFactor(G4double);
0180 
0181   void SetMinExcitation(G4double);
0182 
0183   void SetNuclearLevelWidth(G4double);
0184 
0185   void SetMaxLifeTime(G4double);
0186 
0187   void SetMinExPerNucleounForMF(G4double);
0188 
0189   void SetMinEForMultiFrag(G4double);
0190 
0191   void SetMinZForPreco(G4int);
0192 
0193   void SetMinAForPreco(G4int);
0194 
0195   // should be renamed
0196   void SetPrecoModelType(G4int);
0197 
0198   // should be renamed
0199   void SetDeexModelType(G4int);
0200 
0201   void SetTwoJMAX(G4int);
0202 
0203   void SetVerbose(G4int);
0204 
0205   void SetNeverGoBack(G4bool);
0206 
0207   void SetUseSoftCutoff(G4bool);
0208 
0209   void SetUseCEM(G4bool);
0210 
0211   void SetUseGNASH(G4bool);
0212 
0213   void SetUseHETC(G4bool);
0214 
0215   void SetUseAngularGen(G4bool);
0216 
0217   void SetPrecoDummy(G4bool);
0218 
0219   void SetCorrelatedGamma(G4bool);
0220 
0221   void SetStoreICLevelData(G4bool);
0222 
0223   // obsolete method (use SetStoreICLevelData)
0224   void SetStoreAllLevels(G4bool);
0225 
0226   void SetInternalConversionFlag(G4bool);
0227 
0228   void SetLevelDensityFlag(G4bool);
0229 
0230   void SetDiscreteExcitationFlag(G4bool);
0231 
0232   void SetIsomerProduction(G4bool);
0233 
0234   void SetDeexChannelsType(G4DeexChannelType);
0235 
0236   void SetPreCompoundType(G4PreCompoundType);
0237 
0238   void SetFermiBreakUpType(G4FermiBreakUpType);
0239 
0240   G4DeexPrecoParameters(const G4DeexPrecoParameters & right) = delete;  
0241   const G4DeexPrecoParameters& operator=
0242   (const G4DeexPrecoParameters &right) = delete;
0243   G4bool operator==(const G4DeexPrecoParameters &right) const = delete;
0244   G4bool operator!=(const G4DeexPrecoParameters &right) const = delete;
0245 
0246 private:
0247 
0248   void Initialise();
0249 
0250   G4bool IsLocked() const;
0251 
0252   G4DeexParametersMessenger* theMessenger;
0253   G4StateManager* fStateManager;
0254 
0255   // Level density parameter
0256   G4double fLevelDensity;
0257 
0258   // Nuclear radius r0 
0259   G4double fR0;
0260 
0261   // Nuclear radius r0 for transitions
0262   G4double fTransitionsR0;
0263 
0264   // upper limit of level energy for Fermi Break-up model
0265   G4double fFBUEnergyLimit;
0266 
0267   // Fermi energy level
0268   G4double fFermiEnergy;
0269 
0270   // Excitation per nucleon limits 
0271   G4double fPrecoLowEnergy;
0272   G4double fPrecoHighEnergy;
0273 
0274   // Preco phenomenological factor
0275   G4double fPhenoFactor;
0276 
0277   // Excitation handler
0278   G4double fMinExcitation;
0279   G4double fNuclearLevelWidth;
0280   G4double fMaxLifeTime;
0281 
0282   // Multi-fragmentation model
0283   G4double fMinExPerNucleounForMF;
0284 
0285   // Cross section type
0286   G4int fPrecoType;
0287   G4int fDeexType;
0288 
0289   G4int fTwoJMAX;
0290 
0291   // Preco model
0292   G4int fMinZForPreco;
0293   G4int fMinAForPreco;
0294 
0295   G4int fVerbose;
0296 
0297   // Preco flags
0298   G4bool fNeverGoBack;
0299   G4bool fUseSoftCutoff;
0300   G4bool fUseCEM;
0301   G4bool fUseGNASH;
0302   G4bool fUseHETC;
0303   G4bool fUseAngularGen;
0304   G4bool fPrecoDummy;
0305 
0306   // Deex flags
0307   G4bool fCorrelatedGamma;
0308   G4bool fStoreAllLevels;
0309   G4bool fInternalConversion;
0310   G4bool fLD; 
0311   G4bool fFD; 
0312   G4bool fIsomerFlag;
0313   G4bool fIsPrinted{false};
0314 
0315   // type of a set of de-exitation channels
0316   G4DeexChannelType fDeexChannelType;
0317   G4PreCompoundType fPreCompoundType;
0318   G4FermiBreakUpType fFermiBreakUpType;
0319 };
0320 
0321 inline G4double G4DeexPrecoParameters::GetLevelDensity() const
0322 { 
0323   return fLevelDensity; 
0324 }
0325  
0326 inline G4double G4DeexPrecoParameters::GetR0() const
0327 { 
0328   return fR0; 
0329 }
0330 
0331 inline G4double G4DeexPrecoParameters::GetTransitionsR0() const
0332 { 
0333   return fTransitionsR0; 
0334 }
0335 
0336 inline G4double G4DeexPrecoParameters::GetFBUEnergyLimit() const
0337 {
0338   return fFBUEnergyLimit;
0339 }
0340 
0341 inline G4double G4DeexPrecoParameters::GetFermiEnergy() const
0342 { 
0343   return fFermiEnergy; 
0344 }
0345 
0346 inline G4double G4DeexPrecoParameters::GetPrecoLowEnergy() const
0347 { 
0348   return fPrecoLowEnergy; 
0349 }
0350 
0351 inline G4double G4DeexPrecoParameters::GetPrecoHighEnergy() const
0352 { 
0353   return fPrecoHighEnergy; 
0354 }
0355 
0356 inline G4double G4DeexPrecoParameters::GetPhenoFactor() const
0357 { 
0358   return fPhenoFactor; 
0359 }
0360 
0361 inline G4double G4DeexPrecoParameters::GetMinExcitation() const
0362 {
0363   return fMinExcitation;
0364 }
0365 
0366 inline G4double G4DeexPrecoParameters::GetNuclearLevelWidth() const
0367 {
0368   return fNuclearLevelWidth;
0369 }
0370 
0371 inline G4double G4DeexPrecoParameters::GetMaxLifeTime() const
0372 {
0373   return fMaxLifeTime;
0374 }
0375 
0376 inline G4double G4DeexPrecoParameters::GetMinExPerNucleounForMF() const
0377 {
0378   return fMinExPerNucleounForMF;
0379 }
0380 
0381 inline G4int G4DeexPrecoParameters::GetMinZForPreco() const
0382 {
0383   return fMinZForPreco;
0384 }
0385 
0386 inline G4int G4DeexPrecoParameters::GetMinAForPreco() const
0387 {
0388   return fMinAForPreco;
0389 }
0390 
0391 inline G4int G4DeexPrecoParameters::GetPrecoModelType() const
0392 {
0393   return fPrecoType;
0394 }
0395 
0396 inline G4int G4DeexPrecoParameters::GetDeexModelType() const
0397 {
0398   return fDeexType;
0399 }
0400 
0401 inline G4int G4DeexPrecoParameters::GetTwoJMAX() const
0402 {
0403   return fTwoJMAX;
0404 }
0405 
0406 inline G4bool G4DeexPrecoParameters::NeverGoBack() const
0407 {
0408   return fNeverGoBack;
0409 }
0410 
0411 inline G4bool G4DeexPrecoParameters::UseSoftCutoff() const
0412 {
0413   return fUseSoftCutoff;
0414 }
0415 
0416 inline G4bool G4DeexPrecoParameters::UseCEM() const
0417 {
0418   return fUseCEM;
0419 }
0420 
0421 inline G4bool G4DeexPrecoParameters::UseGNASH() const
0422 {
0423   return fUseGNASH;
0424 }
0425 
0426 inline G4bool G4DeexPrecoParameters::UseHETC() const
0427 {
0428   return fUseHETC;
0429 }
0430 
0431 inline G4bool G4DeexPrecoParameters::UseAngularGen() const
0432 {
0433   return fUseAngularGen;
0434 }
0435 
0436 inline G4bool G4DeexPrecoParameters::PrecoDummy() const
0437 {
0438   return fPrecoDummy;
0439 }
0440 
0441 inline G4bool G4DeexPrecoParameters::CorrelatedGamma() const
0442 {
0443   return fCorrelatedGamma;
0444 }
0445 
0446 inline G4bool G4DeexPrecoParameters::StoreICLevelData() const
0447 {
0448   return fStoreAllLevels;
0449 }
0450 
0451 inline G4bool G4DeexPrecoParameters::GetInternalConversionFlag() const
0452 {
0453   return fInternalConversion;
0454 }
0455 
0456 inline G4bool G4DeexPrecoParameters::GetLevelDensityFlag() const
0457 {
0458   return fLD;
0459 }
0460 
0461 inline G4bool G4DeexPrecoParameters::GetDiscreteExcitationFlag() const
0462 {
0463   return fFD;
0464 }
0465 
0466 inline G4bool G4DeexPrecoParameters::IsomerProduction() const
0467 {
0468   return fIsomerFlag;
0469 }
0470 
0471 inline G4DeexChannelType G4DeexPrecoParameters::GetDeexChannelsType() const
0472 {
0473   return fDeexChannelType;
0474 }
0475 
0476 inline G4PreCompoundType G4DeexPrecoParameters::GetPreCompoundType() const
0477 {
0478   return fPreCompoundType;
0479 }
0480 
0481 inline G4FermiBreakUpType G4DeexPrecoParameters::GetFermiBreakUpType() const
0482 {
0483   return fFermiBreakUpType;
0484 }
0485   
0486 #endif