Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4EmLowEParameters.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// -------------------------------------------------------------------
27//
28// GEANT4 Class file
29//
30//
31// File name: G4EmLowEParameters
32//
33// Author: Vladimir Ivanchenko
34//
35// Creation date: 07.05.2019
36//
37// -------------------------------------------------------------------
38//
39//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
40//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
41
42#include "G4EmLowEParameters.hh"
44#include "G4UnitsTable.hh"
45#include "G4SystemOfUnits.hh"
48#include "G4RegionStore.hh"
49#include "G4Region.hh"
50
51//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
52
58
59//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
60
62{
63 delete theMessenger;
64}
65
66//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
67
69{
70 fluo = false;
71 auger = false;
72 pixe = false;
73 deexIgnoreCut = false;
74
75 dnaFast = false;
76 dnaStationary = false;
77 dnaMsc = false;
78 dnaElectronSolvation = fMeesungnoen2002eSolvation;
79 fTimeStepModel = G4ChemTimeStepModel::Unknown;
80
81 fFluoDirectory = fluoDefault;
82 namePIXE = "Empirical";
83 nameElectronPIXE = "Livermore";
84 livDataDir = "epics_2017";
85
86 maxEElectron = 1*CLHEP::MeV;
87 maxEIon = 300*CLHEP::MeV;
88}
89
90//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
91
93{
94 fluo = val;
95}
96
98{
99 return fluo;
100}
101
103{
104 return fFluoDirectory;
105}
106
108{
109 fFluoDirectory = fluoDefault;
110 if(fluoBearden == val) { fFluoDirectory = fluoBearden; }
111 else if(fluoANSTO == val) { fFluoDirectory = fluoANSTO; }
112 else if(fluoXDB_EADL == val) { fFluoDirectory = fluoXDB_EADL; }
113}
114
116{
117 fFluoDirectory = val ? fluoBearden : fluoDefault;
118}
119
121{
122 fFluoDirectory = val ? fluoANSTO : fluoDefault;
123}
124
126{
127 fFluoDirectory = val ? fluoXDB_EADL : fluoDefault;
128}
129
131{
132 auger = val;
133 if(val) { fluo = true; }
134}
135
137{
138 return auger;
139}
140
142{
143 pixe = val;
144 if(val) { fluo = true; }
145}
146
148{
149 return pixe;
150}
151
153{
154 deexIgnoreCut = val;
155}
156
158{
159 return deexIgnoreCut;
160}
161
163{
164 dnaFast = val;
165}
166
168{
169 return dnaFast;
170}
171
173{
174 dnaStationary = val;
175}
176
178{
179 return dnaStationary;
180}
181
183{
184 dnaMsc = val;
185}
186
188{
189 return dnaMsc;
190}
191
193{
194 if (0.0 < val) { maxEElectron = val; }
195}
196
198{
199 return maxEElectron;
200}
201
203{
204 if (0.0 < val) { maxEIon = val; }
205}
206
208{
209 return maxEIon;
210}
211
213{
214 dnaElectronSolvation = val;
215}
216
218{
219 return dnaElectronSolvation;
220}
221
223{
224 fTimeStepModel = val;
225}
226
228{
229 return fTimeStepModel;
230}
231
233{
234 namePIXE = sss;
235}
236
238{
239 return namePIXE;
240}
241
243{
244 nameElectronPIXE = sss;
245}
246
248{
249 return nameElectronPIXE;
250}
251
253{
254 livDataDir = sss;
255}
256
258{
259 return livDataDir;
260}
261
262void G4EmLowEParameters::PrintWarning(G4ExceptionDescription& ed) const
263{
264 G4Exception("G4EmLowEParameters", "em0044", JustWarning, ed);
265}
266
267G4String G4EmLowEParameters::CheckRegion(const G4String& reg) const
268{
269 G4String r = reg;
270 if(r == "" || r == "world" || r == "World") {
271 r = "DefaultRegionForTheWorld";
272 }
273 return r;
274}
275
277{
278 G4String r = CheckRegion(region);
279 std::size_t nreg = m_regnamesME.size();
280 for(std::size_t i=0; i<nreg; ++i) {
281 if(r == m_regnamesME[i]) { return; }
282 }
283 m_regnamesME.push_back(std::move(r));
284}
285
286const std::vector<G4String>& G4EmLowEParameters::RegionsMicroElec() const
287{
288 return m_regnamesME;
289}
290
291void G4EmLowEParameters::AddDNA(const G4String& region, const G4String& type)
292{
293 G4String r = CheckRegion(region);
294 std::size_t nreg = m_regnamesDNA.size();
295 for(std::size_t i=0; i<nreg; ++i) {
296 if(r == m_regnamesDNA[i]) { return; }
297 }
298 m_regnamesDNA.push_back(std::move(r));
299 m_typesDNA.push_back(type);
300}
301
302const std::vector<G4String>& G4EmLowEParameters::RegionsDNA() const
303{
304 return m_regnamesDNA;
305}
306
307const std::vector<G4String>& G4EmLowEParameters::TypesDNA() const
308{
309 return m_typesDNA;
310}
311
312void
314 G4bool fauger, G4bool fpixe)
315{
316 if(fdeex) { fluo = true; }
317 G4String r = CheckRegion(region);
318 std::size_t nreg = m_regnamesDeex.size();
319 if(0 == nreg && r != "DefaultRegionForTheWorld") {
320 m_regnamesDeex.push_back("DefaultRegionForTheWorld");
321 m_fluo.push_back(false);
322 m_auger.push_back(false);
323 m_pixe.push_back(false);
324 nreg = 1;
325 }
326 for(std::size_t i=0; i<nreg; ++i) {
327 if(r == m_regnamesDeex[i]) {
328 m_fluo[i] = fdeex;
329 m_auger[i]= fauger;
330 m_pixe[i] = fpixe;
331 return;
332 }
333 }
334 m_regnamesDeex.push_back(std::move(r));
335 m_fluo.push_back(fdeex);
336 m_auger.push_back(fauger);
337 m_pixe.push_back(fpixe);
338}
339
341{
342 std::size_t n = m_regnamesDeex.size();
343 for(std::size_t i=0; i<n; ++i) {
344 ptr->SetDeexcitationActiveRegion(m_regnamesDeex[i],
345 m_fluo[i], m_auger[i], m_pixe[i]);
346 }
347}
348
349//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
G4ChemTimeStepModel
G4DNAModelSubType
@ fMeesungnoen2002eSolvation
G4EmFluoDirectory
@ fluoBearden
@ fluoXDB_EADL
@ fluoDefault
@ fluoANSTO
@ JustWarning
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
double G4double
Definition G4Types.hh:83
bool G4bool
Definition G4Types.hh:86
G4ChemTimeStepModel GetChemTimeStepModel() const
void SetAuger(G4bool val)
void SetDeexActiveRegion(const G4String &region, G4bool fdeex, G4bool fauger, G4bool fpixe)
void SetLivermoreDataDir(const G4String &)
void SetDNAFast(G4bool val)
void SetXDB_EADLFluoDir(G4bool val)
G4bool DNAStationary() const
void SetDeexcitationIgnoreCut(G4bool val)
const std::vector< G4String > & TypesDNA() const
void SetDNAElectronMsc(G4bool val)
void SetFluoDirectory(G4EmFluoDirectory val)
G4double MaxDNAIonEnergy() const
const G4String & LivermoreDataDir()
void SetFluo(G4bool val)
const std::vector< G4String > & RegionsMicroElec() const
G4bool DeexcitationIgnoreCut() const
const G4String & PIXECrossSectionModel()
G4EmFluoDirectory FluoDirectory() const
void DefineRegParamForDeex(G4VAtomDeexcitation *) const
G4DNAModelSubType DNAeSolvationSubType() const
void AddDNA(const G4String &region, const G4String &type)
void SetDNAStationary(G4bool val)
void SetDNAeSolvationSubType(G4DNAModelSubType val)
G4double MaxDNAElectronEnergy() const
const G4String & PIXEElectronCrossSectionModel()
void SetBeardenFluoDir(G4bool val)
void SetMaxDNAIonEnergy(G4double val)
void SetANSTOFluoDir(G4bool val)
void SetPIXECrossSectionModel(const G4String &)
G4bool DNAElectronMsc() const
void SetChemTimeStepModel(G4ChemTimeStepModel val)
void SetPixe(G4bool val)
const std::vector< G4String > & RegionsDNA() const
void SetMaxDNAElectronEnergy(G4double val)
void SetPIXEElectronCrossSectionModel(const G4String &)
void AddMicroElec(const G4String &region)
void SetDeexcitationActiveRegion(const G4String &rname, G4bool valDeexcitation, G4bool valAuger, G4bool valPIXE)