ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4EmParameters.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4EmParameters.hh
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 // -------------------------------------------------------------------
27 //
28 // GEANT4 Class header file
29 //
30 // File name: G4EmParameters
31 //
32 // Author: Vladimir Ivanchenko for migration to MT
33 //
34 //
35 // Creation date: 17.05.2013
36 //
37 // Modifications:
38 //
39 //
40 // Class Description:
41 //
42 // A utility static class, responsable for keeping parameters
43 // for all EM physics processes and models.
44 //
45 // It is initialized by the master thread but can be updated
46 // at any moment. Parameters may be used in run time or at
47 // initialisation
48 //
49 // -------------------------------------------------------------------
50 //
51 
52 #ifndef G4EmParameters_h
53 #define G4EmParameters_h 1
54 
55 #include "globals.hh"
56 #include "G4ios.hh"
57 #include "G4MscStepLimitType.hh"
59 #include "G4DNAModelSubType.hh"
60 #include "G4EmSaturation.hh"
61 #include "G4ThreeVector.hh"
62 #include "G4Threading.hh"
63 #include <vector>
64 
67 class G4EmLowEParameters;
70 class G4VEmProcess;
71 class G4StateManager;
72 
74 {
75 public:
76 
77  static G4EmParameters* Instance();
78 
80 
81  void SetDefaults();
82 
83  // printing
84  void StreamInfo(std::ostream& os) const;
85  void Dump() const;
86  friend std::ostream& operator<< (std::ostream& os, const G4EmParameters&);
87 
88  // boolean flags
89  void SetLossFluctuations(G4bool val);
90  G4bool LossFluctuation() const;
91 
92  void SetBuildCSDARange(G4bool val);
93  G4bool BuildCSDARange() const;
94 
95  void SetLPM(G4bool val);
96  G4bool LPM() const;
97 
98  void SetSpline(G4bool val);
99  G4bool Spline() const;
100 
101  void SetUseCutAsFinalRange(G4bool val);
102  G4bool UseCutAsFinalRange() const;
103 
104  void SetApplyCuts(G4bool val);
105  G4bool ApplyCuts() const;
106 
107  void SetFluo(G4bool val);
108  G4bool Fluo() const;
109 
110  void SetBeardenFluoDir(G4bool val);
111  G4bool BeardenFluoDir() const;
112 
113  void SetAuger(G4bool val);
114  G4bool Auger() const;
115 
116  // obsolete methods
117  void SetAugerCascade(G4bool val);
118  G4bool AugerCascade() const;
119 
120  void SetPixe(G4bool val);
121  G4bool Pixe() const;
122 
125 
126  void SetLateralDisplacement(G4bool val);
127  G4bool LateralDisplacement() const;
128 
131 
134 
137 
140 
141  void SetUseMottCorrection(G4bool val);
142  G4bool UseMottCorrection() const;
143 
144  void SetIntegral(G4bool val);
145  G4bool Integral() const;
146 
147  void SetBirksActive(G4bool val);
148  G4bool BirksActive() const;
149 
150  void SetUseICRU90Data(G4bool val);
151  G4bool UseICRU90Data() const;
152 
153  void SetDNAFast(G4bool val);
154  G4bool DNAFast() const;
155 
156  void SetDNAStationary(G4bool val);
157  G4bool DNAStationary() const;
158 
159  void SetDNAElectronMsc(G4bool val);
160  G4bool DNAElectronMsc() const;
161 
164 
165  void SetEnableSamplingTable(G4bool val);
166  G4bool EnableSamplingTable() const;
167 
168  void SetEnablePolarisation(G4bool val);
169  G4bool EnablePolarisation() const;
170 
173 
174  G4bool QuantumEntanglement() const;
176 
179 
180  // 5d
181  void SetOnIsolated(G4bool val);
182  G4bool OnIsolated() const;
183 
184  void ActivateDNA();
185 
186  // double parameters with values
187  void SetMinSubRange(G4double val);
188  G4double MinSubRange() const;
189 
190  void SetMinEnergy(G4double val);
191  G4double MinKinEnergy() const;
192 
193  void SetMaxEnergy(G4double val);
194  G4double MaxKinEnergy() const;
195 
198 
201 
202  void SetLowestMuHadEnergy(G4double val);
203  G4double LowestMuHadEnergy() const;
204 
207 
208  void SetLinearLossLimit(G4double val);
209  G4double LinearLossLimit() const;
210 
211  void SetBremsstrahlungTh(G4double val);
212  G4double BremsstrahlungTh() const;
213 
214  void SetLambdaFactor(G4double val);
215  G4double LambdaFactor() const;
216 
219 
220  void SetMscThetaLimit(G4double val);
221  G4double MscThetaLimit() const;
222 
223  void SetMscEnergyLimit(G4double val);
224  G4double MscEnergyLimit() const;
225 
226  void SetMscRangeFactor(G4double val);
227  G4double MscRangeFactor() const;
228 
231 
232  void SetMscGeomFactor(G4double val);
233  G4double MscGeomFactor() const;
234 
235  void SetMscSafetyFactor(G4double val);
236  G4double MscSafetyFactor() const;
237 
238  void SetMscLambdaLimit(G4double val);
239  G4double MscLambdaLimit() const;
240 
241  void SetMscSkin(G4double val);
242  G4double MscSkin() const;
243 
244  void SetScreeningFactor(G4double val);
245  G4double ScreeningFactor() const;
246 
247  void SetMaxNIELEnergy(G4double val);
248  G4double MaxNIELEnergy() const;
249 
252 
254 
256 
259 
262 
263  // integer parameters
264  void SetNumberOfBins(G4int val);
265  G4int NumberOfBins() const;
266 
269 
270  void SetVerbose(G4int val);
271  G4int Verbose() const;
272 
273  void SetWorkerVerbose(G4int val);
274  G4int WorkerVerbose() const;
275 
278 
281 
284 
287 
288  //5d
289  void SetConversionType(G4int val);
290  G4int GetConversionType() const;
291 
292  // string parameters
293  void SetPIXECrossSectionModel(const G4String&);
295 
298 
299  // parameters per region or per process
300  void AddPAIModel(const G4String& particle,
301  const G4String& region,
302  const G4String& type);
303  const std::vector<G4String>& ParticlesPAI() const;
304  const std::vector<G4String>& RegionsPAI() const;
305  const std::vector<G4String>& TypesPAI() const;
306 
307  void AddMicroElec(const G4String& region);
308  const std::vector<G4String>& RegionsMicroElec() const;
309 
310  void AddDNA(const G4String& region, const G4String& type);
311  const std::vector<G4String>& RegionsDNA() const;
312  const std::vector<G4String>& TypesDNA() const;
313 
314  void AddPhysics(const G4String& region, const G4String& type);
315  const std::vector<G4String>& RegionsPhysics() const;
316  const std::vector<G4String>& TypesPhysics() const;
317 
318  void SetSubCutoff(G4bool val, const G4String& region = "");
319 
320  void SetDeexActiveRegion(const G4String& region, G4bool fdeex,
321  G4bool fauger, G4bool fpixe);
322 
323  void SetProcessBiasingFactor(const G4String& procname,
324  G4double val, G4bool wflag);
325 
326  void ActivateForcedInteraction(const G4String& procname,
327  const G4String& region,
328  G4double length,
329  G4bool wflag);
330 
332  const G4String& region,
333  G4double factor,
335 
338 
339  // initialisation methods
341  G4bool isElectron) const;
342  void DefineRegParamForEM(G4VEmProcess*) const;
344 
345  G4EmParameters(G4EmParameters &) = delete;
346  G4EmParameters & operator=(const G4EmParameters &right) = delete;
347 
348 private:
349 
350  G4EmParameters();
351 
352  void Initialise();
353 
354  G4bool IsLocked() const;
355 
356  void PrintWarning(G4ExceptionDescription& ed) const;
357 
359 
365 
385  G4bool onIsolated; // 5d model conversion on free ions
387 
410 
415  G4int tripletConv; // 5d model triplet generation type
416 
420 
421 #ifdef G4MULTITHREADED
422  static G4Mutex emParametersMutex;
423 #endif
424 };
425 
426 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
427 
428 #endif
429