Geant4-11
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4DeexPrecoParameters.cc
Go to the documentation of this file.
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// 15.03.2016 V.Ivanchenko
27//
28// List of parameters of the pre-compound model
29// and the deexcitation module
30//
31
33#include "G4ApplicationState.hh"
34#include "G4StateManager.hh"
35#include "G4SystemOfUnits.hh"
39
40#ifdef G4MULTITHREADED
41G4Mutex G4DeexPrecoParameters::deexPrecoMutex = G4MUTEX_INITIALIZER;
42#endif
43
45{
47}
48
50{
51 delete theMessenger;
52}
53
55{
56#ifdef G4MULTITHREADED
57 G4MUTEXLOCK(&G4DeexPrecoParameters::deexPrecoMutex);
58#endif
61
63 fR0 = 1.5*CLHEP::fermi;
69 fPhenoFactor = 1.0;
73 fMinZForPreco = 3;
74 fMinAForPreco = 5;
75 fPrecoType = 3;
76 fDeexType = 3;
77 fTwoJMAX = 10;
78 fVerbose = 1;
79 fNeverGoBack = false;
80 fUseSoftCutoff = false;
81 fUseCEM = true;
82 fUseGNASH = false;
83 fUseHETC = false;
84 fUseAngularGen = false;
85 fPrecoDummy = false;
86 fCorrelatedGamma = false;
87 fStoreAllLevels = false;
89 fLD = true;
90 fFD = false;
91 fIsomerFlag = true;
93#ifdef G4MULTITHREADED
94 G4MUTEXUNLOCK(&G4DeexPrecoParameters::deexPrecoMutex);
95#endif
96}
97
99{
100 if(IsLocked() || val <= 0.0) { return; }
102}
103
105{
106 if(IsLocked() || val <= 0.0) { return; }
107 fR0 = val;
108}
109
111{
112 if(IsLocked() || val <= 0.0) { return; }
113 fTransitionsR0 = val;
114}
115
117{
118 if(IsLocked() || val <= 0.0) { return; }
119 fFBUEnergyLimit = val;
120}
121
123{
124 if(IsLocked() || val <= 0.0) { return; }
125 fFermiEnergy = val;
126}
127
129{
130 if(IsLocked() || val < 0.0) { return; }
131 fPrecoLowEnergy = val;
132}
133
135{
136 if(IsLocked() || val < 0.0) { return; }
137 fPrecoHighEnergy = val;
138}
139
141{
142 if(IsLocked() || val <= 0.0) { return; }
143 fPhenoFactor = val;
144}
145
147{
148 if(IsLocked() || val < 0.0) { return; }
149 fMinExcitation = val;
150}
151
153{
154 if(IsLocked() || val < 0.0) { return; }
155 fMaxLifeTime = val;
156}
157
159{
160 if(IsLocked() || val < 0.0) { return; }
162}
163
165{
166 if(IsLocked() || n < 2) { return; }
168}
169
171{
172 if(IsLocked() || n < 0) { return; }
174}
175
177{
178 if(IsLocked() || n < 0 || n > 3) { return; }
179 fPrecoType = n;
180}
181
183{
184 if(IsLocked() || n < 0 || n > 3) { return; }
185 fDeexType = n;
186}
187
189{
190 if(IsLocked() || n < 0) { return; }
191 fTwoJMAX = n;
192}
193
195{
196 if(IsLocked()) { return; }
197 fVerbose = n;
198}
199
201{
202 if(IsLocked()) { return; }
203 fNeverGoBack = val;
204}
205
207{
208 if(IsLocked()) { return; }
209 fUseSoftCutoff = val;
210}
211
213{
214 if(IsLocked()) { return; }
215 fUseCEM = val;
216}
217
219{
220 if(IsLocked()) { return; }
221 fUseGNASH = val;
222}
223
225{
226 if(IsLocked()) { return; }
227 fUseHETC = val;
228}
229
231{
232 if(IsLocked()) { return; }
233 fUseAngularGen = val;
234}
235
237{
238 if(IsLocked()) { return; }
239 fPrecoDummy = val;
241}
242
244{
245 if(IsLocked()) { return; }
246 fCorrelatedGamma = val;
247}
248
250{
251 if(IsLocked()) { return; }
252 fStoreAllLevels = val;
253}
254
256{
258}
259
261{
262 if(IsLocked()) { return; }
264}
265
267{
268 if(IsLocked()) { return; }
269 fLD = val;
270}
271
273{
274 if(IsLocked()) { return; }
275 fFD = val;
276}
277
279{
280 if(IsLocked()) { return; }
281 fIsomerFlag = val;
282}
283
285{
286 if(IsLocked()) { return; }
287 fDeexChannelType = val;
288}
289
290std::ostream& G4DeexPrecoParameters::StreamInfo(std::ostream& os) const
291{
292 static const G4String namm[5] = {"Evaporation","GEM","Evaporation+GEM","GEMVI","Dummy"};
293 static const G4int nmm[5] = {8, 68, 68, 31, 0};
294 size_t idx = (size_t)fDeexChannelType;
295
296 G4int prec = os.precision(5);
297 os << "=======================================================================" << "\n";
298 os << "====== Pre-compound/De-excitation Physics Parameters ========" << "\n";
299 os << "=======================================================================" << "\n";
300 os << "Type of pre-compound inverse x-section " << fPrecoType << "\n";
301 os << "Pre-compound model active " << (!fPrecoDummy) << "\n";
302 os << "Pre-compound excitation low energy (MeV) "
303 << fPrecoLowEnergy/CLHEP::MeV << "\n";
304 os << "Pre-compound excitation high energy (MeV) "
305 << fPrecoHighEnergy/CLHEP::MeV << "\n";
306 os << "Type of de-excitation inverse x-section " << fDeexType << "\n";
307 os << "Type of de-excitation factory " << namm[idx] << "\n";
308 os << "Number of de-excitation channels " << nmm[idx] << "\n";
309 os << "Min excitation energy (keV) "
310 << fMinExcitation/CLHEP::keV << "\n";
311 os << "Min energy per nucleon for multifragmentation (MeV) "
313 os << "Limit excitation energy for Fermi BreakUp (MeV) "
314 << fFBUEnergyLimit/CLHEP::MeV << "\n";
315 os << "Level density (1/MeV) "
316 << fLevelDensity*CLHEP::MeV << "\n";
317 os << "Use simple level density model " << fLD << "\n";
318 os << "Use discrete excitation energy of the residual " << fFD << "\n";
319 os << "Time limit for long lived isomeres (ns) "
320 << fMaxLifeTime/CLHEP::ns << "\n";
321 os << "Isomer production flag " << fIsomerFlag << "\n";
322 os << "Internal e- conversion flag "
323 << fInternalConversion << "\n";
324 os << "Store e- internal conversion data " << fStoreAllLevels << "\n";
325 os << "Correlated gamma emission flag " << fCorrelatedGamma << "\n";
326 os << "Max 2J for sampling of angular correlations " << fTwoJMAX << "\n";
327 os << "=======================================================================" << G4endl;
328 os.precision(prec);
329 return os;
330}
331
333{
335 return (verb > 0) ? std::max(fVerbose, verb) : verb;
336}
337
339{
341}
342
343std::ostream& operator<< (std::ostream& os, const G4DeexPrecoParameters& par)
344{
345 return par.StreamInfo(os);
346}
347
349{
350 return (!G4Threading::IsMasterThread() ||
352}
@ G4State_PreInit
#define G4MUTEX_INITIALIZER
Definition: G4Threading.hh:85
#define G4MUTEXLOCK(mutex)
Definition: G4Threading.hh:251
#define G4MUTEXUNLOCK(mutex)
Definition: G4Threading.hh:254
std::mutex G4Mutex
Definition: G4Threading.hh:81
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
G4DeexChannelType fDeexChannelType
void SetMinExPerNucleounForMF(G4double)
std::ostream & StreamInfo(std::ostream &os) const
G4DeexParametersMessenger * theMessenger
void SetDeexChannelsType(G4DeexChannelType)
static G4HadronicParameters * Instance()
const G4ApplicationState & GetCurrentState() const
static G4StateManager * GetStateManager()
std::ostream & operator<<(std::ostream &, const BasicVector3D< float > &)
static const double prec
Definition: RanecuEngine.cc:61
static constexpr double GeV
static constexpr double keV
static constexpr double MeV
static constexpr double nanosecond
static constexpr double ns
static constexpr double eV
static constexpr double fermi
Definition: SystemOfUnits.h:84
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4bool IsMasterThread()
Definition: G4Threading.cc:124