ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
G4DeexPrecoParameters.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file 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
// 15.03.2016 V.Ivanchenko
27
//
28
// List of parameters of the pre-compound model
29
// and the deexcitation module
30
//
31
32
#include "
G4DeexPrecoParameters.hh
"
33
#include "
G4ApplicationState.hh
"
34
#include "
G4StateManager.hh
"
35
#include "
G4SystemOfUnits.hh
"
36
#include "
G4PhysicsModelCatalog.hh
"
37
#include "
G4DeexParametersMessenger.hh
"
38
39
#ifdef G4MULTITHREADED
40
G4Mutex
G4DeexPrecoParameters::deexPrecoMutex =
G4MUTEX_INITIALIZER
;
41
#endif
42
43
G4DeexPrecoParameters::G4DeexPrecoParameters
()
44
{
45
SetDefaults
();
46
}
47
48
G4DeexPrecoParameters::~G4DeexPrecoParameters
()
49
{
50
delete
theMessenger
;
51
}
52
53
void
G4DeexPrecoParameters::SetDefaults
()
54
{
55
#ifdef G4MULTITHREADED
56
G4MUTEXLOCK
(&G4DeexPrecoParameters::deexPrecoMutex);
57
#endif
58
fStateManager
=
G4StateManager::GetStateManager
();
59
theMessenger
=
new
G4DeexParametersMessenger
(
this
);
60
61
fLevelDensity
= 0.075/
CLHEP::MeV
;
62
fR0
= 1.5*
CLHEP::fermi
;
63
fTransitionsR0
= 0.6*
CLHEP::fermi
;
64
fFBUEnergyLimit
= 20.0*
CLHEP::MeV
;
65
fFermiEnergy
= 35.0*
CLHEP::MeV
;
66
fPrecoLowEnergy
= 0.1*
CLHEP::MeV
;
67
fPrecoHighEnergy
= 30*
CLHEP::MeV
;
68
fPhenoFactor
= 1.0;
69
fMinExcitation
= 10*
CLHEP::eV
;
70
fMaxLifeTime
= 1.0*
CLHEP::microsecond
;
71
fMinExPerNucleounForMF
= 200*
CLHEP::GeV
;
72
fMinZForPreco
= 3;
73
fMinAForPreco
= 5;
74
fPrecoType
= 3;
75
fDeexType
= 3;
76
fTwoJMAX
= 10;
77
fMaxZ
= 9;
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
;
88
fInternalConversion
=
true
;
89
fLD
=
true
;
90
fFD
=
false
;
91
fDeexChannelType
=
fCombined
;
92
fInternalConversionID
=
93
G4PhysicsModelCatalog::Register
(
"e-InternalConvertion"
);
94
#ifdef G4MULTITHREADED
95
G4MUTEXUNLOCK
(&G4DeexPrecoParameters::deexPrecoMutex);
96
#endif
97
}
98
99
void
G4DeexPrecoParameters::SetLevelDensity
(
G4double
val)
100
{
101
if
(
IsLocked
() || val <= 0.0) {
return
; }
102
fLevelDensity
= val/
CLHEP::MeV
;
103
}
104
105
void
G4DeexPrecoParameters::SetR0
(
G4double
val)
106
{
107
if
(
IsLocked
() || val <= 0.0) {
return
; }
108
fR0
= val;
109
}
110
111
void
G4DeexPrecoParameters::SetTransitionsR0
(
G4double
val)
112
{
113
if
(
IsLocked
() || val <= 0.0) {
return
; }
114
fTransitionsR0
= val;
115
}
116
117
void
G4DeexPrecoParameters::SetFBUEnergyLimit
(
G4double
val)
118
{
119
if
(
IsLocked
() || val <= 0.0) {
return
; }
120
fFBUEnergyLimit
= val;
121
}
122
123
void
G4DeexPrecoParameters::SetFermiEnergy
(
G4double
val)
124
{
125
if
(
IsLocked
() || val <= 0.0) {
return
; }
126
fFermiEnergy
= val;
127
}
128
129
void
G4DeexPrecoParameters::SetPrecoLowEnergy
(
G4double
val)
130
{
131
if
(
IsLocked
() || val < 0.0) {
return
; }
132
fPrecoLowEnergy
= val;
133
}
134
135
void
G4DeexPrecoParameters::SetPrecoHighEnergy
(
G4double
val)
136
{
137
if
(
IsLocked
() || val < 0.0) {
return
; }
138
fPrecoHighEnergy
= val;
139
}
140
141
void
G4DeexPrecoParameters::SetPhenoFactor
(
G4double
val)
142
{
143
if
(
IsLocked
() || val <= 0.0) {
return
; }
144
fPhenoFactor
= val;
145
}
146
147
void
G4DeexPrecoParameters::SetMinExcitation
(
G4double
val)
148
{
149
if
(
IsLocked
() || val < 0.0) {
return
; }
150
fMinExcitation
= val;
151
}
152
153
void
G4DeexPrecoParameters::SetMaxLifeTime
(
G4double
val)
154
{
155
if
(
IsLocked
() || val < 0.0) {
return
; }
156
fMaxLifeTime
= val;
157
}
158
159
void
G4DeexPrecoParameters::SetMinExPerNucleounForMF
(
G4double
val)
160
{
161
if
(
IsLocked
() || val < 0.0) {
return
; }
162
fMinExPerNucleounForMF
= val;
163
}
164
165
void
G4DeexPrecoParameters::SetMinZForPreco
(
G4int
n
)
166
{
167
if
(
IsLocked
() || n < 2) {
return
; }
168
fMinZForPreco
=
n
;
169
}
170
171
void
G4DeexPrecoParameters::SetMinAForPreco
(
G4int
n
)
172
{
173
if
(
IsLocked
() || n < 0) {
return
; }
174
fMinAForPreco
=
n
;
175
}
176
177
void
G4DeexPrecoParameters::SetPrecoModelType
(
G4int
n
)
178
{
179
if
(
IsLocked
() || n < 0 || n > 3) {
return
; }
180
fPrecoType
=
n
;
181
}
182
183
void
G4DeexPrecoParameters::SetDeexModelType
(
G4int
n
)
184
{
185
if
(
IsLocked
() || n < 0 || n > 3) {
return
; }
186
fDeexType
=
n
;
187
}
188
189
void
G4DeexPrecoParameters::SetTwoJMAX
(
G4int
n
)
190
{
191
if
(
IsLocked
() || n < 0) {
return
; }
192
fTwoJMAX
=
n
;
193
}
194
195
void
G4DeexPrecoParameters::SetUploadZ
(
G4int
z
)
196
{
197
if
(
IsLocked
() || z < 1) {
return
; }
198
fMaxZ
=
z
;
199
}
200
201
void
G4DeexPrecoParameters::SetVerbose
(
G4int
n
)
202
{
203
if
(
IsLocked
()) {
return
; }
204
fVerbose
=
n
;
205
}
206
207
void
G4DeexPrecoParameters::SetNeverGoBack
(
G4bool
val)
208
{
209
if
(
IsLocked
()) {
return
; }
210
fNeverGoBack
= val;
211
}
212
213
void
G4DeexPrecoParameters::SetUseSoftCutoff
(
G4bool
val)
214
{
215
if
(
IsLocked
()) {
return
; }
216
fUseSoftCutoff
= val;
217
}
218
219
void
G4DeexPrecoParameters::SetUseCEM
(
G4bool
val)
220
{
221
if
(
IsLocked
()) {
return
; }
222
fUseCEM
= val;
223
}
224
225
void
G4DeexPrecoParameters::SetUseGNASH
(
G4bool
val)
226
{
227
if
(
IsLocked
()) {
return
; }
228
fUseGNASH
= val;
229
}
230
231
void
G4DeexPrecoParameters::SetUseHETC
(
G4bool
val)
232
{
233
if
(
IsLocked
()) {
return
; }
234
fUseHETC
= val;
235
}
236
237
void
G4DeexPrecoParameters::SetUseAngularGen
(
G4bool
val)
238
{
239
if
(
IsLocked
()) {
return
; }
240
fUseAngularGen
= val;
241
}
242
243
void
G4DeexPrecoParameters::SetPrecoDummy
(
G4bool
val)
244
{
245
if
(
IsLocked
()) {
return
; }
246
fPrecoDummy
= val;
247
fDeexChannelType
=
fDummy
;
248
}
249
250
void
G4DeexPrecoParameters::SetCorrelatedGamma
(
G4bool
val)
251
{
252
if
(
IsLocked
()) {
return
; }
253
fCorrelatedGamma
= val;
254
}
255
256
void
G4DeexPrecoParameters::SetStoreICLevelData
(
G4bool
val)
257
{
258
if
(
IsLocked
()) {
return
; }
259
fStoreAllLevels
= val;
260
}
261
262
void
G4DeexPrecoParameters::SetStoreAllLevels
(
G4bool
val)
263
{
264
SetStoreICLevelData
(val);
265
}
266
267
void
G4DeexPrecoParameters::SetInternalConversionFlag
(
G4bool
val)
268
{
269
if
(
IsLocked
()) {
return
; }
270
fInternalConversion
= val;
271
}
272
273
void
G4DeexPrecoParameters::SetLevelDensityFlag
(
G4bool
val)
274
{
275
if
(
IsLocked
()) {
return
; }
276
fLD
= val;
277
}
278
279
void
G4DeexPrecoParameters::SetDiscreteExcitationFlag
(
G4bool
val)
280
{
281
if
(
IsLocked
()) {
return
; }
282
fFD
= val;
283
}
284
285
void
G4DeexPrecoParameters::SetDeexChannelsType
(
G4DeexChannelType
val)
286
{
287
if
(
IsLocked
()) {
return
; }
288
fDeexChannelType
= val;
289
}
290
291
std::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
size_t
idx
= (size_t)
fDeexChannelType
;
296
297
G4int
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 (MeV) "
304
<<
fPrecoLowEnergy
/
CLHEP::MeV
<<
"\n"
;
305
os <<
"Pre-compound excitation high energy (MeV) "
306
<<
fPrecoHighEnergy
/
CLHEP::MeV
<<
"\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 (keV) "
311
<<
fMinExcitation
/
CLHEP::keV
<<
"\n"
;
312
os <<
"Min energy per nucleon for multifragmentation (MeV) "
313
<<
fMinExPerNucleounForMF
/
CLHEP::MeV
<<
"\n"
;
314
os <<
"Limit excitation energy for Fermi BreakUp (MeV) "
315
<<
fFBUEnergyLimit
/
CLHEP::MeV
<<
"\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 (ns) "
321
<<
fMaxLifeTime
/
CLHEP::ns
<<
"\n"
;
322
os <<
"Internal e- conversion flag "
323
<<
fInternalConversion
<<
"\n"
;
324
os <<
"Store e- internal conversion data "
<<
fStoreAllLevels
<<
"\n"
;
325
os <<
"Electron internal conversion ID "
326
<<
fInternalConversionID
<<
"\n"
;
327
os <<
"Correlated gamma emission flag "
<<
fCorrelatedGamma
<<
"\n"
;
328
os <<
"Max 2J for sampling of angular correlations "
<<
fTwoJMAX
<<
"\n"
;
329
os <<
"Upload data before 1st event for Z < "
<<
fMaxZ
<<
"\n"
;
330
os <<
"======================================================================="
<<
"\n"
;
331
os.precision(prec);
332
return
os;
333
}
334
335
void
G4DeexPrecoParameters::Dump
()
const
336
{
337
if
(
G4Threading::IsMasterThread
()) {
StreamInfo
(
G4cout
); }
338
}
339
340
std::ostream&
operator<<
(std::ostream& os,
const
G4DeexPrecoParameters
& par)
341
{
342
return
par.
StreamInfo
(os);
343
}
344
345
G4bool
G4DeexPrecoParameters::IsLocked
()
const
346
{
347
return
(!
G4Threading::IsMasterThread
() ||
348
(
fStateManager
->
GetCurrentState
() !=
G4State_PreInit
));
349
}
geant4
tree
geant4-10.6-release
source
processes
hadronic
models
de_excitation
management
src
G4DeexPrecoParameters.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:42
using
1.8.2 with
ECCE GitHub integration