source: trunk/examples/extended/electromagnetic/TestEm10/src/Em10Materials.cc @ 1281

Last change on this file since 1281 was 807, checked in by garnier, 16 years ago

update

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