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

Last change on this file since 1204 was 807, checked in by garnier, 16 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.