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
G4VAtomDeexcitation.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4VAtomDeexcitation.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
//
29
// GEANT4 Class header file
30
//
31
//
32
// File name: G4VAtomDeexcitation
33
//
34
// Author: Alfonso Mantero & Vladimir Ivanchenko
35
//
36
// Creation date: 30.06.2009
37
//
38
// Modifications:
39
// 15 Mar 2011 ALF stripped G4AtomicShellEnumerator to its own file
40
//
41
// Class Description:
42
//
43
// Abstract interface to energy loss models
44
45
// -------------------------------------------------------------------
46
//
47
48
#ifndef G4VAtomDeexcitation_h
49
#define G4VAtomDeexcitation_h 1
50
51
#include "
globals.hh
"
52
#include "
G4EmParameters.hh
"
53
#include "
G4AtomicShell.hh
"
54
#include "
G4AtomicShellEnumerator.hh
"
55
#include "
G4ProductionCutsTable.hh
"
56
#include "
G4Track.hh
"
57
#include "
G4Threading.hh
"
58
#include <vector>
59
60
class
G4ParticleDefinition
;
61
class
G4DynamicParticle
;
62
class
G4MaterialCutsCouple
;
63
64
class
G4VAtomDeexcitation
{
65
public
:
66
67
explicit
G4VAtomDeexcitation
(
const
G4String
& modname =
"Deexcitation"
);
68
69
virtual
~G4VAtomDeexcitation
();
70
71
//========== initialization ==========
72
73
// Overall initialisation before new run
74
void
InitialiseAtomicDeexcitation
();
75
76
// Initialisation of deexcitation at the beginning of run
77
virtual
void
InitialiseForNewRun
() = 0;
78
79
// Initialisation for a concrete atom
80
// May be called at run time
81
virtual
void
InitialiseForExtraAtom
(
G4int
Z
) = 0;
82
83
void
SetDeexcitationActiveRegion
(
const
G4String
& rname,
84
G4bool
valDeexcitation,
85
G4bool
valAuger,
86
G4bool
valPIXE);
87
88
// Activation of deexcitation
89
inline
void
SetFluo
(
G4bool
);
90
inline
G4bool
IsFluoActive
()
const
;
91
92
// Activation of Auger electron production
93
inline
void
SetAuger
(
G4bool
);
94
inline
G4bool
IsAugerActive
()
const
;
95
96
// Activation of Auger cascade
97
inline
void
SetAugerCascade
(
G4bool
);
98
inline
G4bool
IsAugerCascadeActive
()
const
;
99
100
// Activation of PIXE simulation
101
inline
void
SetPIXE
(
G4bool
);
102
inline
G4bool
IsPIXEActive
()
const
;
103
104
// Deexcitation model name
105
inline
const
G4String
&
GetName
()
const
;
106
107
// Access to the list of atoms active for deexcitation
108
inline
const
std::vector<G4bool>&
GetListOfActiveAtoms
()
const
;
109
110
// Verbosity level
111
inline
void
SetVerboseLevel
(
G4int
);
112
inline
G4int
GetVerboseLevel
()
const
;
113
114
//========== Run time methods ==========
115
116
// Check if deexcitation is active for a given geometry volume
117
inline
G4bool
CheckDeexcitationActiveRegion
(
G4int
coupleIndex);
118
inline
G4bool
CheckAugerActiveRegion
(
G4int
coupleIndex);
119
120
// Get atomic shell by shell index, used by discrete processes
121
// (for example, photoelectric), when shell vacancy sampled by the model
122
virtual
123
const
G4AtomicShell
*
GetAtomicShell
(
G4int
Z,
124
G4AtomicShellEnumerator
shell) = 0;
125
126
// generation of deexcitation for given atom and shell vacancy
127
// and material cut couple, which defines cut values
128
void
GenerateParticles
(std::vector<G4DynamicParticle*>* secVect,
129
const
G4AtomicShell
*,
130
G4int
Z,
G4int
coupleIndex);
131
132
// generation of deexcitation for given atom and shell vacancy
133
virtual
void
GenerateParticles
(std::vector<G4DynamicParticle*>* secVect,
134
const
G4AtomicShell
*,
135
G4int
Z,
G4double
gammaCut,
G4double
eCut) = 0;
136
137
// access or compute PIXE cross section
138
virtual
G4double
139
GetShellIonisationCrossSectionPerAtom
(
const
G4ParticleDefinition
*,
140
G4int
Z,
141
G4AtomicShellEnumerator
shell,
142
G4double
kinE,
143
const
G4Material
*
mat
=
nullptr
) = 0;
144
145
// access or compute PIXE cross section
146
virtual
G4double
147
ComputeShellIonisationCrossSectionPerAtom
(
148
const
G4ParticleDefinition
*,
149
G4int
Z,
150
G4AtomicShellEnumerator
shell,
151
G4double
kinE,
152
const
G4Material
*
mat
=
nullptr
) = 0;
153
154
// Sampling of PIXE for ionisation processes
155
void
AlongStepDeexcitation
(std::vector<G4Track*>& tracks,
156
const
G4Step
&
step
,
157
G4double
& eLoss,
158
G4int
coupleIndex);
159
160
private
:
161
162
// copy constructor and hide assignment operator
163
G4VAtomDeexcitation
(
G4VAtomDeexcitation
&) =
delete
;
164
G4VAtomDeexcitation
&
operator=
(
const
G4VAtomDeexcitation
&
right
) =
delete
;
165
166
G4EmParameters
*
theParameters
;
167
const
G4ParticleDefinition
*
gamma
;
168
169
G4ProductionCutsTable
*
theCoupleTable
;
170
G4int
verbose
;
171
G4String
name
;
172
173
G4bool
isActive
;
174
G4bool
flagAuger
;
175
G4bool
flagAugerCascade
;
176
G4bool
flagPIXE
;
177
G4bool
ignoreCuts
;
178
179
G4bool
isActiveLocked
;
180
G4bool
isAugerLocked
;
181
G4bool
isAugerCascadeLocked
;
182
G4bool
isPIXELocked
;
183
184
std::vector<G4bool>
activeZ
;
185
std::vector<G4bool>
activeDeexcitationMedia
;
186
std::vector<G4bool>
activeAugerMedia
;
187
std::vector<G4bool>
activePIXEMedia
;
188
std::vector<G4String>
activeRegions
;
189
std::vector<G4bool>
deRegions
;
190
std::vector<G4bool>
AugerRegions
;
191
std::vector<G4bool>
PIXERegions
;
192
std::vector<G4DynamicParticle*>
vdyn
;
193
194
static
G4int
pixeIDg
;
195
static
G4int
pixeIDe
;
196
197
#ifdef G4MULTITHREADED
198
static
G4Mutex
atomDeexcitationMutex;
199
#endif
200
};
201
202
inline
void
G4VAtomDeexcitation::SetFluo
(
G4bool
val)
203
{
204
if
(!
isActiveLocked
) {
isActive
= val;
isActiveLocked
=
true
; }
205
}
206
207
inline
G4bool
G4VAtomDeexcitation::IsFluoActive
()
const
208
{
209
return
isActive
;
210
}
211
212
inline
void
G4VAtomDeexcitation::SetAuger
(
G4bool
val)
213
{
214
if
(!
isAugerLocked
) {
flagAuger
= val;
isAugerLocked
=
true
; }
215
}
216
217
inline
G4bool
G4VAtomDeexcitation::IsAugerActive
()
const
218
{
219
return
flagAuger
;
220
}
221
222
inline
void
G4VAtomDeexcitation::SetAugerCascade
(
G4bool
val)
223
{
224
if
(!
isAugerCascadeLocked
) {
flagAugerCascade
= val;
isAugerCascadeLocked
=
true
; }
225
}
226
227
inline
G4bool
G4VAtomDeexcitation::IsAugerCascadeActive
()
const
228
{
229
return
flagAugerCascade
;
230
}
231
232
inline
void
G4VAtomDeexcitation::SetPIXE
(
G4bool
val)
233
{
234
if
(!
isPIXELocked
) {
flagPIXE
= val;
isPIXELocked
=
true
; }
235
}
236
237
inline
G4bool
G4VAtomDeexcitation::IsPIXEActive
()
const
238
{
239
return
flagPIXE
;
240
}
241
242
inline
const
G4String
&
G4VAtomDeexcitation::GetName
()
const
243
{
244
return
name
;
245
}
246
247
inline
const
std::vector<G4bool>&
248
G4VAtomDeexcitation::GetListOfActiveAtoms
()
const
249
{
250
return
activeZ
;
251
}
252
253
inline
void
G4VAtomDeexcitation::SetVerboseLevel
(
G4int
val)
254
{
255
verbose
= val;
256
}
257
258
inline
G4int
G4VAtomDeexcitation::GetVerboseLevel
()
const
259
{
260
return
verbose
;
261
}
262
263
inline
G4bool
264
G4VAtomDeexcitation::CheckDeexcitationActiveRegion
(
G4int
coupleIndex)
265
{
266
return
(
activeDeexcitationMedia
[coupleIndex]);
267
}
268
269
inline
G4bool
270
G4VAtomDeexcitation::CheckAugerActiveRegion
(
G4int
coupleIndex)
271
{
272
return
(
activeAugerMedia
[coupleIndex]);
273
}
274
275
#endif
276
geant4
tree
geant4-10.6-release
source
processes
electromagnetic
utils
include
G4VAtomDeexcitation.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:35
using
1.8.2 with
ECCE GitHub integration