QwGeant4
QweakSimMaterial.cc
Go to the documentation of this file.
1 #include "QweakSimMaterial.hh"
2 
3 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
4 
6 {
7  G4cout << G4endl << "###### Calling QweakSimMaterial::QweakSimMaterial() " << G4endl << G4endl;
8 
9  // Get the instance of the NIST materials manager
10  fNistManager = G4NistManager::Instance();
11  fNistManager->SetVerbose(1);
12 
13  // Define required materials
14  G4double A; // atomic mass
15  G4double Z; // atomic number
16  G4double density; // density
17 
18  G4double temperature;
19  G4double pressure;
20  G4double fractionmass;
21 
22  G4String name;
23  G4String symbol;
24 
25  G4int natoms;
26  G4int ncomponents;
27  G4int nelements;
28 
29 
30  //
31  // Define general elements
32  //
33 
34  G4Element* elH = fNistManager->FindOrBuildElement("H");
35  G4Element* elHe = fNistManager->FindOrBuildElement("He");
36  //G4Element* elBe = fNistManager->FindOrBuildElement("Be");
37  //G4Element* elB = fNistManager->FindOrBuildElement("B");
38  G4Element* elC = fNistManager->FindOrBuildElement("C");
39  G4Element* elN = fNistManager->FindOrBuildElement("N");
40  G4Element* elO = fNistManager->FindOrBuildElement("O");
41  //G4Element* elF = fNistManager->FindOrBuildElement("F");
42  //G4Element* elNa = fNistManager->FindOrBuildElement("Na");
43  G4Element* elMg = fNistManager->FindOrBuildElement("Mg");
44  G4Element* elAl = fNistManager->FindOrBuildElement("Al");
45  G4Element* elSi = fNistManager->FindOrBuildElement("Si");
46  //G4Element* elCl = fNistManager->FindOrBuildElement("Cl");
47  G4Element* elAr = fNistManager->FindOrBuildElement("Ar");
48  G4Element* elK = fNistManager->FindOrBuildElement("K");
49  G4Element* elCa = fNistManager->FindOrBuildElement("Ca");
50  G4Element* elFe = fNistManager->FindOrBuildElement("Fe");
51  G4Element* elNi = fNistManager->FindOrBuildElement("Ni");
52  G4Element* elMn = fNistManager->FindOrBuildElement("Mn");
53  G4Element* elCr = fNistManager->FindOrBuildElement("Cr");
54  G4Element* elXe = fNistManager->FindOrBuildElement("Xe");
55  //G4Element* elSb = fNistManager->FindOrBuildElement("Sb");
56  //G4Element* elPb = fNistManager->FindOrBuildElement("Pb");
57  G4Element* elZn = fNistManager->FindOrBuildElement("Zn");
58 
59  // elements for the LeadGlass
60  G4Element* elPb = fNistManager->FindOrBuildElement("Pb");
61  G4Element* elTi = fNistManager->FindOrBuildElement("Ti");
62  G4Element* elAs = fNistManager->FindOrBuildElement("As");
63 
64  //elements for the TungstenAlloy
65  G4Element* elW = fNistManager->FindOrBuildElement("W");
66  G4Element* elCu = fNistManager->FindOrBuildElement("Cu");
67 
68  //define Kryptonite
69  // this material will kill every tracks that touch it
70  name = "Kryptonite";
71  density = 0.00000001*mg/cm3;
72  nelements = 1;
73  G4Material* __attribute__ ((unused))
74  matKryptonite = new G4Material(name, density, nelements);
75  matKryptonite -> AddElement(elAr,1);
76 
77 
78  //
79  // define simple materials
80  //
81  //
82  // The G4Material class describes the macroscopic properties of the matter:
83  // density, state, temperature, pressure, radiation length, mean free path,
84  // dE/dx ...
85  //
86  // My name convention: all materials start with matXyz
87  //
88  // Sorted by Z
89 
90  // Liquid H2
91  //2016/6/8 KDB - Modified to pull from NISTDB with measured density
92  name = "H2Liquid";
93  density = 0.071287*g/cm3; // From Greg, this is the density at 20 k and 32.5 psia
94  G4Material* __attribute__ ((unused))
95  matLiquidHydrogen = fNistManager->BuildMaterialWithNewDensity(name,"G4_lH2",density);
96 
97  // Liquid H2 monoatomic
98  name = "H2LiquidMonoatomic";
99  density = 0.071287*g/cm3; // From Greg, this is the density at 20 k and 32.5 psia
100  nelements = 1;
101  G4Material* __attribute__ ((unused))
102  matLiquidHydrogenMonoatomic = new G4Material(name, density, nelements);
103  matLiquidHydrogenMonoatomic -> AddElement(elH,1);
104  //matLiquidHydrogen -> GetIonisation() -> SetMeanExcitationEnergy(21.8*eV);
105 
106  // Liquid H2 diatomic
107  name = "H2LiquidDiatomic";
108  density = 0.071287*g/cm3; // From Greg, this is the density at 20 k and 32.5 psia
109  nelements = 1;
110  G4Material* __attribute__ ((unused))
111  matLiquidHydrogenDiatomic = new G4Material(name, density, nelements);
112  matLiquidHydrogenDiatomic -> AddElement(elH,2);
113  //matLiquidHydrogen -> GetIonisation() -> SetMeanExcitationEnergy(21.8*eV);
114 
115  // Gas H2 .00159815
116  name = "H2Gas_00159815";
117  density = 0.00159815*g/cm3;
118  nelements = 1;
119  G4Material* __attribute__ ((unused))
120  matGasHydrogen_00159815 = new G4Material(name, density, nelements);
121  matGasHydrogen_00159815 -> AddElement(elH,1);
122 
123 
124  // Gas H2 .00159815 Non-STP
125  name = "H2Gas_00159815_NonSTP";
126  density = 0.00159815*g/cm3;
127  nelements = 1;
128  temperature = 71.5*kelvin;
129  pressure = 470911.9*pascal;
130  G4Material* __attribute__ ((unused))
131  matGasHydrogen_00159815_NonSTP = new G4Material(name, density, nelements, kStateGas, temperature, pressure);
132  matGasHydrogen_00159815_NonSTP -> AddElement(elH,1);
133 
134 
135 
136  // Gas H2 .00159815 Diatomic
137  name = "H2Gas_00159815_Diatomic";
138  density = 0.00159815*g/cm3;
139  nelements = 1;
140  G4Material* __attribute__ ((unused))
141  matGasHydrogen_00159815Diatomic = new G4Material(name, density, nelements);
142  matGasHydrogen_00159815Diatomic -> AddElement(elH,2);
143 
144 
145  // Gas H2 .00159815 Non-STP Diatomic
146  name = "H2Gas_00159815_Diatomic_NonSTP";
147  density = 0.00159815*g/cm3;
148  nelements = 1;
149  temperature = 71.5*kelvin;
150  pressure = 470911.9*pascal;
151  G4Material* __attribute__ ((unused))
152  matGasHydrogen_00159815_Diatomic_NonSTP = new G4Material(name, density, nelements, kStateGas, temperature, pressure);
153  matGasHydrogen_00159815_Diatomic_NonSTP -> AddElement(elH,2);
154 
155 
156 
157  // Gas H2 .00097991
158  name = "H2Gas_00097991";
159  density = 0.00097991*g/cm3;
160  nelements = 1;
161  G4Material* __attribute__ ((unused))
162  matGasHydrogen_00097991 = new G4Material(name, density, nelements);
163  matGasHydrogen_00097991 -> AddElement(elH,1);
164 
165  // Gas H2 .00097991 Non-STP
166  name = "H2Gas_00097991_NonSTP";
167  density = 0.00097991*g/cm3;
168  nelements = 1;
169  temperature = 70*kelvin;
170  pressure = 282685*pascal;
171  G4Material* __attribute__ ((unused))
172  matGasHydrogen_00097991_NonSTP = new G4Material(name, density, nelements, kStateGas, temperature, pressure);
173  matGasHydrogen_00097991_NonSTP -> AddElement(elH,1);
174 
175 
176 
177  // Gas H2 .00097991 Diatomic
178  name = "H2Gas_00097991_Diatomic";
179  density = 0.00097991*g/cm3;
180  nelements = 1;
181  G4Material* __attribute__ ((unused))
182  matGasHydrogen_00097991_Diatomic = new G4Material(name, density, nelements);
183  matGasHydrogen_00097991_Diatomic -> AddElement(elH,2);
184 
185 
186  // Gas H2 .00097991 Non-STP Diatomic
187  name = "H2Gas_00097991_Diatomic_NonSTP";
188  density = 0.00097991*g/cm3;
189  nelements = 1;
190  temperature = 70*kelvin;
191  pressure = 282685*pascal;
192  G4Material* __attribute__ ((unused))
193  matGasHydrogen_00097991_Diatomic_NonSTP = new G4Material(name, density, nelements, kStateGas, temperature, pressure);
194  matGasHydrogen_00097991_Diatomic_NonSTP -> AddElement(elH,2);
195 
196 
197 
198 
199  // Gas H2 .00047577
200  name = "H2Gas_00047577";
201  density = 0.00047577*g/cm3;
202  nelements = 1;
203  G4Material* __attribute__ ((unused))
204  matGasHydrogen_00047577 = new G4Material(name, density, nelements);
205  matGasHydrogen_00047577 -> AddElement(elH,1);
206 
207 
208  // Gas H2 .00047577 Non-STP
209  name = "H2Gas_00047577_NonSTP";
210  density = 0.00047577*g/cm3;
211  nelements = 1;
212  temperature = 64*kelvin;
213  pressure = 125484.6*pascal;
214  G4Material* __attribute__ ((unused))
215  matGasHydrogen_00047577_NonSTP = new G4Material(name, density, nelements, kStateGas, temperature, pressure);
216  matGasHydrogen_00047577_NonSTP -> AddElement(elH,1);
217 
218 
219 
220 
221  // Gas H2 .00047577 Diatomic
222  name = "H2Gas_00047577_Diatomic";
223  density = 0.00047577*g/cm3;
224  nelements = 1;
225  G4Material* __attribute__ ((unused))
226  matGasHydrogen_00047577_Diatomic = new G4Material(name, density, nelements);
227  matGasHydrogen_00047577_Diatomic -> AddElement(elH,2);
228 
229 
230 
231  // Gas H2 .00047577 Non-STP Diatomic
232  name = "H2Gas_00047577_Diatomic_NonSTP";
233  density = 0.00047577*g/cm3;
234  nelements = 1;
235  temperature = 64*kelvin;
236  pressure = 125484.6*pascal;
237  G4Material* __attribute__ ((unused))
238  matGasHydrogen_00047577_Diatomic_NonSTP = new G4Material(name, density, nelements, kStateGas, temperature, pressure);
239  matGasHydrogen_00047577_Diatomic_NonSTP -> AddElement(elH,2);
240 
241 
242  // Gas H2 .000738502 Non-STP Diatomic
243  name = "H2Gas_000738502_Diatomic_NonSTP";
244  density = 0.000738502*g/cm3;
245  nelements = 1;
246  temperature = 67*kelvin;
247  pressure = 29.599954187*pascal;
248  G4Material* __attribute__ ((unused))
249  matGasHydrogen_000738502_Diatomic_NonSTP = new G4Material(name, density, nelements, kStateGas, temperature, pressure);
250  matGasHydrogen_000738502_Diatomic_NonSTP -> AddElement(elH,2);
251 
252 
253  // Helium gas
254  name = "HeGas";
255  density = 0.1787*mg/cm3;
256  nelements = 1;
257  G4Material* __attribute__ ((unused))
258  matGasHelium = new G4Material(name,density,nelements, kStateGas, 273.15*kelvin,1.*atmosphere);
259  matGasHelium ->AddElement(elHe,1);
260 
261  // Liquid Helium 4
262  name = "HeLiquid";
263  density = 0.1249*g/cm3;
264  nelements = 1;
265  G4Material* __attribute__ ((unused))
266  matLiquidHelium = new G4Material(name, density, nelements);
267  matLiquidHelium -> AddElement(elHe,1);
268 
269  // Al material
270  name = "Aluminum";
271  density = 2.700*g/cm3;
272  nelements = 1;
273  G4Material* __attribute__ ((unused))
274  matAl = new G4Material(name,density,nelements);
275  matAl -> AddElement(elAl,1);
276  //matAl -> GetIonisation() -> SetMeanExcitationEnergy(166*eV);
277 
278  // Al Alloy material
279  name = "AlAlloy";
280  density = 2.804*g/cm3; //Mean density from Greg's Target Elog 21
281  ncomponents = 9;
282  G4Material* __attribute__ ((unused))
283  matAlAlloy = new G4Material(name,density,ncomponents);
284  //Element composition breakdown from Greg's Target Elog 30.
285  matAlAlloy-> AddElement(elAl, fractionmass = 88.70*CLHEP::perCent);
286  matAlAlloy-> AddElement(elZn, fractionmass = 6.3*CLHEP::perCent);
287  matAlAlloy-> AddElement(elMg, fractionmass = 2.7*CLHEP::perCent);
288  matAlAlloy-> AddElement(elCu, fractionmass = 1.8*CLHEP::perCent);
289  matAlAlloy-> AddElement(elCr, fractionmass = 0.21*CLHEP::perCent);
290  matAlAlloy-> AddElement(elFe, fractionmass = 0.12*CLHEP::perCent);
291  matAlAlloy-> AddElement(elSi, fractionmass = 0.10*CLHEP::perCent);
292  matAlAlloy-> AddElement(elMn, fractionmass = 0.04*CLHEP::perCent);
293  matAlAlloy-> AddElement(elTi, fractionmass = 0.03*CLHEP::perCent);
294 
295  // USCarbon material
296  name = "USCarbon";
297  density = 1.700*g/cm3;
298  nelements = 1;
299  G4Material* __attribute__ ((unused))
300  matUSC = new G4Material(name,density,nelements);
301  matUSC -> AddElement(elC,1);
302 
303  // DSCarbon material
304  name = "DSCarbon";
305  density = 2.205*g/cm3;
306  nelements = 1;
307  G4Material* __attribute__ ((unused))
308  matDSC = new G4Material(name,density,nelements);
309  matDSC -> AddElement(elC,1);
310 
311  // gaseous Argon
312  name = "ArgonGas";
313  density = 1.7836*mg/cm3; // STP
314  nelements = 1;
315  G4Material* __attribute__ ((unused))
316  matArgonGas = new G4Material(name,density,nelements, kStateGas, 273.15*kelvin,1.*atmosphere);
317  matArgonGas -> AddElement(elAr, 1);
318  //matArgonGas -> GetIonisation() -> SetMeanExcitationEnergy(188*eV);
319 
320  // Iron material
321  name = "Iron";
322  A = 55.85*g/mole;
323  Z = 26.;
324  density = 7.87*g/cm3;
325  G4Material* __attribute__ ((unused))
326  matIron = new G4Material(name,Z,A,density);
327 
328  // Copper material
329  name = "Copper";
330  A = 63.54*g/mole;
331  Z = 29.;
332  density = 8.96*g/cm3;
333  G4Material* __attribute__ ((unused))
334  matCopper = new G4Material(name,Z,A,density);
335 
336  // Tin material
337  name = "Tin";
338  A = 118.69*g/mole;
339  Z = 50.;
340  density = 7.28*g/cm3;
341  G4Material* __attribute__ ((unused))
342  matSn = new G4Material(name,Z,A,density);
343 
344  // Antimony material (added June-10-09 by Jie Pan)
345  name = "Sb";
346  A = 121.76*g/mole;
347  Z = 51.;
348  density = 6.68*g/cm3;
349  G4Material* __attribute__ ((unused))
350  matSb = new G4Material(name,Z,A,density);
351 
352  // Lead material
353  name = "Lead";
354  A = 207.19*g/mole;
355  Z = 82.;
356  density = 11.35*g/cm3;
357  G4Material* __attribute__ ((unused))
358  matPb = new G4Material(name,Z,A,density);
359 
360  // Photocathode material, approximated as elemental cesium
361  name = "Photocathode";
362  density = 5.0*g/cm3; // true??
363  nelements = 1;
364  G4Material* __attribute__ ((unused))
365  matPhotocathode = new G4Material(name,density,nelements);
366  matPhotocathode -> AddElement(elK, 1);
367 
368  //=============================================================
369  //
370  // define a material from elements. case 1: chemical molecule
371  //
372  //=============================================================
373 
374  // Xe gas
375  name = "XenonGas";
376  density = 5.458*mg/cm3;
377  ncomponents = 1;
378  G4Material* __attribute__ ((unused))
379  matXe = new G4Material(name,density, ncomponents, kStateGas,273.15*kelvin,1.*atmosphere);
380  matXe -> AddElement(elXe,1);
381 
382  // CO2 , STP
383  name = "CO2";
384  density = 1.818*mg/cm3;
385  ncomponents = 2;
386  G4Material* __attribute__ ((unused))
387  matCO2 = new G4Material(name,density, ncomponents, kStateGas,273.15*kelvin,1.*atmosphere);
388  matCO2-> AddElement(elC, natoms=1);
389  matCO2-> AddElement(elO, natoms=2);
390  matCO2-> GetIonisation() -> SetMeanExcitationEnergy(85*eV);
391 
392  // Water
393  name = "Water" ;
394  density = 1.000*g/cm3;
395  ncomponents = 2;
396  G4Material* __attribute__ ((unused))
397  matH2O = new G4Material(name,density ,ncomponents);
398  matH2O -> AddElement(elH,natoms=2);
399  matH2O -> AddElement(elO,natoms=1);
400  matH2O -> GetIonisation() -> SetMeanExcitationEnergy(75.0*eV);
401 
402  // Scintillator
403  name = "Scintillator";
404  density = 1.032*g/cm3;
405  ncomponents = 2;
406  G4Material* __attribute__ ((unused))
407  matScint = new G4Material(name, density, ncomponents);
408  matScint->AddElement(elC, natoms=9);
409  matScint->AddElement(elH, natoms=10);
410 
411  // Quartz SiO2 (e.g. Spectrosil 2000), optical properties will be added
412  name = "Quartz";
413  density = 2.200*g/cm3;
414  ncomponents = 2;
415  G4Material* __attribute__ ((unused))
416  matQuartz = new G4Material(name,density, ncomponents);
417  matQuartz->AddElement(elSi, natoms=1);
418  matQuartz->AddElement(elO , natoms=2);
419 
420  // Quartz SiO2 (e.g. Spectrosil 2000) without optical properties
421  name = "SiO2";
422  density = 2.200*g/cm3;
423  ncomponents = 2;
424  G4Material* __attribute__ ((unused))
425  matSiO2 = new G4Material(name,density, ncomponents);
426  matSiO2->AddElement(elSi, natoms=1);
427  matSiO2->AddElement(elO , natoms=2);
428 
429  // SiElast_Glue The glue used to glue together the quartz pieces
430  name = "SiElast_Glue";
431  density = 2.200*g/cm3;
432  ncomponents = 2;
433  G4Material* __attribute__ ((unused))
434  matSiElast = new G4Material(name,density, ncomponents);
435  matSiElast->AddElement(elSi, natoms=1);
436  matSiElast->AddElement(elO , natoms=2);
437 
438  // Lime Glass
439  name = "LimeGlass";
440  density = 2.200*g/cm3;
441  ncomponents = 2;
442  G4Material* __attribute__ ((unused))
443  matLimeGlass = new G4Material(name,density, ncomponents);
444  matLimeGlass->AddElement(elSi, natoms=1);
445  matLimeGlass->AddElement(elO , natoms=2);
446 
447  // Mylar
448  name = "Mylar";
449  density = 1.397 *g/cm3;
450  ncomponents = 3;
451  G4Material* __attribute__ ((unused))
452  matMylar = new G4Material(name,density , ncomponents);
453  matMylar -> AddElement(elH, natoms= 8);
454  matMylar -> AddElement(elC, natoms=10);
455  matMylar -> AddElement(elO, natoms= 4);
456 
457  // Mirror
458  name = "Mirror";
459  density = 1.397 *g/cm3;
460  ncomponents = 3;
461  G4Material* __attribute__ ((unused))
462  matMirror = new G4Material(name,density , ncomponents);
463  matMirror -> AddElement(elH, natoms= 8);
464  matMirror -> AddElement(elC, natoms=10);
465  matMirror -> AddElement(elO, natoms= 4);
466 
467  // Tyvek (High density Polyethylene)
468  // (...-CH2-CH2-...)*n
469  name = "Tyvek";
470  density = 0.96 *g/cm3;
471  ncomponents = 2;
472  G4Material* __attribute__ ((unused))
473  matTyvek = new G4Material(name,density , ncomponents);
474  matTyvek -> AddElement(elH, natoms= 2);
475  matTyvek -> AddElement(elC, natoms= 1);
476 
477  // Kevlar
478  // (-NH-C6H4-NH-CO-C6H4-CO-)*n
479  name = "Kevlar";
480  density = 1.44 *g/cm3;
481  ncomponents = 4;
482  G4Material* __attribute__ ((unused))
483  matKevlar = new G4Material(name,density , ncomponents);
484  matKevlar -> AddElement(elH, natoms=10 );
485  matKevlar -> AddElement(elC, natoms=14);
486  matKevlar -> AddElement(elO, natoms= 2);
487  matKevlar -> AddElement(elN, natoms= 2);
488 
489  //
490  // --- H O -----
491  // -N-(CH2)5-C-
492  //
493  name = "Nylon";
494  density = 0.805*g/cm3;
495  ncomponents = 4;
496  G4Material* __attribute__ ((unused))
497  matNylon = new G4Material(name,density , ncomponents);
498  matNylon -> AddElement(elH, natoms=11 );
499  matNylon -> AddElement(elC, natoms= 6);
500  matNylon -> AddElement(elO, natoms= 1);
501  matNylon -> AddElement(elN, natoms= 1);
502 
503  // H H
504  // ---C-C---
505  // H COOCH3
506  name = "Acrylic";
507  density = 1.14*g/cm3;
508  ncomponents = 3;
509  G4Material* __attribute__ ((unused))
510  matAcrylic = new G4Material(name,density , ncomponents);
511  matAcrylic -> AddElement(elH, natoms= 6);
512  matAcrylic -> AddElement(elC, natoms= 4);
513  matAcrylic -> AddElement(elO, natoms= 2);
514 
515  //
516  // Nema grade G10 or FR4
517  //
518  name = "NemaG10";
519  density = 1.70*g/cm3;
520  ncomponents = 4;
521  G4Material* __attribute__ ((unused))
522  matG10 = new G4Material(name,density , ncomponents);
523  matG10 -> AddElement(elSi, natoms=1);
524  matG10 -> AddElement(elO , natoms=2);
525  matG10 -> AddElement(elC , natoms=3);
526  matG10 -> AddElement(elH , natoms=3);
527 
528 
529  //======================================================================
530  //
531  // define a material from elements. case 2: mixture by fractional mass
532  //
533  //======================================================================
534 
535  // Air material: Air 18 degr.C and 58% humidity
536  name = "Air";
537  density = 1.214*mg/cm3;
538  ncomponents = 4;
539  G4Material* __attribute__ ((unused))
540  matAir = new G4Material(name,density,ncomponents);
541  matAir -> AddElement(elN, fractionmass=0.7494);
542  matAir -> AddElement(elO, fractionmass=0.2369);
543  matAir -> AddElement(elAr, fractionmass=0.0129);
544  matAir -> AddElement(elH, fractionmass=0.0008);
545  //matAir -> GetIonisation() -> SetMeanExcitationEnergy(85.7*eV);
546 
547  // Kapton
548  name = "Kapton";
549  density = 1.42*g/cm3;
550  ncomponents = 4;
551  G4Material* __attribute__ ((unused))
552  matKapton = new G4Material(name,density, ncomponents);
553  matKapton -> AddElement(elH, fractionmass = 0.0273);
554  matKapton -> AddElement(elC, fractionmass = 0.7213);
555  matKapton -> AddElement(elN, fractionmass = 0.0765);
556  matKapton -> AddElement(elO, fractionmass = 0.1749);
557  matKapton -> GetIonisation() -> SetMeanExcitationEnergy(79.6*eV);
558 
559  // Polyethylene
560  name = "Polyethylene";
561  density = 0.94 * g/cm3;
562  ncomponents = 2;
563  G4Material* __attribute__ ((unused))
564  matPolyethylene = new G4Material(name,density, ncomponents);
565  matPolyethylene -> AddElement(elH, fractionmass=0.14);
566  matPolyethylene -> AddElement(elC, fractionmass=0.86);
567 
568  // Polyacrylate
569  name = "Polyacrylate";
570  density = 1.19 * g/cm3;
571  ncomponents = 3;
572  G4Material* __attribute__ ((unused))
573  matPolyacrylate = new G4Material(name,density,ncomponents);
574  matPolyacrylate -> AddElement(elH, fractionmass=0.08);
575  matPolyacrylate -> AddElement(elC, fractionmass=0.60);
576  matPolyacrylate -> AddElement(elO, fractionmass=0.32);
577 
578  // VDC ArCO2 80/20
579  name = "ArCO2";
580  density = 0.0018*g/cm3; // to be checked
581  ncomponents = 2;
582  G4Material* __attribute__ ((unused))
583  matArCO2 = new G4Material(name,density,ncomponents);
584  matArCO2->AddMaterial(matArgonGas, fractionmass = 0.8);
585  matArCO2->AddMaterial(matCO2, fractionmass = 0.2);
586 
587  // ShieldingConcrete (The receipe is modified 06/19/2009 by Jie pan)
588  name = "ShieldingConcrete";
589  density = 2.7*g/cm3;
590  ncomponents = 6;
591  G4Material* __attribute__ ((unused))
592  matConcrete = new G4Material(name,density,ncomponents);
593  matConcrete -> AddElement(elO, fractionmass = 0.509);
594  matConcrete -> AddElement(elSi, fractionmass = 0.345);
595  matConcrete -> AddElement(elCa, fractionmass = 0.070);
596  matConcrete -> AddElement(elH, fractionmass = 0.004);
597  matConcrete -> AddElement(elFe, fractionmass = 0.038);
598  matConcrete -> AddElement(elAl, fractionmass = 0.034);
599  matConcrete -> GetIonisation() -> SetMeanExcitationEnergy(135.2*eV);
600 
601  // The material used in the final collimator design is Lead Antimony (~95% Lead and 5% Antimony)
602  // Added June-10-09 by Jie Pan
603  name = "PBA";
604  density = 11.005 * g/cm3;
605  ncomponents = 2;
606  G4Material* __attribute__ ((unused))
607  matCollimator = new G4Material(name,density,ncomponents);
608  matCollimator-> AddMaterial(matPb, fractionmass = 0.955);
609  matCollimator-> AddMaterial(matSb, fractionmass = 0.045);
610 
611  // Material for the collimators: High Leaded Tin Bronze
612  // Copper Alloy No. C94300
613  // see http://www/anchorbronze.com/c94300.html
614  //name = "CDA943";
615  //density = 9.29 * g/cm3;
616  //ncomponents = 3;
617  //G4Material* __attribute__ ((unused))
618  //matCollimator = new G4Material(name,density,ncomponents);
619  //matCollimator-> AddMaterial(matCopper, fractionmass = 0.695);
620  //matCollimator-> AddMaterial(matPb , fractionmass = 0.25);
621  //matCollimator-> AddMaterial(matSn , fractionmass = 0.055);
622 
623  // Stainless steel (Medical Physics, Vol 25, No 10, Oct 1998)
624  name = "StainlessSteel";
625  density = 8.02 * g/cm3;
626  ncomponents = 5;
627  G4Material* __attribute__ ((unused))
628  matStainlessSteel = new G4Material(name,density,ncomponents);
629  matStainlessSteel-> AddElement(elMn , fractionmass = 0.01);
630  matStainlessSteel-> AddElement(elSi , fractionmass = 0.02);
631  matStainlessSteel-> AddElement(elCr , fractionmass = 0.19);
632  matStainlessSteel-> AddElement(elNi , fractionmass = 0.10);
633  matStainlessSteel-> AddElement(elFe , fractionmass = 0.68);
634 
635  // TRT_CH2
636  name = "CH2";
637  density = 0.935*g/cm3;
638  ncomponents = 2;
639  G4Material* __attribute__ ((unused))
640  matCH2 = new G4Material(name, density, ncomponents);
641  matCH2->AddElement(elC, natoms=1);
642  matCH2->AddElement(elH, natoms=2);
643 
644  // Vacuum
645  name = "Vacuum";
646  A = 1.01*g/mole;
647  Z = 1.;
648  density = 1.e-25 *g/cm3;
649  pressure = 3.e-18*pascal;
650  temperature = 2.73*kelvin;
651  G4Material* __attribute__ ((unused))
652  matVacuum = new G4Material("Vacuum", Z, A, density,kStateGas,temperature,pressure);
653 
654  // LeadGlass
655  // --- Added 2012/09/07 by Fang Guo
656  name = "LeadGlass";
657  density = 6.220 * g/cm3;
658  ncomponents = 5;
659  G4Material* __attribute__ ((unused))
660  matLeadGlass = new G4Material(name, density, ncomponents);
661  matLeadGlass -> AddElement(elPb, fractionmass = 0.751938);
662  matLeadGlass -> AddElement(elO , fractionmass = 0.156453);
663  matLeadGlass -> AddElement(elSi, fractionmass = 0.080866);
664  matLeadGlass -> AddElement(elTi, fractionmass = 0.008092);
665  matLeadGlass -> AddElement(elAs, fractionmass = 0.002651);
666 
667  //Tungsten Alloy for WShutters
668  //Added Kurtis Bartlett 02/06/2012
669  //Mitech CW 68 Tungsten Alloy
670  name = "TungstenAlloy";
671  density = 13.93 *g/cm3;
672  ncomponents = 2;
673  G4Material* __attribute__ ((unused))
674  matTungstenAlloy = new G4Material(name, density, ncomponents);
675  matTungstenAlloy -> AddElement(elW, fractionmass = 0.68);
676  matTungstenAlloy -> AddElement(elCu , fractionmass = 0.32);
677 
678  //========================================
679  // Hydrocarbones, metane and others
680  //========================================
681 
682  // CH4: Metane, STP
683  name = "Methane";
684  density = 0.7174*mg/cm3 ;
685  ncomponents = 2;
686  G4Material* __attribute__ ((unused))
687  matMetane = new G4Material(name,density,ncomponents);
688  matMetane->AddElement(elC, natoms= 1) ;
689  matMetane->AddElement(elH, natoms= 4) ;
690 
691  // C3H8: Propane, STP
692  name = "Propane";
693  density = 2.005*mg/cm3 ;
694  ncomponents = 2;
695  G4Material* __attribute__ ((unused))
696  matPropane = new G4Material(name,density,ncomponents);
697  matPropane->AddElement(elC, natoms= 3) ;
698  matPropane->AddElement(elH, natoms= 8) ;
699 
700  // C4H10 : iso-Butane (methylpropane), STP
701  name = "IsoButane";
702  density = 2.67*mg/cm3 ;
703  ncomponents = 2;
704  G4Material* __attribute__ ((unused))
705  matIsobutane = new G4Material(name,density,ncomponents);
706  matIsobutane->AddElement(elC,natoms= 4) ;
707  matIsobutane->AddElement(elH,natoms= 10) ;
708 
709  // C2H6 : Ethane, STP
710  name = "Ethane";
711  density = 1.356*mg/cm3 ;
712  ncomponents = 2;
713  G4Material* __attribute__ ((unused))
714  matEthane = new G4Material(name,density,ncomponents);
715  matEthane -> AddElement(elC, natoms= 2) ;
716  matEthane -> AddElement(elH, natoms= 6) ;
717  matEthane -> GetIonisation() -> SetMeanExcitationEnergy(45.4*eV);
718 
719  // Argon-Ethane40-60 by mass, STP
720  name = "Ar-C2H6_40-60";
721  density = 1.46920*mg/cm3 ;
722  ncomponents = 2;
723  G4Material* __attribute__ ((unused))
724  matVDCGas = new G4Material(name,density,ncomponents);
725  matVDCGas -> AddMaterial(matArgonGas , fractionmass = 0.40) ;
726  matVDCGas -> AddMaterial(matEthane , fractionmass = 0.60) ;
727 
728 
729  // Print out Material Table
730  //G4cout << *(G4Material::GetMaterialTable()) << G4endl;
731 
732  //============================================================================================
733  // Optical Propeties
734  //============================================================================================
735 
736  const G4int nEntries = 9;
737 
738  G4double PhotonEnergy[nEntries] =
739  { 1.54986*eV, // 800 nm
740  1.77127*eV, // 700 nm
741  2.06648*eV, // 600 nm
742  2.47978*eV, // 500 nm
743  3.09973*eV, // 400 nm
744  4.13297*eV, // 300 nm
745  4.95956*eV, // 250 nm
746  5.51063*eV, // 225 nm
747  5.90424*eV // 210 nm
748  };
749 
750 //===========================
751 // Optical Properties of Air
752 //===========================
753 
754 // exact values can be taken from KamLAND code
755 
756  G4double RefractiveIndex_Air[nEntries] =
757  { 1.00, // 800 nm
758  1.00, // 700 nm
759  1.00, // 600 nm
760  1.00, // 500 nm
761  1.00, // 400 nm
762  1.00, // 300 nm
763  1.00, // 250 nm
764  1.00, // 225 nm
765  1.00 // 210 nm
766  };
767 
768  // normally air is very transparent to light in the visual spectrum,
769  // but there I'm suppressing the optical tracking in air:
770  // Don't show the cerenkov light leakage (detector->air)
771 // G4double AbsorptionCoeff_Air[nEntries] =
772 // { 1e-3*m, // 800 nm
773 // 1e-3*m, // 700 nm
774 // 1e-3*m, // 600 nm
775 // 1e-3*m, // 500 nm
776 // 1e-3*m, // 400 nm
777 // 1e-3*m, // 300 nm
778 // 1e-3*m, // 250 nm
779 // 1e-3*m, // 225 nm
780 // 1e-3*m // 210 nm
781 // };
782  G4double AbsorptionCoeff_Air[nEntries] ={
783  1e1*m, // 800 nm
784  1e1*m, // 700 nm
785  1e1*m, // 600 nm
786  1e1*m, // 500 nm
787  1e1*m, // 400 nm
788  1e1*m, // 300 nm
789  1e1*m, // 250 nm
790  1e1*m, // 225 nm
791  1e1*m // 210 nm
792  };
793 
794  G4MaterialPropertiesTable* myMPT_Air = new G4MaterialPropertiesTable();
795  myMPT_Air->AddProperty("RINDEX", PhotonEnergy, RefractiveIndex_Air, nEntries);
796  myMPT_Air->AddProperty("ABSLENGTH", PhotonEnergy, AbsorptionCoeff_Air, nEntries);
797 
798  matAir->SetMaterialPropertiesTable(myMPT_Air);
799 
800 
801 //=======================================
802 // Optical Properties of Soda Lime Glass
803 //=======================================
804 
805  //*************************************************
806  // could not find anything in the literature + web
807  // about the optical properties of lime glass ...
808  // so here we have only "educated guesses"
809  //**************************************************
810 
811 // values taken from KamLAND code
812 
813  G4double RefractiveIndex_LimeGlass[nEntries] =
814  { 1.52, // 800 nm
815  1.52, // 700 nm
816  1.52, // 600 nm pretty close
817  1.52, // 500 nm
818  1.52, // 400 nm pretty close
819  1.52, // 300 nm
820  1.52, // 250 nm
821  1.52, // 225 nm fiction
822  1.52 // 210 nm
823  };
824 
825 
826  G4double AbsorptionCoeff_LimeGlass[nEntries] =
827  { 1.0e3*m, // 800 nm
828  1.0e3*m, // 700 nm
829  1.0e3*m, // 600 nm
830  1.0e3*m, // 500 nm
831  1.0e3*m, // 400 nm
832  1.0e3*m, // 300 nm
833  1.0e3*m, // 250 nm
834  1.0e3*m, // 225 nm
835  1.0e3*m // 210 nm
836  };
837 
838  G4MaterialPropertiesTable* myMPT_LimeGlass = new G4MaterialPropertiesTable();
839  myMPT_LimeGlass->AddProperty("RINDEX", PhotonEnergy, RefractiveIndex_LimeGlass , nEntries);
840  myMPT_LimeGlass->AddProperty("ABSLENGTH", PhotonEnergy, AbsorptionCoeff_LimeGlass , nEntries);
841 
842  matLimeGlass->SetMaterialPropertiesTable(myMPT_LimeGlass);
843 
844 
845 //====================================
846 // Optical Properties of Fused Silica
847 //====================================
848 
849  // Fused Silica (Spectrosil 2000) for the Cerenkov Detector
850  // See Elog entry #43, Software
851  G4double RefractiveIndex_FusedSilica[nEntries] =
852  { 1.45338, // 800 nm
853  1.45536, // 700 nm
854  1.45810, // 600 nm
855  1.46239, // 500 nm
856  1.47018, // 400 nm
857  1.48786, // 300 nm
858  1.50751, // 250 nm
859  1.52422, // 225 nm
860  1.53842 // 210 nm
861  };
862 
863  // Given by the BaBar Collaboration for the DIRC bar
864  // BaBar Note #220
865 // G4double AbsorptionCoeff_FusedSilica[nEntries] =
866 // {1/0.0038*m, // 800 nm pi*thumb extrapolated
867 // 1/0.0040*m, // 700 nm pi*thumb extrapolated
868 // 1/0.0044*m, // 600 nm
869 // 1/0.0050*m, // 500 nm
870 // 1/0.0076*m, // 400 nm
871 // 1/0.0620*m, // 300 nm
872 // 1/1.3500*m, // 250 nm
873 // 1/8.0000*m, // 225 nm
874 // 1/100.00*m // 210 nm
875 // };
876 
877  G4double AbsorptionCoeff_FusedSilica[nEntries] =
878  { 263.16*m, // 800 nm pi*thumb extrapolated
879  250.00*m, // 700 nm pi*thumb extrapolated
880  227.27*m, // 600 nm
881  200.00*m, // 500 nm
882  131.58*m, // 400 nm
883  16.13*m, // 300 nm
884  0.74*m, // 250 nm
885  0.125*m, // 225 nm
886  0.010*m // 210 nm
887  };
888 
889  G4MaterialPropertiesTable* myMPT_FusedSilica = new G4MaterialPropertiesTable();
890  myMPT_FusedSilica->AddProperty("RINDEX", PhotonEnergy, RefractiveIndex_FusedSilica , nEntries);
891  myMPT_FusedSilica->AddProperty("ABSLENGTH", PhotonEnergy, AbsorptionCoeff_FusedSilica , nEntries);
892 
893  matQuartz->SetMaterialPropertiesTable(myMPT_FusedSilica);
894 
895  //*************************************************************************************************
896 
897 
898 //====================================
899 // Optical Properties of Silicon Elastomer Glue
900 //====================================
901 
902  // Fused Silica (Spectrosil 2000) for the Cerenkov Detector
903  // See Elog entry #43, Software
904  G4double RefractiveIndex_SilElast[nEntries] =
905  { 1.405, // 800 nm
906  1.405, // 700 nm
907  1.405, // 600 nm
908  1.405, // 500 nm
909  1.405, // 400 nm
910  1.405, // 300 nm
911  1.405, // 250 nm
912  1.405, // 225 nm
913  1.405 // 210 nm
914  };
915 
916 
917  G4double AbsorptionCoeff_SilElast[nEntries] =
918  { 263.16*m, // 800 nm pi*thumb extrapolated
919  250.00*m, // 700 nm pi*thumb extrapolated
920  227.27*m, // 600 nm
921  200.00*m, // 500 nm
922  131.58*m, // 400 nm
923  16.13*m, // 300 nm
924  0.74*m, // 250 nm
925  0.125*m, // 225 nm
926  0.010*m // 210 nm
927  };
928 
929  G4MaterialPropertiesTable* myMPT_SilElast = new G4MaterialPropertiesTable();
930  myMPT_SilElast->AddProperty("RINDEX", PhotonEnergy, RefractiveIndex_SilElast , nEntries);
931  myMPT_SilElast->AddProperty("ABSLENGTH", PhotonEnergy, AbsorptionCoeff_SilElast , nEntries);
932 
933  matSiElast->SetMaterialPropertiesTable(myMPT_SilElast);
934 
935  //*************************************************************************************************
936 
937 
938  G4double reflind_Mirror[nEntries] ={
939  1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
940  };
941  G4double refrind_Mirror[nEntries] ={
942  0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
943  };
944 
945  G4double abslength_Mirror[nEntries] ={
946  1.0e3*m,1.0e3*m,1.0e3*m,1.0e3*m,1.0e3*m,1.0e3*m,1.0e3*m,1.0e3*m,1.0e3*m
947  };
948 
949  G4MaterialPropertiesTable* myMPT_Mirror = new G4MaterialPropertiesTable();
950  myMPT_Mirror->AddProperty("REFLECTIVITY", PhotonEnergy, reflind_Mirror, nEntries);
951  myMPT_Mirror->AddProperty("RINDEX", PhotonEnergy, refrind_Mirror, nEntries);
952  myMPT_Mirror->AddProperty("ABSLENGTH", PhotonEnergy, abslength_Mirror, nEntries);
953 
954  matMirror->SetMaterialPropertiesTable(myMPT_Mirror);
955 
956 // G4double reflind_Photocathode[nEntries] ={
957 // 1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
958 // };
959 // G4double refrind_Photocathode[nEntries] ={
960 // 1.52,1.52,1.52,1.52,1.52,1.52,1.52,1.52,1.52
961 // };
962 
963 // G4double abslength_Photocathode[nEntries] ={
964 // 1.0e-3*m,1.0e-3*m,1.0e-3*m,1.0e-3*m,1.0e-3*m,1.0e-3*m,1.0e-3*m,1.0e-3*m,1.0e-3*m
965 // };
966 
967 // G4MaterialPropertiesTable* myMPT_Photocathode = new G4MaterialPropertiesTable();
968 // // myMPT_Photocathode->AddProperty("REFLECTIVITY", PhotonEnergy, reflind_Photocathode, nEntries);
969 // myMPT_Photocathode->AddProperty("RINDEX", PhotonEnergy, refrind_Photocathode, nEntries);
970 // myMPT_Photocathode->AddProperty("ABSLENGTH", PhotonEnergy, abslength_Photocathode, nEntries);
971 
972 // matPhotocathode->SetMaterialPropertiesTable(myMPT_Photocathode);
973 
974  G4cout << G4endl << "###### Leaving QweakSimMaterial::QweakSimMaterial() " << G4endl << G4endl;
975 }
G4NistManager * fNistManager