Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
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
59 fStateManager = G4StateManager::GetStateManager();
60 theMessenger = new G4DeexParametersMessenger(this);
61
62 fLevelDensity = 0.075/CLHEP::MeV;
63 fR0 = 1.5*CLHEP::fermi;
64 fTransitionsR0 = 0.6*CLHEP::fermi;
65 fFBUEnergyLimit = 20.0*CLHEP::MeV;
66 fFermiEnergy = 35.0*CLHEP::MeV;
67 fPrecoLowEnergy = 0.1*CLHEP::MeV;
68 fPrecoHighEnergy = 30*CLHEP::MeV;
69 fPhenoFactor = 1.0;
70 fMinExcitation = 10*CLHEP::eV;
71 fMaxLifeTime = 1*CLHEP::microsecond;
72 fMinExPerNucleounForMF = 200*CLHEP::GeV;
73 fMinZForPreco = 3;
74 fMinAForPreco = 5;
75 fPrecoType = 3;
76 fDeexType = 3;
77 fTwoJMAX = 10;
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;
88 fInternalConversion = true;
89 fLD = true;
90 fFD = false;
91 fIsomerFlag = true;
92 fLocalVerbose = false;
93 fDeexChannelType = fCombined;
94 fInternalConversionID =
95 G4PhysicsModelCatalog::Register("e-InternalConvertion");
96#ifdef G4MULTITHREADED
97 G4MUTEXUNLOCK(&G4DeexPrecoParameters::deexPrecoMutex);
98#endif
99}
100
102{
103 if(IsLocked() || val <= 0.0) { return; }
104 fLevelDensity = val/CLHEP::MeV;
105}
106
108{
109 if(IsLocked() || val <= 0.0) { return; }
110 fR0 = val;
111}
112
114{
115 if(IsLocked() || val <= 0.0) { return; }
116 fTransitionsR0 = val;
117}
118
120{
121 if(IsLocked() || val <= 0.0) { return; }
122 fFBUEnergyLimit = val;
123}
124
126{
127 if(IsLocked() || val <= 0.0) { return; }
128 fFermiEnergy = val;
129}
130
132{
133 if(IsLocked() || val < 0.0) { return; }
134 fPrecoLowEnergy = val;
135}
136
138{
139 if(IsLocked() || val < 0.0) { return; }
140 fPrecoHighEnergy = val;
141}
142
144{
145 if(IsLocked() || val <= 0.0) { return; }
146 fPhenoFactor = val;
147}
148
150{
151 if(IsLocked() || val < 0.0) { return; }
152 fMinExcitation = val;
153}
154
156{
157 if(IsLocked() || val < 0.0) { return; }
158 fMaxLifeTime = val;
159}
160
162{
163 if(IsLocked() || val < 0.0) { return; }
164 fMinExPerNucleounForMF = val;
165}
166
168{
169 if(IsLocked() || n < 2) { return; }
170 fMinZForPreco = n;
171}
172
174{
175 if(IsLocked() || n < 0) { return; }
176 fMinAForPreco = n;
177}
178
180{
181 if(IsLocked() || n < 0 || n > 3) { return; }
182 fPrecoType = n;
183}
184
186{
187 if(IsLocked() || n < 0 || n > 3) { return; }
188 fDeexType = n;
189}
190
192{
193 if(IsLocked() || n < 0) { return; }
194 fTwoJMAX = n;
195}
196
198{
199 if(IsLocked()) { return; }
200 if( n != fVerbose ) { fLocalVerbose = true; }
201 fVerbose = n;
202}
203
205{
206 if(IsLocked()) { return; }
207 fNeverGoBack = val;
208}
209
211{
212 if(IsLocked()) { return; }
213 fUseSoftCutoff = val;
214}
215
217{
218 if(IsLocked()) { return; }
219 fUseCEM = val;
220}
221
223{
224 if(IsLocked()) { return; }
225 fUseGNASH = val;
226}
227
229{
230 if(IsLocked()) { return; }
231 fUseHETC = val;
232}
233
235{
236 if(IsLocked()) { return; }
237 fUseAngularGen = val;
238}
239
241{
242 if(IsLocked()) { return; }
243 fPrecoDummy = val;
244 fDeexChannelType = fDummy;
245}
246
248{
249 if(IsLocked()) { return; }
250 fCorrelatedGamma = val;
251}
252
254{
255 if(IsLocked()) { return; }
256 fStoreAllLevels = val;
257}
258
260{
262}
263
265{
266 if(IsLocked()) { return; }
267 fInternalConversion = val;
268}
269
271{
272 if(IsLocked()) { return; }
273 fLD = val;
274}
275
277{
278 if(IsLocked()) { return; }
279 fFD = val;
280}
281
283{
284 if(IsLocked()) { return; }
285 fIsomerFlag = val;
286}
287
289{
290 if(IsLocked()) { return; }
291 fDeexChannelType = val;
292}
293
294std::ostream& G4DeexPrecoParameters::StreamInfo(std::ostream& os) const
295{
296 static const G4String namm[5] = {"Evaporation","GEM","Evaporation+GEM","GEMVI","Dummy"};
297 static const G4int nmm[5] = {8, 68, 68, 31, 0};
298 size_t idx = (size_t)fDeexChannelType;
299
300 G4int prec = os.precision(5);
301 os << "=======================================================================" << "\n";
302 os << "====== Pre-compound/De-excitation Physics Parameters ========" << "\n";
303 os << "=======================================================================" << "\n";
304 os << "Type of pre-compound inverse x-section " << fPrecoType << "\n";
305 os << "Pre-compound model active " << (!fPrecoDummy) << "\n";
306 os << "Pre-compound excitation low energy (MeV) "
307 << fPrecoLowEnergy/CLHEP::MeV << "\n";
308 os << "Pre-compound excitation high energy (MeV) "
309 << fPrecoHighEnergy/CLHEP::MeV << "\n";
310 os << "Type of de-excitation inverse x-section " << fDeexType << "\n";
311 os << "Type of de-excitation factory " << namm[idx] << "\n";
312 os << "Number of de-excitation channels " << nmm[idx] << "\n";
313 os << "Min excitation energy (keV) "
314 << fMinExcitation/CLHEP::keV << "\n";
315 os << "Min energy per nucleon for multifragmentation (MeV) "
316 << fMinExPerNucleounForMF/CLHEP::MeV << "\n";
317 os << "Limit excitation energy for Fermi BreakUp (MeV) "
318 << fFBUEnergyLimit/CLHEP::MeV << "\n";
319 os << "Level density (1/MeV) "
320 << fLevelDensity*CLHEP::MeV << "\n";
321 os << "Use simple level density model " << fLD << "\n";
322 os << "Use discrete excitation energy of the residual " << fFD << "\n";
323 os << "Time limit for long lived isomeres (ns) "
324 << fMaxLifeTime/CLHEP::ns << "\n";
325 os << "Isomer production flag " << fIsomerFlag << "\n";
326 os << "Internal e- conversion flag "
327 << fInternalConversion << "\n";
328 os << "Store e- internal conversion data " << fStoreAllLevels << "\n";
329 os << "Electron internal conversion ID "
330 << fInternalConversionID << "\n";
331 os << "Correlated gamma emission flag " << fCorrelatedGamma << "\n";
332 os << "Max 2J for sampling of angular correlations " << fTwoJMAX << "\n";
333 os << "=======================================================================" << "\n";
334 os.precision(prec);
335 return os;
336}
337
339{
341 return (fLocalVerbose && verb > 0) ? fVerbose : verb;
342}
343
345{
347}
348
349std::ostream& operator<< (std::ostream& os, const G4DeexPrecoParameters& par)
350{
351 return par.StreamInfo(os);
352}
353
354G4bool G4DeexPrecoParameters::IsLocked() const
355{
356 return (!G4Threading::IsMasterThread() ||
357 (fStateManager->GetCurrentState() != G4State_PreInit));
358}
@ G4State_PreInit
std::ostream & operator<<(std::ostream &os, const G4DeexPrecoParameters &par)
#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
G4GLOB_DLL std::ostream G4cout
void SetMinExPerNucleounForMF(G4double)
std::ostream & StreamInfo(std::ostream &os) const
void SetDeexChannelsType(G4DeexChannelType)
static G4HadronicParameters * Instance()
static G4int Register(const G4String &)
const G4ApplicationState & GetCurrentState() const
static G4StateManager * GetStateManager()
G4bool IsMasterThread()
Definition: G4Threading.cc:124