ECCE @ EIC Software
 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"
38 
39 #ifdef G4MULTITHREADED
40 G4Mutex G4DeexPrecoParameters::deexPrecoMutex = G4MUTEX_INITIALIZER;
41 #endif
42 
44 {
45  SetDefaults();
46 }
47 
49 {
50  delete theMessenger;
51 }
52 
54 {
55 #ifdef G4MULTITHREADED
56  G4MUTEXLOCK(&G4DeexPrecoParameters::deexPrecoMutex);
57 #endif
60 
61  fLevelDensity = 0.075/CLHEP::MeV;
62  fR0 = 1.5*CLHEP::fermi;
65  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  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;
93  G4PhysicsModelCatalog::Register("e-InternalConvertion");
94 #ifdef G4MULTITHREADED
95  G4MUTEXUNLOCK(&G4DeexPrecoParameters::deexPrecoMutex);
96 #endif
97 }
98 
100 {
101  if(IsLocked() || val <= 0.0) { return; }
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; }
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() || z < 1) { return; }
198  fMaxZ = z;
199 }
200 
202 {
203  if(IsLocked()) { return; }
204  fVerbose = n;
205 }
206 
208 {
209  if(IsLocked()) { return; }
210  fNeverGoBack = val;
211 }
212 
214 {
215  if(IsLocked()) { return; }
216  fUseSoftCutoff = val;
217 }
218 
220 {
221  if(IsLocked()) { return; }
222  fUseCEM = val;
223 }
224 
226 {
227  if(IsLocked()) { return; }
228  fUseGNASH = val;
229 }
230 
232 {
233  if(IsLocked()) { return; }
234  fUseHETC = val;
235 }
236 
238 {
239  if(IsLocked()) { return; }
240  fUseAngularGen = val;
241 }
242 
244 {
245  if(IsLocked()) { return; }
246  fPrecoDummy = val;
248 }
249 
251 {
252  if(IsLocked()) { return; }
253  fCorrelatedGamma = val;
254 }
255 
257 {
258  if(IsLocked()) { return; }
259  fStoreAllLevels = val;
260 }
261 
263 {
264  SetStoreICLevelData(val);
265 }
266 
268 {
269  if(IsLocked()) { return; }
270  fInternalConversion = val;
271 }
272 
274 {
275  if(IsLocked()) { return; }
276  fLD = val;
277 }
278 
280 {
281  if(IsLocked()) { return; }
282  fFD = val;
283 }
284 
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) "
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 
336 {
338 }
339 
340 std::ostream& operator<< (std::ostream& os, const G4DeexPrecoParameters& par)
341 {
342  return par.StreamInfo(os);
343 }
344 
346 {
347  return (!G4Threading::IsMasterThread() ||
349 }