Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/materials/src/G4NistMaterialBuilder.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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 
 68 #include "G4NistMaterialBuilder.hh"
 69 
 70 #include "G4ApplicationState.hh"
 71 #include "G4AutoLock.hh"
 72 #include "G4Element.hh"
 73 #include "G4NistElementBuilder.hh"
 74 #include "G4PhysicalConstants.hh"
 75 #include "G4StateManager.hh"
 76 #include "G4SystemOfUnits.hh"
 77 
 78 #include <iomanip>
 79 
 80 namespace
 81 {
 82 G4Mutex nistMaterialMutex = G4MUTEX_INITIALIZER;
 83 }
 84 
 85 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 86 
 87 G4NistMaterialBuilder::G4NistMaterialBuilder(G4NistElementBuilder* eb, G4int vb)
 88   : elmBuilder(eb), verbose(vb)
 89 {
 90   Initialise();
 91 }
 92 
 93 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 94 
 95 G4Material* G4NistMaterialBuilder::FindOrBuildMaterial(const G4String& matname, G4bool warning)
 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 
119 G4Material* 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 
147 G4Material* G4NistMaterialBuilder::FindOrBuildSimpleMaterial(G4int Z, G4bool warn)
148 {
149   G4Material* mat = FindSimpleMaterial(Z);
150   if (mat == nullptr) {
151     mat = BuildNistMaterial(names[Z], warn);
152   }
153   return mat;
154 }
155 
156 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
157 
158 G4Material* 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 
247 G4Material* G4NistMaterialBuilder::ConstructNewMaterial(const G4String& name,
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 
290 G4Material* G4NistMaterialBuilder::ConstructNewMaterial(const G4String& name,
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 
332 G4Material* G4NistMaterialBuilder::ConstructNewGasMaterial(
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 
370 G4Material* G4NistMaterialBuilder::ConstructNewIdealGasMaterial(const G4String& name,
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 
429 void 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 
481 void G4NistMaterialBuilder::SetVerbose(G4int val)
482 {
483   verbose = val;
484   elmBuilder->SetVerbose(verbose);
485 }
486 
487 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
488 
489 void G4NistMaterialBuilder::ListMaterials(const G4String& mnam) const
490 {
491   if (mnam == "simple") {
492     ListNistSimpleMaterials();
493   }
494   else if (mnam == "compound") {
495     ListNistCompoundMaterials();
496   }
497   else if (mnam == "hep") {
498     ListHepMaterials();
499   }
500   else if (mnam == "space") {
501     ListSpaceMaterials();
502   }
503   else if (mnam == "bio") {
504     ListBioChemicalMaterials();
505   }
506 
507   else if (mnam == "all") {
508     ListNistSimpleMaterials();
509     ListNistCompoundMaterials();
510     ListHepMaterials();
511     ListSpaceMaterials();
512     ListBioChemicalMaterials();
513   }
514   else {
515     G4cout << "### G4NistMaterialBuilder::ListMaterials: Warning " << mnam << " list is not known."
516            << G4endl;
517   }
518 }
519 
520 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
521 
522 void G4NistMaterialBuilder::ListNistSimpleMaterials() const
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 
536 void G4NistMaterialBuilder::ListNistCompoundMaterials() const
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 
551 void G4NistMaterialBuilder::ListHepMaterials() const
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 
565 void G4NistMaterialBuilder::ListSpaceMaterials() const
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 
579 void G4NistMaterialBuilder::ListBioChemicalMaterials() const
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 
594 void 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 
602 void 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 
619 void 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 
635 void 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 
662 void 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 
670 void 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 
679 void 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 
689 void 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 
708 void 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 
821 void 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 
1320 void 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 
1823 void 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 
1884 void 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 
1916 void 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 }
2003