Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/util/src/G4HadronicParameters.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /processes/hadronic/util/src/G4HadronicParameters.cc (Version 11.3.0) and /processes/hadronic/util/src/G4HadronicParameters.cc (Version 9.1.p1)


  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 //                                                
 27 //--------------------------------------------    
 28 //                                                
 29 // ClassName:      G4HadronicParameters           
 30 //                                                
 31 // Author:         2018 Alberto Ribon             
 32 //                                                
 33 // Description:    Singleton to keep global ha    
 34 //                                                
 35 // Modified:                                      
 36 //                                                
 37 //--------------------------------------------    
 38                                                   
 39 #include "G4HadronicParameters.hh"                
 40 #include <CLHEP/Units/PhysicalConstants.h>        
 41 #include "G4ApplicationState.hh"                  
 42 #include "G4StateManager.hh"                      
 43 #include "G4HadronicParametersMessenger.hh"       
 44 #include "G4Threading.hh"                         
 45 #include "G4AutoLock.hh"                          
 46                                                   
 47 G4HadronicParameters* G4HadronicParameters::sI    
 48                                                   
 49 namespace                                         
 50 {                                                 
 51   G4Mutex paramMutex = G4MUTEX_INITIALIZER;       
 52 }                                                 
 53                                                   
 54 G4HadronicParameters* G4HadronicParameters::In    
 55   if ( sInstance == nullptr ) {                   
 56     G4AutoLock l(&paramMutex);                    
 57     if ( sInstance == nullptr ) {                 
 58       static G4HadronicParameters theHadronicP    
 59       sInstance = &theHadronicParametersObject    
 60     }                                             
 61     l.unlock();                                   
 62   }                                               
 63   return sInstance;                               
 64 }                                                 
 65                                                   
 66                                                   
 67 G4HadronicParameters::~G4HadronicParameters()     
 68   delete fMessenger;                              
 69 }                                                 
 70                                                   
 71                                                   
 72 G4HadronicParameters::G4HadronicParameters() {    
 73   fMaxEnergy = 100.0*CLHEP::TeV;                  
 74   fMinEnergyTransitionFTF_Cascade = 3.0*CLHEP:    
 75   fMaxEnergyTransitionFTF_Cascade = 6.0*CLHEP:    
 76   fMinEnergyTransitionQGS_FTF = 12.0*CLHEP::Ge    
 77   fMaxEnergyTransitionQGS_FTF = 25.0*CLHEP::Ge    
 78   fMinEnergyINCLXX_Pbar = 0.0*CLHEP::GeV;         
 79   fMaxEnergyINCLXX_Pbar = 10.0*CLHEP::GeV;        
 80   fEnergyThresholdForHeavyHadrons = 1.1*CLHEP:    
 81   fMessenger = new G4HadronicParametersMesseng    
 82                                                   
 83   // read environment variables                   
 84   fReportLevel = G4GetEnv<G4int>("G4Hadronic_e    
 85   const char* ep1 = std::getenv("G4Hadronic_ep    
 86   if(nullptr != ep1) { fRelativeDiff = std::st    
 87   const char* ep2 = std::getenv("G4Hadronic_ep    
 88   if(nullptr != ep2) { fAbsoluteDiff = std::st    
 89   const char* v = G4FindDataDir("G4PARTICLEXSD    
 90   if(nullptr != v) {                              
 91     fDirPARTICLEXS = G4String(v);                 
 92   } else {                                        
 93     if(1 < fVerboseLevel) {                       
 94       G4ExceptionDescription ed;                  
 95       ed << "Environment variable G4PARTICLEXS    
 96          << " it is pointing out to not existi    
 97       G4Exception("G4LevelReader::LevelManager    
 98       JustWarning, ed, "Check file path");        
 99     }                                             
100   }                                               
101   const char* x = std::getenv("G4PhysListDocDi    
102   if(nullptr != x) { fPhysListDocDir = G4Strin    
103   const char* y = std::getenv("G4PhysListName"    
104   if(nullptr != y) { fPhysListName = G4String(    
105   const char* z = std::getenv("BINARY_CASCADE_    
106   if(nullptr != z) { fBinaryDebug = true; }       
107 }                                                 
108                                                   
109                                                   
110 G4bool G4HadronicParameters::IsLocked() const     
111   return ( ! G4Threading::IsMasterThread() ||     
112            G4StateManager::GetStateManager()->    
113 }                                                 
114                                                   
115                                                   
116 void G4HadronicParameters::SetMaxEnergy( const    
117   if ( ! IsLocked()  &&  val > 0.0 ) {            
118     fMaxEnergy = val;                             
119   }                                               
120 }                                                 
121                                                   
122                                                   
123 void G4HadronicParameters::SetMinEnergyTransit    
124   if ( ! IsLocked()  &&  val > 0.0 ) {            
125     fMinEnergyTransitionFTF_Cascade = val;        
126   }                                               
127 }                                                 
128                                                   
129                                                   
130 void G4HadronicParameters::SetMaxEnergyTransit    
131   if ( ! IsLocked()  &&  val > fMinEnergyTrans    
132     fMaxEnergyTransitionFTF_Cascade = val;        
133   }                                               
134 }                                                 
135                                                   
136                                                   
137 void G4HadronicParameters::SetMinEnergyTransit    
138   if ( ! IsLocked()  &&  val > 0.0 ) {            
139     fMinEnergyTransitionQGS_FTF = val;            
140   }                                               
141 }                                                 
142                                                   
143 void G4HadronicParameters::SetMaxEnergyTransit    
144   if ( ! IsLocked()  &&  val > fMinEnergyTrans    
145     fMaxEnergyTransitionQGS_FTF = val;            
146   }                                               
147 }                                                 
148                                                   
149 void G4HadronicParameters::SetMinEnergyINCLXX_    
150   if ( ! IsLocked()  &&  val >= 0.0 ) {           
151     fMinEnergyINCLXX_Pbar = val;                  
152   }                                               
153 }                                                 
154                                                   
155                                                   
156 void G4HadronicParameters::SetMaxEnergyINCLXX_    
157   if ( ! IsLocked()  &&  val > fMinEnergyINCLX    
158     fMaxEnergyINCLXX_Pbar = val;                  
159   }                                               
160 }                                                 
161                                                   
162 void G4HadronicParameters::SetEnableBCParticle    
163   if ( ! IsLocked() ) fEnableBC = val;            
164 }                                                 
165                                                   
166                                                   
167 void G4HadronicParameters::SetEnableHyperNucle    
168   if ( ! IsLocked() ) fEnableHyperNuclei = val    
169 }                                                 
170                                                   
171                                                   
172 void G4HadronicParameters::SetVerboseLevel( co    
173   if ( ! IsLocked()  &&  val >= 0 ) fVerboseLe    
174 }                                                 
175                                                   
176                                                   
177 void G4HadronicParameters::SetEnergyThresholdF    
178   if ( ! IsLocked()  &&  val >= 0 && val < 5*C    
179     fEnergyThresholdForHeavyHadrons = val;        
180   }                                               
181 }                                                 
182                                                   
183                                                   
184 void G4HadronicParameters::SetXSFactorNucleonI    
185   if ( ! IsLocked()  &&  std::abs(val - 1.0) <    
186     fXSFactorNucleonInelastic = val;              
187   }                                               
188 }                                                 
189                                                   
190                                                   
191 void G4HadronicParameters::SetXSFactorNucleonE    
192   if ( ! IsLocked()  &&  std::abs(val - 1.0) <    
193     fXSFactorNucleonElastic = val;                
194   }                                               
195 }                                                 
196                                                   
197                                                   
198 void G4HadronicParameters::SetXSFactorPionInel    
199   if ( ! IsLocked()  &&  std::abs(val - 1.0) <    
200     fXSFactorPionInelastic = val;                 
201   }                                               
202 }                                                 
203                                                   
204                                                   
205 void G4HadronicParameters::SetXSFactorPionElas    
206   if ( ! IsLocked()  &&  std::abs(val - 1.0) <    
207     fXSFactorPionElastic = val;                   
208   }                                               
209 }                                                 
210                                                   
211                                                   
212 void G4HadronicParameters::SetXSFactorHadronIn    
213   if ( ! IsLocked()  &&  std::abs(val - 1.0) <    
214     fXSFactorHadronInelastic = val;               
215   }                                               
216 }                                                 
217                                                   
218                                                   
219 void G4HadronicParameters::SetXSFactorHadronEl    
220   if ( ! IsLocked()  &&  std::abs(val - 1.0) <    
221     fXSFactorHadronElastic = val;                 
222   }                                               
223 }                                                 
224                                                   
225                                                   
226 void G4HadronicParameters::SetXSFactorEM( G4do    
227   if ( ! IsLocked()  &&  std::abs(val - 1.0) <    
228     fXSFactorEM = val;                            
229   }                                               
230 }                                                 
231                                                   
232                                                   
233 void G4HadronicParameters::SetNeutronKineticEn    
234   // This setting works only after initializat    
235   // whereas it does not work for G4State_PreI    
236   if ( G4Threading::IsMasterThread()  &&  val     
237     fNeutronEkinThresholdForSVT = val;            
238   }                                               
239 }                                                 
240                                                   
241                                                   
242 void G4HadronicParameters::SetTimeThresholdFor    
243   // This setting works only before initializa    
244   // (else, if used after initialization, it w    
245   if ( G4Threading::IsMasterThread()  &&  val     
246     fTimeThresholdForRadioactiveDecays = val;     
247   }                                               
248 }                                                 
249                                                   
250                                                   
251 void G4HadronicParameters::SetApplyFactorXS( G    
252   if ( ! IsLocked() ) fApplyFactorXS = val;       
253 }                                                 
254                                                   
255                                                   
256 void G4HadronicParameters::SetEnableCRCoalesce    
257   if ( ! IsLocked() ) fEnableCRCoalescence = v    
258 }                                                 
259                                                   
260                                                   
261 void G4HadronicParameters::SetEnableIntegralIn    
262   if ( ! IsLocked() ) fEnableIntegralInelastic    
263 }                                                 
264                                                   
265                                                   
266 void G4HadronicParameters::SetEnableIntegralEl    
267   if ( ! IsLocked() ) fEnableIntegralElasticXS    
268 }                                                 
269                                                   
270                                                   
271 void G4HadronicParameters::SetEnableDiffDissoc    
272   if ( ! IsLocked() ) fEnableDiffDissociationF    
273 }                                                 
274                                                   
275                                                   
276 void G4HadronicParameters::SetEnableNeutronGen    
277   if ( ! IsLocked() ) fNeutronGeneral = val;      
278 }                                                 
279                                                   
280                                                   
281 void G4HadronicParameters::SetEnableNUDEX( G4b    
282   if ( ! IsLocked() ) fEnableNUDEX = val;         
283 }                                                 
284                                                   
285                                                   
286 void G4HadronicParameters::SetTypeTablePT( con    
287   if ( ! IsLocked() ) fTypeTablePT = typeTable    
288 }                                                 
289                                                   
290                                                   
291 void G4HadronicParameters::SetEnableCoherentCh    
292   if ( ! IsLocked() )  fChargeExchange = val;     
293 }                                                 
294