Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes 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"
36#include "G4UnitsTable.hh"
40
41#ifdef G4MULTITHREADED
42G4Mutex G4DeexPrecoParameters::deexPrecoMutex = G4MUTEX_INITIALIZER;
43#endif
44
46{
48}
49
51{
52 delete theMessenger;
53}
54
56{
57#ifdef G4MULTITHREADED
58 G4MUTEXLOCK(&G4DeexPrecoParameters::deexPrecoMutex);
59#endif
60 fStateManager = G4StateManager::GetStateManager();
61 theMessenger = new G4DeexParametersMessenger(this);
62
63 fLevelDensity = 0.075/CLHEP::MeV;
64 fR0 = 1.5*CLHEP::fermi;
65 fTransitionsR0 = 0.6*CLHEP::fermi;
66 fFBUEnergyLimit = 20.0*CLHEP::MeV;
67 fFermiEnergy = 35.0*CLHEP::MeV;
68 fPrecoLowEnergy = 0.1*CLHEP::MeV;
69 fPrecoHighEnergy = 30*CLHEP::MeV;
70 fPhenoFactor = 1.0;
71 fMinExcitation = 10*CLHEP::eV;
72 fMaxLifeTime = 1*CLHEP::nanosecond;
73 fMinExPerNucleounForMF = 200*CLHEP::GeV;
74 fMinZForPreco = 3;
75 fMinAForPreco = 5;
76 fPrecoType = 3;
77 fDeexType = 3;
78 fTwoJMAX = 10;
79 fVerbose = 1;
80 fNeverGoBack = false;
81 fUseSoftCutoff = false;
82 fUseCEM = true;
83 fUseGNASH = false;
84 fUseHETC = false;
85 fUseAngularGen = false;
86 fPrecoDummy = false;
87 fCorrelatedGamma = false;
88 fStoreAllLevels = false;
89 fInternalConversion = true;
90 fLD = true;
91 fFD = true;
92 fIsomerFlag = true;
93 fDeexChannelType = fCombined;
94#ifdef G4MULTITHREADED
95 G4MUTEXUNLOCK(&G4DeexPrecoParameters::deexPrecoMutex);
96#endif
97}
98
100{
101 if(IsLocked() || val <= 0.0) { return; }
102 fLevelDensity = val/CLHEP::MeV;
103}
104
106{
107 if(IsLocked() || val <= 0.0) { return; }
108 fR0 = val;
109}
110
112{
113 if(IsLocked() || val <= 0.0) { return; }
114 fTransitionsR0 = val;
115}
116
118{
119 if(IsLocked() || val <= 0.0) { return; }
120 fFBUEnergyLimit = val;
121}
122
124{
125 if(IsLocked() || val <= 0.0) { return; }
126 fFermiEnergy = val;
127}
128
130{
131 if(IsLocked() || val < 0.0) { return; }
132 fPrecoLowEnergy = val;
133}
134
136{
137 if(IsLocked() || val < 0.0) { return; }
138 fPrecoHighEnergy = val;
139}
140
142{
143 if(IsLocked() || val <= 0.0) { return; }
144 fPhenoFactor = val;
145}
146
148{
149 if(IsLocked() || val < 0.0) { return; }
150 fMinExcitation = val;
151}
152
154{
155 if(IsLocked() || val < 0.0) { return; }
156 fMaxLifeTime = val;
157}
158
160{
161 if(IsLocked() || val < 0.0) { return; }
162 fMinExPerNucleounForMF = val;
163}
164
166{
167 if(IsLocked() || n < 2) { return; }
168 fMinZForPreco = n;
169}
170
172{
173 if(IsLocked() || n < 0) { return; }
174 fMinAForPreco = n;
175}
176
178{
179 if(IsLocked() || n < 0 || n > 3) { return; }
180 fPrecoType = n;
181}
182
184{
185 if(IsLocked() || n < 0 || n > 3) { return; }
186 fDeexType = n;
187}
188
190{
191 if(IsLocked() || n < 0) { return; }
192 fTwoJMAX = n;
193}
194
196{
197 if(IsLocked()) { return; }
198 fVerbose = n;
199}
200
202{
203 if(IsLocked()) { return; }
204 fNeverGoBack = val;
205}
206
208{
209 if(IsLocked()) { return; }
210 fUseSoftCutoff = val;
211}
212
214{
215 if(IsLocked()) { return; }
216 fUseCEM = val;
217}
218
220{
221 if(IsLocked()) { return; }
222 fUseGNASH = val;
223}
224
226{
227 if(IsLocked()) { return; }
228 fUseHETC = val;
229}
230
232{
233 if(IsLocked()) { return; }
234 fUseAngularGen = val;
235}
236
238{
239 if(IsLocked()) { return; }
240 fPrecoDummy = val;
241 fDeexChannelType = fDummy;
242}
243
245{
246 if(IsLocked()) { return; }
247 fCorrelatedGamma = val;
248}
249
251{
252 if(IsLocked()) { return; }
253 fStoreAllLevels = val;
254}
255
257{
259}
260
262{
263 if(IsLocked()) { return; }
264 fInternalConversion = val;
265}
266
268{
269 if(IsLocked()) { return; }
270 fLD = val;
271}
272
274{
275 if(IsLocked()) { return; }
276 fFD = val;
277}
278
280{
281 if(IsLocked()) { return; }
282 fIsomerFlag = val;
283}
284
286{
287 if(IsLocked()) { return; }
288 fDeexChannelType = val;
289}
290
291std::ostream& G4DeexPrecoParameters::StreamInfo(std::ostream& os) const
292{
293 static const G4String namm[5] = {"Evaporation","GEM","Evaporation+GEM","GEMVI","Dummy"};
294 static const G4int nmm[5] = {8, 68, 68, 31, 0};
295 G4int idx = fDeexChannelType;
296
297 G4long prec = os.precision(5);
298 os << "=======================================================================" << "\n";
299 os << "====== Pre-compound/De-excitation Physics Parameters ========" << "\n";
300 os << "=======================================================================" << "\n";
301 os << "Type of pre-compound inverse x-section " << fPrecoType << "\n";
302 os << "Pre-compound model active " << (!fPrecoDummy) << "\n";
303 os << "Pre-compound excitation low energy "
304 << G4BestUnit(fPrecoLowEnergy, "Energy") << "\n";
305 os << "Pre-compound excitation high energy "
306 << G4BestUnit(fPrecoHighEnergy, "Energy") << "\n";
307 os << "Type of de-excitation inverse x-section " << fDeexType << "\n";
308 os << "Type of de-excitation factory " << namm[idx] << "\n";
309 os << "Number of de-excitation channels " << nmm[idx] << "\n";
310 os << "Min excitation energy "
311 << G4BestUnit(fMinExcitation, "Energy") << "\n";
312 os << "Min energy per nucleon for multifragmentation "
313 << G4BestUnit(fMinExPerNucleounForMF, "Energy") << "\n";
314 os << "Limit excitation energy for Fermi BreakUp "
315 << G4BestUnit(fFBUEnergyLimit, "Energy") << "\n";
316 os << "Level density (1/MeV) "
317 << fLevelDensity*CLHEP::MeV << "\n";
318 os << "Use simple level density model " << fLD << "\n";
319 os << "Use discrete excitation energy of the residual " << fFD << "\n";
320 os << "Time limit for long lived isomeres "
321 << G4BestUnit(fMaxLifeTime, "Time") << "\n";
322 os << "Isomer production flag " << fIsomerFlag << "\n";
323 os << "Internal e- conversion flag "
324 << fInternalConversion << "\n";
325 os << "Store e- internal conversion data " << fStoreAllLevels << "\n";
326 os << "Correlated gamma emission flag " << fCorrelatedGamma << "\n";
327 os << "Max 2J for sampling of angular correlations " << fTwoJMAX << "\n";
328 os << "=======================================================================" << G4endl;
329 os.precision(prec);
330 return os;
331}
332
334{
336 return (verb > 0) ? std::max(fVerbose, verb) : verb;
337}
338
340{
342}
343
344std::ostream& operator<< (std::ostream& os, const G4DeexPrecoParameters& par)
345{
346 return par.StreamInfo(os);
347}
348
349G4bool G4DeexPrecoParameters::IsLocked() const
350{
351 return (!G4Threading::IsMasterThread() ||
352 (fStateManager->GetCurrentState() != G4State_PreInit));
353}
@ G4State_PreInit
std::ostream & operator<<(std::ostream &os, const G4DeexPrecoParameters &par)
#define G4BestUnit(a, b)
#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
long G4long
Definition: G4Types.hh:87
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
void SetMinExPerNucleounForMF(G4double)
std::ostream & StreamInfo(std::ostream &os) const
void SetDeexChannelsType(G4DeexChannelType)
static G4HadronicParameters * Instance()
const G4ApplicationState & GetCurrentState() const
static G4StateManager * GetStateManager()
G4bool IsMasterThread()
Definition: G4Threading.cc:124