source: trunk/examples/advanced/xray_fluorescence/src/XrayFluoNistMaterials.cc@ 809

Last change on this file since 809 was 807, checked in by garnier, 17 years ago

update

File size: 16.8 KB
Line 
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: XrayFluoDetectorConstruction.hh
28// GEANT4 tag $Name: xray_fluo-V03-02-00
29//
30// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
31//
32// History:
33// -----------
34// 20 Aug 2001 Alfonso Mantero Created
35//
36// -------------------------------------------------------------------
37
38#include "XrayFluoNistMaterials.hh"
39
40XrayFluoNistMaterials::XrayFluoNistMaterials()
41{ CreateMaterials();}
42
43XrayFluoNistMaterials::~XrayFluoNistMaterials()
44{
45 delete dolorite;
46 delete HPGe;
47 delete mars1;
48 delete galactic;
49 delete madaBasalt;
50 delete icelandicBasalt;
51 delete GaAs;
52}
53XrayFluoNistMaterials* XrayFluoNistMaterials::instance = 0;
54
55XrayFluoNistMaterials* XrayFluoNistMaterials::GetInstance()
56{
57 if (instance == 0)
58 {
59 instance = new XrayFluoNistMaterials;
60
61 }
62 return instance;
63}
64
65G4Material* XrayFluoNistMaterials::GetMaterial(G4String material)
66{
67
68 //instancing G4NistManager
69 nistMan = G4NistManager::Instance();
70 nistMan->SetVerbose(0);
71
72 G4Material* mat = nistMan->FindOrBuildMaterial(material);
73 if (!mat) {
74 mat = G4Material::GetMaterial(material);
75 }
76 if (!mat) {G4cout << material << "Not Found, Please Retry"<< G4endl;}
77 return mat;
78}
79
80
81void XrayFluoNistMaterials::CreateMaterials()
82{
83
84 G4double density;
85 std::vector<G4int> natoms;
86 std::vector<G4double> fractionMass;
87 std::vector<G4String> elements;
88
89
90 //instancing G4NistManager
91 nistMan = G4NistManager::Instance();
92 nistMan->SetVerbose(1);
93
94 // Materials Definitions
95
96
97 ///////////////////////
98 // Madagascar Basalt //
99 ///////////////////////
100
101
102 // Define Madagascar Basalt main components 0054.PP.0044 sample
103 density = 3*g/cm3;
104 elements.push_back("Si"); fractionMass.push_back(0.1992); // 0.007093 mol/g(mat)
105 elements.push_back("Ti"); fractionMass.push_back(0.02027); // 4.235e-4
106 elements.push_back("Al"); fractionMass.push_back(0.04758); // 0.001763
107 elements.push_back("Fe"); fractionMass.push_back(0.1303); // 0.002333
108 elements.push_back("Mn"); fractionMass.push_back(0.001549);// 2.820e-5
109 elements.push_back("Mg"); fractionMass.push_back(0.08141); // 0.003350
110 elements.push_back("Ca"); fractionMass.push_back(0.06468); // 0.001614
111 elements.push_back("Na"); fractionMass.push_back(0.01692); // 7.360e-4
112 elements.push_back("K"); fractionMass.push_back(0.008576);// 2.193e-4
113 elements.push_back("P"); fractionMass.push_back(0.001977);// 6.383e-5
114 elements.push_back("O"); fractionMass.push_back(0.427538);// 0.02672
115
116 // sum is 0.04434383 total number of moles of atoms in one gram of material
117 // 2.248766e8 g per 10.000.000 moles.
118
119 G4Material* madaBasaltMain= nistMan->ConstructNewMaterial("MadaBasaltMain",elements, fractionMass, density);
120 elements.clear();
121 fractionMass.clear();
122
123// Define Madagascar Basalt traces components 0054.PP.0044 sample
124 density = 3*g/cm3;
125
126
127 elements.push_back("Ti"); natoms.push_back(33);
128 elements.push_back("Ba"); natoms.push_back(4131);
129 elements.push_back("Ce"); natoms.push_back(694);
130 elements.push_back("Co"); natoms.push_back(965);
131 elements.push_back("Cr"); natoms.push_back(5584);
132 elements.push_back("La"); natoms.push_back(269);
133 elements.push_back("Nb"); natoms.push_back(259);
134 elements.push_back("Nd"); natoms.push_back(410);
135 elements.push_back("Ni"); natoms.push_back(389);
136 elements.push_back("Rb"); natoms.push_back(227);
137 elements.push_back("Sc"); natoms.push_back(212);
138 elements.push_back("Sr"); natoms.push_back(8686);
139 elements.push_back("V"); natoms.push_back(4203);
140 elements.push_back("Y"); natoms.push_back(272);
141 elements.push_back("Zn"); natoms.push_back(1440);
142 elements.push_back("Th"); natoms.push_back(19);
143 elements.push_back("Sm"); natoms.push_back(93);
144 elements.push_back("Eu"); natoms.push_back(32);
145 elements.push_back("Gd"); natoms.push_back(89);
146 elements.push_back("Tb"); natoms.push_back(13);
147 elements.push_back("Yb"); natoms.push_back(15);
148 elements.push_back("Lu"); natoms.push_back(2);
149 elements.push_back("Ta"); natoms.push_back(15);
150 elements.push_back("Hf"); natoms.push_back(62);
151
152 //tot 28114/10e7 weight: 2335253.28 g per 10e6 moles
153
154 G4Material* madaBasaltTraces= nistMan->ConstructNewMaterial("MadaBasaltTraces", elements, natoms, density);
155 elements.clear();
156 natoms.clear();
157
158 // Define Madacagascar Basalt complete material 0054.PP.0044 sample
159 density = 3*g/cm3;
160
161 madaBasalt= new G4Material("MadaBasalt", density, 2);
162 madaBasalt->AddMaterial(madaBasaltMain, 0.9897);
163 madaBasalt->AddMaterial(madaBasaltTraces, 0.0103);
164
165
166
167 ///////////////////////
168 // Iceland Basalt //
169 ///////////////////////
170
171 elements.push_back("Si"); fractionMass.push_back(0.2313);
172 elements.push_back("Ti"); fractionMass.push_back(0.0127);
173 elements.push_back("Al"); fractionMass.push_back(0.0702);
174 elements.push_back("Fe"); fractionMass.push_back(0.1134);
175 elements.push_back("Mn"); fractionMass.push_back(0.0019);
176 elements.push_back("Mg"); fractionMass.push_back(0.0349);
177 elements.push_back("Ca"); fractionMass.push_back(0.0756);
178 elements.push_back("Na"); fractionMass.push_back(0.0892);
179 elements.push_back("K"); fractionMass.push_back(0.0032);
180 elements.push_back("P"); fractionMass.push_back(0.00096);
181 elements.push_back("S"); fractionMass.push_back(0.0004);
182 elements.push_back("O"); fractionMass.push_back(0.36624);
183
184 // Define Icelandic Basalt main components 0029.PP.0035 sample
185 density = 3*g/cm3;
186 G4Material* icelandicBasaltMain= nistMan->ConstructNewMaterial("IceBasaltMain",elements, fractionMass, density);
187
188 // Define Icelandic Basalt traces components 0029.PP.0035 sample
189 density = 3*g/cm3;
190
191 elements.push_back("Ba"); natoms.push_back(756);
192 elements.push_back("Ce"); natoms.push_back(328);
193 elements.push_back("Co"); natoms.push_back(643);
194 elements.push_back("Cr"); natoms.push_back(1000);
195 elements.push_back("Cu"); natoms.push_back(1396);
196 elements.push_back("Ga"); natoms.push_back(190);
197 elements.push_back("La"); natoms.push_back(103);
198 elements.push_back("Mo"); natoms.push_back(9);
199 elements.push_back("Nb"); natoms.push_back(114);
200 elements.push_back("Nd"); natoms.push_back(104);
201 elements.push_back("Ni"); natoms.push_back(544);
202 elements.push_back("Rb"); natoms.push_back(78);
203 elements.push_back("S"); natoms.push_back(5550);
204 elements.push_back("Sc"); natoms.push_back(531);
205 elements.push_back("Sr"); natoms.push_back(1353);
206 elements.push_back("U"); natoms.push_back(22);
207 elements.push_back("V"); natoms.push_back(4533);
208 elements.push_back("Y"); natoms.push_back(408);
209 elements.push_back("Zn"); natoms.push_back(1259);
210 elements.push_back("Zr"); natoms.push_back(1274);
211
212 G4Material* icelandicBasaltTraces= nistMan->ConstructNewMaterial("IceBasaltTraces", elements, natoms, density);
213
214 elements.clear();
215 natoms.clear();
216
217 // Define Icelandic Basalt complete material 0029.PP.0035 sample
218 density = 3*g/cm3;
219 icelandicBasalt= new G4Material("IceBasalt", density, 2);
220 icelandicBasalt->AddMaterial(icelandicBasaltMain, 0.9978);
221 icelandicBasalt->AddMaterial(icelandicBasaltTraces, 0.0022);
222
223
224 ///////////////////////
225 // Dolorite //
226 ///////////////////////
227
228 // Define dolorite main components 0055.PP.0038 sample
229
230 density = 3*g/cm3;
231
232 elements.push_back("Fe"); fractionMass.push_back(0.1750);
233 elements.push_back("Ti"); fractionMass.push_back(0.0082);
234 elements.push_back("Ca"); fractionMass.push_back(0.0753);
235 elements.push_back("Si"); fractionMass.push_back(0.2188);
236 elements.push_back("Al"); fractionMass.push_back(0.0676);
237 elements.push_back("Mg"); fractionMass.push_back(0.0008);
238 elements.push_back("O"); fractionMass.push_back(0.4377);
239 elements.push_back("Mn"); fractionMass.push_back(0.0015);
240 elements.push_back("Na"); fractionMass.push_back(0.0134);
241 elements.push_back("K"); fractionMass.push_back(0.0011);
242 elements.push_back("P"); fractionMass.push_back(0.0006);
243
244
245 G4Material* dolorite = nistMan->ConstructNewMaterial("Dolorite", elements, fractionMass, density);
246
247 elements.clear();
248 natoms.clear();
249
250 // define traces in dolorite 0055.PP.0038 sample
251
252 density = 3*g/cm3;
253
254 elements.push_back("Nb"); natoms.push_back(5);
255 elements.push_back("Zr"); natoms.push_back(91);
256 elements.push_back("Y"); natoms.push_back(29);
257 elements.push_back("Sr"); natoms.push_back(140);
258 elements.push_back("Rb"); natoms.push_back(3);
259 elements.push_back("Ga"); natoms.push_back(20);
260 elements.push_back("Zn"); natoms.push_back(99);
261 elements.push_back("Ni"); natoms.push_back(77);
262 elements.push_back("Sc"); natoms.push_back(32);
263 elements.push_back("V"); natoms.push_back(314);
264 elements.push_back("Cr"); natoms.push_back(130);
265 elements.push_back("Co"); natoms.push_back(56);
266 elements.push_back("Cu"); natoms.push_back(119);
267 elements.push_back("Ba"); natoms.push_back(38);
268 elements.push_back("Ce"); natoms.push_back(15);
269 elements.push_back("Nd"); natoms.push_back(9);
270
271 G4Material* tracesOfDolorite= nistMan->ConstructNewMaterial("TracesOfDolorite", elements, natoms, density);
272
273 elements.clear();
274 natoms.clear();
275
276 // define dolorite (full) -- 0055.PP.0038 sample
277
278 density = 3*g/cm3;
279 dolorite = new G4Material("Dolorite", density, 2);
280 dolorite->AddMaterial(tracesOfDolorite, 0.0027842352);
281 dolorite->AddMaterial(dolorite, 0.9972157648);
282
283 ///////////////////////
284 // Mars1 //
285 ///////////////////////
286
287
288 // define mars1 -- 01.PP.0030 sample
289
290 density = 3*g/cm3;
291
292 elements.push_back("Fe"); fractionMass.push_back(0.100916);
293 elements.push_back("Ti"); fractionMass.push_back(0.0186804);
294 elements.push_back("Ca"); fractionMass.push_back(0.0404091);
295 elements.push_back("Si"); fractionMass.push_back(0.196378);
296 elements.push_back("Al"); fractionMass.push_back(0.103282);
297 elements.push_back("Mg"); fractionMass.push_back(0.0241622);
298 elements.push_back("Mn"); fractionMass.push_back(0.00184331);
299 elements.push_back("Na"); fractionMass.push_back(0.0177908);
300 elements.push_back("K"); fractionMass.push_back(0.00574498);
301 elements.push_back("P"); fractionMass.push_back(0.00280169);
302 elements.push_back("O"); fractionMass.push_back(0.48799152);
303
304
305 G4Material* mars1Main = nistMan->ConstructNewMaterial("Mars1 Main components", elements, fractionMass, density);
306
307 elements.clear();
308 fractionMass.clear();
309
310 elements.push_back("Nb"); natoms.push_back(55);
311 elements.push_back("Zr"); natoms.push_back(433);
312 elements.push_back("Y"); natoms.push_back(58);
313 elements.push_back("Sr"); natoms.push_back(968);
314 elements.push_back("Rb"); natoms.push_back(16);
315 elements.push_back("Ga"); natoms.push_back(24);
316 elements.push_back("Zn"); natoms.push_back(109);
317 elements.push_back("Ni"); natoms.push_back(70);
318 elements.push_back("Sc"); natoms.push_back(21);
319 elements.push_back("V"); natoms.push_back(134);
320 elements.push_back("Cr"); natoms.push_back(141);
321 elements.push_back("Co"); natoms.push_back(30);
322 elements.push_back("Cu"); natoms.push_back(19);
323 elements.push_back("Ba"); natoms.push_back(580);
324 elements.push_back("Pb"); natoms.push_back(4);
325 elements.push_back("S"); natoms.push_back(444);
326 elements.push_back("U"); natoms.push_back(2);
327
328 density = 3*g/cm3;
329 G4Material* tracesOfMars1 = nistMan->ConstructNewMaterial("TracesOfMars1", elements, natoms, density);
330
331 elements.clear();
332 natoms.clear();
333
334 density = 3*g/cm3;
335 mars1 = new G4Material("Mars1", density, 2);
336 mars1->AddMaterial(tracesOfMars1, 0.0044963163);
337 mars1->AddMaterial(mars1Main, 0.9955036837);
338
339 ///////////////////////
340 // Anorthosite //
341 ///////////////////////
342
343
344 density = 2.8*g/cm3;
345
346 elements.push_back("Fe"); fractionMass.push_back(0.095283);
347 elements.push_back("Mn"); fractionMass.push_back(0.00137086);
348 elements.push_back("Ni"); fractionMass.push_back(5e-5);
349 elements.push_back("Cu"); fractionMass.push_back(5.2e-4);
350 elements.push_back("Na"); fractionMass.push_back(0.017635);
351 elements.push_back("Mg"); fractionMass.push_back(0.0245361);
352 elements.push_back("Al"); fractionMass.push_back(0.0800355);
353 elements.push_back("Si"); fractionMass.push_back(0.232204);
354 elements.push_back("Ca"); fractionMass.push_back(0.0635368);
355 elements.push_back("K"); fractionMass.push_back(0.00464912);
356 elements.push_back("C"); fractionMass.push_back(0.000837803);
357 elements.push_back("P"); fractionMass.push_back(0.00176742);
358 elements.push_back("Ti"); fractionMass.push_back(0.0240879);
359 elements.push_back("Cl"); fractionMass.push_back(0.00014);
360 elements.push_back("Pd"); fractionMass.push_back(0.00001);
361 elements.push_back("Cd"); fractionMass.push_back(0.00018);
362 elements.push_back("Ag"); fractionMass.push_back(0.00048);
363 elements.push_back("S"); fractionMass.push_back(0.00144);
364 elements.push_back("V"); fractionMass.push_back(0.00228);
365 elements.push_back("Ba"); fractionMass.push_back(0.00151);
366 elements.push_back("O"); fractionMass.push_back(0.447026);
367
368 anorthosite = nistMan->ConstructNewMaterial("Anorthosite", elements, fractionMass, density);
369
370 elements.clear();
371 fractionMass.clear();
372
373 //define gallium arsenide
374
375 elements.push_back("Ga"); natoms.push_back(1);
376 elements.push_back("As"); natoms.push_back(1);
377
378 density = 5.32 * g/cm3;
379 GaAs = nistMan->ConstructNewMaterial("gallium arsenide", elements, natoms, density);
380
381 elements.clear();
382 natoms.clear();
383
384
385 // define germanium
386
387 density = 5.32 * g/cm3;
388
389 elements.push_back("Ge"); natoms.push_back(1);
390 HPGe = nistMan->ConstructNewMaterial("HPGe",elements, natoms, density);
391
392 elements.clear();
393 natoms.clear();
394
395 //define scintillator
396
397 elements.push_back("C"); natoms.push_back(9);
398 elements.push_back("H"); natoms.push_back(10);
399
400 density = 1.032*g/cm3;
401 Sci = nistMan->ConstructNewMaterial("Scintillator", elements, natoms, density);
402
403 elements.clear();
404 natoms.clear();
405
406 //define vacuum
407
408 density = universe_mean_density; //from PhysicalConstants.h
409 G4double pressure = 3.e-18*pascal;
410 G4double temperature = 2.73*kelvin;
411 Vacuum = new G4Material("Galactic", 1., 1.01*g/mole, density,
412 kStateGas,temperature,pressure);
413
414 //define basalt
415 density = 3.*g/cm3;
416
417 elements.push_back("Fe"); fractionMass.push_back(0.1200);
418 elements.push_back("Ti"); fractionMass.push_back(0.0160);
419 elements.push_back("Ca"); fractionMass.push_back(0.0750);
420 elements.push_back("Si"); fractionMass.push_back(0.2160);
421 elements.push_back("Al"); fractionMass.push_back(0.0710);
422 elements.push_back("Mg"); fractionMass.push_back(0.0590);
423 elements.push_back("O"); fractionMass.push_back(0.4430);
424
425
426
427 basalt = nistMan->ConstructNewMaterial("Basalt", elements, fractionMass, density);
428
429 G4cout << *(G4Material::GetMaterialTable()) << G4endl;
430}
431
Note: See TracBrowser for help on using the repository browser.