Geant4  v4-10.4-release
 모두 클래스 네임스페이스들 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 Friends 매크로 그룹들 페이지들
G4DeexPrecoParameters.cc
이 파일의 문서화 페이지로 가기
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 // $Id: G4DeexPrecoParameters.cc 68028 2013-03-13 13:48:15Z gcosmo $
27 //
28 // 15.03.2016 V.Ivanchenko
29 //
30 // List of parameters of the pre-compound model
31 // and the deexcitation module
32 //
33 
34 #include "G4DeexPrecoParameters.hh"
35 #include "G4ApplicationState.hh"
36 #include "G4StateManager.hh"
37 #include "G4SystemOfUnits.hh"
38 #include "G4PhysicsModelCatalog.hh"
40 
41 #ifdef G4MULTITHREADED
42 G4Mutex G4DeexPrecoParameters::deexPrecoMutex = G4MUTEX_INITIALIZER;
43 #endif
44 
46 {
47  SetDefaults();
48 }
49 
51 {
52  delete theMessenger;
53 }
54 
56 {
57 #ifdef G4MULTITHREADED
58  G4MUTEXLOCK(&G4DeexPrecoParameters::deexPrecoMutex);
59 #endif
62 
64  fR0 = 1.5*CLHEP::fermi;
66  fFermiEnergy = 35.0*CLHEP::MeV;
68  fPhenoFactor = 1.0;
72  fMinZForPreco = 3;
73  fMinAForPreco = 5;
74  fPrecoType = 3;
75  fDeexType = 3;
76  fTwoJMAX = 10;
77  fNeverGoBack = false;
78  fUseSoftCutoff = false;
79  fUseCEM = true;
80  fUseGNASH = false;
81  fUseHETC = false;
82  fUseAngularGen = true;
83  fPrecoDummy = false;
84  fCorrelatedGamma = false;
85  fStoreAllLevels = false;
86  fInternalConversion = true;
89  G4PhysicsModelCatalog::Register("e-InternalConvertion");
90 #ifdef G4MULTITHREADED
91  G4MUTEXUNLOCK(&G4DeexPrecoParameters::deexPrecoMutex);
92 #endif
93 }
94 
96 {
97  if(IsLocked()) { return; }
99 }
100 
102 {
103  if(IsLocked()) { return; }
104  fR0 = val;
105 }
106 
108 {
109  if(IsLocked()) { return; }
110  fTransitionsR0 = val;
111 }
112 
114 {
115  if(IsLocked()) { return; }
116  fFermiEnergy = val;
117 }
118 
120 {
121  if(IsLocked()) { return; }
122  fPrecoLowEnergy = val;
123 }
124 
126 {
127  if(IsLocked()) { return; }
128  fPhenoFactor = val;
129 }
130 
132 {
133  if(IsLocked()) { return; }
134  fMinExcitation = val;
135 }
136 
138 {
139  if(IsLocked()) { return; }
140  fMaxLifeTime = val;
141 }
142 
144 {
145  if(IsLocked()) { return; }
147 }
148 
150 {
151  if(IsLocked() || n < 2) { return; }
152  fMinZForPreco = n;
153 }
154 
156 {
157  if(IsLocked() || n < 0) { return; }
158  fMinAForPreco = n;
159 }
160 
162 {
163  if(IsLocked() || n < 0 || n > 3) { return; }
164  fPrecoType = n;
165 }
166 
168 {
169  if(IsLocked() || n < 0 || n > 3) { return; }
170  fDeexType = n;
171 }
172 
174 {
175  if(IsLocked() || n < 0) { return; }
176  fTwoJMAX = n;
177 }
178 
180 {
181  if(IsLocked()) { return; }
182  fNeverGoBack = val;
183 }
184 
186 {
187  if(IsLocked()) { return; }
188  fUseSoftCutoff = val;
189 }
190 
192 {
193  if(IsLocked()) { return; }
194  fUseCEM = val;
195 }
196 
198 {
199  if(IsLocked()) { return; }
200  fUseGNASH = val;
201 }
202 
204 {
205  if(IsLocked()) { return; }
206  fUseHETC = val;
207 }
208 
210 {
211  if(IsLocked()) { return; }
212  fUseAngularGen = val;
213 }
214 
216 {
217  if(IsLocked()) { return; }
218  fPrecoDummy = val;
220 }
221 
223 {
224  if(IsLocked()) { return; }
225  fCorrelatedGamma = val;
226 }
227 
229 {
230  if(IsLocked()) { return; }
231  fStoreAllLevels = val;
232 }
233 
235 {
236  SetStoreICLevelData(val);
237 }
238 
240 {
241  if(IsLocked()) { return; }
242  fInternalConversion = val;
243 }
244 
246 {
247  if(IsLocked()) { return; }
248  fDeexChannelType = val;
249 }
250 
251 std::ostream& G4DeexPrecoParameters::StreamInfo(std::ostream& os) const
252 {
253  static const G4String namm[4] = {"Evaporation","GEM","Evaporation+GEM","Dummy"};
254  static const G4int nmm[4] = {8, 68, 68, 0};
255  size_t idx = (size_t)fDeexChannelType;
256 
257  G4int prec = os.precision(5);
258  os << "=======================================================================" << "\n";
259  os << "====== Pre-compound/De-excitation Physics Parameters ========" << "\n";
260  os << "=======================================================================" << "\n";
261  os << "Type of pre-compound inverse x-section " << fPrecoType << "\n";
262  os << "Pre-compound model active " << (!fPrecoDummy) << "\n";
263  os << "Pre-compound low energy (MeV) "
264  << fPrecoLowEnergy/CLHEP::MeV << "\n";
265  os << "Type of de-excitation inverse x-section " << fDeexType << "\n";
266  os << "Type of de-excitation factory " << namm[idx] << "\n";
267  os << "Number of de-excitation channels " << nmm[idx] << "\n";
268  os << "Min excitation energy (keV) "
269  << fMinExcitation/CLHEP::keV << "\n";
270  os << "Min energy per nucleon for multifragmentation (MeV) "
272  os << "Level density (1/MeV) "
273  << fLevelDensity*CLHEP::MeV << "\n";
274  os << "Time limit for long lived isomeres (ns) "
275  << fMaxLifeTime/CLHEP::ns << "\n";
276  os << "Internal e- conversion flag "
277  << fInternalConversion << "\n";
278  os << "Store e- internal conversion data " << fStoreAllLevels << "\n";
279  os << "Electron internal conversion ID "
280  << fInternalConversionID << "\n";
281  os << "Correlated gamma emission flag " << fCorrelatedGamma << "\n";
282  os << "Max 2J for sampling of angular correlations " << fTwoJMAX << "\n";
283  os << "=======================================================================" << "\n";
284  os.precision(prec);
285  return os;
286 }
287 
289 {
291 }
292 
293 std::ostream& operator<< (std::ostream& os, const G4DeexPrecoParameters& par)
294 {
295  return par.StreamInfo(os);
296 }
297 
299 {
300  return (!G4Threading::IsMasterThread() ||
302 }
static const double prec
Definition: RanecuEngine.cc:58
std::ostream & operator<<(std::ostream &, const BasicVector3D< float > &)
G4bool IsMasterThread()
Definition: G4Threading.cc:130
static constexpr double ns
static constexpr double fermi
Definition: SystemOfUnits.h:83
double G4double
Definition: G4Types.hh:76
bool G4bool
Definition: G4Types.hh:79
#define G4MUTEX_INITIALIZER
Definition: G4Threading.hh:88
void SetDeexChannelsType(G4DeexChannelType)
std::ostream & StreamInfo(std::ostream &os) const
static constexpr double MeV
static constexpr double eV
#define G4MUTEXUNLOCK(mutex)
Definition: G4Threading.hh:234
G4DeexParametersMessenger * theMessenger
void SetMinExPerNucleounForMF(G4double)
int G4int
Definition: G4Types.hh:78
G4ApplicationState GetCurrentState() const
#define G4MUTEXLOCK(mutex)
Definition: G4Threading.hh:233
G4DeexChannelType fDeexChannelType
G4GLOB_DLL std::ostream G4cout
Char_t n[5]
static constexpr double second
static constexpr double keV
static constexpr double GeV
static G4StateManager * GetStateManager()
std::mutex G4Mutex
Definition: G4Threading.hh:84
static G4int Register(const G4String &)