Geant4-11
Toggle main menu visibility
Main Page
Related Pages
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
w
x
y
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
m
n
p
r
s
t
w
y
Enumerations
a
b
c
d
e
f
g
l
m
p
r
s
t
v
y
z
Enumerator
a
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
z
Data Structures
Data Structures
Data Structure Index
Class Hierarchy
Data Fields
All
:
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
y
Enumerations
a
b
c
d
e
f
g
i
l
m
n
o
p
r
s
t
u
v
w
Enumerator
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Related Functions
:
a
b
c
d
g
h
i
o
q
r
s
t
Files
File List
Globals
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
x
z
Enumerations
b
c
d
e
f
g
i
j
l
m
n
p
r
s
t
w
x
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
x
y
Macros
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
y
z
Examples
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
source
g3tog4
src
G3EleTable.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
29
#include <sstream>
30
31
#include "
G3EleTable.hh
"
32
33
#include "
G4Types.hh
"
34
#include "
G4PhysicalConstants.hh
"
35
#include "
G4SystemOfUnits.hh
"
36
#include "
G4ios.hh
"
37
38
G3EleTable::G3EleTable
() :_MaxEle(109){
39
_EleNames
=
new
char
*[
_MaxEle
];
40
// create an array of pointers to elements
41
_Ele
=
new
G4Element
*[
_MaxEle
];
42
LoadUp
();
43
}
44
45
G3EleTable::~G3EleTable
(){
46
delete
[]
_EleNames
;
47
delete
[]
_Ele
;
48
}
49
50
G4Element
*
51
G3EleTable::GetEle
(
G4double
Z
){
52
G4double
A
= 0.;
53
char
name
[20], sym[3];
54
G4int
index = (
G4int
)
Z
-1;
55
if
(!
parse
(
Z
,
name
, sym,
A
)) {
56
G4String
na(
name
);
57
G4String
sy(sym);
58
if
(
_Ele
[index] == 0) {
59
if
(
A
== 0. ) {
60
// Cannot create element with A = 0.
61
G4String
text =
"Failed to get element Z = "
+ std::to_string(
Z
);
62
G4Exception
(
"G3EleTable::GetEle"
,
"G3toG40016"
,
FatalException
, text);
63
}
64
// add an element to the element table here
65
_Ele
[index] =
new
G4Element
(na, sy,
Z
,
A
*
g
/
mole
);
66
}
67
}
68
return
_Ele
[index];
69
}
70
71
G4int
72
G3EleTable::parse
(
G4double
&
Z
,
char
*
name
,
char
* sym,
G4double
&
A
){
73
G4int
rc = 0;
74
if
(
Z
>0 &&
Z
<=
_MaxEle
){
75
G4int
z = (
G4int
)
Z
-1;
76
G4String
str(
_EleNames
[z]);
77
char
* cstr =
new
char
[str.length()+1];
78
std::strcpy(cstr, str.c_str());
79
char
* p = std::strtok(cstr,
" "
);
80
std::strcpy(
name
, p);
81
p = std::strtok(NULL,
" "
);
82
std::strcpy(sym, p);
83
p = std::strtok(NULL,
" "
);
84
std::istringstream in(p);
85
in >>
A
;
86
delete
[] cstr;
87
}
else
{
88
rc = -1;
89
}
90
return
rc;
91
}
92
93
void
94
G3EleTable::LoadUp
(){
95
G4int
i=0;
96
_EleNames
[i]=(
char
*)
"Hydrogen H 1.00794"
; i++;
97
_EleNames
[i]=(
char
*)
"Helium He 4.0026"
; i++;
98
_EleNames
[i]=(
char
*)
"Lithium Li 6.941"
; i++;
99
_EleNames
[i]=(
char
*)
"Beryllium Be 9.012182"
; i++;
100
_EleNames
[i]=(
char
*)
"Boron B 10.811"
; i++;
101
_EleNames
[i]=(
char
*)
"Carbon C 12.011"
; i++;
102
_EleNames
[i]=(
char
*)
"Nitrogen N 14.00674"
; i++;
103
_EleNames
[i]=(
char
*)
"Oxygen O 15.9994"
; i++;
104
_EleNames
[i]=(
char
*)
"Fluorine F 18.9984032"
; i++;
105
_EleNames
[i]=(
char
*)
"Neon Ne 20.1797"
; i++;
106
107
_EleNames
[i]=(
char
*)
"Sodium Na 22.989768"
; i++;
108
_EleNames
[i]=(
char
*)
"Magnesium Mg 24.3050"
; i++;
109
_EleNames
[i]=(
char
*)
"Aluminum Al 26.981539"
; i++;
110
_EleNames
[i]=(
char
*)
"Silicon Si 28.0855"
; i++;
111
_EleNames
[i]=(
char
*)
"Phosphorus P 30.973762"
; i++;
112
_EleNames
[i]=(
char
*)
"Sulfur S 32.066"
; i++;
113
_EleNames
[i]=(
char
*)
"Chlorine Cl 35.4527"
; i++;
114
_EleNames
[i]=(
char
*)
"Argon Ar 39.948"
; i++;
115
_EleNames
[i]=(
char
*)
"Potassium K 39.0983"
; i++;
116
_EleNames
[i]=(
char
*)
"Calcium Ca 40.078"
; i++;
117
118
_EleNames
[i]=(
char
*)
"Scandium Sc 44.955910"
; i++;
119
_EleNames
[i]=(
char
*)
"Titanium Ti 47.867"
; i++;
120
_EleNames
[i]=(
char
*)
"Vanadium V 50.9415"
; i++;
121
_EleNames
[i]=(
char
*)
"Chromium Cr 51.9961"
; i++;
122
_EleNames
[i]=(
char
*)
"Manganese Mn 54.93805"
; i++;
123
_EleNames
[i]=(
char
*)
"Iron Fe 55.845"
; i++;
124
_EleNames
[i]=(
char
*)
"Cobalt Co 58.93320"
; i++;
125
_EleNames
[i]=(
char
*)
"Nickel Ni 58.6934"
; i++;
126
_EleNames
[i]=(
char
*)
"Copper Cu 63.546"
; i++;
127
_EleNames
[i]=(
char
*)
"Zinc Zn 65.39"
; i++;
128
129
_EleNames
[i]=(
char
*)
"Gallium Ga 69.723"
; i++;
130
_EleNames
[i]=(
char
*)
"Germanium Ge 72.61"
; i++;
131
_EleNames
[i]=(
char
*)
"Arsenic As 74.92159"
; i++;
132
_EleNames
[i]=(
char
*)
"Selenium Se 78.96"
; i++;
133
_EleNames
[i]=(
char
*)
"Bromine Br 79.904"
; i++;
134
_EleNames
[i]=(
char
*)
"Krypton Kr 83.80"
; i++;
135
_EleNames
[i]=(
char
*)
"Rubidium Rb 85.4678"
; i++;
136
_EleNames
[i]=(
char
*)
"Strontium Sr 87.62"
; i++;
137
_EleNames
[i]=(
char
*)
"Yttrium Y 88.90585"
; i++;
138
_EleNames
[i]=(
char
*)
"Zirconium Zr 91.224"
; i++;
139
140
_EleNames
[i]=(
char
*)
"Niobium Nb 92.90638"
; i++;
141
_EleNames
[i]=(
char
*)
"Molybdenum Mo 95.94"
; i++;
142
_EleNames
[i]=(
char
*)
"Technetium Tc 97.907215"
; i++;
143
_EleNames
[i]=(
char
*)
"Ruthenium Ru 101.07"
; i++;
144
_EleNames
[i]=(
char
*)
"Rhodium Rh 102.90550"
; i++;
145
_EleNames
[i]=(
char
*)
"Palladium Pd 106.42"
; i++;
146
_EleNames
[i]=(
char
*)
"Silver Ag 107.8682"
; i++;
147
_EleNames
[i]=(
char
*)
"Cadmium Cd 112.41"
; i++;
148
_EleNames
[i]=(
char
*)
"Indium In 114.818"
; i++;
149
_EleNames
[i]=(
char
*)
"Tin Sn 118.710"
; i++;
150
151
_EleNames
[i]=(
char
*)
"Antimony Sb 121.760"
; i++;
152
_EleNames
[i]=(
char
*)
"Tellurium Te 127.60"
; i++;
153
_EleNames
[i]=(
char
*)
"Iodine I 126.90447"
; i++;
154
_EleNames
[i]=(
char
*)
"Xenon Xe 131.29"
; i++;
155
_EleNames
[i]=(
char
*)
"Cesium Cs 132.90543"
; i++;
156
_EleNames
[i]=(
char
*)
"Barium Ba 137.27"
; i++;
157
_EleNames
[i]=(
char
*)
"Lanthanum La 138.9055"
; i++;
158
_EleNames
[i]=(
char
*)
"Cerium Ce 140.115"
; i++;
159
_EleNames
[i]=(
char
*)
"Praeseodymium Pr 140.90765"
; i++;
160
_EleNames
[i]=(
char
*)
"NeoDymium Nd 144.24"
; i++;
161
162
_EleNames
[i]=(
char
*)
"Promethium Pm 144.912745"
; i++;
163
_EleNames
[i]=(
char
*)
"Samarium Sm 150.36"
; i++;
164
_EleNames
[i]=(
char
*)
"Europium Eu 151.965"
; i++;
165
_EleNames
[i]=(
char
*)
"Gadolinium Gd 157.25"
; i++;
166
_EleNames
[i]=(
char
*)
"Terbium Tb 158.92534"
; i++;
167
_EleNames
[i]=(
char
*)
"Dysprosium Dy 162.50"
; i++;
168
_EleNames
[i]=(
char
*)
"Holmium Ho 164.93032"
; i++;
169
_EleNames
[i]=(
char
*)
"Erbium Er 167.26"
; i++;
170
_EleNames
[i]=(
char
*)
"Thulium Tm 168.93421"
; i++;
171
_EleNames
[i]=(
char
*)
"Ytterbium Yb 173.04"
; i++;
172
173
_EleNames
[i]=(
char
*)
"Lutetium Lu 174.967"
; i++;
174
_EleNames
[i]=(
char
*)
"Hafnium Hf 178.49"
; i++;
175
_EleNames
[i]=(
char
*)
"Tantalum Ta 180.9479"
; i++;
176
_EleNames
[i]=(
char
*)
"Tungsten W 183.84"
; i++;
177
_EleNames
[i]=(
char
*)
"Rhenium Re 186.207"
; i++;
178
_EleNames
[i]=(
char
*)
"Osmium Os 190.23"
; i++;
179
_EleNames
[i]=(
char
*)
"Iridium Ir 192.217"
; i++;
180
_EleNames
[i]=(
char
*)
"Platinum Pt 195.08"
; i++;
181
_EleNames
[i]=(
char
*)
"Gold Au 196.96654"
; i++;
182
_EleNames
[i]=(
char
*)
"Mercury Hg 200.59"
; i++;
183
184
_EleNames
[i]=(
char
*)
"Thallium Tl 204.3833"
; i++;
185
_EleNames
[i]=(
char
*)
"Lead Pb 207.2"
; i++;
186
_EleNames
[i]=(
char
*)
"Bismuth Bi 208.98037"
; i++;
187
_EleNames
[i]=(
char
*)
"Polonium Po 208.982415"
; i++;
188
_EleNames
[i]=(
char
*)
"Astatine At 209.987131"
; i++;
189
_EleNames
[i]=(
char
*)
"Radon Rn 222.017570"
; i++;
190
_EleNames
[i]=(
char
*)
"Francium Fr 223.019731"
; i++;
191
_EleNames
[i]=(
char
*)
"Radium Ra 226.025402"
; i++;
192
_EleNames
[i]=(
char
*)
"Actinium Ac 227.027747"
; i++;
193
_EleNames
[i]=(
char
*)
"Thorium Th 232.0381"
; i++;
194
195
_EleNames
[i]=(
char
*)
"Protactinium Pa 231.03588"
; i++;
196
_EleNames
[i]=(
char
*)
"Uranium U 238.0289"
; i++;
197
_EleNames
[i]=(
char
*)
"Neptunium Np 237.048166"
; i++;
198
_EleNames
[i]=(
char
*)
"Plutonium Pu 244.064197"
; i++;
199
_EleNames
[i]=(
char
*)
"Americium Am 243.061372"
; i++;
200
_EleNames
[i]=(
char
*)
"Curium Cm 247.070346"
; i++;
201
_EleNames
[i]=(
char
*)
"Berkelium Bk 247.070298"
; i++;
202
_EleNames
[i]=(
char
*)
"Californium Cf 251.079579"
; i++;
203
_EleNames
[i]=(
char
*)
"Einsteinium Es 252.08297"
; i++;
204
_EleNames
[i]=(
char
*)
"Fermium Fm 257.095096"
; i++;
205
206
_EleNames
[i]=(
char
*)
"Mendelevium Md 258.098427"
; i++;
207
_EleNames
[i]=(
char
*)
"Nobelium No 259.1011"
; i++;
208
_EleNames
[i]=(
char
*)
"Lawrencium Lr 262.1098"
; i++;
209
_EleNames
[i]=(
char
*)
"Rutherfordium Rf 261.1089"
; i++;
210
_EleNames
[i]=(
char
*)
"Hahnium Ha 262.1144"
; i++;
211
_EleNames
[i]=(
char
*)
"Seaborgium Sg 263.1186"
; i++;
212
_EleNames
[i]=(
char
*)
"Nielsborium Ns 262.1231"
; i++;
213
_EleNames
[i]=(
char
*)
"Hassium Hs 265.1306"
; i++;
214
_EleNames
[i]=(
char
*)
"Meitnerium Mt 266.1378"
; i++;
215
216
// initialize element pointers to 0
217
for
(
G4int
j=0; j<i; j++) {
218
_Ele
[j]=0;
219
}
220
}
221
222
G3EleTable.hh
FatalException
@ FatalException
Definition:
G4ExceptionSeverity.hh:61
G4Exception
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition:
G4Exception.cc:35
G4PhysicalConstants.hh
mole
static constexpr double mole
Definition:
G4SIunits.hh:279
g
static constexpr double g
Definition:
G4SIunits.hh:168
G4SystemOfUnits.hh
G4Types.hh
G4double
double G4double
Definition:
G4Types.hh:83
G4int
int G4int
Definition:
G4Types.hh:85
Z
const G4int Z[17]
Definition:
G4WaterStopping.cc:51
A
const G4double A[17]
Definition:
G4WaterStopping.cc:53
G4ios.hh
G3EleTable::parse
G4int parse(G4double &Z, char *name, char *sym, G4double &A)
Definition:
G3EleTable.cc:72
G3EleTable::LoadUp
void LoadUp()
Definition:
G3EleTable.cc:94
G3EleTable::~G3EleTable
virtual ~G3EleTable()
Definition:
G3EleTable.cc:45
G3EleTable::_Ele
G4Element ** _Ele
Definition:
G3EleTable.hh:64
G3EleTable::_EleNames
char ** _EleNames
Definition:
G3EleTable.hh:63
G3EleTable::GetEle
G4Element * GetEle(G4double Z)
Definition:
G3EleTable.cc:51
G3EleTable::G3EleTable
G3EleTable()
Definition:
G3EleTable.cc:38
G3EleTable::_MaxEle
G4int _MaxEle
Definition:
G3EleTable.hh:65
G4Element
Definition:
G4Element.hh:98
G4String
Definition:
G4String.hh:62
G4InuclParticleNames::name
const char * name(G4int ptype)
Definition:
G4InuclParticleNames.hh:76
Generated by
1.9.3