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