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
G4HadronicProcessStore.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4HadronicProcessStore.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
//
30
// GEANT4 Class header file
31
//
32
//
33
// File name: G4HadronicProcessStore
34
//
35
// Author: Vladimir Ivanchenko
36
//
37
// Creation date: 09.05.2008
38
//
39
// Modifications:
40
//
41
//
42
// Class Description:
43
//
44
45
// -------------------------------------------------------------------
46
//
47
48
#ifndef G4HadronicProcessStore_h
49
#define G4HadronicProcessStore_h 1
50
51
52
#include "
globals.hh
"
53
#include "
G4DynamicParticle.hh
"
54
#include "
G4ThreeVector.hh
"
55
#include "
G4HadronicProcess.hh
"
56
#include "
G4HadronicInteraction.hh
"
57
#include "
G4ParticleDefinition.hh
"
58
#include "
G4HadronicProcessType.hh
"
59
#include "
G4ThreadLocalSingleton.hh
"
60
#include <map>
61
#include <vector>
62
#include <iostream>
63
64
class
G4Element
;
65
class
G4HadronicEPTestMessenger
;
66
67
class
G4HadronicProcessStore
68
{
69
70
friend
class
G4ThreadLocalSingleton
<
G4HadronicProcessStore
>;
71
72
public
:
73
74
static
G4HadronicProcessStore
*
Instance
();
75
76
~G4HadronicProcessStore
();
77
78
void
Clean
();
79
G4double
GetCrossSectionPerAtom
(
80
const
G4ParticleDefinition
*
particle
,
81
G4double
kineticEnergy,
82
const
G4VProcess
*
process
,
83
const
G4Element
* element,
84
const
G4Material
*
material
=
nullptr
);
85
86
G4double
GetCrossSectionPerVolume
(
87
const
G4ParticleDefinition
*
particle
,
88
G4double
kineticEnergy,
89
const
G4VProcess
*
process
,
90
const
G4Material
*
material
);
91
92
G4double
GetInelasticCrossSectionPerVolume
(
93
const
G4ParticleDefinition
*aParticle,
94
G4double
kineticEnergy,
95
const
G4Material
*
material
);
96
97
G4double
GetInelasticCrossSectionPerAtom
(
98
const
G4ParticleDefinition
*aParticle,
99
G4double
kineticEnergy,
100
const
G4Element
*anElement,
101
const
G4Material
*
mat
=
nullptr
);
102
103
G4double
GetInelasticCrossSectionPerIsotope
(
104
const
G4ParticleDefinition
*aParticle,
105
G4double
kineticEnergy,
106
G4int
Z
,
G4int
A
);
107
108
G4double
GetElasticCrossSectionPerVolume
(
109
const
G4ParticleDefinition
*aParticle,
110
G4double
kineticEnergy,
111
const
G4Material
*
material
);
112
113
G4double
GetElasticCrossSectionPerAtom
(
114
const
G4ParticleDefinition
*aParticle,
115
G4double
kineticEnergy,
116
const
G4Element
*anElement,
const
G4Material
*
mat
=0);
117
118
G4double
GetElasticCrossSectionPerIsotope
(
119
const
G4ParticleDefinition
*aParticle,
120
G4double
kineticEnergy,
121
G4int
Z
,
G4int
A
);
122
123
G4double
GetCaptureCrossSectionPerVolume
(
124
const
G4ParticleDefinition
*aParticle,
125
G4double
kineticEnergy,
126
const
G4Material
*
material
);
127
128
G4double
GetCaptureCrossSectionPerAtom
(
129
const
G4ParticleDefinition
*aParticle,
130
G4double
kineticEnergy,
131
const
G4Element
*anElement,
132
const
G4Material
*
mat
=
nullptr
);
133
134
G4double
GetCaptureCrossSectionPerIsotope
(
135
const
G4ParticleDefinition
*aParticle,
136
G4double
kineticEnergy,
137
G4int
Z
,
G4int
A
);
138
139
G4double
GetFissionCrossSectionPerVolume
(
140
const
G4ParticleDefinition
*aParticle,
141
G4double
kineticEnergy,
142
const
G4Material
*
material
);
143
144
G4double
GetFissionCrossSectionPerAtom
(
145
const
G4ParticleDefinition
*aParticle,
146
G4double
kineticEnergy,
147
const
G4Element
*anElement,
148
const
G4Material
*
mat
=
nullptr
);
149
150
G4double
GetFissionCrossSectionPerIsotope
(
151
const
G4ParticleDefinition
*aParticle,
152
G4double
kineticEnergy,
153
G4int
Z
,
G4int
A
);
154
155
G4double
GetChargeExchangeCrossSectionPerVolume
(
156
const
G4ParticleDefinition
*aParticle,
157
G4double
kineticEnergy,
158
const
G4Material
*
material
);
159
160
G4double
GetChargeExchangeCrossSectionPerAtom
(
161
const
G4ParticleDefinition
*aParticle,
162
G4double
kineticEnergy,
163
const
G4Element
*anElement,
164
const
G4Material
*
mat
=
nullptr
);
165
166
G4double
GetChargeExchangeCrossSectionPerIsotope
(
167
const
G4ParticleDefinition
*aParticle,
168
G4double
kineticEnergy,
169
G4int
Z
,
G4int
A
);
170
171
// register/deregister processes following G4HadronicProcess interface
172
void
Register
(
G4HadronicProcess
*);
173
174
void
RegisterParticle
(
G4HadronicProcess
*,
175
const
G4ParticleDefinition
*);
176
177
void
RegisterInteraction
(
G4HadronicProcess
*,
178
G4HadronicInteraction
*);
179
180
void
DeRegister
(
G4HadronicProcess
*);
181
182
// register/deregister processes following only G4VProcess interface
183
void
RegisterExtraProcess
(
G4VProcess
*);
184
185
void
RegisterParticleForExtraProcess
(
G4VProcess
*,
186
const
G4ParticleDefinition
*);
187
188
void
DeRegisterExtraProcess
(
G4VProcess
*);
189
190
void
SetBuildXSTable
(
G4bool
val);
191
192
G4bool
GetBuildXSTable
()
const
;
193
194
void
PrintInfo
(
const
G4ParticleDefinition
*);
195
196
void
Dump
(
G4int
level);
197
void
DumpHtml
();
198
void
PrintHtml
(
const
G4ParticleDefinition
*, std::ofstream&);
199
void
PrintModelHtml
(
const
G4HadronicInteraction
*
model
)
const
;
200
201
void
SetVerbose
(
G4int
val);
202
203
G4int
GetVerbose
();
204
205
G4HadronicProcess
*
FindProcess
(
const
G4ParticleDefinition
*,
206
G4HadronicProcessType
subType);
207
208
// Energy-momentum non-conservation limits and reporting
209
void
SetEpReportLevel
(
G4int
level);
210
211
void
SetProcessAbsLevel
(
G4double
absoluteLevel);
212
213
void
SetProcessRelLevel
(
G4double
relativeLevel);
214
215
private
:
216
217
// constructor
218
G4HadronicProcessStore
();
219
220
// print process info
221
void
Print
(
G4int
idxProcess,
G4int
idxParticle);
222
223
G4String
HtmlFileName
(
const
G4String
&)
const
;
224
225
static
G4ThreadLocal
G4HadronicProcessStore
*
instance
;
226
227
typedef
const
G4ParticleDefinition
*
PD
;
228
typedef
G4HadronicProcess
*
HP
;
229
typedef
G4HadronicInteraction
*
HI
;
230
231
// hadronic processes following G4HadronicProcess interface
232
std::vector<G4HadronicProcess*>
process
;
233
std::vector<G4HadronicInteraction*>
model
;
234
std::vector<G4String>
modelName
;
235
std::vector<PD>
particle
;
236
std::vector<G4int>
wasPrinted
;
237
238
std::multimap<PD,HP>
p_map
;
239
std::multimap<HP,HI>
m_map
;
240
241
// hadronic processes following only G4VProcess interface
242
std::vector<G4VProcess*>
extraProcess
;
243
std::multimap<PD,G4VProcess*>
ep_map
;
244
245
// counters and options
246
G4int
n_proc
;
247
G4int
n_model
;
248
G4int
n_part
;
249
G4int
n_extra
;
250
251
G4int
verbose
;
252
G4bool
buildTableStart
;
253
G4bool
buildXSTable
;
254
255
// cache
256
HP
currentProcess
;
257
PD
currentParticle
;
258
PD
theGenericIon
;
259
260
G4DynamicParticle
localDP
;
261
262
G4HadronicEPTestMessenger
*
theEPTestMessenger
;
263
};
264
265
266
#endif
267
geant4
tree
geant4-10.6-release
source
processes
hadronic
management
include
G4HadronicProcessStore.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:38
using
1.8.2 with
ECCE GitHub integration