Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4NistMaterialBuilder.cc
Go to the documentation of this file.
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// GEANT4 Class file
29//
30// File name: G4NistMaterialBuilder
31//
32// Author: Vladimir Ivanchenko
33//
34// Creation date: 23.12.2004
35//
36// Modifications:
37// 31-10-05 Add chemical effect and gas properties (V.Ivanchenko)
38// 27.02.06 V.Ivanchenko add ConstructNewGasMaterial
39// 11.05.06 V.Ivanchenko add warning flag to FindMaterial method
40// 27.06.06 V.Ivanchenko fix graphite description
41// 27.07.07 V.Ivanchenko remove dependence on NistManager
42// 30.10.09 V.Ivanchenko update density of G4_GRAFITE from PDG'2008
43// added G4_GRAPHITE_POROUS
44// 03.11.09 A.Lechner changed following material names:
45// From G4_NYLON-6/6 to G4_NYLON-6-6
46// From G4_NYLON-6/10 to G4_NYLON-6-10
47// 12.12.10 A.Ivantchenko added following materials methodes:
48// BioChemicalMaterials() and SpaceMaterials(),
49// where new materials are introduced
50// 14.06.11 A.Ivantchenko updated body materials (G4_....ICRP)
51// according ICRU Report 46 (1992) instead of 1975
52// data from ICRU Report 37 used previously
53// 26.10.11 new scheme for G4Exception (mma)
54// 09.02.12 P.Gumplinger add ConstructNewIdealGasMaterial
55// 30.04.13 M.Trocme & S.Seltzer:
56// - Replace AddElementByWeightFraction() by AddElementByAtomCount()
57// as much as possible
58// - Comment out ill-defined material GLUCOSE
59// - Fixed density and atom composition of POLYCHLOROSTYRENE,
60// POLYVINYL_BUTYRAL, TERPHENYL
61// -------------------------------------------------------------------
62//
63// Class Description:
64//
65// Element data from the NIST DB on Atomic Weights and Isotope Compositions
66// http://physics.nist.gov/PhysRefData/Compositions/index.html
67
69
70#include "G4ApplicationState.hh"
71#include "G4AutoLock.hh"
72#include "G4Element.hh"
75#include "G4StateManager.hh"
76#include "G4SystemOfUnits.hh"
77
78#include <iomanip>
79
80namespace
81{
82G4Mutex nistMaterialMutex = G4MUTEX_INITIALIZER;
83}
84
85//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
86
88 : elmBuilder(eb), verbose(vb)
89{
90 Initialise();
91}
92
93//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
94
96{
97 if (verbose > 1) {
98 G4cout << "G4NistMaterialBuilder::FindOrBuildMaterial " << matname << G4endl;
99 }
100 G4String name = matname;
101 if ("G4_NYLON-6/6" == matname) {
102 name = "G4_NYLON-6-6";
103 }
104 else if (name == "G4_NYLON-6/10") {
105 name = "G4_NYLON-6-10";
106 }
107
108 G4Material* mat = FindMaterial(name);
109 if (mat != nullptr) {
110 return mat;
111 }
112
113 mat = BuildNistMaterial(name, warning);
114 return mat;
115}
116
117//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
118
119G4Material* G4NistMaterialBuilder::BuildNistMaterial(const G4String& name, G4bool warning)
120{
121 G4Material* mat = nullptr;
122 // Check if name inside DB
123 for (G4int i = 0; i < nMaterials; ++i) {
124 if (name == names[i]) {
125 if (matIndex[i] == -1) {
126 // Build new Nist material
127 mat = BuildMaterial(i);
128 }
129 else {
130 // Nist material was already built
131 const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable();
132 mat = (*theMaterialTable)[matIndex[i]];
133 }
134 return mat;
135 }
136 }
137
138 if ((verbose == 1 && warning) || verbose > 1) {
139 G4cout << "G4NistMaterialBuilder::FindOrBuildMaterial WARNING:"
140 << " material <" << name << "> is not found." << G4endl;
141 }
142 return mat;
143}
144
145//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
146
148{
150 if (mat == nullptr) {
151 mat = BuildNistMaterial(names[Z], warn);
152 }
153 return mat;
154}
155
156//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
157
158G4Material* G4NistMaterialBuilder::BuildMaterial(G4int i)
159{
160 G4Material* mat = nullptr;
161 if (i >= nMaterials) {
162 return mat;
163 }
164
165 G4AutoLock l(&nistMaterialMutex);
166 if (matIndex[i] >= 0) {
167 // Nist material was already built
168 const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable();
169 mat = (*theMaterialTable)[matIndex[i]];
170 }
171 else {
172 if (verbose > 1) {
173 G4cout << "G4NistMaterialBuilder: BuildMaterial #" << i << G4endl;
174 }
175
176 G4int nc = components[i];
177
178 // Check gas parameters:
179 // defaults may be changed via AddGas() method
180 G4double t = NTP_Temperature;
181 G4double p = CLHEP::STP_Pressure;
182 if (kStateGas == states[i]) {
183 size_t nn = idxGas.size();
184 if (nn > 0) {
185 for (size_t j = 0; j < nn; ++j) {
186 if (i == idxGas[j]) {
187 t = gasTemperature[j];
188 p = gasPressure[j];
189 break;
190 }
191 }
192 }
193 }
194 mat = new G4Material(names[i], densities[i], nc, states[i], t, p);
195
196 if (verbose > 1) {
197 G4cout << "New material nComponents= " << nc << G4endl;
198 }
199 if (nc > 0) {
200 G4int idx = indexes[i];
201 for (G4int j = 0; j < nc; ++j) {
202 G4int Z = elements[idx + j];
203 G4Element* el = elmBuilder->FindOrBuildElement(Z);
204 if (el == nullptr) {
205 G4cout << "G4NistMaterialBuilder::BuildMaterial:"
206 << " ERROR: elements Z= " << Z << " is not found"
207 << " for material " << names[i] << G4endl;
208 G4Exception("G4NistMaterialBuilder::BuildMaterial()", "mat103", FatalException,
209 "Failed to construct material");
210 return nullptr;
211 }
212 if (atomCount[i]) {
213 mat->AddElement(el, G4lrint(fractions[idx + j]));
214 }
215 else {
216 mat->AddElement(el, fractions[idx + j]);
217 }
218 }
219 }
220
221 // Ionisation potential can be defined via NIST DB or
222 // Chemical Formula (ICRU37 Report data)
223 G4IonisParamMat* ion = mat->GetIonisation();
224 G4double exc0 = ion->GetMeanExcitationEnergy();
225 G4double exc1 = exc0;
226 if (! chFormulas[i].empty()) {
227 mat->SetChemicalFormula(chFormulas[i]);
228 exc1 = ion->FindMeanExcitationEnergy(mat);
229 }
230 // If exists, NIST DB data always overwrites other data
231 if (ionPotentials[i] > 0.0) {
232 exc1 = ionPotentials[i];
233 }
234 if (exc0 != exc1) {
235 ion->SetMeanExcitationEnergy(exc1);
236 }
237
238 // Index in Material Table
239 matIndex[i] = (G4int)mat->GetIndex();
240 }
241 l.unlock();
242 return mat;
243}
244
245//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
246
248 const std::vector<G4String>& elm, const std::vector<G4int>& nbAtoms, G4double dens, G4State state,
249 G4double temp, G4double pres)
250{
251 // Material is in DB
252 G4Material* mat = FindOrBuildMaterial(name);
253 if (mat != nullptr) {
254 G4cout << "G4NistMaterialBuilder::ConstructNewMaterial:"
255 << " WARNING: the material <" << name << "> already exists." << G4endl;
256 G4cout << " New material will NOT be built!" << G4endl;
257 return mat;
258 }
259
260 // Material not in DB
261 auto els = (G4int)elm.size();
262 if (els == 0) {
263 G4cout << "G4NistMaterialBuilder::ConstructNewMaterial:"
264 << " WARNING: empty list of elements for " << name << G4endl;
265 G4cout << " New material will NOT be built!" << G4endl;
266 return nullptr;
267 }
268
269 // add parameters of material into internal vectors
270 // density in g/cm3, mean ionisation potential is not defined
271 G4bool stp = true;
272 if (state == kStateGas && (temp != NTP_Temperature || pres != CLHEP::STP_Pressure)) {
273 stp = false;
274 }
275
276 AddMaterial(name, dens * CLHEP::cm3 / CLHEP::g, 0, 0., els, state, stp);
277 if (! stp) {
278 AddGas(name, temp, pres);
279 }
280
281 for (G4int i = 0; i < els; ++i) {
282 AddElementByAtomCount(elmBuilder->GetZ(elm[i]), nbAtoms[i]);
283 }
284
285 return BuildMaterial(nMaterials - 1);
286}
287
288//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
289
291 const std::vector<G4String>& elm, const std::vector<G4double>& w, G4double dens, G4State state,
292 G4double temp, G4double pres)
293{
294 // Material is in DB
295 G4Material* mat = FindOrBuildMaterial(name);
296 if (mat != nullptr) {
297 G4cout << "G4NistMaterialBuilder::ConstructNewMaterial:"
298 << " WARNING: the material <" << name << "> already exists." << G4endl;
299 G4cout << " New material will NOT be built!" << G4endl;
300 return mat;
301 }
302
303 // Material not in DB
304 auto els = (G4int)elm.size();
305 if (els == 0) {
306 G4cout << "G4NistMaterialBuilder::ConstructNewMaterial:"
307 << " WARNING: empty list of elements for " << name << G4endl;
308 G4cout << " New material will NOT be built!" << G4endl;
309 return nullptr;
310 }
311
312 // add parameters of material into internal vectors
313 // density in g/cm3, mean ionisation potential is not defined
314 G4bool stp = true;
315 if (state == kStateGas && (temp != NTP_Temperature || pres != CLHEP::STP_Pressure)) {
316 stp = false;
317 }
318 AddMaterial(name, dens * CLHEP::cm3 / CLHEP::g, 0, 0., els, state, stp);
319 if (! stp) {
320 AddGas(name, temp, pres);
321 }
322
323 for (G4int i = 0; i < els; ++i) {
324 AddElementByWeightFraction(elmBuilder->GetZ(elm[i]), w[i]);
325 }
326
327 return BuildMaterial(nMaterials - 1);
328}
329
330//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
331
333 const G4String& name, const G4String& nameDB, G4double temp, G4double pres)
334{
335 // Material name is in DB
336 G4Material* mat = FindOrBuildMaterial(name);
337 if (mat != nullptr) {
338 G4cout << "G4NistMaterialBuilder::ConstructNewGasMaterial:"
339 << " WARNING: the material <" << name << "> already exists." << G4endl;
340 G4cout << " New material will NOT be built!" << G4endl;
341 return mat;
342 }
343
344 G4Material* bmat = FindOrBuildMaterial(nameDB);
345 if (bmat == nullptr) {
346 G4cout << "G4NistMaterialBuilder::ConstructNewGasMaterial:"
347 << " WARNING: the Name <" << nameDB
348 << "> is NOT in the database: no new gas will be constructed." << G4endl;
349 return nullptr;
350 }
351 if (bmat->GetState() != kStateGas) {
352 G4cout << "G4NistMaterialBuilder::ConstructNewGasMaterial:"
353 << " WARNING: <" << nameDB << "> is NOT a gas - no new gas will be constructed."
354 << G4endl;
355 return nullptr;
356 }
357
358 G4double dens = bmat->GetDensity() * pres * bmat->GetTemperature() / (temp * bmat->GetPressure());
359 mat = new G4Material(name, dens, bmat, kStateGas, temp, pres);
360
361 if (verbose > 1) {
362 G4cout << "G4NistMaterialBuilder::ConstructNewGasMaterial: done" << G4endl;
363 G4cout << &mat << G4endl;
364 }
365 return mat;
366}
367
368//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
369
371 const std::vector<G4String>& elm, const std::vector<G4int>& nbAtoms, G4double temp, G4double pres)
372{
373 G4State state = kStateGas;
374
375 // Material is in DB
376 G4Material* mat = FindOrBuildMaterial(name);
377 if (mat != nullptr) {
378 G4cout << "G4NistMaterialBuilder::ConstructNewMaterial:"
379 << " WARNING: the material <" << name << "> already exists." << G4endl;
380 G4cout << " New material will NOT be built!" << G4endl;
381 return mat;
382 }
383
384 // Material not in DB
385 auto els = (G4int)elm.size();
386 if (els == 0) {
387 G4cout << "G4NistMaterialBuilder::ConstructNewMaterial:"
388 << " WARNING: empty list of elements for " << name << G4endl;
389 G4cout << " New material will NOT be built!" << G4endl;
390 return nullptr;
391 }
392
393 // add parameters of material into internal vectors
394 // density in g/cm3, mean ionisation potential is not defined
395 G4bool stp = true;
396 if (temp != NTP_Temperature || pres != CLHEP::STP_Pressure) {
397 stp = false;
398 }
399
400 G4double massPerMole = 0.;
401
402 G4int Z = 0;
403 for (G4int i = 0; i < els; ++i) {
404 Z = elmBuilder->GetZ(elm[i]);
405 massPerMole += nbAtoms[i] * elmBuilder->GetAtomicMassAmu(Z) * CLHEP::amu_c2;
406 }
407
408 G4double dens = massPerMole / (CLHEP::Avogadro * CLHEP::k_Boltzmann * temp / pres);
409
410 if (els == 1) {
411 AddMaterial(name, dens, Z, 0., els, state, stp);
412 }
413 else {
414 AddMaterial(name, dens, 0, 0., els, state, stp);
415 for (G4int i = 0; i < els; ++i) {
416 AddElementByAtomCount(elmBuilder->GetZ(elm[i]), nbAtoms[i]);
417 }
418 }
419
420 if (! stp) {
421 AddGas(name, temp, pres);
422 }
423
424 return BuildMaterial(nMaterials - 1);
425}
426
427//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
428
429void G4NistMaterialBuilder::AddMaterial(const G4String& nameMat, G4double dens, G4int Z,
430 G4double pot, G4int ncomp, G4State state, G4bool stp)
431{
432 // add parameters of material into internal vectors
433 // density in g/cm3, mean ionisation potential in eV
434
435 // if ncomp == 1 then Z should be defined and
436 // AddElement should not be applied
437
438 if (nCurrent != 0) {
439 G4cout << "G4NistMaterialBuilder::AddMaterial WARNING: previous "
440 << "mixture " << nMaterials << " " << names[nMaterials] << " is not yet complete!"
441 << G4endl;
442 G4cout << " New material " << nameMat << " will not be added." << G4endl;
443 return;
444 }
445
446 // density in g/cm3, mean ionisation potential in eV
447
448 names.push_back(nameMat);
449 chFormulas.emplace_back("");
450 densities.push_back(dens * CLHEP::g / CLHEP::cm3);
451 ionPotentials.push_back(pot * CLHEP::eV);
452 states.push_back(state);
453 components.push_back(ncomp);
454 indexes.push_back(nComponents);
455 STP.push_back(stp);
456 matIndex.push_back(-1);
457 atomCount.push_back(false);
458
459 if (1 == ncomp && Z > 0) {
460 elements.push_back(Z);
461 fractions.push_back(1.0);
462 atomCount[nMaterials] = true;
463 ++nComponents;
464 nCurrent = 0;
465 }
466 else {
467 nCurrent = ncomp;
468 }
469
470 ++nMaterials;
471
472 if (verbose > 1) {
473 G4cout << "New material " << nameMat << " is prepared; "
474 << " nMaterials= " << nMaterials << " nComponents= " << nComponents
475 << " nCurrent= " << nCurrent << G4endl;
476 }
477}
478
479//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
480
482{
483 verbose = val;
484 elmBuilder->SetVerbose(verbose);
485}
486
487//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
488
490{
491 if (mnam == "simple") {
493 }
494 else if (mnam == "compound") {
496 }
497 else if (mnam == "hep") {
499 }
500 else if (mnam == "space") {
502 }
503 else if (mnam == "bio") {
505 }
506
507 else if (mnam == "all") {
513 }
514 else {
515 G4cout << "### G4NistMaterialBuilder::ListMaterials: Warning " << mnam << " list is not known."
516 << G4endl;
517 }
518}
519
520//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
521
523{
524 G4cout << "=======================================================" << G4endl;
525 G4cout << "### Simple Materials from the NIST Data Base ###" << G4endl;
526 G4cout << "=======================================================" << G4endl;
527 G4cout << " Z Name density(g/cm^3) I(eV) " << G4endl;
528 G4cout << "=======================================================" << G4endl;
529 for (G4int i = 1; i < nElementary; ++i) {
530 DumpElm(i);
531 }
532}
533
534//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
535
537{
538 G4cout << "=============================================================" << G4endl;
539 G4cout << "### Compound Materials from the NIST Data Base ##" << G4endl;
540 G4cout << "=============================================================" << G4endl;
541 G4cout << " Ncomp Name density(g/cm^3) I(eV) ChFormula" << G4endl;
542 G4cout << "=============================================================" << G4endl;
543 for (G4int i = nElementary; i < nNIST; ++i) {
544 DumpMix(i);
545 }
546 DumpMix(0);
547}
548
549//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
550
552{
553 G4cout << "=============================================================" << G4endl;
554 G4cout << "### HEP & Nuclear Materials ##" << G4endl;
555 G4cout << "=============================================================" << G4endl;
556 G4cout << " Ncomp Name density(g/cm^3) I(eV) ChFormula" << G4endl;
557 G4cout << "=============================================================" << G4endl;
558 for (G4int i = nNIST; i < nHEP; ++i) {
559 DumpMix(i);
560 }
561}
562
563//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
564
566{
567 G4cout << "=============================================================" << G4endl;
568 G4cout << "### Space ISS Materials ##" << G4endl;
569 G4cout << "=============================================================" << G4endl;
570 G4cout << " Ncomp Name density(g/cm^3) I(eV) ChFormula" << G4endl;
571 G4cout << "=============================================================" << G4endl;
572 for (G4int i = nHEP; i < nSpace; ++i) {
573 DumpMix(i);
574 }
575}
576
577//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
578
580{
581 G4cout << "=============================================================" << G4endl;
582 G4cout << "### Bio-Chemical Materials ##" << G4endl;
583 G4cout << "=============================================================" << G4endl;
584 G4cout << " Ncomp Name density(g/cm^3) I(eV) ChFormula" << G4endl;
585 G4cout << "=============================================================" << G4endl;
586 for (G4int i = nSpace; i < nMaterials; ++i) {
587 DumpMix(i);
588 }
589 G4cout << "=============================================================" << G4endl;
590}
591
592//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
593
594void G4NistMaterialBuilder::DumpElm(G4int i) const
595{
596 G4cout << std::setw(2) << i << " " << std::setw(6) << names[i] << std::setw(14)
597 << densities[i] * cm3 / g << std::setw(11) << ionPotentials[i] / eV << G4endl;
598}
599
600//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
601
602void G4NistMaterialBuilder::DumpMix(G4int i) const
603{
604 G4int nc = components[i];
605 G4cout << std::setw(2) << nc << " " << std::setw(26) << names[i] << " " << std::setw(10)
606 << densities[i] * cm3 / g << std::setw(10) << ionPotentials[i] / eV << " "
607 << chFormulas[i] << G4endl;
608 if (nc > 1) {
609 G4int imin = indexes[i];
610 G4int imax = imin + nc;
611 for (G4int j = imin; j < imax; ++j) {
612 G4cout << std::setw(10) << elements[j] << std::setw(14) << fractions[j] << G4endl;
613 }
614 }
615}
616
617//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
618
619void G4NistMaterialBuilder::AddGas(const G4String& nameMat, G4double t, G4double p)
620{
621 for (G4int i = 0; i < nMaterials; ++i) {
622 if (nameMat == names[i]) {
623 idxGas.push_back(i);
624 gasTemperature.push_back(t);
625 gasPressure.push_back(p);
626 return;
627 }
628 }
629 G4cout << "WARNING: G4NistMaterialBuilder::AddGas problem: there is no " << nameMat
630 << " in the list of materials." << G4endl;
631}
632
633//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
634
635void G4NistMaterialBuilder::AddElementByWeightFraction(G4int Z, G4double w)
636{
637 elements.push_back(Z);
638 fractions.push_back(w);
639 --nCurrent;
640 ++nComponents;
641 if (nCurrent == 0) {
642 G4int n = nMaterials - 1;
643 G4double sum = 0.0;
644 G4int imin = indexes[n];
645 G4int imax = imin + components[n];
646
647 if (! atomCount[n]) {
648 for (G4int i = imin; i < imax; ++i) {
649 sum += fractions[i];
650 }
651 if (sum > 0.0) {
652 for (G4int i = imin; i < imax; ++i) {
653 fractions[i] /= sum;
654 }
655 }
656 }
657 }
658}
659
660//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
661
662void G4NistMaterialBuilder::AddElementByWeightFraction(const G4String& name, G4double w)
663{
664 G4int Z = elmBuilder->GetZ(name);
665 AddElementByWeightFraction(Z, w);
666}
667
668//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
669
670void G4NistMaterialBuilder::AddElementByAtomCount(G4int Z, G4int nb)
671{
672 atomCount[nMaterials - 1] = true;
673 auto w = (G4double)nb;
674 AddElementByWeightFraction(Z, w);
675}
676
677//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
678
679void G4NistMaterialBuilder::AddElementByAtomCount(const G4String& name, G4int nb)
680{
681 atomCount[nMaterials - 1] = true;
682 G4int Z = elmBuilder->GetZ(name);
683 auto w = (G4double)nb;
684 AddElementByWeightFraction(Z, w);
685}
686
687//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
688
689void G4NistMaterialBuilder::Initialise()
690{
691 if (verbose > 0) {
692 G4cout << "### G4NistMaterialBuilder::Initialise()" << G4endl;
693 }
694 NistSimpleMaterials();
695 NistCompoundMaterials();
696 NistCompoundMaterials2();
697 HepAndNuclearMaterials();
698 SpaceMaterials();
699 BioChemicalMaterials();
700
701 if (verbose > 1) {
702 ListMaterials("all");
703 }
704}
705
706//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
707
708void G4NistMaterialBuilder::NistSimpleMaterials()
709{
710 // density in g/cm3, mean ionisation potential in eV
711 // clang-format off
712 AddMaterial("G4_WATER", 1.0, 0, 78., 2, kStateLiquid);
713 AddElementByAtomCount("H" , 2);
714 AddElementByAtomCount("O" , 1);
715 chFormulas[nMaterials-1] = "H_2O";
716
717 AddMaterial("G4_H" , 8.37480e-5, 1, 19.2, 1, kStateGas);
718 AddMaterial("G4_He", 1.66322e-4, 2, 41.8, 1, kStateGas);
719 AddMaterial("G4_Li", 0.534 , 3, 40. );
720 AddMaterial("G4_Be", 1.848 , 4, 63.7);
721 AddMaterial("G4_B" , 2.37 , 5, 76. );
722 AddMaterial("G4_C" , 2. , 6, 81. );
723 AddMaterial("G4_N" , 1.16520e-3, 7, 82. , 1, kStateGas);
724 AddMaterial("G4_O" , 1.33151e-3, 8, 95. , 1, kStateGas);
725 AddMaterial("G4_F" , 1.58029e-3, 9, 115. , 1, kStateGas);
726 AddMaterial("G4_Ne", 8.38505e-4, 10, 137. , 1, kStateGas);
727 AddMaterial("G4_Na", 0.971 , 11, 149. );
728 AddMaterial("G4_Mg", 1.74 , 12, 156. );
729 AddMaterial("G4_Al", 2.699 , 13, 166. );
730 AddMaterial("G4_Si", 2.33 , 14, 173. );
731 AddMaterial("G4_P" , 2.2 , 15, 173. );
732 AddMaterial("G4_S" , 2.0 , 16, 180. );
733 AddMaterial("G4_Cl", 2.99473e-3, 17, 174. , 1, kStateGas);
734 AddMaterial("G4_Ar", 1.66201e-3, 18, 188.0, 1, kStateGas);
735 AddMaterial("G4_K" , 0.862 , 19, 190. );
736 AddMaterial("G4_Ca", 1.55 , 20, 191. );
737 AddMaterial("G4_Sc", 2.989 , 21, 216. );
738 AddMaterial("G4_Ti", 4.54 , 22, 233. );
739 AddMaterial("G4_V" , 6.11 , 23, 245. );
740 AddMaterial("G4_Cr", 7.18 , 24, 257. );
741 AddMaterial("G4_Mn", 7.44 , 25, 272. );
742 AddMaterial("G4_Fe", 7.874 , 26, 286. );
743 AddMaterial("G4_Co", 8.9 , 27, 297. );
744 AddMaterial("G4_Ni", 8.902 , 28, 311. );
745 AddMaterial("G4_Cu", 8.96 , 29, 322. );
746 AddMaterial("G4_Zn", 7.133 , 30, 330. );
747 AddMaterial("G4_Ga", 5.904 , 31, 334. );
748 AddMaterial("G4_Ge", 5.323 , 32, 350. );
749 AddMaterial("G4_As", 5.73 , 33, 347. );
750 AddMaterial("G4_Se", 4.5 , 34, 348. );
751 AddMaterial("G4_Br", 7.07210e-3, 35, 343. , 1, kStateGas);
752 AddMaterial("G4_Kr", 3.47832e-3, 36, 352. , 1, kStateGas);
753 AddMaterial("G4_Rb", 1.532 , 37, 363. );
754 AddMaterial("G4_Sr", 2.54 , 38, 366. );
755 AddMaterial("G4_Y" , 4.469 , 39, 379. );
756 AddMaterial("G4_Zr", 6.506 , 40, 393. );
757 AddMaterial("G4_Nb", 8.57 , 41, 417. );
758 AddMaterial("G4_Mo", 10.22 , 42, 424. );
759 AddMaterial("G4_Tc", 11.50 , 43, 428. );
760 AddMaterial("G4_Ru", 12.41 , 44, 441. );
761 AddMaterial("G4_Rh", 12.41 , 45, 449. );
762 AddMaterial("G4_Pd", 12.02 , 46, 470. );
763 AddMaterial("G4_Ag", 10.5 , 47, 470. );
764 AddMaterial("G4_Cd", 8.65 , 48, 469. );
765 AddMaterial("G4_In", 7.31 , 49, 488. );
766 AddMaterial("G4_Sn", 7.31 , 50, 488. );
767 AddMaterial("G4_Sb", 6.691 , 51, 487. );
768 AddMaterial("G4_Te", 6.24 , 52, 485. );
769 AddMaterial("G4_I" , 4.93 , 53, 491. );
770 AddMaterial("G4_Xe", 5.48536e-3, 54, 482. , 1, kStateGas);
771 AddMaterial("G4_Cs", 1.873 , 55, 488. );
772 AddMaterial("G4_Ba", 3.5 , 56, 491. );
773 AddMaterial("G4_La", 6.154 , 57, 501. );
774 AddMaterial("G4_Ce", 6.657 , 58, 523. );
775 AddMaterial("G4_Pr", 6.71 , 59, 535. );
776 AddMaterial("G4_Nd", 6.9 , 60, 546. );
777 AddMaterial("G4_Pm", 7.22 , 61, 560. );
778 AddMaterial("G4_Sm", 7.46 , 62, 574. );
779 AddMaterial("G4_Eu", 5.243 , 63, 580. );
780 AddMaterial("G4_Gd", 7.9004 , 64, 591. );
781 AddMaterial("G4_Tb", 8.229 , 65, 614. );
782 AddMaterial("G4_Dy", 8.55 , 66, 628. );
783 AddMaterial("G4_Ho", 8.795 , 67, 650. );
784 AddMaterial("G4_Er", 9.066 , 68, 658. );
785 AddMaterial("G4_Tm", 9.321 , 69, 674. );
786 AddMaterial("G4_Yb", 6.73 , 70, 684. );
787 AddMaterial("G4_Lu", 9.84 , 71, 694. );
788 AddMaterial("G4_Hf", 13.31 , 72, 705. );
789 AddMaterial("G4_Ta", 16.654 , 73, 718. );
790 AddMaterial("G4_W" , 19.30 , 74, 727. );
791 AddMaterial("G4_Re", 21.02 , 75, 736. );
792 AddMaterial("G4_Os", 22.57 , 76, 746. );
793 AddMaterial("G4_Ir", 22.42 , 77, 757. );
794 AddMaterial("G4_Pt", 21.45 , 78, 790. );
795 AddMaterial("G4_Au", 19.32 , 79, 790. );
796 AddMaterial("G4_Hg", 13.546 , 80, 800. );
797 AddMaterial("G4_Tl", 11.72 , 81, 810. );
798 AddMaterial("G4_Pb", 11.35 , 82, 823. );
799 AddMaterial("G4_Bi", 9.747 , 83, 823. );
800 AddMaterial("G4_Po", 9.32 , 84, 830. );
801 AddMaterial("G4_At", 9.32 , 85, 825. );
802 AddMaterial("G4_Rn", 9.00662e-3, 86, 794. , 1, kStateGas);
803 AddMaterial("G4_Fr", 1.00 , 87, 827. );
804 AddMaterial("G4_Ra", 5.00 , 88, 826. );
805 AddMaterial("G4_Ac", 10.07 , 89, 841. );
806 AddMaterial("G4_Th", 11.72 , 90, 847. );
807 AddMaterial("G4_Pa", 15.37 , 91, 878. );
808 AddMaterial("G4_U" , 18.95 , 92, 890. );
809 AddMaterial("G4_Np", 20.25 , 93, 902. );
810 AddMaterial("G4_Pu", 19.84 , 94, 921. );
811 AddMaterial("G4_Am", 13.67 , 95, 934. );
812 AddMaterial("G4_Cm", 13.51 , 96, 939. );
813 AddMaterial("G4_Bk", 14.00 , 97, 952. );
814 AddMaterial("G4_Cf", 10.00 , 98, 966. );
815
816 nElementary = nMaterials;
817}
818
819//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
820
821void G4NistMaterialBuilder::NistCompoundMaterials()
822{
823 AddMaterial("G4_A-150_TISSUE", 1.127, 0, 65.1, 6);
824 AddElementByWeightFraction( 1, 0.101327);
825 AddElementByWeightFraction( 6, 0.775501);
826 AddElementByWeightFraction( 7, 0.035057);
827 AddElementByWeightFraction( 8, 0.052316);
828 AddElementByWeightFraction( 9, 0.017422);
829 AddElementByWeightFraction(20, 0.018378);
830
831 AddMaterial("G4_ACETONE", 0.7899, 0, 64.2, 3, kStateLiquid);
832 AddElementByAtomCount("C" , 3);
833 AddElementByAtomCount("H" , 6);
834 AddElementByAtomCount("O" , 1);
835
836 AddMaterial("G4_ACETYLENE", 0.0010967, 0, 58.2, 2, kStateGas);
837 AddElementByAtomCount("C" , 2);
838 AddElementByAtomCount("H" , 2);
839
840 //Tan, Z., et al. NIMB,2006(248)
841 AddMaterial("G4_ADENINE", 1.35, 0, 71.4, 3);
842 AddElementByAtomCount("C" , 5);
843 AddElementByAtomCount("H" , 5);
844 AddElementByAtomCount("N" , 5);
845
846 AddMaterial("G4_ADIPOSE_TISSUE_ICRP", 0.95, 0, 63.2, 7);
847 AddElementByWeightFraction( 1, 0.114);
848 AddElementByWeightFraction( 6, 0.598);
849 AddElementByWeightFraction( 7, 0.007);
850 AddElementByWeightFraction( 8, 0.278);
851 AddElementByWeightFraction(11, 0.001);
852 AddElementByWeightFraction(16, 0.001);
853 AddElementByWeightFraction(17, 0.001);
854
855 AddMaterial("G4_AIR", 0.00120479, 0, 85.7, 4, kStateGas);
856 AddElementByWeightFraction( 6, 0.000124);
857 AddElementByWeightFraction( 7, 0.755267);
858 AddElementByWeightFraction( 8, 0.231781);
859 AddElementByWeightFraction(18, 0.012827);
860
861 AddMaterial("G4_ALANINE", 1.42, 0, 71.9, 4);
862 AddElementByAtomCount("C" , 3);
863 AddElementByAtomCount("H" , 7);
864 AddElementByAtomCount("N" , 1);
865 AddElementByAtomCount("O" , 2);
866
867 AddMaterial("G4_ALUMINUM_OXIDE", 3.97, 0, 145.2, 2);
868 AddElementByAtomCount("Al", 2);
869 AddElementByAtomCount("O" , 3);
870 chFormulas[nMaterials-1] = "Al_2O_3";
871
872 AddMaterial("G4_AMBER", 1.1, 0, 63.2, 3);
873 AddElementByWeightFraction( 1, 0.10593 );
874 AddElementByWeightFraction( 6, 0.788973);
875 AddElementByWeightFraction( 8, 0.105096);
876
877 AddMaterial("G4_AMMONIA", 0.000826019, 0, 53.7, 2, kStateGas);
878 AddElementByAtomCount("N" , 1);
879 AddElementByAtomCount("H" , 3);
880
881 AddMaterial("G4_ANILINE", 1.0235, 0, 66.2, 3);
882 AddElementByAtomCount("C" , 6);
883 AddElementByAtomCount("H" , 7);
884 AddElementByAtomCount("N" , 1);
885
886 AddMaterial("G4_ANTHRACENE", 1.283, 0, 69.5, 2);
887 AddElementByAtomCount("C" , 14);
888 AddElementByAtomCount("H" , 10);
889
890 AddMaterial("G4_B-100_BONE", 1.45, 0, 85.9, 6);
891 AddElementByWeightFraction( 1, 0.065471);
892 AddElementByWeightFraction( 6, 0.536945);
893 AddElementByWeightFraction( 7, 0.0215 );
894 AddElementByWeightFraction( 8, 0.032085);
895 AddElementByWeightFraction( 9, 0.167411);
896 AddElementByWeightFraction(20, 0.176589);
897
898 AddMaterial("G4_BAKELITE", 1.25, 0, 72.4, 3);
899 AddElementByWeightFraction( 1, 0.057441);
900 AddElementByWeightFraction( 6, 0.774591);
901 AddElementByWeightFraction( 8, 0.167968);
902
903 AddMaterial("G4_BARIUM_FLUORIDE", 4.89 ,0, 375.9, 2);
904 AddElementByAtomCount("Ba", 1);
905 AddElementByAtomCount("F" , 2);
906
907 AddMaterial("G4_BARIUM_SULFATE", 4.5, 0, 285.7, 3);
908 AddElementByAtomCount("Ba", 1);
909 AddElementByAtomCount("S" , 1);
910 AddElementByAtomCount("O" , 4);
911
912 AddMaterial("G4_BENZENE", 0.87865, 0, 63.4, 2, kStateLiquid);
913 AddElementByAtomCount("C" , 6);
914 AddElementByAtomCount("H" , 6);
915
916 AddMaterial("G4_BERYLLIUM_OXIDE", 3.01, 0, 93.2, 2);
917 AddElementByAtomCount("Be", 1);
918 AddElementByAtomCount("O" , 1);
919
920 AddMaterial("G4_BGO", 7.13, 0, 534.1, 3);
921 AddElementByAtomCount("Bi", 4);
922 AddElementByAtomCount("Ge", 3);
923 AddElementByAtomCount("O" , 12);
924
925 AddMaterial("G4_BLOOD_ICRP", 1.06, 0, 75.2, 10, kStateLiquid);
926 AddElementByWeightFraction( 1, 0.102);
927 AddElementByWeightFraction( 6, 0.110);
928 AddElementByWeightFraction( 7, 0.033);
929 AddElementByWeightFraction( 8, 0.745);
930 AddElementByWeightFraction(11, 0.001);
931 AddElementByWeightFraction(15, 0.001);
932 AddElementByWeightFraction(16, 0.002);
933 AddElementByWeightFraction(17, 0.003);
934 AddElementByWeightFraction(19, 0.002);
935 AddElementByWeightFraction(26, 0.001);
936
937 AddMaterial("G4_BONE_COMPACT_ICRU", 1.85, 0, 91.9, 8);
938 AddElementByWeightFraction( 1, 0.064);
939 AddElementByWeightFraction( 6, 0.278);
940 AddElementByWeightFraction( 7, 0.027);
941 AddElementByWeightFraction( 8, 0.410);
942 AddElementByWeightFraction(12, 0.002);
943 AddElementByWeightFraction(15, 0.07 );
944 AddElementByWeightFraction(16, 0.002);
945 AddElementByWeightFraction(20, 0.147);
946
947 // Sceleton Cortical bone for Adult ICRU 46
948 AddMaterial("G4_BONE_CORTICAL_ICRP", 1.92, 0, 110, 9);
949 AddElementByWeightFraction( 1, 0.034);
950 AddElementByWeightFraction( 6, 0.155);
951 AddElementByWeightFraction( 7, 0.042);
952 AddElementByWeightFraction( 8, 0.435);
953 AddElementByWeightFraction(11, 0.001);
954 AddElementByWeightFraction(12, 0.002);
955 AddElementByWeightFraction(15, 0.103);
956 AddElementByWeightFraction(16, 0.003);
957 AddElementByWeightFraction(20, 0.225);
958
959 AddMaterial("G4_BORON_CARBIDE", 2.52, 0, 84.7, 2);
960 AddElementByAtomCount("B" , 4);
961 AddElementByAtomCount("C" , 1);
962
963 AddMaterial("G4_BORON_OXIDE", 1.812, 0, 99.6, 2);
964 AddElementByAtomCount("B" , 2);
965 AddElementByAtomCount("O" , 3);
966
967 AddMaterial("G4_BRAIN_ICRP", 1.04, 0, 73.3, 9);
968 AddElementByWeightFraction( 1, 0.107);
969 AddElementByWeightFraction( 6, 0.145);
970 AddElementByWeightFraction( 7, 0.022);
971 AddElementByWeightFraction( 8, 0.712);
972 AddElementByWeightFraction(11, 0.002);
973 AddElementByWeightFraction(15, 0.004);
974 AddElementByWeightFraction(16, 0.002);
975 AddElementByWeightFraction(17, 0.003);
976 AddElementByWeightFraction(19, 0.003);
977
978 AddMaterial("G4_BUTANE", 0.00249343, 0, 48.3, 2, kStateGas);
979 AddElementByAtomCount("C" , 4);
980 AddElementByAtomCount("H" , 10);
981
982 AddMaterial("G4_N-BUTYL_ALCOHOL", 0.8098, 0, 59.9, 3, kStateLiquid);
983 AddElementByAtomCount("C" , 4);
984 AddElementByAtomCount("H" , 10);
985 AddElementByAtomCount("O" , 1);
986
987 AddMaterial("G4_C-552", 1.76, 0, 86.8, 5);
988 AddElementByWeightFraction( 1, 0.02468 );
989 AddElementByWeightFraction( 6, 0.50161 );
990 AddElementByWeightFraction( 8, 0.004527);
991 AddElementByWeightFraction( 9, 0.465209);
992 AddElementByWeightFraction(14, 0.003973);
993
994 AddMaterial("G4_CADMIUM_TELLURIDE", 6.2, 0, 539.3, 2);
995 AddElementByAtomCount("Cd", 1);
996 AddElementByAtomCount("Te", 1);
997
998 AddMaterial("G4_CADMIUM_TUNGSTATE", 7.9, 0, 468.3, 3);
999 AddElementByAtomCount("Cd", 1);
1000 AddElementByAtomCount("W" , 1);
1001 AddElementByAtomCount("O" , 4);
1002
1003 AddMaterial("G4_CALCIUM_CARBONATE", 2.8, 0, 136.4, 3);
1004 AddElementByAtomCount("Ca", 1);
1005 AddElementByAtomCount("C" , 1);
1006 AddElementByAtomCount("O" , 3);
1007
1008 AddMaterial("G4_CALCIUM_FLUORIDE", 3.18, 0, 166., 2);
1009 AddElementByAtomCount("Ca", 1);
1010 AddElementByAtomCount("F" , 2);
1011
1012 AddMaterial("G4_CALCIUM_OXIDE", 3.3, 0, 176.1, 2);
1013 AddElementByAtomCount("Ca", 1);
1014 AddElementByAtomCount("O" , 1);
1015
1016 AddMaterial("G4_CALCIUM_SULFATE", 2.96, 0, 152.3, 3);
1017 AddElementByAtomCount("Ca", 1);
1018 AddElementByAtomCount("S" , 1);
1019 AddElementByAtomCount("O" , 4);
1020
1021 AddMaterial("G4_CALCIUM_TUNGSTATE", 6.062, 0, 395., 3);
1022 AddElementByAtomCount("Ca", 1);
1023 AddElementByAtomCount("W" , 1);
1024 AddElementByAtomCount("O" , 4);
1025
1026 AddMaterial("G4_CARBON_DIOXIDE", 0.00184212, 0, 85., 2, kStateGas);
1027 AddElementByAtomCount("C" , 1);
1028 AddElementByAtomCount("O" , 2);
1029 chFormulas[nMaterials-1] = "CO_2";
1030
1031 AddMaterial("G4_CARBON_TETRACHLORIDE", 1.594, 0, 166.3, 2);
1032 AddElementByAtomCount("C" , 1);
1033 AddElementByAtomCount("Cl", 4);
1034
1035 AddMaterial("G4_CELLULOSE_CELLOPHANE", 1.42, 0, 77.6, 3);
1036 AddElementByAtomCount("C" , 6);
1037 AddElementByAtomCount("H" , 10);
1038 AddElementByAtomCount("O" , 5);
1039
1040 AddMaterial("G4_CELLULOSE_BUTYRATE", 1.2, 0, 74.6, 3);
1041 AddElementByWeightFraction( 1, 0.067125);
1042 AddElementByWeightFraction( 6, 0.545403);
1043 AddElementByWeightFraction( 8, 0.387472);
1044
1045 AddMaterial("G4_CELLULOSE_NITRATE", 1.49, 0, 87., 4);
1046 AddElementByWeightFraction( 1, 0.029216);
1047 AddElementByWeightFraction( 6, 0.271296);
1048 AddElementByWeightFraction( 7, 0.121276);
1049 AddElementByWeightFraction( 8, 0.578212);
1050
1051 AddMaterial("G4_CERIC_SULFATE", 1.03, 0, 76.7, 5);
1052 AddElementByWeightFraction( 1, 0.107596);
1053 AddElementByWeightFraction( 7, 0.0008 );
1054 AddElementByWeightFraction( 8, 0.874976);
1055 AddElementByWeightFraction(16, 0.014627);
1056 AddElementByWeightFraction(58, 0.002001);
1057
1058 AddMaterial("G4_CESIUM_FLUORIDE", 4.115, 0, 440.7, 2);
1059 AddElementByAtomCount("Cs", 1);
1060 AddElementByAtomCount("F" , 1);
1061
1062 AddMaterial("G4_CESIUM_IODIDE", 4.51, 0, 553.1, 2);
1063 AddElementByAtomCount("Cs", 1);
1064 AddElementByAtomCount("I" , 1);
1065
1066 AddMaterial("G4_CHLOROBENZENE", 1.1058, 0, 89.1, 3);
1067 AddElementByAtomCount("C" , 6);
1068 AddElementByAtomCount("H" , 5);
1069 AddElementByAtomCount("Cl", 1);
1070
1071 AddMaterial("G4_CHLOROFORM", 1.4832, 0, 156., 3);
1072 AddElementByAtomCount("C" , 1);
1073 AddElementByAtomCount("H" , 1);
1074 AddElementByAtomCount("Cl", 3);
1075
1076 AddMaterial("G4_CONCRETE", 2.3, 0, 135.2, 10);
1077 AddElementByWeightFraction( 1, 0.01 );
1078 AddElementByWeightFraction( 6, 0.001 );
1079 AddElementByWeightFraction( 8, 0.529107);
1080 AddElementByWeightFraction(11, 0.016 );
1081 AddElementByWeightFraction(12, 0.002 );
1082 AddElementByWeightFraction(13, 0.033872);
1083 AddElementByWeightFraction(14, 0.337021);
1084 AddElementByWeightFraction(19, 0.013 );
1085 AddElementByWeightFraction(20, 0.044 );
1086 AddElementByWeightFraction(26, 0.014 );
1087
1088 AddMaterial("G4_CYCLOHEXANE", 0.779, 0, 56.4, 2);
1089 AddElementByAtomCount("C" , 6);
1090 AddElementByAtomCount("H" , 12);
1091
1092 AddMaterial("G4_1,2-DICHLOROBENZENE", 1.3048, 0, 106.5, 3);
1093 AddElementByAtomCount("C" , 6);
1094 AddElementByAtomCount("H" , 4);
1095 AddElementByAtomCount("Cl", 2);
1096
1097 AddMaterial("G4_DICHLORODIETHYL_ETHER", 1.2199, 0, 103.3, 4);
1098 AddElementByAtomCount("C" , 4);
1099 AddElementByAtomCount("H" , 8);
1100 AddElementByAtomCount("O" , 1);
1101 AddElementByAtomCount("Cl", 2);
1102
1103 AddMaterial("G4_1,2-DICHLOROETHANE", 1.2351, 0, 111.9, 3, kStateLiquid);
1104 AddElementByAtomCount("C" , 2);
1105 AddElementByAtomCount("H" , 4);
1106 AddElementByAtomCount("Cl", 2);
1107
1108 AddMaterial("G4_DIETHYL_ETHER", 0.71378, 0, 60., 3, kStateLiquid);
1109 AddElementByAtomCount("C" , 4);
1110 AddElementByAtomCount("H" , 10);
1111 AddElementByAtomCount("O" , 1);
1112
1113 AddMaterial("G4_N,N-DIMETHYL_FORMAMIDE", 0.9487, 0, 66.6, 4, kStateLiquid);
1114 AddElementByAtomCount("C" , 3);
1115 AddElementByAtomCount("H" , 7);
1116 AddElementByAtomCount("N" , 1);
1117 AddElementByAtomCount("O" , 1);
1118
1119 AddMaterial("G4_DIMETHYL_SULFOXIDE", 1.1014, 0, 98.6, 4, kStateLiquid);
1120 AddElementByAtomCount("C" , 2);
1121 AddElementByAtomCount("H" , 6);
1122 AddElementByAtomCount("O" , 1);
1123 AddElementByAtomCount("S" , 1);
1124
1125 AddMaterial("G4_ETHANE", 0.00125324, 0, 45.4, 2, kStateGas);
1126 AddElementByAtomCount("C" , 2);
1127 AddElementByAtomCount("H" , 6);
1128
1129 AddMaterial("G4_ETHYL_ALCOHOL", 0.7893, 0, 62.9, 3, kStateLiquid);
1130 AddElementByAtomCount("C" , 2);
1131 AddElementByAtomCount("H" , 6);
1132 AddElementByAtomCount("O" , 1);
1133
1134 AddMaterial("G4_ETHYL_CELLULOSE", 1.13, 0, 69.3, 3);
1135 AddElementByWeightFraction( 1, 0.090027);
1136 AddElementByWeightFraction( 6, 0.585182);
1137 AddElementByWeightFraction( 8, 0.324791);
1138
1139 AddMaterial("G4_ETHYLENE", 0.00117497, 0, 50.7, 2, kStateGas);
1140 AddElementByAtomCount("C" , 2);
1141 AddElementByAtomCount("H" , 4);
1142
1143 AddMaterial("G4_EYE_LENS_ICRP", 1.07, 0, 73.3, 8);
1144 AddElementByWeightFraction( 1, 0.096);
1145 AddElementByWeightFraction( 6, 0.195);
1146 AddElementByWeightFraction( 7, 0.057);
1147 AddElementByWeightFraction( 8, 0.646);
1148 AddElementByWeightFraction(11, 0.001);
1149 AddElementByWeightFraction(15, 0.001);
1150 AddElementByWeightFraction(16, 0.003);
1151 AddElementByWeightFraction(17, 0.001);
1152
1153 AddMaterial("G4_FERRIC_OXIDE", 5.2, 0, 227.3, 2);
1154 AddElementByAtomCount("Fe", 2);
1155 AddElementByAtomCount("O" , 3);
1156
1157 AddMaterial("G4_FERROBORIDE", 7.15, 0, 261., 2);
1158 AddElementByAtomCount("Fe", 1);
1159 AddElementByAtomCount("B" , 1);
1160
1161 AddMaterial("G4_FERROUS_OXIDE", 5.7, 0, 248.6, 2);
1162 AddElementByAtomCount("Fe", 1);
1163 AddElementByAtomCount("O" , 1);
1164
1165 AddMaterial("G4_FERROUS_SULFATE", 1.024, 0, 76.4, 7);
1166 AddElementByWeightFraction( 1, 0.108259);
1167 AddElementByWeightFraction( 7, 2.7e-05 );
1168 AddElementByWeightFraction( 8, 0.878636);
1169 AddElementByWeightFraction(11, 2.2e-05 );
1170 AddElementByWeightFraction(16, 0.012968);
1171 AddElementByWeightFraction(17, 3.4e-05 );
1172 AddElementByWeightFraction(26, 5.4e-05 );
1173
1174 AddMaterial("G4_FREON-12", 1.12, 0, 143., 3, kStateLiquid);
1175 AddElementByWeightFraction( 6, 0.099335);
1176 AddElementByWeightFraction( 9, 0.314247);
1177 AddElementByWeightFraction(17, 0.586418);
1178
1179 AddMaterial("G4_FREON-12B2", 1.8, 0, 284.9, 3, kStateLiquid);
1180 AddElementByWeightFraction( 6, 0.057245);
1181 AddElementByWeightFraction( 9, 0.181096);
1182 AddElementByWeightFraction(35, 0.761659);
1183
1184 AddMaterial("G4_FREON-13", 0.95, 0, 126.6, 3, kStateLiquid);
1185 AddElementByWeightFraction( 6, 0.114983);
1186 AddElementByWeightFraction( 9, 0.545622);
1187 AddElementByWeightFraction(17, 0.339396);
1188
1189 AddMaterial("G4_FREON-13B1", 1.5, 0, 210.5, 3, kStateLiquid);
1190 AddElementByAtomCount("C" , 1);
1191 AddElementByAtomCount("F" , 3);
1192 AddElementByAtomCount("Br", 1);
1193
1194 AddMaterial("G4_FREON-13I1", 1.8, 0, 293.5, 3, kStateLiquid);
1195 AddElementByWeightFraction( 6, 0.061309);
1196 AddElementByWeightFraction( 9, 0.290924);
1197 AddElementByWeightFraction(53, 0.647767);
1198
1199 AddMaterial("G4_GADOLINIUM_OXYSULFIDE", 7.44, 0, 493.3, 3);
1200 AddElementByAtomCount("Gd", 2);
1201 AddElementByAtomCount("O" , 2);
1202 AddElementByAtomCount("S" , 1);
1203
1204 AddMaterial("G4_GALLIUM_ARSENIDE", 5.31, 0, 384.9, 2);
1205 AddElementByAtomCount("Ga", 1);
1206 AddElementByAtomCount("As", 1);
1207
1208 AddMaterial("G4_GEL_PHOTO_EMULSION", 1.2914, 0, 74.8, 5);
1209 AddElementByWeightFraction( 1, 0.08118);
1210 AddElementByWeightFraction( 6, 0.41606);
1211 AddElementByWeightFraction( 7, 0.11124);
1212 AddElementByWeightFraction( 8, 0.38064);
1213 AddElementByWeightFraction(16, 0.01088);
1214
1215 AddMaterial("G4_Pyrex_Glass", 2.23, 0, 134., 6);
1216 AddElementByWeightFraction( 5, 0.040064);
1217 AddElementByWeightFraction( 8, 0.539562);
1218 AddElementByWeightFraction(11, 0.028191);
1219 AddElementByWeightFraction(13, 0.011644);
1220 AddElementByWeightFraction(14, 0.37722 );
1221 AddElementByWeightFraction(19, 0.003321);
1222
1223 AddMaterial("G4_GLASS_LEAD", 6.22, 0, 526.4, 5);
1224 AddElementByWeightFraction( 8, 0.156453);
1225 AddElementByWeightFraction(14, 0.080866);
1226 AddElementByWeightFraction(22, 0.008092);
1227 AddElementByWeightFraction(33, 0.002651);
1228 AddElementByWeightFraction(82, 0.751938);
1229
1230 AddMaterial("G4_GLASS_PLATE", 2.4, 0, 145.4, 4);
1231 AddElementByWeightFraction( 8, 0.4598 );
1232 AddElementByWeightFraction(11, 0.096441);
1233 AddElementByWeightFraction(14, 0.336553);
1234 AddElementByWeightFraction(20, 0.107205);
1235
1236 AddMaterial("G4_GLUTAMINE", 1.46, 0, 73.3, 4);
1237 AddElementByAtomCount("C" , 5);
1238 AddElementByAtomCount("H" , 10);
1239 AddElementByAtomCount("N" , 2);
1240 AddElementByAtomCount("O" , 3);
1241
1242 AddMaterial("G4_GLYCEROL", 1.2613, 0, 72.6, 3);
1243 AddElementByAtomCount("C" , 3);
1244 AddElementByAtomCount("H" , 8);
1245 AddElementByAtomCount("O" , 3);
1246
1247 //Tan, Z., et al. NIMB,2006(248)
1248 AddMaterial("G4_GUANINE", 1.58, 0, 75. ,4);
1249 AddElementByAtomCount("C" , 5);
1250 AddElementByAtomCount("H" , 5);
1251 AddElementByAtomCount("N" , 5);
1252 AddElementByAtomCount("O" , 1);
1253
1254 AddMaterial("G4_GYPSUM", 2.32, 0, 129.7, 4);
1255 AddElementByAtomCount("Ca", 1);
1256 AddElementByAtomCount("S" , 1);
1257 AddElementByAtomCount("O" , 6);
1258 AddElementByAtomCount("H" , 4);
1259
1260 AddMaterial("G4_N-HEPTANE", 0.68376, 0, 54.4, 2);
1261 AddElementByAtomCount("C" , 7);
1262 AddElementByAtomCount("H" , 16);
1263
1264 AddMaterial("G4_N-HEXANE", 0.6603, 0, 54., 2);
1265 AddElementByAtomCount("C" , 6);
1266 AddElementByAtomCount("H" , 14);
1267
1268 AddMaterial("G4_KAPTON", 1.42, 0, 79.6, 4);
1269 AddElementByAtomCount("C" , 22);
1270 AddElementByAtomCount("H" , 10);
1271 AddElementByAtomCount("N" , 2);
1272 AddElementByAtomCount("O" , 5);
1273
1274 AddMaterial("G4_LANTHANUM_OXYBROMIDE", 6.28, 0, 439.7, 3);
1275 AddElementByAtomCount("La", 1);
1276 AddElementByAtomCount("Br", 1);
1277 AddElementByAtomCount("O" , 1);
1278
1279 AddMaterial("G4_LANTHANUM_OXYSULFIDE", 5.86, 0, 421.2, 3);
1280 AddElementByAtomCount("La", 2);
1281 AddElementByAtomCount("O" , 2);
1282 AddElementByAtomCount("S" , 1);
1283
1284 AddMaterial("G4_LEAD_OXIDE", 9.53, 0, 766.7, 2);
1285 AddElementByWeightFraction( 8, 0.071682);
1286 AddElementByWeightFraction(82, 0.928318);
1287
1288 AddMaterial("G4_LITHIUM_AMIDE", 1.178, 0, 55.5, 3);
1289 AddElementByAtomCount("Li", 1);
1290 AddElementByAtomCount("N" , 1);
1291 AddElementByAtomCount("H" , 2);
1292
1293 AddMaterial("G4_LITHIUM_CARBONATE", 2.11, 0, 87.9, 3);
1294 AddElementByAtomCount("Li", 2);
1295 AddElementByAtomCount("C" , 1);
1296 AddElementByAtomCount("O" , 3);
1297
1298 AddMaterial("G4_LITHIUM_FLUORIDE", 2.635, 0, 94., 2);
1299 AddElementByAtomCount("Li", 1);
1300 AddElementByAtomCount("F" , 1);
1301
1302 AddMaterial("G4_LITHIUM_HYDRIDE", 0.82, 0, 36.5, 2);
1303 AddElementByAtomCount("Li", 1);
1304 AddElementByAtomCount("H" , 1);
1305
1306 AddMaterial("G4_LITHIUM_IODIDE", 3.494, 0, 485.1, 2);
1307 AddElementByAtomCount("Li", 1);
1308 AddElementByAtomCount("I" , 1);
1309
1310 AddMaterial("G4_LITHIUM_OXIDE", 2.013, 0, 73.6, 2);
1311 AddElementByAtomCount("Li", 2);
1312 AddElementByAtomCount("O" , 1);
1313
1314 AddMaterial("G4_LITHIUM_TETRABORATE", 2.44, 0, 94.6, 3);
1315 AddElementByAtomCount("Li", 2);
1316 AddElementByAtomCount("B" , 4);
1317 AddElementByAtomCount("O" , 7);
1318}
1319
1320void G4NistMaterialBuilder::NistCompoundMaterials2()
1321{
1322 //Adult Lung congested
1323 AddMaterial("G4_LUNG_ICRP", 1.04, 0, 75.3, 9);
1324 AddElementByWeightFraction( 1, 0.105);
1325 AddElementByWeightFraction( 6, 0.083);
1326 AddElementByWeightFraction( 7, 0.023);
1327 AddElementByWeightFraction( 8, 0.779);
1328 AddElementByWeightFraction(11, 0.002);
1329 AddElementByWeightFraction(15, 0.001);
1330 AddElementByWeightFraction(16, 0.002);
1331 AddElementByWeightFraction(17, 0.003);
1332 AddElementByWeightFraction(19, 0.002);
1333
1334 AddMaterial("G4_M3_WAX", 1.05, 0, 67.9, 5);
1335 AddElementByWeightFraction( 1, 0.114318);
1336 AddElementByWeightFraction( 6, 0.655823);
1337 AddElementByWeightFraction( 8, 0.092183);
1338 AddElementByWeightFraction(12, 0.134792);
1339 AddElementByWeightFraction(20, 0.002883);
1340
1341 AddMaterial("G4_MAGNESIUM_CARBONATE", 2.958, 0, 118., 3);
1342 AddElementByAtomCount("Mg", 1);
1343 AddElementByAtomCount("C" , 1);
1344 AddElementByAtomCount("O" , 3);
1345
1346 AddMaterial("G4_MAGNESIUM_FLUORIDE", 3.0, 0, 134.3, 2);
1347 AddElementByAtomCount("Mg", 1);
1348 AddElementByAtomCount("F" , 2);
1349
1350 AddMaterial("G4_MAGNESIUM_OXIDE", 3.58, 0, 143.8, 2);
1351 AddElementByAtomCount("Mg", 1);
1352 AddElementByAtomCount("O" , 1);
1353
1354 AddMaterial("G4_MAGNESIUM_TETRABORATE", 2.53, 0, 108.3, 3);
1355 AddElementByAtomCount("Mg", 1);
1356 AddElementByAtomCount("B" , 4);
1357 AddElementByAtomCount("O" , 7);
1358
1359 AddMaterial("G4_MERCURIC_IODIDE", 6.36, 0, 684.5, 2);
1360 AddElementByAtomCount("Hg", 1);
1361 AddElementByAtomCount("I" , 2);
1362
1363 AddMaterial("G4_METHANE", 0.000667151, 0, 41.7, 2, kStateGas);
1364 AddElementByAtomCount("C" , 1);
1365 AddElementByAtomCount("H" , 4);
1366
1367 AddMaterial("G4_METHANOL", 0.7914, 0, 67.6, 3, kStateLiquid);
1368 AddElementByAtomCount("C" , 1);
1369 AddElementByAtomCount("H" , 4);
1370 AddElementByAtomCount("O" , 1);
1371
1372 AddMaterial("G4_MIX_D_WAX", 0.99, 0, 60.9, 5);
1373 AddElementByWeightFraction( 1, 0.13404 );
1374 AddElementByWeightFraction( 6, 0.77796 );
1375 AddElementByWeightFraction( 8, 0.03502 );
1376 AddElementByWeightFraction(12, 0.038594);
1377 AddElementByWeightFraction(22, 0.014386);
1378
1379 AddMaterial("G4_MS20_TISSUE", 1.0, 0, 75.1, 6);
1380 AddElementByWeightFraction( 1, 0.081192);
1381 AddElementByWeightFraction( 6, 0.583442);
1382 AddElementByWeightFraction( 7, 0.017798);
1383 AddElementByWeightFraction( 8, 0.186381);
1384 AddElementByWeightFraction(12, 0.130287);
1385 AddElementByWeightFraction(17, 0.0009 );
1386
1387 AddMaterial("G4_MUSCLE_SKELETAL_ICRP", 1.05, 0, 75.3, 9);
1388 AddElementByWeightFraction( 1, 0.102);
1389 AddElementByWeightFraction( 6, 0.143);
1390 AddElementByWeightFraction( 7, 0.034);
1391 AddElementByWeightFraction( 8, 0.710);
1392 AddElementByWeightFraction(11, 0.001);
1393 AddElementByWeightFraction(15, 0.002);
1394 AddElementByWeightFraction(16, 0.003);
1395 AddElementByWeightFraction(17, 0.001);
1396 AddElementByWeightFraction(19, 0.004);
1397
1398 // from old ICRU report
1399 AddMaterial("G4_MUSCLE_STRIATED_ICRU", 1.04, 0, 74.7, 8);
1400 AddElementByWeightFraction( 1, 0.102);
1401 AddElementByWeightFraction( 6, 0.123);
1402 AddElementByWeightFraction( 7, 0.035);
1403 AddElementByWeightFraction( 8, 0.729);
1404 AddElementByWeightFraction(11, 0.001);
1405 AddElementByWeightFraction(15, 0.002);
1406 AddElementByWeightFraction(16, 0.004);
1407 AddElementByWeightFraction(19, 0.003);
1408
1409 AddMaterial("G4_MUSCLE_WITH_SUCROSE", 1.11, 0, 74.3, 4);
1410 AddElementByWeightFraction( 1, 0.098234);
1411 AddElementByWeightFraction( 6, 0.156214);
1412 AddElementByWeightFraction( 7, 0.035451);
1413 AddElementByWeightFraction( 8, 0.7101 );
1414
1415 AddMaterial("G4_MUSCLE_WITHOUT_SUCROSE", 1.07, 0, 74.2, 4);
1416 AddElementByWeightFraction( 1, 0.101969);
1417 AddElementByWeightFraction( 6, 0.120058);
1418 AddElementByWeightFraction( 7, 0.035451);
1419 AddElementByWeightFraction( 8, 0.742522);
1420
1421 AddMaterial("G4_NAPHTHALENE", 1.145, 0, 68.4, 2);
1422 AddElementByAtomCount("C" , 10);
1423 AddElementByAtomCount("H" , 8);
1424
1425 AddMaterial("G4_NITROBENZENE", 1.19867, 0, 75.8, 4);
1426 AddElementByAtomCount("C" , 6);
1427 AddElementByAtomCount("H" , 5);
1428 AddElementByAtomCount("N" , 1);
1429 AddElementByAtomCount("O" , 2);
1430
1431 AddMaterial("G4_NITROUS_OXIDE", 0.00183094, 0, 84.9, 2, kStateGas);
1432 AddElementByAtomCount("N" , 2);
1433 AddElementByAtomCount("O" , 1);
1434
1435 AddMaterial("G4_NYLON-8062", 1.08, 0, 64.3, 4);
1436 AddElementByWeightFraction( 1, 0.103509);
1437 AddElementByWeightFraction( 6, 0.648415);
1438 AddElementByWeightFraction( 7, 0.099536);
1439 AddElementByWeightFraction( 8, 0.148539);
1440
1441 AddMaterial("G4_NYLON-6-6", 1.14, 0, 63.9, 4);
1442 AddElementByAtomCount("C" , 6);
1443 AddElementByAtomCount("H" , 11);
1444 AddElementByAtomCount("N" , 1);
1445 AddElementByAtomCount("O" , 1);
1446
1447 AddMaterial("G4_NYLON-6-10", 1.14, 0, 63.2, 4);
1448 AddElementByWeightFraction( 1, 0.107062);
1449 AddElementByWeightFraction( 6, 0.680449);
1450 AddElementByWeightFraction( 7, 0.099189);
1451 AddElementByWeightFraction( 8, 0.1133 );
1452
1453 AddMaterial("G4_NYLON-11_RILSAN", 1.425, 0, 61.6, 4);
1454 AddElementByWeightFraction( 1, 0.115476);
1455 AddElementByWeightFraction( 6, 0.720819);
1456 AddElementByWeightFraction( 7, 0.076417);
1457 AddElementByWeightFraction( 8, 0.087289);
1458
1459 AddMaterial("G4_OCTANE", 0.7026, 0, 54.7, 2, kStateLiquid);
1460 AddElementByAtomCount("C" , 8);
1461 AddElementByAtomCount("H" , 18);
1462
1463 AddMaterial("G4_PARAFFIN", 0.93, 0, 55.9, 2);
1464 AddElementByAtomCount("C" , 25);
1465 AddElementByAtomCount("H" , 52);
1466
1467 AddMaterial("G4_N-PENTANE", 0.6262, 0, 53.6, 2, kStateLiquid);
1468 AddElementByAtomCount("C" , 5);
1469 AddElementByAtomCount("H" , 12);
1470
1471 AddMaterial("G4_PHOTO_EMULSION", 3.815, 0, 331., 8);
1472 AddElementByWeightFraction( 1, 0.0141 );
1473 AddElementByWeightFraction( 6, 0.072261);
1474 AddElementByWeightFraction( 7, 0.01932 );
1475 AddElementByWeightFraction( 8, 0.066101);
1476 AddElementByWeightFraction(16, 0.00189 );
1477 AddElementByWeightFraction(35, 0.349103);
1478 AddElementByWeightFraction(47, 0.474105);
1479 AddElementByWeightFraction(53, 0.00312 );
1480
1481 AddMaterial("G4_PLASTIC_SC_VINYLTOLUENE", 1.032, 0, 64.7, 2);
1482 // AddElementByWeightFraction( 1, 0.085);
1483 // AddElementByWeightFraction( 6, 0.915);
1484 // Watch out! These weight fractions do not correspond to pure PVT
1485 // (PolyVinylToluene, C_9H_10) but to an unknown mixture...
1486 // M.Trocme & S.Seltzer
1487 AddElementByAtomCount("C" , 9);
1488 AddElementByAtomCount("H" , 10);
1489
1490 AddMaterial("G4_PLUTONIUM_DIOXIDE", 11.46, 0, 746.5, 2);
1491 AddElementByAtomCount("Pu", 1);
1492 AddElementByAtomCount("O" , 2);
1493
1494 AddMaterial("G4_POLYACRYLONITRILE", 1.17, 0, 69.6, 3);
1495 AddElementByAtomCount("C" , 3);
1496 AddElementByAtomCount("H" , 3);
1497 AddElementByAtomCount("N" , 1);
1498
1499 AddMaterial("G4_POLYCARBONATE", 1.2, 0, 73.1, 3);
1500 AddElementByAtomCount("C" , 16);
1501 AddElementByAtomCount("H" , 14);
1502 AddElementByAtomCount("O" , 3);
1503
1504 AddMaterial("G4_POLYCHLOROSTYRENE", 1.3, 0, 81.7, 3);
1505 // AddElementByWeightFraction( 1, 0.061869);
1506 // AddElementByWeightFraction( 6, 0.696325);
1507 // AddElementByWeightFraction(17, 0.241806);
1508 // These weight fractions correspond to C_17H_18Cl_2 which is not
1509 // POLYCHLOROSTYRENE. POLYCHLOROSTYRENE is C_8H_7Cl!
1510 // M.Trocme & S.Seltzer
1511 AddElementByAtomCount("C" , 8);
1512 AddElementByAtomCount("H" , 7);
1513 AddElementByAtomCount("Cl", 1);
1514
1515 AddMaterial("G4_POLYETHYLENE", 0.94, 0, 57.4, 2);
1516 AddElementByAtomCount("C" , 1);
1517 AddElementByAtomCount("H" , 2);
1518 chFormulas[nMaterials-1] = "(C_2H_4)_N-Polyethylene";
1519
1520 AddMaterial("G4_MYLAR", 1.4, 0, 78.7, 3);
1521 AddElementByAtomCount("C" , 10);
1522 AddElementByAtomCount("H" , 8);
1523 AddElementByAtomCount("O" , 4);
1524
1525 AddMaterial("G4_PLEXIGLASS", 1.19, 0, 74., 3);
1526 AddElementByAtomCount("C" , 5);
1527 AddElementByAtomCount("H" , 8);
1528 AddElementByAtomCount("O" , 2);
1529
1530 AddMaterial("G4_POLYOXYMETHYLENE", 1.425 ,0, 77.4, 3);
1531 AddElementByAtomCount("C" , 1);
1532 AddElementByAtomCount("H" , 2);
1533 AddElementByAtomCount("O" , 1);
1534
1535 AddMaterial("G4_POLYPROPYLENE", 0.9, 0, 56.5, 2);
1536 AddElementByAtomCount("C" , 2);
1537 AddElementByAtomCount("H" , 4);
1538 chFormulas[nMaterials-1] = "(C_2H_4)_N-Polypropylene";
1539
1540 AddMaterial("G4_POLYSTYRENE", 1.06, 0, 68.7, 2);
1541 AddElementByAtomCount("C" , 8);
1542 AddElementByAtomCount("H" , 8);
1543
1544 AddMaterial("G4_TEFLON", 2.2, 0, 99.1, 2);
1545 AddElementByAtomCount("C" , 2);
1546 AddElementByAtomCount("F" , 4);
1547
1548 AddMaterial("G4_POLYTRIFLUOROCHLOROETHYLENE", 2.1, 0, 120.7, 3);
1549 // correct chemical name Polychlorotrifluoroethylene [CF2CClF]n, IvantchenkoA.
1550 AddElementByAtomCount("C" , 2);
1551 AddElementByAtomCount("F" , 3);
1552 AddElementByAtomCount("Cl", 1);
1553
1554 AddMaterial("G4_POLYVINYL_ACETATE", 1.19, 0, 73.7, 3);
1555 AddElementByAtomCount("C" , 4);
1556 AddElementByAtomCount("H" , 6);
1557 AddElementByAtomCount("O" , 2);
1558
1559 AddMaterial("G4_POLYVINYL_ALCOHOL", 1.3, 0, 69.7, 3, kStateLiquid);
1560 AddElementByAtomCount("C" , 2);
1561 AddElementByAtomCount("H" , 4);
1562 AddElementByAtomCount("O" , 1);
1563
1564 AddMaterial("G4_POLYVINYL_BUTYRAL", 1.12, 0, 67.2, 3);
1565 // AddElementByWeightFraction( 1, 0.092802);
1566 // AddElementByWeightFraction( 6, 0.680561);
1567 // AddElementByWeightFraction( 8, 0.226637);
1568 // These weight fractions correspond to C_8H_13O_2 which is not
1569 // POLYVINYL_BUTYRAL. POLYVINYL_BUTYRAL is C_8H_14O_2!
1570 // M.Trocme & S.Seltzer
1571 AddElementByAtomCount("C" , 8);
1572 AddElementByAtomCount("H" , 14);
1573 AddElementByAtomCount("O" , 2);
1574
1575 AddMaterial("G4_POLYVINYL_CHLORIDE", 1.3, 0, 108.2, 3);
1576 AddElementByAtomCount("C" , 2);
1577 AddElementByAtomCount("H" , 3);
1578 AddElementByAtomCount("Cl", 1);
1579
1580 AddMaterial("G4_POLYVINYLIDENE_CHLORIDE", 1.7, 0, 134.3, 3);
1581 AddElementByAtomCount("C" , 2);
1582 AddElementByAtomCount("H" , 2);
1583 AddElementByAtomCount("Cl", 2);
1584
1585 AddMaterial("G4_POLYVINYLIDENE_FLUORIDE", 1.76, 0, 88.8, 3);
1586 AddElementByAtomCount("C" , 2);
1587 AddElementByAtomCount("H" , 2);
1588 AddElementByAtomCount("F" , 2);
1589
1590 AddMaterial("G4_POLYVINYL_PYRROLIDONE", 1.25, 0, 67.7, 4);
1591 AddElementByAtomCount("C" , 6);
1592 AddElementByAtomCount("H" , 9);
1593 AddElementByAtomCount("N" , 1);
1594 AddElementByAtomCount("O" , 1);
1595
1596 AddMaterial("G4_POTASSIUM_IODIDE", 3.13, 0, 431.9, 2);
1597 AddElementByAtomCount("K" , 1);
1598 AddElementByAtomCount("I" , 1);
1599
1600 AddMaterial("G4_POTASSIUM_OXIDE", 2.32, 0, 189.9, 2);
1601 AddElementByAtomCount("K" , 2);
1602 AddElementByAtomCount("O" , 1);
1603
1604 AddMaterial("G4_PROPANE", 0.00187939, 0, 47.1, 2, kStateGas);
1605 AddElementByAtomCount("C" , 3);
1606 AddElementByAtomCount("H" , 8);
1607
1608 AddMaterial("G4_lPROPANE", 0.43, 0, 52., 2, kStateLiquid);
1609 AddElementByAtomCount("C" , 3);
1610 AddElementByAtomCount("H" , 8);
1611
1612 AddMaterial("G4_N-PROPYL_ALCOHOL", 0.8035, 0, 61.1, 3, kStateLiquid);
1613 AddElementByAtomCount("C" , 3);
1614 AddElementByAtomCount("H" , 8);
1615 AddElementByAtomCount("O" , 1);
1616
1617 AddMaterial("G4_PYRIDINE", 0.9819, 0, 66.2, 3);
1618 AddElementByAtomCount("C" , 5);
1619 AddElementByAtomCount("H" , 5);
1620 AddElementByAtomCount("N" , 1);
1621
1622 AddMaterial("G4_RUBBER_BUTYL", 0.92, 0, 56.5, 2);
1623 AddElementByWeightFraction( 1, 0.143711);
1624 AddElementByWeightFraction( 6, 0.856289);
1625
1626 AddMaterial("G4_RUBBER_NATURAL", 0.92, 0, 59.8, 2);
1627 AddElementByWeightFraction( 1, 0.118371);
1628 AddElementByWeightFraction( 6, 0.881629);
1629
1630 AddMaterial("G4_RUBBER_NEOPRENE", 1.23, 0, 93., 3);
1631 AddElementByWeightFraction( 1, 0.05692 );
1632 AddElementByWeightFraction( 6, 0.542646);
1633 AddElementByWeightFraction(17, 0.400434);
1634
1635 AddMaterial("G4_SILICON_DIOXIDE", 2.32, 0, 139.2, 2);
1636 AddElementByAtomCount("Si", 1);
1637 AddElementByAtomCount("O" , 2);
1638 chFormulas[nMaterials-1] = "SiO_2";
1639
1640 AddMaterial("G4_SILVER_BROMIDE", 6.473, 0, 486.6, 2);
1641 AddElementByAtomCount("Ag", 1);
1642 AddElementByAtomCount("Br", 1);
1643
1644 AddMaterial("G4_SILVER_CHLORIDE", 5.56, 0, 398.4, 2);
1645 AddElementByAtomCount("Ag", 1);
1646 AddElementByAtomCount("Cl", 1);
1647
1648 AddMaterial("G4_SILVER_HALIDES", 6.47, 0, 487.1, 3);
1649 AddElementByWeightFraction(35, 0.422895);
1650 AddElementByWeightFraction(47, 0.573748);
1651 AddElementByWeightFraction(53, 0.003357);
1652
1653 AddMaterial("G4_SILVER_IODIDE", 6.01, 0, 543.5, 2);
1654 AddElementByAtomCount("Ag", 1);
1655 AddElementByAtomCount("I" , 1);
1656
1657 AddMaterial("G4_SKIN_ICRP", 1.09, 0, 72.7, 9);
1658 AddElementByWeightFraction( 1, 0.100);
1659 AddElementByWeightFraction( 6, 0.204);
1660 AddElementByWeightFraction( 7, 0.042);
1661 AddElementByWeightFraction( 8, 0.645);
1662 AddElementByWeightFraction(11, 0.002);
1663 AddElementByWeightFraction(15, 0.001);
1664 AddElementByWeightFraction(16, 0.002);
1665 AddElementByWeightFraction(17, 0.003);
1666 AddElementByWeightFraction(19, 0.001);
1667
1668 AddMaterial("G4_SODIUM_CARBONATE", 2.532, 0, 125., 3);
1669 AddElementByAtomCount("Na", 2);
1670 AddElementByAtomCount("C" , 1);
1671 AddElementByAtomCount("O" , 3);
1672
1673 AddMaterial("G4_SODIUM_IODIDE", 3.667, 0, 452., 2);
1674 AddElementByAtomCount("Na", 1);
1675 AddElementByAtomCount("I" , 1);
1676
1677 AddMaterial("G4_SODIUM_MONOXIDE", 2.27, 0, 148.8, 2);
1678 AddElementByAtomCount("Na", 2);
1679 AddElementByAtomCount("O" , 1);
1680
1681 AddMaterial("G4_SODIUM_NITRATE", 2.261, 0, 114.6, 3);
1682 AddElementByAtomCount("Na", 1);
1683 AddElementByAtomCount("N" , 1);
1684 AddElementByAtomCount("O" , 3);
1685
1686 AddMaterial("G4_STILBENE", 0.9707, 0, 67.7, 2);
1687 AddElementByAtomCount("C" , 14);
1688 AddElementByAtomCount("H" , 12);
1689
1690 AddMaterial("G4_SUCROSE", 1.5805, 0, 77.5, 3);
1691 AddElementByAtomCount("C" , 12);
1692 AddElementByAtomCount("H" , 22);
1693 AddElementByAtomCount("O" , 11);
1694
1695 AddMaterial("G4_TERPHENYL", 1.24 /*1.234*/, 0, 71.7, 2);
1696 // AddElementByWeightFraction( 1, 0.044543);
1697 // AddElementByWeightFraction( 6, 0.955457);
1698 // These weight fractions correspond to C_18H_10 which is not TERPHENYL.
1699 // TERPHENYL is C_18H_14! The current density is 1.24 g/cm3
1700 // M.Trocme & S.Seltzer
1701 AddElementByAtomCount("C" , 18);
1702 AddElementByAtomCount("H" , 14);
1703
1704 AddMaterial("G4_TESTIS_ICRP", 1.04, 0, 75., 9);
1705 AddElementByWeightFraction( 1, 0.106);
1706 AddElementByWeightFraction( 6, 0.099);
1707 AddElementByWeightFraction( 7, 0.020);
1708 AddElementByWeightFraction( 8, 0.766);
1709 AddElementByWeightFraction(11, 0.002);
1710 AddElementByWeightFraction(15, 0.001);
1711 AddElementByWeightFraction(16, 0.002);
1712 AddElementByWeightFraction(17, 0.002);
1713 AddElementByWeightFraction(19, 0.002);
1714
1715 AddMaterial("G4_TETRACHLOROETHYLENE", 1.625, 0, 159.2, 2);
1716 AddElementByAtomCount("C" , 2);
1717 AddElementByAtomCount("Cl", 4);
1718
1719 AddMaterial("G4_THALLIUM_CHLORIDE", 7.004, 0, 690.3, 2);
1720 AddElementByAtomCount("Tl", 1);
1721 AddElementByAtomCount("Cl", 1);
1722
1723 // TISSUE_SOFT_MALE ICRU-44/46 (1989)
1724 AddMaterial("G4_TISSUE_SOFT_ICRP", 1.03, 0, 72.3, 9);
1725 AddElementByWeightFraction( 1, 0.105);
1726 AddElementByWeightFraction( 6, 0.256);
1727 AddElementByWeightFraction( 7, 0.027);
1728 AddElementByWeightFraction( 8, 0.602);
1729 AddElementByWeightFraction(11, 0.001);
1730 AddElementByWeightFraction(15, 0.002);
1731 AddElementByWeightFraction(16, 0.003);
1732 AddElementByWeightFraction(17, 0.002);
1733 AddElementByWeightFraction(19, 0.002);
1734
1735 // Tissue soft adult ICRU-33 (1980)
1736 AddMaterial("G4_TISSUE_SOFT_ICRU-4", 1.0, 0, 74.9, 4);
1737 AddElementByWeightFraction( 1, 0.101);
1738 AddElementByWeightFraction( 6, 0.111);
1739 AddElementByWeightFraction( 7, 0.026);
1740 AddElementByWeightFraction( 8, 0.762);
1741
1742 AddMaterial("G4_TISSUE-METHANE", 0.00106409, 0, 61.2, 4, kStateGas);
1743 AddElementByWeightFraction( 1, 0.101869);
1744 AddElementByWeightFraction( 6, 0.456179);
1745 AddElementByWeightFraction( 7, 0.035172);
1746 AddElementByWeightFraction( 8, 0.40678 );
1747
1748 AddMaterial("G4_TISSUE-PROPANE", 0.00182628, 0, 59.5, 4, kStateGas);
1749 AddElementByWeightFraction( 1, 0.102672);
1750 AddElementByWeightFraction( 6, 0.56894 );
1751 AddElementByWeightFraction( 7, 0.035022);
1752 AddElementByWeightFraction( 8, 0.293366);
1753
1754 AddMaterial("G4_TITANIUM_DIOXIDE", 4.26, 0, 179.5, 2);
1755 AddElementByAtomCount("Ti", 1);
1756 AddElementByAtomCount("O" , 2);
1757
1758 AddMaterial("G4_TOLUENE", 0.8669, 0, 62.5, 2);
1759 AddElementByAtomCount("C" , 7);
1760 AddElementByAtomCount("H" , 8);
1761
1762 AddMaterial("G4_TRICHLOROETHYLENE", 1.46, 0, 148.1, 3);
1763 AddElementByAtomCount("C" , 2);
1764 AddElementByAtomCount("H" , 1);
1765 AddElementByAtomCount("Cl", 3);
1766
1767 AddMaterial("G4_TRIETHYL_PHOSPHATE", 1.07, 0, 81.2, 4);
1768 AddElementByAtomCount("C" , 6);
1769 AddElementByAtomCount("H" , 15);
1770 AddElementByAtomCount("O" , 4);
1771 AddElementByAtomCount("P" , 1);
1772
1773 AddMaterial("G4_TUNGSTEN_HEXAFLUORIDE", 2.4, 0, 354.4, 2);
1774 AddElementByAtomCount("W" , 1);
1775 AddElementByAtomCount("F" , 6);
1776
1777 AddMaterial("G4_URANIUM_DICARBIDE", 11.28, 0, 752., 2);
1778 AddElementByAtomCount("U" , 1);
1779 AddElementByAtomCount("C" , 2);
1780
1781 AddMaterial("G4_URANIUM_MONOCARBIDE", 13.63, 0, 862., 2);
1782 AddElementByAtomCount("U" , 1);
1783 AddElementByAtomCount("C" , 1);
1784
1785 AddMaterial("G4_URANIUM_OXIDE", 10.96, 0, 720.6, 2);
1786 AddElementByAtomCount("U" , 1);
1787 AddElementByAtomCount("O" , 2);
1788
1789 AddMaterial("G4_UREA", 1.323, 0, 72.8, 4);
1790 AddElementByAtomCount("C" , 1);
1791 AddElementByAtomCount("H" , 4);
1792 AddElementByAtomCount("N" , 2);
1793 AddElementByAtomCount("O" , 1);
1794
1795 AddMaterial("G4_VALINE", 1.23, 0, 67.7, 4);
1796 AddElementByAtomCount("C" , 5);
1797 AddElementByAtomCount("H" , 11);
1798 AddElementByAtomCount("N" , 1);
1799 AddElementByAtomCount("O" , 2);
1800
1801 AddMaterial("G4_VITON", 1.8, 0, 98.6, 3);
1802 AddElementByWeightFraction( 1, 0.009417);
1803 AddElementByWeightFraction( 6, 0.280555);
1804 AddElementByWeightFraction( 9, 0.710028);
1805
1806 AddMaterial("G4_WATER_VAPOR", 0.000756182, 0, 71.6, 2, kStateGas);
1807 AddElementByAtomCount("H" , 2);
1808 AddElementByAtomCount("O" , 1);
1809 chFormulas[nMaterials-1] = "H_2O-Gas";
1810
1811 AddMaterial("G4_XYLENE", 0.87, 0, 61.8, 2);
1812 AddElementByAtomCount("C" , 8);
1813 AddElementByAtomCount("H" , 10);
1814
1815 AddMaterial("G4_GRAPHITE", 2.21, 6, 81.);
1816 chFormulas[nMaterials-1] = "Graphite";
1817
1818 nNIST = nMaterials;
1819}
1820
1821//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
1822
1823void G4NistMaterialBuilder::HepAndNuclearMaterials()
1824{
1825 AddMaterial("G4_lH2", 0.0708, 1, 21.8, 1, kStateLiquid, false);
1826 AddMaterial("G4_lN2", 0.807, 7, 82., 1, kStateLiquid, false);
1827 AddMaterial("G4_lO2", 1.141, 8, 95., 1, kStateLiquid, false);
1828 AddMaterial("G4_lAr", 1.396 , 18, 188. , 1, kStateLiquid, false);
1829 AddMaterial("G4_lBr", 3.1028, 35, 343. , 1, kStateLiquid, false);
1830 AddMaterial("G4_lKr", 2.418 , 36, 352. , 1, kStateLiquid, false);
1831 AddMaterial("G4_lXe", 2.953 , 54, 482. , 1, kStateLiquid, false);
1832
1833 AddMaterial("G4_PbWO4", 8.28, 0, 0.0, 3);
1834 AddElementByAtomCount("O" , 4);
1835 AddElementByAtomCount("Pb", 1);
1836 AddElementByAtomCount("W" , 1);
1837
1838 G4double density = universe_mean_density*cm3/g;
1839 AddMaterial("G4_Galactic", density, 1, 21.8, 1, kStateGas);
1840 AddGas("G4_Galactic",2.73*kelvin, 3.e-18*hep_pascal);
1841
1842 AddMaterial("G4_GRAPHITE_POROUS", 1.7, 6, 81.);
1843 chFormulas[nMaterials-1] = "Graphite";
1844
1845 // LUCITE is equal to plustiglass
1846 AddMaterial("G4_LUCITE", 1.19, 0, 74., 3);
1847 AddElementByWeightFraction( 1, 0.080538);
1848 AddElementByWeightFraction( 6, 0.599848);
1849 AddElementByWeightFraction( 8, 0.319614);
1850
1851 // SRIM-2008 materials
1852 AddMaterial("G4_BRASS", 8.52, 0, 0.0, 3);
1853 AddElementByWeightFraction( 29, 0.57515);
1854 AddElementByWeightFraction( 30, 0.33415);
1855 AddElementByWeightFraction( 82, 0.0907);
1856
1857 AddMaterial("G4_BRONZE", 8.82, 0, 0.0, 3);
1858 AddElementByWeightFraction( 29, 0.8494);
1859 AddElementByWeightFraction( 30, 0.0884);
1860 AddElementByWeightFraction( 82, 0.0622);
1861
1862 // parameters are taken from
1863 // http://www.azom.com/article.aspx?ArticleID=965
1864 AddMaterial("G4_STAINLESS-STEEL", 8.00, 0, 0.0, 3);
1865 AddElementByWeightFraction( 26, 0.7462);
1866 AddElementByWeightFraction( 24, 0.1690);
1867 AddElementByWeightFraction( 28, 0.0848);
1868
1869 AddMaterial("G4_CR39", 1.32, 0, 0.0, 3);
1870 AddElementByAtomCount("H", 18);
1871 AddElementByAtomCount("C", 12);
1872 AddElementByAtomCount("O", 7);
1873
1874 AddMaterial("G4_OCTADECANOL", 0.812, 0, 0.0, 3);
1875 AddElementByAtomCount("H", 38);
1876 AddElementByAtomCount("C", 18);
1877 AddElementByAtomCount("O", 1);
1878
1879 nHEP = nMaterials;
1880}
1881
1882//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
1883
1884void G4NistMaterialBuilder::SpaceMaterials()
1885{
1886 // density in g/cm3
1887 AddMaterial("G4_KEVLAR" , 1.44, 0, 0.0, 4);
1888 AddElementByAtomCount("C", 14);
1889 AddElementByAtomCount("H", 10);
1890 AddElementByAtomCount("O", 2);
1891 AddElementByAtomCount("N", 2);
1892
1893 AddMaterial("G4_DACRON" , 1.40, 0, 0.0, 3); // G4_POLYETHYLENE_TEREPHTALATE
1894 AddElementByAtomCount("C", 10);
1895 AddElementByAtomCount("H", 8);
1896 AddElementByAtomCount("O", 4);
1897
1898 AddMaterial("G4_NEOPRENE" , 1.23, 0, 0.0, 3); // POLYCLOROPRENE
1899 AddElementByAtomCount("C", 4);
1900 AddElementByAtomCount("H", 5);
1901 AddElementByAtomCount("Cl",1);
1902
1903 nSpace = nMaterials;
1904}
1905
1906//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
1907
1908/**
1909 Build biochemical materials used in G4DNA Applications.
1910 Materials are defined in bonded and unbonded forms according to the
1911 following schema:
1912 G4_MATERIAL: Molecule in its free state
1913 G4_DNA_MATERIAL: Molecule, considering atoms lost in bonding
1914*/
1915
1916void G4NistMaterialBuilder::BioChemicalMaterials()
1917{
1918 // BEGIN MATERIALS IN THEIR UNBONDED FORM
1919
1920 // G4_ADENINE, G4_GUANINE are defined in
1921 // G4NistMaterialBuilder::NistCompoundMaterials()
1922
1923 //Tan, Z., et al. NIMB,2006(248)
1924 AddMaterial("G4_CYTOSINE", 1.3, 0, 72., 4);
1925 AddElementByAtomCount("H", 5);
1926 AddElementByAtomCount("C", 4);
1927 AddElementByAtomCount("N", 3);
1928 AddElementByAtomCount("O", 1);
1929
1930 AddMaterial("G4_THYMINE", 1.48, 0, 72., 4);
1931 AddElementByAtomCount("H", 6);
1932 AddElementByAtomCount("C", 5);
1933 AddElementByAtomCount("N", 2);
1934 AddElementByAtomCount("O", 2);
1935
1936 AddMaterial("G4_URACIL", 1.32, 0, 72., 4);
1937 AddElementByAtomCount("H", 4);
1938 AddElementByAtomCount("C", 4);
1939 AddElementByAtomCount("N", 2);
1940 AddElementByAtomCount("O", 2);
1941
1942 //ACD Labs Percepta Plateform - PhysChem Module
1943 //(https://www.acdlabs.com/products/percepta/index.php)
1944 AddMaterial("G4_DEOXYRIBOSE", 1.5, 0, 72, 3);
1945 AddElementByAtomCount("H", 10);
1946 AddElementByAtomCount("C", 5);
1947 AddElementByAtomCount("O", 4);
1948
1949 //Egan, E.P. and B.B. Luff,
1950 //Industrial & Engineering Chemistry, 1955. 47(6): p. 1280-1281
1951 AddMaterial("G4_PHOSPHORIC_ACID", 1.87, 0, 72, 3);
1952 AddElementByAtomCount("H", 3);
1953 AddElementByAtomCount("P", 1);
1954 AddElementByAtomCount("O", 4);
1955
1956 // END UNBONDED MATERIALS / BEGIN BONDED MATERIALS
1957
1958 // Deoxyribose loses 3 OH groups in bonding to bond with PO4 and a base pair
1959 AddMaterial("G4_DNA_DEOXYRIBOSE", 1, 0, 72., 3);
1960 AddElementByAtomCount("H", 7);
1961 AddElementByAtomCount("C", 5);
1962 AddElementByAtomCount("O", 1);
1963
1964 // Typically there are no H atoms considered in the Phosphate group
1965 AddMaterial("G4_DNA_PHOSPHATE", 1, 0, 72., 2);
1966 AddElementByAtomCount("P", 1);
1967 AddElementByAtomCount("O", 4);
1968
1969 // GATCU bases bonded to a deoxyribose (they drop one H)
1970 AddMaterial("G4_DNA_ADENINE", 1, 0, 72., 3);
1971 AddElementByAtomCount("H",4 );
1972 AddElementByAtomCount("C",5 );
1973 AddElementByAtomCount("N",5 );
1974
1975 AddMaterial("G4_DNA_GUANINE", 1, 0, 72., 4);
1976 AddElementByAtomCount("H",4 );
1977 AddElementByAtomCount("C",5 );
1978 AddElementByAtomCount("N",5 );
1979 AddElementByAtomCount("O",1 );
1980
1981 AddMaterial("G4_DNA_CYTOSINE", 1, 0, 72., 4);
1982 AddElementByAtomCount("H", 4);
1983 AddElementByAtomCount("C", 4);
1984 AddElementByAtomCount("N", 3);
1985 AddElementByAtomCount("O", 1);
1986
1987 AddMaterial("G4_DNA_THYMINE", 1, 0, 72., 4);
1988 AddElementByAtomCount("H", 5);
1989 AddElementByAtomCount("C", 5);
1990 AddElementByAtomCount("N", 2);
1991 AddElementByAtomCount("O", 2);
1992
1993 AddMaterial("G4_DNA_URACIL", 1, 0, 72., 4);
1994 AddElementByAtomCount("H", 3);
1995 AddElementByAtomCount("C", 4);
1996 AddElementByAtomCount("N", 2);
1997 AddElementByAtomCount("O", 2);
1998
1999 // END BONDED MATERIALS
2000
2001 // clang-format on
2002}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::vector< G4Material * > G4MaterialTable
G4State
@ kStateLiquid
@ kStateGas
#define G4MUTEX_INITIALIZER
std::mutex G4Mutex
double G4double
Definition G4Types.hh:83
bool G4bool
Definition G4Types.hh:86
int G4int
Definition G4Types.hh:85
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
G4double GetMeanExcitationEnergy() const
G4double FindMeanExcitationEnergy(const G4Material *) const
void SetMeanExcitationEnergy(G4double value)
G4double GetPressure() const
G4double GetDensity() const
G4State GetState() const
G4double GetTemperature() const
G4IonisParamMat * GetIonisation() const
void AddElement(G4Element *elm, G4int nAtoms)
void SetChemicalFormula(const G4String &chF)
std::size_t GetIndex() const
static G4MaterialTable * GetMaterialTable()
G4double GetAtomicMassAmu(const G4String &symb) const
G4Element * FindOrBuildElement(G4int Z, G4bool buildIsotopes=true)
G4int GetZ(const G4String &symb) const
G4Material * ConstructNewMaterial(const G4String &name, const std::vector< G4String > &elm, const std::vector< G4int > &nbAtoms, G4double dens, G4State state=kStateSolid, G4double temp=NTP_Temperature, G4double pressure=CLHEP::STP_Pressure)
void ListMaterials(const G4String &) const
G4Material * FindOrBuildMaterial(const G4String &name, G4bool warning=true)
G4NistMaterialBuilder(G4NistElementBuilder *, G4int verb=0)
G4Material * ConstructNewIdealGasMaterial(const G4String &name, const std::vector< G4String > &elm, const std::vector< G4int > &nbAtoms, G4double temp=NTP_Temperature, G4double pressure=CLHEP::STP_Pressure)
G4Material * FindSimpleMaterial(G4int Z) const
G4Material * FindOrBuildSimpleMaterial(G4int Z, G4bool warning)
G4Material * FindMaterial(const G4String &name) const
G4Material * ConstructNewGasMaterial(const G4String &name, const G4String &nameDB, G4double temp, G4double pres)
const char * name(G4int ptype)
int G4lrint(double ad)
Definition templates.hh:134