File indexing completed on 2026-04-01 07:50:20
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038 #include "Materials.hh"
0039
0040 #include "G4Material.hh"
0041 #include "G4MaterialTable.hh"
0042 #include "G4SystemOfUnits.hh"
0043 #include "G4UnitsTable.hh"
0044
0045
0046
0047 Materials* Materials::fgInstance = 0;
0048
0049
0050
0051 Materials* Materials::GetInstance()
0052 {
0053 if (!fgInstance) {
0054 fgInstance = new Materials();
0055 }
0056 return fgInstance;
0057 }
0058
0059
0060
0061 Materials::Materials()
0062 {
0063 fgInstance = this;
0064 Initialise();
0065 }
0066
0067
0068
0069 Materials::~Materials() {}
0070
0071
0072
0073 void Materials::Initialise()
0074 {
0075 G4String name, symbol;
0076 G4double a, z;
0077 G4double density, fractionmass;
0078 G4int nel, ncomponents;
0079
0080
0081
0082 a = 1.01 * g / mole;
0083 G4Element* elH = new G4Element(name = "Hydrogen", symbol = "H", z = 1., a);
0084
0085 a = 6.94 * g / mole;
0086 G4Element* elLi = new G4Element(name = "Lithium", symbol = "Li", z = 3., a);
0087
0088 a = 9.01 * g / mole;
0089 G4Element* elBe = new G4Element(name = "Berillium", symbol = "Be", z = 4., a);
0090
0091 a = 12.01 * g / mole;
0092 G4Element* elC = new G4Element(name = "Carbon", symbol = "C", z = 6., a);
0093
0094 a = 14.01 * g / mole;
0095 G4Element* elN = new G4Element(name = "Nitrogen", symbol = "N", z = 7., a);
0096
0097 a = 16.00 * g / mole;
0098 G4Element* elO = new G4Element(name = "Oxygen", symbol = "O", z = 8., a);
0099
0100 a = 39.948 * g / mole;
0101 G4Element* elAr = new G4Element(name = "Argon", symbol = "Ar", z = 18., a);
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116 density = 2.700 * g / cm3;
0117 a = 26.98 * g / mole;
0118 new G4Material(name = "Al", z = 13., a, density);
0119
0120
0121
0122
0123
0124
0125
0126
0127 density = 0.935 * g / cm3;
0128 G4Material* TRT_CH2 = new G4Material(name = "TRT_CH2", density, nel = 2);
0129 TRT_CH2->AddElement(elC, 1);
0130 TRT_CH2->AddElement(elH, 2);
0131
0132
0133
0134 density = 0.059 * g / cm3;
0135 G4Material* Radiator = new G4Material(name = "Radiator", density, nel = 2);
0136 Radiator->AddElement(elC, 1);
0137 Radiator->AddElement(elH, 2);
0138
0139
0140
0141 density = 0.145 * g / cm3;
0142 G4Material* CarbonFiber = new G4Material(name = "CarbonFiber", density, nel = 1);
0143 CarbonFiber->AddElement(elC, 1);
0144
0145
0146
0147 density = 0.534 * g / cm3;
0148 G4Material* Li = new G4Material(name = "Li", density, nel = 1);
0149 Li->AddElement(elLi, 1);
0150
0151
0152
0153 density = 1.848 * g / cm3;
0154 G4Material* Be = new G4Material(name = "Be", density, nel = 1);
0155 Be->AddElement(elBe, 1);
0156
0157
0158
0159 density = 1.39 * g / cm3;
0160 G4Material* Mylar = new G4Material(name = "Mylar", density, nel = 3);
0161 Mylar->AddElement(elO, 2);
0162 Mylar->AddElement(elC, 5);
0163 Mylar->AddElement(elH, 4);
0164
0165
0166
0167 density = 1.413 * g / cm3;
0168 G4Material* Kapton = new G4Material(name = "Kapton", density, nel = 4);
0169 Kapton->AddElement(elO, 5);
0170 Kapton->AddElement(elC, 22);
0171 Kapton->AddElement(elN, 2);
0172 Kapton->AddElement(elH, 10);
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183
0184 G4Material* CH2 = new G4Material("CH2", 0.91 * g / cm3, 2);
0185 CH2->AddElement(elH, 2);
0186 CH2->AddElement(elC, 1);
0187
0188
0189
0190
0191
0192
0193
0194 density = 0.178 * mg / cm3;
0195 a = 4.0026 * g / mole;
0196 G4Material* He = new G4Material(name = "He", z = 2., a, density);
0197
0198
0199
0200 density = 0.900 * mg / cm3;
0201 a = 20.179 * g / mole;
0202 new G4Material(name = "Ne", z = 10., a, density);
0203
0204
0205
0206 density = 1.7836 * mg / cm3;
0207 G4Material* Argon = new G4Material(name = "Argon", density, ncomponents = 1);
0208 Argon->AddElement(elAr, 1);
0209
0210
0211
0212 density = 3.700 * mg / cm3;
0213 a = 83.80 * g / mole;
0214 G4Material* Kr = new G4Material(name = "Kr", z = 36., a, density);
0215
0216
0217
0218 density = 5.858 * mg / cm3;
0219 a = 131.29 * g / mole;
0220 G4Material* Xe = new G4Material(name = "Xenon", z = 54., a, density);
0221
0222
0223
0224
0225
0226
0227
0228 density = 0.7174 * mg / cm3;
0229 G4Material* metane = new G4Material(name = "CH4", density, nel = 2);
0230 metane->AddElement(elC, 1);
0231 metane->AddElement(elH, 4);
0232
0233
0234
0235 density = 2.005 * mg / cm3;
0236 G4Material* propane = new G4Material(name = "C3H8", density, nel = 2);
0237 propane->AddElement(elC, 3);
0238 propane->AddElement(elH, 8);
0239
0240
0241
0242 density = 2.67 * mg / cm3;
0243 G4Material* isobutane = new G4Material(name = "isoC4H10", density, nel = 2);
0244 isobutane->AddElement(elC, 4);
0245 isobutane->AddElement(elH, 10);
0246
0247
0248
0249
0250
0251
0252
0253 density = 1.977 * mg / cm3;
0254 G4Material* CO2 =
0255 new G4Material(name = "CO2", density, nel = 2, kStateGas, 273.15 * kelvin, 1. * atmosphere);
0256 CO2->AddElement(elC, 1);
0257 CO2->AddElement(elO, 2);
0258
0259
0260
0261 density = 1.977 * 273. * mg / cm3 / 293.;
0262 G4Material* CarbonDioxide = new G4Material(name = "CO2_2", density, nel = 2);
0263 CarbonDioxide->AddElement(elC, 1);
0264 CarbonDioxide->AddElement(elO, 2);
0265
0266
0267
0268 density = 1.25053 * mg / cm3;
0269 G4Material* Nitrogen = new G4Material(name = "N2", density, ncomponents = 1);
0270 Nitrogen->AddElement(elN, 2);
0271
0272
0273
0274 density = 1.4289 * mg / cm3;
0275 G4Material* Oxygen = new G4Material(name = "O2", density, ncomponents = 1);
0276 Oxygen->AddElement(elO, 2);
0277
0278
0279
0280
0281
0282
0283
0284
0285
0286
0287
0288
0289
0290
0291
0292
0293
0294
0295
0296
0297
0298
0299 density = 1.2928 * mg / cm3;
0300 G4Material* Air = new G4Material(name = "Air", density, ncomponents = 3);
0301 Air->AddMaterial(Nitrogen, fractionmass = 0.7557);
0302 Air->AddMaterial(Oxygen, fractionmass = 0.2315);
0303 Air->AddMaterial(Argon, fractionmass = 0.0128);
0304
0305
0306
0307
0308
0309
0310
0311 density = 4.9 * mg / cm3;
0312 G4Material* Xe15CO2 = new G4Material(name = "Xe15CO2", density, ncomponents = 2);
0313 Xe15CO2->AddMaterial(Xe, fractionmass = 0.979);
0314 Xe15CO2->AddMaterial(CarbonDioxide, fractionmass = 0.021);
0315
0316
0317
0318 density = 5.0818 * mg / cm3;
0319 G4Material* Xe20CO2 = new G4Material(name = "Xe20CO2", density, ncomponents = 2);
0320 Xe20CO2->AddMaterial(Xe, fractionmass = 0.922);
0321 Xe20CO2->AddMaterial(CarbonDioxide, fractionmass = 0.078);
0322
0323
0324
0325 density = 4.358 * mg / cm3;
0326 G4Material* Xe27CO23O2 = new G4Material(name = "Xe27CO23O2", density, ncomponents = 3);
0327 Xe27CO23O2->AddMaterial(Xe, fractionmass = 0.87671);
0328 Xe27CO23O2->AddMaterial(CarbonDioxide, fractionmass = 0.11412);
0329 Xe27CO23O2->AddMaterial(Oxygen, fractionmass = 0.00917);
0330
0331
0332
0333 density = 3.601 * mg / cm3;
0334 G4Material* Kr20CO2 = new G4Material(name = "Kr20CO2", density, ncomponents = 2);
0335 Kr20CO2->AddMaterial(Kr, fractionmass = 0.89);
0336 Kr20CO2->AddMaterial(CarbonDioxide, fractionmass = 0.11);
0337
0338
0339
0340 density = 1.963 * 273. * mg / cm3 / 293.;
0341 G4Material* Xe55He15CH4 = new G4Material(name = "Xe55He15CH4", density, ncomponents = 3);
0342 Xe55He15CH4->AddMaterial(Xe, 0.895);
0343 Xe55He15CH4->AddMaterial(He, 0.050);
0344 Xe55He15CH4->AddMaterial(metane, 0.055);
0345
0346
0347
0348 density = 5.344 * mg / cm3;
0349 G4Material* Xe10CH4 = new G4Material(name = "Xe10CH4", density, ncomponents = 2);
0350 Xe10CH4->AddMaterial(Xe, fractionmass = 0.987);
0351 Xe10CH4->AddMaterial(metane, fractionmass = 0.013);
0352
0353
0354
0355 density = 5.601 * mg / cm3;
0356 G4Material* Xe5CH4 = new G4Material(name = "Xe5CH4", density, ncomponents = 2);
0357 Xe5CH4->AddMaterial(Xe, fractionmass = 0.994);
0358 Xe5CH4->AddMaterial(metane, fractionmass = 0.006);
0359
0360
0361
0362 density = 4.83 * mg / cm3;
0363 G4Material* Xe20CH4 = new G4Material(name = "Xe20CH4", density, ncomponents = 2);
0364 Xe20CH4->AddMaterial(Xe, fractionmass = 0.97);
0365 Xe20CH4->AddMaterial(metane, fractionmass = 0.03);
0366
0367
0368
0369 density = 1.709 * mg / cm3;
0370 G4Material* Ar7CH4 = new G4Material(name = "Ar7CH4", density, ncomponents = 2);
0371 Ar7CH4->AddMaterial(Argon, fractionmass = 0.971);
0372 Ar7CH4->AddMaterial(metane, fractionmass = 0.029);
0373
0374
0375
0376 density = 3.491 * mg / cm3;
0377 G4Material* Kr7CH4 = new G4Material(name = "Kr7CH4", density, ncomponents = 2);
0378 Kr7CH4->AddMaterial(Kr, fractionmass = 0.986);
0379 Kr7CH4->AddMaterial(metane, fractionmass = 0.014);
0380
0381
0382
0383 density = 3.655 * mg / cm3;
0384 G4Material* XeArCH4 = new G4Material(name = "XeArCH4", density, ncomponents = 2);
0385 XeArCH4->AddMaterial(Xe5CH4, fractionmass = 0.766);
0386 XeArCH4->AddMaterial(Ar7CH4, fractionmass = 0.234);
0387
0388
0389
0390 density = 2.330 * g / cm3;
0391 a = 28.09 * g / mole;
0392 new G4Material(name = "Si", z = 14., a, density);
0393
0394
0395
0396
0397
0398
0399
0400
0401
0402
0403
0404
0405
0406
0407
0408
0409
0410
0411
0412
0413
0414
0415
0416
0417
0418
0419
0420
0421
0422
0423
0424
0425
0426
0427
0428
0429
0430
0431
0432
0433
0434
0435
0436
0437
0438
0439
0440
0441
0442
0443
0444 }
0445
0446
0447
0448 G4Material* Materials::GetMaterial(const G4String& name)
0449 {
0450
0451
0452 G4Material* ma = G4Material::GetMaterial(name);
0453
0454 G4cout << "Material is selected: " << ma->GetName() << G4endl;
0455 return ma;
0456 }