Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:58:06

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