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