Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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"
36#include "G4SystemOfUnits.hh"
37#include "G4ios.hh"
38
39G3EleTable::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
47 delete [] _EleNames;
48 delete [] _Ele;
49}
50
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
67G4int
68G3EleTable::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
80void
81G3EleTable::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
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
virtual ~G3EleTable()
Definition: G3EleTable.cc:46
G4Element * GetEle(G4double Z)
Definition: G3EleTable.cc:52