ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Materials.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file Materials.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 //
29 //
30 //
31 //
32 // GEANT 4 class
33 //
34 // History: based on object model of
35 // Materials
36 // Originally Created in Test30 by Vladimir Ivanchenko, 12 March 2002
37 //
38 // Modified for Test by V. Grichine, 29 Jan 2006
39 // is filled with XTR related materials, plastics, gas mixtures, etc
40 
41 
42 #include "Materials.hh"
43 
44 #include "G4UnitsTable.hh"
45 #include "G4Material.hh"
46 #include "G4MaterialTable.hh"
47 #include "G4SystemOfUnits.hh"
48 
50 
52 {
53  if ( ! fgInstance ) {
54  fgInstance = new Materials();
55  }
56  return fgInstance;
57 }
58 
59 
61 {
62  fgInstance = this;
63  Initialise();
64 }
65 
67 {}
68 
70 {
71  G4String name, symbol;
72  G4double a, z;
73  G4double density, fractionmass;
74  G4int nel, ncomponents;
75 
76  // define Elements
77 
78  a = 1.01*g/mole;
79  G4Element* elH = new G4Element(name="Hydrogen",symbol="H" , z= 1., a);
80 
81  a = 6.94*g/mole;
82  G4Element* elLi = new G4Element(name="Lithium",symbol="Li" , z= 3., a);
83 
84  a = 9.01*g/mole;
85  G4Element* elBe = new G4Element(name="Berillium",symbol="Be" , z= 4., a);
86 
87  a = 12.01*g/mole;
88  G4Element* elC = new G4Element(name="Carbon", symbol="C", z=6., a);
89 
90  a = 14.01*g/mole;
91  G4Element* elN = new G4Element(name="Nitrogen",symbol="N" , z= 7., a);
92 
93  a = 16.00*g/mole;
94  G4Element* elO = new G4Element(name="Oxygen" ,symbol="O" , z= 8., a);
95 
96  a = 39.948*g/mole;
97  G4Element* elAr = new G4Element(name="Argon", symbol="Ar", z=18., a);
98 
99  /*
100  a = 131.29*g/mole;
101  G4Element* elXe = new G4Element(name="Xenon", symbol="Xe", z=54., a);
102 
103  a = 19.00*g/mole;
104  G4Element* elF = new G4Element(name="Fluorine", symbol="F", z=9., a);
105  */
106 
108  //
109  // Detector windows, electrodes
110  // Al for electrodes
111 
112  density = 2.700*g/cm3;
113  a = 26.98*g/mole;
114  new G4Material(name="Al", z=13., a, density);
115 
116 
118  //
119  // Materials for popular X-ray TR radiators
120  //
121 
122  // TRT_CH2
123 
124  density = 0.935*g/cm3;
125  G4Material* TRT_CH2 = new G4Material(name="TRT_CH2",density, nel=2);
126  TRT_CH2->AddElement(elC,1);
127  TRT_CH2->AddElement(elH,2);
128 
129  // Radiator
130 
131  density = 0.059*g/cm3;
132  G4Material* Radiator = new G4Material(name="Radiator",density, nel=2);
133  Radiator->AddElement(elC,1);
134  Radiator->AddElement(elH,2);
135 
136  // Carbon Fiber
137 
138  density = 0.145*g/cm3;
139  G4Material* CarbonFiber = new G4Material(name="CarbonFiber",density, nel=1);
140  CarbonFiber->AddElement(elC,1);
141 
142  // Lithium
143 
144  density = 0.534*g/cm3;
145  G4Material* Li = new G4Material(name="Li",density, nel=1);
146  Li->AddElement(elLi,1);
147 
148  // Beryllium
149 
150  density = 1.848*g/cm3;
151  G4Material* Be = new G4Material(name="Be",density, nel=1);
152  Be->AddElement(elBe,1);
153 
154 
155  // Mylar
156 
157  density = 1.39*g/cm3;
158  G4Material* Mylar = new G4Material(name="Mylar", density, nel=3);
159  Mylar->AddElement(elO,2);
160  Mylar->AddElement(elC,5);
161  Mylar->AddElement(elH,4);
162 
163  // Kapton Dupont de Nemur (density: 1.396-1.430, get middle )
164 
165  density = 1.413*g/cm3;
166  G4Material* Kapton = new G4Material(name="Kapton", density, nel=4);
167  Kapton->AddElement(elO,5);
168  Kapton->AddElement(elC,22);
169  Kapton->AddElement(elN,2);
170  Kapton->AddElement(elH,10);
171 
172  // Kapton (polyimide) ??? since = Mylar C5H4O2
173 
174  // density = 1.39*g/cm3;
175  // G4Material* kapton = new G4Material(name="kapton", density, nel=3);
176  // Kapton->AddElement(elO,2);
177  // Kapton->AddElement(elC,5);
178  // Kapton->AddElement(elH,4);
179 
180  // Polypropelene
181 
182  G4Material* CH2 = new G4Material ("CH2" , 0.91*g/cm3, 2);
183  CH2->AddElement(elH,2);
184  CH2->AddElement(elC,1);
185 
187  //
188  // Noble gases , STP conditions
189 
190  // Helium as detector gas, STP
191 
192  density = 0.178*mg/cm3;
193  a = 4.0026*g/mole;
194  G4Material* He = new G4Material(name="He",z=2., a, density );
195 
196  // Neon as detector gas, STP
197 
198  density = 0.900*mg/cm3;
199  a = 20.179*g/mole;
200  new G4Material(name="Ne",z=10., a, density );
201 
202  // Argon as detector gas, STP
203 
204  density = 1.7836*mg/cm3; // STP
205  G4Material* Argon = new G4Material(name="Argon" , density, ncomponents=1);
206  Argon->AddElement(elAr, 1);
207 
208  // Krypton as detector gas, STP
209 
210  density = 3.700*mg/cm3;
211  a = 83.80*g/mole;
212  G4Material* Kr = new G4Material(name="Kr",z=36., a, density );
213 
214  // Xenon as detector gas, STP
215 
216  density = 5.858*mg/cm3;
217  a = 131.29*g/mole;
218  G4Material* Xe = new G4Material(name="Xenon",z=54., a, density );
219 
221 //
222 // Hydrocarbones, metane and others
223 
224  // Metane, STP
225 
226  density = 0.7174*mg/cm3;
227  G4Material* metane = new G4Material(name="CH4",density,nel=2);
228  metane->AddElement(elC,1);
229  metane->AddElement(elH,4);
230 
231  // Propane, STP
232 
233  density = 2.005*mg/cm3 ;
234  G4Material* propane = new G4Material(name="C3H8",density,nel=2);
235  propane->AddElement(elC,3);
236  propane->AddElement(elH,8);
237 
238  // iso-Butane (methylpropane), STP
239 
240  density = 2.67*mg/cm3;
241  G4Material* isobutane = new G4Material(name="isoC4H10",density,nel=2);
242  isobutane->AddElement(elC,4);
243  isobutane->AddElement(elH,10);
244 
246  //
247  // Molecular gases
248 
249  // Carbon dioxide, STP
250 
251  density = 1.977*mg/cm3;
252  G4Material* CO2 = new G4Material(name="CO2", density, nel=2,
253  kStateGas,273.15*kelvin,1.*atmosphere);
254  CO2->AddElement(elC,1);
255  CO2->AddElement(elO,2);
256 
257  // Carbon dioxide, STP
258 
259  density = 1.977*273.*mg/cm3/293.;
260  G4Material* CarbonDioxide = new G4Material(name="CO2_2", density, nel=2);
261  CarbonDioxide->AddElement(elC,1);
262  CarbonDioxide->AddElement(elO,2);
263 
264  // Nitrogen, STP
265 
266  density = 1.25053*mg/cm3; // STP
267  G4Material* Nitrogen = new G4Material(name="N2" , density, ncomponents=1);
268  Nitrogen->AddElement(elN, 2);
269 
270  // Oxygen, STP
271 
272  density = 1.4289*mg/cm3; // STP
273  G4Material* Oxygen = new G4Material(name="O2" , density, ncomponents=1);
274  Oxygen->AddElement(elO, 2);
275 
276  /* *****************************
277  density = 1.25053*mg/cm3; // STP
278  a = 14.01*g/mole ; // get atomic weight !!!
279  // a = 28.016*g/mole;
280  G4Material* N2 = new G4Material(name="Nitrogen", z= 7.,a,density) ;
281 
282  density = 1.25053*mg/cm3; // STP
283  G4Material* anotherN2 = new G4Material(name="anotherN2", density,ncomponents=2);
284  anotherN2->AddElement(elN, 1);
285  anotherN2->AddElement(elN, 1);
286 
287  // air made from oxigen and nitrogen only
288 
289  density = 1.290*mg/cm3; // old air from elements
290  G4Material* air = new G4Material(name="air" , density, ncomponents=2);
291  air->AddElement(elN, fractionmass=0.7);
292  air->AddElement(elO, fractionmass=0.3);
293  ******************************************** */
294 
295  // Dry Air (average composition with Ar), STP
296 
297  density = 1.2928*mg/cm3 ; // STP
298  G4Material* Air = new G4Material(name="Air" , density, ncomponents=3);
299  Air->AddMaterial( Nitrogen, fractionmass = 0.7557 );
300  Air->AddMaterial( Oxygen, fractionmass = 0.2315 );
301  Air->AddMaterial( Argon, fractionmass = 0.0128 );
302 
304  //
305  // MWPC mixtures
306 
307  // 85% Xe + 15% CO2, STP
308 
309  density = 4.9*mg/cm3;
310  G4Material* Xe15CO2 = new G4Material(name="Xe15CO2" , density, ncomponents=2);
311  Xe15CO2->AddMaterial( Xe, fractionmass = 0.979);
312  Xe15CO2->AddMaterial( CarbonDioxide, fractionmass = 0.021);
313 
314  // 80% Xe + 20% CO2, STP
315 
316  density = 5.0818*mg/cm3;
317  G4Material* Xe20CO2 = new G4Material(name="Xe20CO2" , density, ncomponents=2);
318  Xe20CO2->AddMaterial( Xe, fractionmass = 0.922 );
319  Xe20CO2->AddMaterial( CarbonDioxide, fractionmass = 0.078 );
320 
321  // 70% Xe + 27% CO2 + 3% O2, 20 1 atm ATLAS straw tube mixture
322 
323  density = 4.358*mg/cm3;
324  G4Material* Xe27CO23O2 = new G4Material(name="Xe27CO23O2" , density, ncomponents=3);
325  Xe27CO23O2->AddMaterial( Xe, fractionmass = 0.87671);
326  Xe27CO23O2->AddMaterial( CarbonDioxide, fractionmass = 0.11412);
327  Xe27CO23O2->AddMaterial( Oxygen, fractionmass = 0.00917);
328 
329  // 80% Kr + 20% CO2, STP
330 
331  density = 3.601*mg/cm3;
332  G4Material* Kr20CO2 = new G4Material(name="Kr20CO2", density,
333  ncomponents=2);
334  Kr20CO2->AddMaterial( Kr, fractionmass = 0.89 );
335  Kr20CO2->AddMaterial( CarbonDioxide, fractionmass = 0.11 );
336 
337  // Xe + 55% He + 15% CH4 ; NIM A294 (1990) 465-472; STP
338 
339  density = 1.963*273.*mg/cm3/293.;
340  G4Material* Xe55He15CH4 = new G4Material(name="Xe55He15CH4",density,
341  ncomponents=3);
342  Xe55He15CH4->AddMaterial(Xe, 0.895);
343  Xe55He15CH4->AddMaterial(He, 0.050);
344  Xe55He15CH4->AddMaterial(metane,0.055);
345 
346  // 90% Xe + 10% CH4, STP ; NIM A248 (1986) 379-388
347 
348  density = 5.344*mg/cm3;
349  G4Material* Xe10CH4 = new G4Material(name="Xe10CH4" , density,
350  ncomponents=2);
351  Xe10CH4->AddMaterial( Xe, fractionmass = 0.987 ) ;
352  Xe10CH4->AddMaterial( metane, fractionmass = 0.013 ) ;
353 
354  // 95% Xe + 5% CH4, STP ; NIM A214 (1983) 261-268
355 
356  density = 5.601*mg/cm3;
357  G4Material* Xe5CH4 = new G4Material(name="Xe5CH4" , density,
358  ncomponents=2);
359  Xe5CH4->AddMaterial( Xe, fractionmass = 0.994 );
360  Xe5CH4->AddMaterial( metane, fractionmass = 0.006 );
361 
362  // 80% Xe + 20% CH4, STP ; NIM A253 (1987) 235-244
363 
364  density = 4.83*mg/cm3;
365  G4Material* Xe20CH4 = new G4Material(name="Xe20CH4" , density,
366  ncomponents=2);
367  Xe20CH4->AddMaterial( Xe, fractionmass = 0.97 );
368  Xe20CH4->AddMaterial( metane, fractionmass = 0.03 );
369 
370  // 93% Ar + 7% CH4, STP ; NIM 107 (1973) 413-422
371 
372  density = 1.709*mg/cm3;
373  G4Material* Ar7CH4 = new G4Material(name="Ar7CH4" , density,
374  ncomponents=2);
375  Ar7CH4->AddMaterial( Argon, fractionmass = 0.971 );
376  Ar7CH4->AddMaterial( metane, fractionmass = 0.029 );
377 
378  // 93% Kr + 7% CH4, STP ; NIM 107 (1973) 413-422
379 
380  density = 3.491*mg/cm3;
381  G4Material* Kr7CH4 = new G4Material(name="Kr7CH4" , density,
382  ncomponents=2);
383  Kr7CH4->AddMaterial( Kr, fractionmass = 0.986 );
384  Kr7CH4->AddMaterial( metane, fractionmass = 0.014 );
385 
386  // 0.5*(95% Xe + 5% CH4)+0.5*(93% Ar + 7% CH4), STP ; NIM A214 (1983) 261-268
387 
388  density = 3.655*mg/cm3;
389  G4Material* XeArCH4 = new G4Material(name="XeArCH4" , density,
390  ncomponents=2);
391  XeArCH4->AddMaterial( Xe5CH4, fractionmass = 0.766 );
392  XeArCH4->AddMaterial( Ar7CH4, fractionmass = 0.234 );
393 
394  // Silicon as detector material
395 
396  density = 2.330*g/cm3;
397  a = 28.09*g/mole;
398  new G4Material(name="Si", z=14., a, density);
399 
400 
401 
402 
403  /*
404  G4Material* ma;
405  ma = new G4Material("H", 1., 1.0*g/mole, 1.*g/cm3);
406  ma = new G4Material("D", 1., 2.0*g/mole, 1.*g/cm3);
407  ma = new G4Material("Li", 3., 6.941*g/mole, 1.*g/cm3);
408  ma = new G4Material("Be", 4., 9.01*g/mole, 1.848*g/cm3);
409  ma = new G4Material("C", 6., 12.00*g/mole, 2.0*g/cm3);
410  ma = new G4Material("Graphite",6., 12.00*g/mole, 2.265*g/cm3 );
411  ma->SetChemicalFormula("Graphite");
412  ma = new G4Material("Al", 13., 26.98*g/mole, 2.7 *g/cm3);
413  ma = new G4Material("Si", 14., 29.055*g/mole, 2.33*g/cm3);
414  ma = new G4Material("LAr", 18., 39.95*g/mole, 1.393*g/cm3);
415  ma = new G4Material("Zr", 40., 91.224*g/mole, 4.0*g/cm3);
416  ma = new G4Material("LXe", 54., 131.29*g/mole, 3.02*g/cm3);
417  ma = new G4Material("Fe", 26., 55.85*g/mole, 7.87*g/cm3);
418  ma = new G4Material("Ni", 29., 58.6934*g/mole, 8.00*g/cm3);
419  ma = new G4Material("Cu", 29., 63.55*g/mole, 8.96*g/cm3);
420  ma = new G4Material("Au", 79., 196.97*g/mole, 19.32*g/cm3);
421  ma = new G4Material("Ta", 73., 180.9479*g/mole, 16.67*g/cm3);
422  ma = new G4Material("W", 74., 183.85*g/mole, 19.30*g/cm3);
423  ma = new G4Material("Pb", 82., 207.19*g/mole, 11.35*g/cm3);
424  ma = new G4Material("Bi", 83., 208.98*g/mole, 12.*g/cm3);
425  ma = new G4Material("U", 92., 238.03*g/mole, 18.95*g/cm3);
426 
427  G4Element* H = new G4Element ("Hydrogen", "H", 1. , 1.01*g/mole);
428  G4Element* N = new G4Element ("Nitrigen", "N", 7. , 14.00*g/mole);
429  G4Element* O = new G4Element ("Oxygen" , "O", 8. , 16.00*g/mole);
430  G4Element* C = new G4Element ("Carbon" , "C", 6. , 12.00*g/mole);
431  G4Element* Cs = new G4Element ("Cesium" , "Cs", 55. , 132.905*g/mole);
432  G4Element* I = new G4Element ("Iodide" , "I", 53. , 126.9044*g/mole);
433 
434  ma = new G4Material("O2", 8., 16.00*g/mole, 1.1*g/cm3);
435  ma->SetChemicalFormula("O_2");
436  ma = new G4Material ("Water" , 1.*g/cm3, 2);
437  ma->AddElement(H,2);
438  ma->AddElement(O,1);
439  ma->SetChemicalFormula("H_2O");
440  ma = new G4Material ("Ethane" , 0.4241*g/cm3, 2);
441  ma->AddElement(H,6);
442  ma->AddElement(C,2);
443  ma->SetChemicalFormula("C_2H_6");
444  ma = new G4Material ("CsI" , 4.53*g/cm3, 2);
445  ma->AddElement(Cs,1);
446  ma->AddElement(I,1);
447  ma->SetChemicalFormula("CsI");
448  ma = new G4Material("Air" , 1.290*mg/cm3, 2);
449  // use fraction in mass
450  ma->AddElement(N, 0.7);
451  ma->AddElement(O, 0.3);
452  */
453 
454 
455 
456 }
457 
458 
460 {
461 
462  // const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable();
463 
465 
466  G4cout << "Material is selected: " << ma->GetName() << G4endl;
467  return ma;
468 }
469 
470 
471 
472 
473 
474 
475 
476