Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-09-17 08:58:15

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 class G4StateManager;
0059 class G4DeexParametersMessenger;
0060 
0061 class G4DeexPrecoParameters
0062 {
0063 public:
0064 
0065   G4DeexPrecoParameters();
0066 
0067   ~G4DeexPrecoParameters();
0068 
0069   void SetDefaults();
0070 
0071   // printing
0072   std::ostream& StreamInfo(std::ostream& os) const;
0073   void Dump();
0074   friend std::ostream& operator<< (std::ostream& os, 
0075                    const G4DeexPrecoParameters&);
0076 
0077   G4int GetVerbose() const;
0078 
0079   // inline access methods 
0080   inline G4double GetLevelDensity() const;
0081 
0082   inline G4double GetR0() const;
0083 
0084   inline G4double GetTransitionsR0() const;
0085 
0086   inline G4double GetFBUEnergyLimit() const;
0087 
0088   inline G4double GetFermiEnergy() const;
0089 
0090   inline G4double GetPrecoLowEnergy() const;
0091 
0092   inline G4double GetPrecoHighEnergy() const;
0093 
0094   inline G4double GetPhenoFactor() const;
0095 
0096   inline G4double GetMinExcitation() const;
0097 
0098   inline G4double GetNuclearLevelWidth() const;
0099 
0100   inline G4double GetMaxLifeTime() const;
0101 
0102   inline G4double GetMinExPerNucleounForMF() const;
0103 
0104   inline G4int GetMinZForPreco() const;
0105 
0106   inline G4int GetMinAForPreco() const;
0107 
0108   inline G4int GetPrecoModelType() const;
0109 
0110   inline G4int GetDeexModelType() const;
0111 
0112   inline G4int GetTwoJMAX() const;
0113 
0114   inline G4int GetUploadZ() const;
0115 
0116   inline G4bool NeverGoBack() const;
0117 
0118   inline G4bool UseSoftCutoff() const;
0119 
0120   inline G4bool UseCEM() const;
0121 
0122   inline G4bool UseGNASH() const;
0123 
0124   inline G4bool UseHETC() const;
0125 
0126   inline G4bool UseAngularGen() const;
0127 
0128   inline G4bool PrecoDummy() const;
0129 
0130   inline G4bool CorrelatedGamma() const;
0131 
0132   inline G4bool GetInternalConversionFlag() const;
0133 
0134   inline G4bool GetLevelDensityFlag() const;
0135 
0136   inline G4bool GetDiscreteExcitationFlag() const;
0137 
0138   inline G4bool StoreICLevelData() const;
0139 
0140   inline G4bool IsomerProduction() const;
0141 
0142   inline G4DeexChannelType GetDeexChannelsType() const;
0143 
0144   // Set methods 
0145 
0146   void SetLevelDensity(G4double);
0147 
0148   void SetR0(G4double);
0149 
0150   void SetTransitionsR0(G4double);
0151 
0152   void SetFBUEnergyLimit(G4double);
0153 
0154   void SetFermiEnergy(G4double);
0155 
0156   void SetPrecoLowEnergy(G4double);
0157 
0158   void SetPrecoHighEnergy(G4double);
0159 
0160   void SetPhenoFactor(G4double);
0161 
0162   void SetMinExcitation(G4double);
0163 
0164   void SetNuclearLevelWidth(G4double);
0165 
0166   void SetMaxLifeTime(G4double);
0167 
0168   void SetMinExPerNucleounForMF(G4double);
0169 
0170   void SetMinEForMultiFrag(G4double);
0171 
0172   void SetMinZForPreco(G4int);
0173 
0174   void SetMinAForPreco(G4int);
0175 
0176   void SetPrecoModelType(G4int);
0177 
0178   void SetDeexModelType(G4int);
0179 
0180   void SetTwoJMAX(G4int);
0181 
0182   void SetVerbose(G4int);
0183 
0184   void SetNeverGoBack(G4bool);
0185 
0186   void SetUseSoftCutoff(G4bool);
0187 
0188   void SetUseCEM(G4bool);
0189 
0190   void SetUseGNASH(G4bool);
0191 
0192   void SetUseHETC(G4bool);
0193 
0194   void SetUseAngularGen(G4bool);
0195 
0196   void SetPrecoDummy(G4bool);
0197 
0198   void SetCorrelatedGamma(G4bool);
0199 
0200   void SetStoreICLevelData(G4bool);
0201 
0202   // obsolete method (use previous)
0203   void SetStoreAllLevels(G4bool);
0204 
0205   void SetInternalConversionFlag(G4bool);
0206 
0207   void SetLevelDensityFlag(G4bool);
0208 
0209   void SetDiscreteExcitationFlag(G4bool);
0210 
0211   void SetIsomerProduction(G4bool);
0212 
0213   void SetDeexChannelsType(G4DeexChannelType);
0214 
0215   G4DeexPrecoParameters(const G4DeexPrecoParameters & right) = delete;  
0216   const G4DeexPrecoParameters& operator=
0217   (const G4DeexPrecoParameters &right) = delete;
0218   G4bool operator==(const G4DeexPrecoParameters &right) const = delete;
0219   G4bool operator!=(const G4DeexPrecoParameters &right) const = delete;
0220 
0221 private:
0222 
0223   void Initialise();
0224 
0225   G4bool IsLocked() const;
0226 
0227   G4DeexParametersMessenger* theMessenger;
0228   G4StateManager* fStateManager;
0229 
0230   // Level density parameter
0231   G4double fLevelDensity;
0232 
0233   // Nuclear radius r0 
0234   G4double fR0;
0235 
0236   // Nuclear radius r0 for transitions
0237   G4double fTransitionsR0;
0238 
0239   // upper limit of level energy for Fermi Break-up model
0240   G4double fFBUEnergyLimit;
0241 
0242   // Fermi energy level
0243   G4double fFermiEnergy;
0244 
0245   // Excitation per nucleon limits 
0246   G4double fPrecoLowEnergy;
0247   G4double fPrecoHighEnergy;
0248 
0249   // Preco phenomenological factor
0250   G4double fPhenoFactor;
0251 
0252   // Excitation handler
0253   G4double fMinExcitation;
0254   G4double fNuclearLevelWidth;
0255   G4double fMaxLifeTime;
0256 
0257   // Multi-fragmentation model
0258   G4double fMinExPerNucleounForMF;
0259 
0260   // Cross section type
0261   G4int fPrecoType;
0262   G4int fDeexType;
0263 
0264   G4int fTwoJMAX;
0265 
0266   // Preco model
0267   G4int fMinZForPreco;
0268   G4int fMinAForPreco;
0269 
0270   G4int fVerbose;
0271 
0272   // Preco flags
0273   G4bool fNeverGoBack;
0274   G4bool fUseSoftCutoff;
0275   G4bool fUseCEM;
0276   G4bool fUseGNASH;
0277   G4bool fUseHETC;
0278   G4bool fUseAngularGen;
0279   G4bool fPrecoDummy;
0280 
0281   // Deex flags
0282   G4bool fCorrelatedGamma;
0283   G4bool fStoreAllLevels;
0284   G4bool fInternalConversion;
0285   G4bool fLD; 
0286   G4bool fFD; 
0287   G4bool fIsomerFlag;
0288   G4bool fIsPrinted{false};
0289 
0290   // type of a set of de-exitation channels
0291   G4DeexChannelType fDeexChannelType;
0292 };
0293 
0294 inline G4double G4DeexPrecoParameters::GetLevelDensity() const
0295 { 
0296   return fLevelDensity; 
0297 }
0298  
0299 inline G4double G4DeexPrecoParameters::GetR0() const
0300 { 
0301   return fR0; 
0302 }
0303 
0304 inline G4double G4DeexPrecoParameters::GetTransitionsR0() const
0305 { 
0306   return fTransitionsR0; 
0307 }
0308 
0309 inline G4double G4DeexPrecoParameters::GetFBUEnergyLimit() const
0310 {
0311   return fFBUEnergyLimit;
0312 }
0313 
0314 inline G4double G4DeexPrecoParameters::GetFermiEnergy() const
0315 { 
0316   return fFermiEnergy; 
0317 }
0318 
0319 inline G4double G4DeexPrecoParameters::GetPrecoLowEnergy() const
0320 { 
0321   return fPrecoLowEnergy; 
0322 }
0323 
0324 inline G4double G4DeexPrecoParameters::GetPrecoHighEnergy() const
0325 { 
0326   return fPrecoHighEnergy; 
0327 }
0328 
0329 inline G4double G4DeexPrecoParameters::GetPhenoFactor() const
0330 { 
0331   return fPhenoFactor; 
0332 }
0333 
0334 inline G4double G4DeexPrecoParameters::GetMinExcitation() const
0335 {
0336   return fMinExcitation;
0337 }
0338 
0339 inline G4double G4DeexPrecoParameters::GetNuclearLevelWidth() const
0340 {
0341   return fNuclearLevelWidth;
0342 }
0343 
0344 inline G4double G4DeexPrecoParameters::GetMaxLifeTime() const
0345 {
0346   return fMaxLifeTime;
0347 }
0348 
0349 inline G4double G4DeexPrecoParameters::GetMinExPerNucleounForMF() const
0350 {
0351   return fMinExPerNucleounForMF;
0352 }
0353 
0354 inline G4int G4DeexPrecoParameters::GetMinZForPreco() const
0355 {
0356   return fMinZForPreco;
0357 }
0358 
0359 inline G4int G4DeexPrecoParameters::GetMinAForPreco() const
0360 {
0361   return fMinAForPreco;
0362 }
0363 
0364 inline G4int G4DeexPrecoParameters::GetPrecoModelType() const
0365 {
0366   return fPrecoType;
0367 }
0368 
0369 inline G4int G4DeexPrecoParameters::GetDeexModelType() const
0370 {
0371   return fDeexType;
0372 }
0373 
0374 inline G4int G4DeexPrecoParameters::GetTwoJMAX() const
0375 {
0376   return fTwoJMAX;
0377 }
0378 
0379 inline G4bool G4DeexPrecoParameters::NeverGoBack() const
0380 {
0381   return fNeverGoBack;
0382 }
0383 
0384 inline G4bool G4DeexPrecoParameters::UseSoftCutoff() const
0385 {
0386   return fUseSoftCutoff;
0387 }
0388 
0389 inline G4bool G4DeexPrecoParameters::UseCEM() const
0390 {
0391   return fUseCEM;
0392 }
0393 
0394 inline G4bool G4DeexPrecoParameters::UseGNASH() const
0395 {
0396   return fUseGNASH;
0397 }
0398 
0399 inline G4bool G4DeexPrecoParameters::UseHETC() const
0400 {
0401   return fUseHETC;
0402 }
0403 
0404 inline G4bool G4DeexPrecoParameters::UseAngularGen() const
0405 {
0406   return fUseAngularGen;
0407 }
0408 
0409 inline G4bool G4DeexPrecoParameters::PrecoDummy() const
0410 {
0411   return fPrecoDummy;
0412 }
0413 
0414 inline G4bool G4DeexPrecoParameters::CorrelatedGamma() const
0415 {
0416   return fCorrelatedGamma;
0417 }
0418 
0419 inline G4bool G4DeexPrecoParameters::StoreICLevelData() const
0420 {
0421   return fStoreAllLevels;
0422 }
0423 
0424 inline G4bool G4DeexPrecoParameters::GetInternalConversionFlag() const
0425 {
0426   return fInternalConversion;
0427 }
0428 
0429 inline G4bool G4DeexPrecoParameters::GetLevelDensityFlag() const
0430 {
0431   return fLD;
0432 }
0433 
0434 inline G4bool G4DeexPrecoParameters::GetDiscreteExcitationFlag() const
0435 {
0436   return fFD;
0437 }
0438 
0439 inline G4bool G4DeexPrecoParameters::IsomerProduction() const
0440 {
0441   return fIsomerFlag;
0442 }
0443 
0444 inline G4DeexChannelType G4DeexPrecoParameters::GetDeexChannelsType() const
0445 {
0446   return fDeexChannelType;
0447 }
0448 
0449 #endif