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