Index: trunk/source/materials/GNUmakefile
===================================================================
--- trunk/source/materials/GNUmakefile	(revision 822)
+++ trunk/source/materials/GNUmakefile	(revision 822)
@@ -0,0 +1,26 @@
+# $Id: GNUmakefile,v 1.5 2005/06/28 08:37:43 gcosmo Exp $
+# --------------------------------------------------------------
+# GNUmakefile for materials library.  Gabriele Cosmo, 18/9/96.
+# --------------------------------------------------------------
+
+name := G4materials
+
+GLOBLIBS = libG4intercoms.lib libG4global.lib
+
+ifndef G4INSTALL
+  G4INSTALL = ../..
+endif
+
+include $(G4INSTALL)/config/architecture.gmk
+
+CPPFLAGS += -I$(G4BASE)/global/management/include \
+            -I$(G4BASE)/global/HEPRandom/include \
+            -I$(G4BASE)/global/HEPGeometry/include \
+	    -I$(G4BASE)/intercoms/include
+	    	    
+include $(G4INSTALL)/config/common.gmk
+
+.PHONY: global
+ 
+global: lib
+
Index: trunk/source/materials/History
===================================================================
--- trunk/source/materials/History	(revision 822)
+++ trunk/source/materials/History	(revision 822)
@@ -0,0 +1,417 @@
+$Id: History,v 1.103.2.3 2008/04/28 08:39:02 gcosmo Exp $
+-------------------------------------------------------------------
+
+     =========================================================
+     Geant4 - an Object-Oriented Toolkit for Simulation in HEP
+     =========================================================
+
+                      Category History file
+                      ---------------------
+This file should be used by G4 developers and category coordinators
+to briefly summarize all major modifications introduced in the code
+and keep track of all category-tags.
+It DOES NOT substitute the  CVS log-message one should put at every
+committal in the CVS repository !
+
+     ----------------------------------------------------------
+     * Reverse chronological order (last date on top), please *
+     ----------------------------------------------------------
+
+06-03-07 V.Ivanchenko (materials-V09-00-09)
+- G4NistMaterialBuilder - use correct dimension for the density for
+  ConstructNewMaterial methods
+- G4Material - improve G4cerr printout
+
+11-12-07 G.Cosmo (materials-V09-00-08)
+- Made GetZ13() and GetLOGA() in G4NistManager not inlined (since they
+  handle static data), to allow for building of DLLs on WIN32-VC platform.
+
+30-10-07 V.Ivanchenko (materials-V09-00-07)
+- G4NistManager and G4NistMaterialBuilder - set default state kStateSolid
+                (before was kStateUndefined) - this modification keep 
+                existing user code unchanged
+
+28-10-07 V.Ivanchenko (materials-V09-00-06)
+- G4NistManager and G4NistMaterialBuilder - extended interfaces to build 
+                new materials: added G4State, temperature, pressure 
+                (gasses are allowed), because of default values for
+                these extra parameters no interface change to users
+
+18-10-07 V.Ivanchenko (materials-V09-00-05)
+- G4NistManager - added deletion of isotopes (fixed problem of double 
+                  deletion); added precomputed Z^1/3 and log(A)
+- G4Material - move registration in MaterialTable from constructors
+               to InitialisePointers; added Imean to printout
+- G4Element  - do not delete isotopes; move registration in ElementTable 
+               from constructors to ComputeDerivedQuantities
+
+01-10-07 V.Ivanchenko (materials-V09-00-04)
+- G4SandiaTable - fixed memory leak
+
+01-10-07 V.Ivanchenko (materials-V09-00-03)
+- G4SandiaTable - separated computations of tables photo-absobtion 
+                  coeffitients for photo-electric effect and PAI model; 
+                  added fMatSandiaMatrixPAI ordered table; 
+                  general cleanup, reduce number of static variables;
+
+27-09-07 V.Ivanchenko (materials-V09-00-02)
+- G4IonisParamMat - add comutation and get methods for parameters of
+  ion inonisation: Fermi energy, effective Z, effective L-factor;
+  they will not be recomputed at each step 
+
+27-07-07 V.Ivanchenko (materials-V09-00-01)
+- G4NistManager - simplified logic of Print methods
+- G4NistElementBuilder  - added protection to Print method
+- G4NistMaterialBuilder - modified FindOrBuildMaterial method - NIST
+                          material is built even user create a material
+                          with the same name, so NIST materials 
+                          parameters cannot be substituted
+- G4Material, G4Element - fix destructors, now all materials and elements
+  are deleted at the end of a run
+
+26-07-07 V.Ivanchenko (materials-V09-00-00)
+- G4Nistmanager provide destruction of all materials and elements
+- G4NistElementBuilder - for given Z build only one Nist element
+     and allow user create other elements with given Z (HP physics
+     requirement)
+
+19-06-07 V.Ivanchenko (materials-V08-03-02)
+- G4SandiaTable - comment out destruction of G4OrderedTable
+
+15-06-07 V.Ivanchenko (materials-V08-03-01)
+- G4SandiaTable - fixed non-initilised pointer in constructor, int -> G4int
+
+14-06-07 V.Ivanchenko (materials-V08-03-00)
+- G4SandiaTable - added deletion of elements of the table in destructor
+
+14-08-07 V.Ivanchenko (materials-V08-03-00a)
+- G4NistElementBuilder - protection (Z>=limitNumElements) inside BuildElement
+                         (Mokka request)
+
+02-05-07 V.Ivanchenko (materials-V08-02-02)
+- G4NistManager and G4NistElementBuilder - add GetNistFirstIsotopeN
+  and GetNumberOfNistIsotopes methods
+
+25-04-07 P.Gumplinger (materials-V08-02-01)
+- add file G4SurfaceProperty.cc, modify G4SurfaceProperty.hh to provide
+  a static G4SurfacePropertyTable akin to G4MaterialTable
+  add G4Exception to SetGROUPVEL when E_photon <= 0
+
+10-07-06 V.Ivanchenko (materials-V08-02-00)
+- G4Material - fill fAtomVector in the case, when material is built
+  from Element mass fractions
+- G4NistMaterialBuilder - add liquids O2 and N2
+- G4NistElementBuilder - add protection Z<=101
+
+27-06-06 V.Ivanchenko (materials-V08-01-01)
+- Add methods to access vector of names of NIST elements and materials 
+  (ILC requirement)
+- Add methods GetAtomicMass, AddIsotopeMass - return atom mass amd 
+  nuclear mass in G4 units
+- Add GetTotalBindingEnergy method to G4AtomicShells
+- Add Get/SetNaturalAbandancesFlag (requirement of hadronic group)
+
+27-06-06 V.Ivanchenko (materials-V08-01-00)
+- G4NistMaterialBuilder - fix graphite desctription
+
+11-05-06 V.Ivanchenko (materials-V08-00-03)
+- G4NistManager and G4NistMaterialBuider - add warning flag to control cout
+- G4NistElementBuilder - do not subtract mass of electrons from NIST mass
+
+02-05-06 V.Ivanchenko (materials-V08-00-02)
+- G4NistManager and G4NistElementBuider - add G4IsotopeAbundance method
+- G4NistElementBuilder - subtract mass of electrons from NIST mass
+
+18-03-06 V.Ivanchenko (materials-V08-00-01)
+- G4NistMaterialManager - fix bug in regime of combine material definition:
+                          partially via NIST DB, partially by user 
+
+09-03-06 V.Ivanchenko (materials-V08-00-00)
+- G4NistMaterialBuilder - Add method  ConstructNewGasMaterial
+- G4Material - minor change of printout
+- G4NistManager - add method GetAtomicMassAmu(Z)
+     
+22-11-05 G.Cosmo (materials-V07-01-03)
+- Additional minor changes needed for direct object persistency.
+
+18-11-05 G.Cosmo (materials-V07-01-02)
+- Additional minor changes needed for direct object persistency.
+  Temporary solution, pending improvements in the external client
+  persistency tool.
+
+15-11-05 mma (materials-V07-01-01)
+- G4bool warning=true in GetMaterial(), GetElement(), GetIsotope().
+  
+09-11-05 G.Cosmo (materials-V07-01-00)
+- Added fake default constructor for isotopes, elements, materials and
+  relevant related classes, for usage of direct object persistency of
+  detector description.
+
+31-10-05 V.Ivanchenko
+- G4NistMaterialBuilder: add chemical formulas for number of materials,
+  add temperature and presure explicitly for each material, that will
+  allow to have other than STP parameters for gases
+
+22-06-05 V.Ivanchenko (materials-V07-00-07)
+- change 1 -> 1.0 for water density
+
+08-06-05 V.Ivanchenko (materials-V07-00-06)
+- take the head of subdirectory - murge tags 04 and 05
+
+16.05.05 P.Gumplinger (materials-V07-00-05)
+- Add SetGROUPVEL() courtesy of Horton-Smith (bug report #741)
+     
+13-05-05 V.Ivanchenko (materials-V07-00-04)
+- add acknowledgement in the Nist classes
+     
+10-05-05 mma (materials-V07-00-03)
+- add a missing coma in G4IonisParamMat::FindMeanExcitationEnergy() - Bug#746
+
+01-04-05 mma (materials-V07-00-02)
+- G4Element: new data member fIndexZ to count the number of elements with same Z
+     
+31.03.05 mma
+- G4Isotope: make A optional (taken from Nist data base by default) 
+- warning in GetMaterial(materialName) and GetElement(elementName)
+
+18.03.05 S.Sadilov (materials-V07-00-01)
+- Fixed compilation problem on Windows for G4NistElementBuilder.
+     
+22.02.05 mma (materials-V07-00-00)
+- new classes G4NistManager, G4NistMessenger
+  deleted G4NistMaterialManager
+       
+11.02.05 mma 
+- new classes G4NistElementBuilder, G4NistMaterialBuilder, G4NistMaterialManager
+  and test/G4NistMaterialTest1.cc, G4NistMaterialTest2.cc
+	 
+07.12.04 G.Cosmo - materials-V06-02-02
+         Implemented migration to <cmath>.
+
+06.09.04 V.Ivant - materials-V06-02-01 
+         Recalculate ionisation parameters after set of new
+         mean ionisation potential; added factor 2 to shell correction term.
+     
+19.07.04 mma - materials-V06-02-00
+         Put a protection in G4AtomicShells::GetNumberOfShells(Z)
+	 
+13.05.04 P.Gumplinger - materials-V06-01-01
+         Added new utility method ConstPropertyExists(const char * key)
+         returning true/false according to the existance of the 'key' in
+         the table G4MaterialPropertiesTable.
+     
+05.03.04 V.Grichine - materials-V06-01-00 
+         new methods for old sorting algorithm for PAI model
+	 
+03.02.04 V.Ivant - materials-V06-00-01
+         Fix problem of destructor of G4SandiaTable
+     
+22.01.04 mma - materials-V06-00-00
+         G4Material.cc: proper STL handdling of theElementVector (Hisaya)
+
+01.12.03 P.Gumplinger - materials-V05-02-00
+         Added base class G4SurfaceProperty.
+         G4OpticalSurface[.hh.cc]: modified to inherit from G4SurfaceProperty.
+
+18.06.03 G.Cosmo - materials-V05-01-01
+         G4Isotope.cc G4Element.cc, G4Material.cc: removed usage of
+         G4USE_STD_NAMESPACE after g4std migration.
+
+19.05.03 G.Cosmo - materials-V05-01-00
+         G4Isotope.cc: fixed bug in operator=.
+         Fixes problem report #429. (M.Maire)
+         G4SandiaTable.cc: cleared trivial pedantic warning.
+
+05.11.02 P.Gumplinger - materials-V04-01-03
+         Add constant material properties to the G4MaterialPropertiesTable
+
+29.10.02 V.Ivanchenko - materials-V04-01-02
+         G4IonisParamMat: Add Set and Find MeanExcitation energy methods.
+         
+17.10.02 V.Ivanchenko - materials-V04-01-01
+         G4IonisParamElm.cc: Fix excitation energy interpolation.
+    
+06.08.02 M.Maire - materials-V04-01-00
+         Remove constructors with chemical formula 
+	      
+06.05.02 M.Maire - materials-V04-00-03
+         Remove the check of the ideal gas state equation
+	     
+16.04.02 M.Maire - materials-V04-00-02
+         G4StaticSandiaData: bug fixed in Pb: comma after  15.861
+	 G4Exception put in constructor with chemical formula 
+	      
+22.02.02 M.Maire - materials-V04-00-01
+         fIndexTable renewed in G4Material, G4Element, G4Isotope.
+
+22.01.02 M.Verderi - materials-V04-00-00
+	 Fixed G4MaterialPropertyVector::AddElement() which wasn't make use
+	 of G4MPVEntry ordering in the G4std::vector<G4MPVEntry*> MPV vector.
+	 This happens since the STL migration (while method "insert" of Rogue-Wave
+	 was taking care about.)
+	 Changes in G4MaterialPropertyVector.hh, G4MaterialPropertyVector.cc
+	 and test/testMaterialPropertyVector.cc
+
+29.11.01 G.Cosmo - materials-V03-02-07
+         Fixed declaration of ostream attributes to use standard 'fmtflags'
+         type for ANSI compilers. Fixes compilation error on gcc-3.0.2.
+         Modified files: G4Isotope.cc, G4Element.cc, G4Material.cc.
+
+28.11.01 G.Cosmo - materials-V03-02-06
+         Fixed bug in G4MaterialPropertyVector::RemoveElement() for the
+         initialisation of a local pointer. Fixes compilation problem on VC++.
+
+31.10.01 M.Maire - materials-V03-02-05 
+         New function G4Materials::SetChemicalFormula().
+
+17.10.01 G.Cosmo - materials-V03-02-04
+         Removed all static inline methods in G4Isotope, G4Element,
+         G4Material and G4SandiaTable. Now placed in respective .cc files.
+         Fixed memory leak in G4SandiaTable::ComputeMatSandiaMatrix(),
+         for deletion of temporary vectors Z, tmp1, tmp2.
+         Moved definitions of G4IsotopeVector and G4ElementVector,
+	 G4ElementTable and G4MaterialTable to the appropriate headers.
+         Replaced NULL with 0 whereever needed.
+
+19.09.01 G.Cosmo - materials-V03-02-03
+         Fixed initialisation of STL collections in costructors and assignment
+         operators. Fixes warnings detected on HP-aCC.
+     
+14.09.01 M.Maire - materials-V03-02-02
+         G4Isotope,Element,Material: IndexInTable is obtained dynamically
+	 via GetIndex(). An Isotope,Element,Material can be deleted.
+	 fCountUse counts the nb of materials which reference a given element.
+	 (idem for elements->isotope) 
+
+31.08.01 P.Gumplinger - materials-V03-02-01
+         Fix printing of property name and check for NULL property vector 
+         pointer in G4MaterialPropertiesTable:DumpTable; and correct warning
+         message in RemoveEntry method.
+         Improve printing in G4MaterialPropertyVector::DumpVector.
+
+17.07.01 M.Verderi - materials-V03-02-00
+	 Complete migration to STL. Tag proposed for testing.
+
+06.06.01 G.Cosmo - materials-V03-01-01
+         Explicitly initialise to zero values of G4DataVector used to create
+         sandia-matrix in method ComputeMatSandiaMatrix().
+         This fix clears warnings detected on HP-aCC.
+         Coworks with tag "global-V03-01-01".
+
+18.05.01 G.Cosmo - materials-V03-01-00
+         Cleared pedantic warnings detected by Linux-g++ with ISO/ANSI setup.
+     
+03.05.01 M.Maire
+         precision(prec) at begin/end of operator<<  Isotope,Element,Material
+     
+02.05.01 Marc+mma
+         protection added in G4Element::AddIsotope() against no coherent Z
+
+03.04.01 M.Maire - materials-V03-00-07
+         removed warning to cerr in GetIsotope(name), GetElement(name),
+	 and GetMaterial(name).
+         fnulcof added as data member in G4SandiaTable.
+     
+22.03.01 M.Maire - materials-V03-00-06
+         revision of destructor, copy constructor, assignement operator in
+	 G4IonisParamElm, G4IonisParamMat, G4Isotope, G4Element, G4Material
+	      
+22.02.01 M.Maire - materials-V03-00-05
+         G4SandiaTable : protection added in GetSandiaCofForMaterial(energy)
+	            
+Feb     16, 01 M.Maire - materials-V03-00-04
+               G4SandiaTable : major bug in GetSandiaCofPerAtom (units!).
+	       redesign of ComputeMatSandiaMatrix.
+	       Include materials-V03-00-02 
+	       
+Feb     05, 01 G.Cosmo - materials-V03-00-03
+               STL migration for G4OrderedTable and G4DataVector.
+               Modified files: G4SandiaTable.cc.
+               NOTE: this tag does not include changes in materials-V03-00-02.
+
+Jan     28, 01 M.Maire - materials-V03-00-02
+               new method G4Material::GetNuclearInterLength()
+	  
+Jan     16, 01 V.Ivanchenko - materials-V03-00-01
+               IonisParamElm.cc : excitation potential is tabulated
+               according ICRU Report #37.
+	       
+Jan     16, 01 L.Urban  - materials-V03-00-00
+               bug fixed in IonisParamMat.cc : E100eV instead of E100keV
+               This bug affected the values of the density correction
+               parameters in the energy loss (dE/dx) computation,
+               its effect was quite big (~ 3-5 % error in dE/dx
+               in the energy range 1 MeV - 50 MeV !!!)
+	       
+Nov     09, 00 V.Grichine - materials-V02-00-01
+               included test/ directory which was not tagged.
+
+August  04, 00 V.Grichine - materials-V02-00-00
+               G4SandiaTable.cc: fixed initialization of pointers in
+	       constructor and corrected deletion of fPhotoAbsorptionCof
+	       in destructor.
+
+June    15, 00 G.Cosmo  - materials-V01-01-00
+               fixed usage of pow(double,double) in G4SandiaTable.
+     
+March   03, 00 M.Maire  - materials-V01-00-00
+               const char* everywhere in G4MaterialPropertiesTable
+	       
+Nov     16, 99 G.Cosmo  - materials-V00-01-03
+               Removed useless inclusion of RW tphdict.h from
+	       G4MaterialPropertiesTable.hh. This tag includes the global
+	       migration RWT->G4RWT (still CVS headers are different on the HEAD).
+
+Nov     09, 99 P.Gumpliger  - materials-V00-01-02
+               changes to comments for Software Reference Manual in
+	       G4MPVEntry.hh, G4MaterialPropertyVector.hh, G4OpticalSurface.hh.
+	       Migrated G4MaterialPropertiesTable from RW dictionary to STL map.
+
+July    28, 99 M.Maire  - materials-V00-01-00
+               new G4Material constructor with chemical formula
+	                 
+August  13, 98 M.Maire  - materials-00-02-01
+               new static method G4Material::GetMaterial(name)     
+     
+July    17, 98 M.Maire  - materials-00-01-04
+               correction in ComputeDensityCorrection() for gas
+               (G4IonisParamMat.cc)    
+     
+July    10, 98 M.Maire  - materials-00-01-03
+               Ionisation parameters put in a subclass
+               coworks with em-00-01-03
+                   
+July     8, 98 M.Maire  - materials-00-01-02
+               restored G4MaterialTable, ElementTable, ElementVector 
+               to be compatible with pre-beta01-02
+               
+July     7, 98 M.Maire  - materials-00-01-01
+               continue cleanup: Elements and Materials
+               new output formats: operator<< overloaded
+               
+June    30, 98 M.Maire  - materials-00-07-01
+               new method AddMaterial() for mixture of mixtures.
+               start the cleanup of the category. G4Isotope done. 
+               G4IsotopeTable typedef directly include in G4Isotope.hh
+               G4MaterialTest.cc illustrate all possible case to 
+               define materials.
+               
+     
+June    06, 98 M.Maire  - materials-00-06-01
+               new G4AtomicShells class (Vladimir)
+               kState = kVacuum removed (minimal lower density set
+                                         by default)
+
+April   17, 98 M.Maire  - materials-00-05-01
+ 
+April   08, 98 G.Cosmo
+- Added fixes for DEC-cxx 6.0 compiler, related to for-loop index
+  declarations. Modified G4SandiaTable.cc.
+
+March     5, 98 M.Maire - materials-00-04-01
+
+January  29, 98 M.Maire - materials-00-03-01
+
+December 19, 97 G.Cosmo - (alpha03)
+- Created.
+
Index: trunk/source/materials/include/G4AtomicShells.hh
===================================================================
--- trunk/source/materials/include/G4AtomicShells.hh	(revision 822)
+++ trunk/source/materials/include/G4AtomicShells.hh	(revision 822)
@@ -0,0 +1,1740 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4AtomicShells.hh,v 1.7 2006/10/17 15:15:46 vnivanch Exp $
+// GEANT4 tag $Name:  $
+
+// class description
+//
+// Class consists of atomic subshell binding energies for first 100 elements.
+//
+// The data were given from:
+//
+// I	from	Janni J.F. 1982 (I for F from estimation with formula).
+//
+// I(i)	from	T.A.Carlson, Photoelectron and Auger Spectroscopy,
+//		Plenum, New York, 1976, p.337.
+//
+//		a) CRC, Handbook of Chemistry and Physics, 73rd Edition,
+//	        	1992-1993
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+// 24-04-98, implementation of the first version, V. Grichine
+// 16-11-98, GetBindingEnergy(Z,ShellNb), M.Maire
+// 11-02-05, GetNumberOfElectrons(Z,ShellNb), V.Ivanchenko
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+#ifndef G4ATOMICSHELLS_H
+#define G4ATOMICSHELLS_H
+
+
+#include "globals.hh"
+#include "templates.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+class G4AtomicShells 
+{
+public :  //with description
+
+static G4int    GetNumberOfShells(G4int Z);
+static G4int    GetNumberOfElectrons(G4int Z, G4int SubshellNb);
+static G4double GetBindingEnergy (G4int Z, G4int SubshellNb);
+       G4double GetTotalBindingEnergy (G4int Z);
+
+private :
+
+static const G4int    fNumberOfShells[101];
+static const G4int    fNumberOfElectrons[1540];
+static const G4double fBindingEnergies[1540];
+
+};
+
+
+/*   *********************************************************
+Below is the atomic subshell binding energytable for elements Z=1-100.
+The data were given from:
+
+I	from	Janni J.F. 1982 (I for F from estimation with formula).
+
+I(i)	from	T.A.Carlson, Photoelectron and Auger Spectroscopy,
+		Plenum, New York, 1976, p.337.
+
+		a) CRC, Handbook of Chemistry and Physics, 73rd Edition,
+	        	1992-1993
+
+
+	  Free Atom Subshells Binding Energies - I(i)
+	----------------------------------------------
+
+El      A  Z     I    err I     Z(i)   I(i)   comments
+                eV     %               eV
+----------------------------------------------------------------
+H    1.01  1    20.4  11.9   K   1    13.60  1S
+----------------------------------------------------------------
+HE   4.00  2    38.5   9. 0  K   2    24.59  1S
+----------------------------------------------------------------
+LI   6.94  3    00.0   0.00  K   2    58.    1S
+                             L1  1     5.39  2S
+----------------------------------------------------------------
+BE   9.01  4    00.0   0.00  K   2   115.    1S
+                             L1  2     9.32  2S
+----------------------------------------------------------------
+B   10.81  5    00.0   0.00  K   2   192.    1S
+                             L1  2    12.93  2S
+                             L2  1     8.30  2P1/2
+----------------------------------------------------------------
+C   12.01  6    73.8  11.6   K   2   288.    1S
+                             L1  2    16.59  2S
+                             L2  2    11.26  2P1/2
+----------------------------------------------------------------
+N   14.01  7    00.0   0.00  K   2   403.    1S
+                             L1  2    37.3   2S		a)
+                             L2  2    20.33  2P1/2
+                             L3  1    14.53  2P3/2
+----------------------------------------------------------------
+O   16.00  8   115.7   7.73  K   2   543.1   1S		a)
+                             L1  2    41.6   2S		a)
+                             L2  2    28.48  2P1/2
+                             L3  2    13.62  2P3/2
+----------------------------------------------------------------
+F   19.00  9   124.8  10.00  K   2   696.7   1S		a)
+                             L1  2    37.85  2S
+                             L2  5    17.42  2P1/2-2P3/2
+----------------------------------------------------------------
+NE  20.18  10  133.8   7.53  K   2   870.1   1S
+                             L1  2    48.47  2S
+                             L2  2    21.66  2P1/2
+                             L3  4    21.56  2P3/2
+----------------------------------------------------------------
+NA  22.99  11   00.0   0.00  K   2  1075.    1S
+                             L1  2    66.    2S
+                             L2  2    34.    2P1/2
+                             L3  4    34.    2P3/2
+                             M1  1     5.14  3S
+----------------------------------------------------------------
+MG  24.31  12   00.0   0.00  K   2  1308.    1S
+                             L1  2    92.    2S
+                             L2  2    54.    2P1/2
+                             L3  4    54.    2P3/2
+                             M1  2     7.65  3S
+----------------------------------------------------------------
+AL  26.98  13   00.0   0.00  K   2  1564.    1S
+                             L1  2   121.    2S
+                             L2  2    77.    2P1/2
+                             L3  4    77.    2P3/2
+                             M1  2    10.62  3S
+                             M2  1     5.99  3P1/2
+----------------------------------------------------------------
+SI  28.08  14  174.5   6.49  K   2  1844.    1S
+                             L1  2   154.    2S
+                             L2  2   104.    2P1/2
+                             L3  4   104.    2P3/2
+                             M1  2    13.46  3S
+                             M2  2     8.15  3P1/2
+----------------------------------------------------------------
+P   30.97  15   00.0   0.00  K   2  2148.    1S
+                             L1  2   191.    2S
+                             L2  2   135.    2P1/2
+                             L3  4   134.    2P3/2
+                             M1  2    16.15  3S
+                             M2  3    10.49  3P1/2-3P3/2
+----------------------------------------------------------------
+S   32.06  16   00.0   0.00  K   2  2476.    1S
+                             L1  2   232.    2S
+                             L2  2   170.    2P1/2
+                             L3  4   168.    2P3/2
+                             M1  2    20.20  3S
+                             M2  4    10.36  3P1/2-3P3/2
+----------------------------------------------------------------
+CL  35.45  17   00.0   0.00  K   2  2829.    1S
+                             L1  2   277.    2S
+                             L2  2   208.    2P1/2
+                             L3  4   206.    2P3/2
+                             M1  2    24.54  3S
+                             M2  5    12.97  3P1/2-3P3/2
+----------------------------------------------------------------
+AR  39.95  18  181.6   6.67  K   2  3206.3   1S
+                             L1  2   326.5   2S
+                             L2  2   250.6   2P1/2
+                             L3  4   248.5   2P3/2
+                             M1  2    29.24  3S
+                             M2  2    15.94  3P1/2
+                             M3  4    15.76  3P3/2
+----------------------------------------------------------------
+K   39.10  19   00.0   0.00  K   2  3610.    1S
+                             L1  2   381.    2S
+                             L2  2   299.    2P1/2
+                             L3  4   296.    2P3/2
+                             M1  2    37.    3S
+                             M2  2    19.    3P1/2
+                             M3  4    18.7   3P3/2
+                             N1  1     4.34  4S
+----------------------------------------------------------------
+CA  40.08  20   00.0   0.00  K   2  4041.    1S
+                             L1  2   441.    2S
+                             L2  2   353.    2P1/2
+                             L3  4   349.    2P3/2
+                             M1  2    46.    3S
+                             M2  2    28.    3P1/2
+                             M3  4    28.    3P3/2
+                             N1  2     6.11  4S
+----------------------------------------------------------------
+SC  44.96  21   00.0   0.00  K   2  4494.    1S
+                             L1  2   503.    2S
+                             L2  2   408.    2P1/2
+                             L3  4   403.    2P3/2
+                             M1  2    55.    3S
+                             M2  2    33.    3P1/2
+                             M3  4    33.    3P3/2
+                             M4  1     8.    3D3/2
+                             N1  2     6.54  4S
+----------------------------------------------------------------
+TI  47.90  22   00.0   0.00  K   2  4966.    1S		a)
+                             L1  2   567.    2S
+                             L2  2   465.    2P1/2
+                             L3  4   459.    2P3/2
+                             M1  2    64.    3S
+                             M2  2    39.    3P1/2
+                             M3  4    38.0   3P3/2
+                             M4  2     8.    3D3/2
+                             N1  2     6.82  4S
+----------------------------------------------------------------
+V   50.94  23   00.0   0.00  K   2  5465.    1S		a)
+                             L1  2   633.    2S
+                             L2  2   525.    2P1/2
+                             L3  4   518.    2P3/2
+                             M1  2    72.    3S
+                             M2  2    44.    3P1/2
+                             M3  4    43.    3P3/2
+                             M4  3     8.    3D3/2
+                             N1  2     6.74  4S
+----------------------------------------------------------------
+CR  52.01  24   00.0   0.00  K   2  5989.    1S		a)
+                             L1  2   702.    2S
+                             L2  2   589.    2P1/2
+                             L3  4   580.    2P3/2
+                             M1  2    80.    3S
+                             M2  2    49.    3P1/2
+                             M3  4    48.    3P3/2
+                             M4  4     8.25  3D3/2
+                             N1  2     6.77  4S
+----------------------------------------------------------------
+MN  54.94  25   00.0   0.00  K   2  6539.    1S		a)
+                             L1  2   755.    2S
+                             L2  2   656.    2P1/2
+                             L3  4   645.    2P3/2
+                             M1  2    89.    3S
+                             M2  2    55.    3P1/2
+                             M3  4    53.    3P3/2
+                             M4  5     9.    3D3/2-3D5/2
+                             N1  2     7.43  4S
+----------------------------------------------------------------
+FE  55.85  26   00.0   0.00  K   2  7112.    1S		a)
+                             L1  2   851.    2S
+                             L2  2   726.    2P1/2
+                             L3  4   713.    2P3/2
+                             M1  2    98.    3S
+                             M2  2    61.    3P1/2
+                             M3  4    59.    3P3/2
+                             M4  6     9.    3D3/2-3D5/2
+                             N1  2     7.87  4S
+----------------------------------------------------------------
+CO  58.93  27   00.0   0.00  K   2  7709.    1S		a)
+                             L1  2   931.    2S
+                             L2  2   800.    2P1/2
+                             L3  4   785.    2P3/2
+                             M1  2   107.    3S
+                             M2  2    68.    3P1/2
+                             M3  4    66.    3P3/2
+                             M4  7     9.    3D3/2-3D5/2
+                             N1  2     7.86  4S
+----------------------------------------------------------------
+NI  58.71  28   00.0   0.00  K   2  8333.    1S		a)
+                             L1  2  1015.    2S
+                             L2  2   877.    2P1/2
+                             L3  4   860.    2P3/2
+                             M1  2   117.    3S
+                             M2  2    75.    3P1/2
+                             M3  4    73.    3P3/2
+                             M4  4    10.    3D3/2
+                             M5  4    10.    3D5/2
+                             N1  2     7.64  4S
+----------------------------------------------------------------
+CU  63.55  29   00.0   0.00  K   2  8979.    1S		a)
+                             L1  2  1103.    2S
+                             L2  2   958.    2P1/2
+                             L3  4   938.    2P3/2
+                             M1  2   127.    3S
+                             M2  2    82.    3P1/2
+                             M3  4    80.    3P3/2
+                             M4  4    11.    3D3/2
+                             M5  5    10.4   3D5/2
+                             N1  2     7.73  4S
+----------------------------------------------------------------
+ZN  65.37  30   00.0   0.00  K   2  9659.    1S		a)
+                             L1  2  1198.    2S
+                             L2  2  1047.    2P1/2
+                             L3  4  1024.    2P3/2
+                             M1  2   141.    3S
+                             M2  2    94.    3P1/2
+                             M3  4    91.    3P3/2
+                             M4  4    12.    3D3/2
+                             M5  6    11.2   3D5/2
+                             N1  2     9.39  4S
+----------------------------------------------------------------
+GA  69.72  31   00.0   0.00  K   2 10367.    1S		a)
+                             L1  2  1302.    2S
+                             L2  2  1146.    2P1/2
+                             L3  4  1119.    2P3/2
+                             M1  2   162.    3S
+                             M2  2   111.    3P1/2
+                             M3  4   107.    3P3/2
+                             M4  4    21.    3D3/2
+                             M5  6    20.    3D5/2
+                             N1  2    11.    4S
+                             N2  1     6.    4P1/2
+----------------------------------------------------------------
+GE  72.59  32   00.0   0.00  K   2 11103.    1S		a)
+                             L1  2  1413.    2S
+                             L2  2  1251.    2P1/2
+                             L3  4  1220.    2P3/2
+                             M1  2   184.    3S
+                             M2  2   130.    3P1/2
+                             M3  4   125.    3P3/2
+                             M4  4    33.    3D3/2
+                             M5  6    32.    3D5/2
+                             N1  2    14.3   4S
+                             N2  2     7.9   4P1/2
+----------------------------------------------------------------
+AS  74.92  33   00.0   0.00  K   2 11867.    1S		a)
+                             L1  2  1531.    2S
+                             L2  2  1362.    2P1/2
+                             L3  4  1327.    2P3/2
+                             M1  2   208.    3S
+                             M2  2   151.    3P1/2
+                             M3  4   145.    3P3/2
+                             M4  4    46.    3D3/2
+                             M5  6    45.    3D5/2
+                             N1  2    17.    4S
+                             N2  3     9.81  4P1/2-4P3/2
+----------------------------------------------------------------
+SE  78.96  34   00.0   0.00  K   2 12658.    1S		a)
+                             L1  2  1656.    2S
+                             L2  2  1479.    2P1/2
+                             L3  4  1439.    2P3/2
+                             M1  2   234.    3S
+                             M2  2   173.    3P1/2
+                             M3  4   166.    3P3/2
+                             M4  4    61.    3D3/2
+                             M5  6    60.    3D5/2
+                             N1  2    20.15  4S
+                             N2  4     9.75  4P1/2-4P3/2
+----------------------------------------------------------------
+BR  79.90  35   00.0   0.00  K   2 13474.    1S		a)
+                             L1  2  1787.    2S
+                             L2  2  1602.    2P1/2
+                             L3  4  1556.    2P3/2
+                             M1  2   262.    3S
+                             M2  2   197.    3P1/2
+                             M3  4   189.    3P3/2
+                             M4  4    77.    3D3/2
+                             M5  6    76.    3D5/2
+                             N1  2    23.8   4S
+                             N2  5    11.85  4P1/2-4P3/2
+----------------------------------------------------------------
+KR  83.80  36  340.8   7.52  K   2 14326.    1S		a)
+                             L1  2  1924.6   2S
+                             L2  2  1730.9   2P1/2
+                             L3  4  1678.4   2P3/2
+                             M1  2   292.8   3S
+                             M2  2   222.2   3P1/2
+                             M3  4   214.4   3P3/2
+                             M4  4    95.0   3D3/2
+                             M5  6    93.8   3D5/2
+                             N1  2    27.51  4S
+                             N2  2    14.65  4P1/2
+                             N3  4    14.    4P3/2
+----------------------------------------------------------------
+RB  85.47  37  00.0   0.00   K   2 15200.    1S		a)
+                             L1  2  2068.    2S
+                             L2  2  1867.    2P1/2
+                             L3  4  1807.    2P3/2
+                             M1  2   325.    3S
+                             M2  2   251.    3P1/2
+                             M3  4   242.    3P3/2
+                             M4  4   116.    3D3/2
+                             M5  6   114.    3D5/2
+                             N1  2    32.    4S
+                             N2  2    16.    4P1/2
+                             N3  4    15.3   4P3/2
+                             O1  1     4.18  5S
+----------------------------------------------------------------
+SR  87.62  38  00.0   0.00   K   2 16105.    1S		a)
+                             L1  2  2219.    2S
+                             L2  2  2010.    2P1/2
+                             L3  4  1943.    2P3/2
+                             M1  2   361.    3S
+                             M2  2   283.    3P1/2
+                             M3  4   273.    3P3/2
+                             M4  4   139.    3D3/2
+                             M5  6   137.    3D5/2
+                             N1  2    40.    4S
+                             N2  2    23.    4P1/2
+                             N3  4    22.    4P3/2
+                             O1  2     5.69  5S
+----------------------------------------------------------------
+Y   88.91  39  00.0   0.00   K   2 17038.    1S		a)
+                             L1  2  2375.    2S
+                             L2  2  2158.    2P1/2
+                             L3  4  2083.    2P3/2
+                             M1  2   397.    3S
+                             M2  2   315.    3P1/2
+                             M3  4   304.    3P3/2
+                             M4  4   163.    3D3/2
+                             M5  6   161.    3D5/2
+                             N1  2    48.    4S
+                             N2  2    30.    4P1/2
+                             N3  4    29.    4P3/2
+                             N4  1     6.38  4D3/2
+                             O1  2     6.48  5S
+----------------------------------------------------------------
+ZR  91.22  40  00.0   0.00   K   2 17998.    1S		a)
+                             L1  2  2536.    2S
+                             L2  2  2311.    2P1/2
+                             L3  4  2227.    2P3/2
+                             M1  2   434.    3S
+                             M2  2   348.    3P1/2
+                             M3  4   335.    3P3/2
+                             M4  4   187.    3D3/2
+                             M5  6   185.    3D5/2
+                             N1  2    56.    4S
+                             N2  2    35.    4P1/2
+                             N3  4    33.    4P3/2
+                             N4  2     8.61  4D3/2
+                             O1  2     6.84  5S
+----------------------------------------------------------------
+NB  92.91  41  00.0   0.00   K   2 18986.    1S		a)
+                             L1  2  2702.    2S
+                             L2  2  2469.    2P1/2
+                             L3  4  2375.    2P3/2
+                             M1  2   472.    3S
+                             M2  2   382.    3P1/2
+                             M3  4   367.    3P3/2
+                             M4  4   212.    3D3/2
+                             M5  6   209.    3D5/2
+                             N1  2    62.    4S
+                             N2  2    40.    4P1/2
+                             N3  4    38.    4P3/2
+                             N4  3     7.17  4D3/2
+                             O1  2     6.88  5S
+----------------------------------------------------------------
+MO  95.95  42  00.0   0.00   K   2 20000.    1S		a)
+                             L1  2  2872.    2S
+                             L2  2  2632.    2P1/2
+                             L3  4  2527.    2P3/2
+                             M1  2   511.    3S
+                             M2  2   416.    3P1/2
+                             M3  4   399.    3P3/2
+                             M4  4   237.    3D3/2
+                             M5  6   234.    3D5/2
+                             N1  2    68.    4S
+                             N2  2    45.    4P1/2
+                             N3  4    42.    4P3/2
+                             N4  4     8.56  4D3/2
+                             O1  2     7.10  5S
+----------------------------------------------------------------
+TC  99.    43  00.0   0.00   K   2 21044.    1S		a)
+                             L1  2  3048.    2S
+                             L2  2  2800.    2P1/2
+                             L3  4  2683.    2P3/2
+                             M1  2   551.    3S
+                             M2  2   451.    3P1/2
+                             M3  4   432.    3P3/2
+                             M4  4   263.    3D3/2
+                             M5  6   259.    3D5/2
+                             N1  2    74.    4S
+                             N2  2    49.    4P1/2
+                             N3  4    45.    4P3/2
+                             N4  5     8.6   4D3/2-4D5/2
+                             O1  2     7.28  5S
+----------------------------------------------------------------
+RU 101.1   44  00.0   0.00   K   2 22117.    1S		a)
+                             L1  2  3230.    2S
+                             L2  2  2973.    2P1/2
+                             L3  4  2844.    2P3/2
+                             M1  2   592.    3S
+                             M2  2   488.    3P1/2
+                             M3  4   466.    3P3/2
+                             M4  4   290.    3D3/2
+                             M5  6   286.    3D5/2
+                             N1  2    81.    4S
+                             N2  2    53.    4P1/2
+                             N3  4    49.    4P3/2
+                             N4  6     8.5   4D3/2-4D5/2
+                             O1  2     7.37  5S
+----------------------------------------------------------------
+RH 102.91  45  00.0   0.00   K   2 23220.    1S		a)
+                             L1  2  3418.    2S
+                             L2  2  3152.    2P1/2
+                             L3  4  3010.    2P3/2
+                             M1  2   634.    3S
+                             M2  2   526.    3P1/2
+                             M3  4   501.    3P3/2
+                             M4  4   318.    3D3/2
+                             M5  6   313.    3D5/2
+                             N1  2    87.    4S
+                             N2  2    58.    4P1/2
+                             N3  4    53.    4P3/2
+                             N4  7     9.56  4D3/2-4D5/2
+                             O1  2     7.46  5S
+----------------------------------------------------------------
+PD 106.4   46  00.0   0.00   K   2 24350.    1S		a)
+                             L1  2  3611.    2S
+                             L2  2  3337.    2P1/2
+                             L3  4  3180.    2P3/2
+                             M1  2   677.    3S
+                             M2  2   565.    3P1/2
+                             M3  4   537.    3P3/2
+                             M4  4   347.    3D3/2
+                             M5  6   342.    3D5/2
+                             N1  2    93.    4S
+                             N2  2    63.    4P1/2
+                             N3  4    57.    4P3/2
+                             N4  4     8.78  4D3/2
+                             N5  4     8.34  4D5/2
+                             O1  2     7.52  5S
+----------------------------------------------------------------
+AG 107.88  47  00.0   0.00   K   2 25514.    1S		a)
+                             L1  2  3812.    2S
+                             L2  2  3530.    2P1/2
+                             L3  4  3357.    2P3/2
+                             M1  2   724.    3S
+                             M2  2   608.    3P1/2
+                             M3  4   577.    3P3/2
+                             M4  4   379.    3D3/2
+                             M5  6   373.    3D5/2
+                             N1  2   101.    4S
+                             N2  2    69.    4P1/2
+                             N3  4    63.    4P3/2
+                             N4  4    11.    4D3/2
+                             N5  5    10.    4D5/2
+                             O1  2     7.58  5S
+----------------------------------------------------------------
+CD 112.41  48  00.0   0.00   K   2 26711.    1S		a)
+                             L1  2  4022.    2S
+                             L2  2  3732.    2P1/2
+                             L3  4  3542.    2P3/2
+                             M1  2   775.    3S
+                             M2  2   655.    3P1/2
+                             M3  4   621.    3P3/2
+                             M4  4   415.    3D3/2
+                             M5  6   408.    3D5/2
+                             N1  2   112.    4S
+                             N2  2    78.    4P1/2
+                             N3  4    71.    4P3/2
+                             N4  4    14.    4D3/2
+                             N5  6    13.    4D5/2
+                             O1  2     8.99  5S
+----------------------------------------------------------------
+IN 114.82  49  00.0   0.00   K   2 27940.    1S		a)
+                             L1  2  4242.    2S
+                             L2  2  3943.    2P1/2
+                             L3  4  3735.    2P3/2
+                             M1  2   830.    3S
+                             M2  2   707.    3P1/2
+                             M3  4   669.    3P3/2
+                             M4  4   455.    3D3/2
+                             M5  6   447.    3D5/2
+                             N1  2   126.    4S
+                             N2  2    90.    4P1/2
+                             N3  4    82.    4P3/2
+                             N4  4    21.    4D3/2
+                             N5  6    20.    4D5/2
+                             O1  2    10.    5S
+                             O2  1     5.79  5P1/2
+----------------------------------------------------------------
+SN 118.70  50  00.0   0.00   K   2 29200.    1S		a)
+                             L1  2  4469.    2S
+                             L2  2  4160.    2P1/2
+                             L3  4  3933.    2P3/2
+                             M1  2   888.    3S
+                             M2  2   761.    3P1/2
+                             M3  4   719.    3P3/2
+                             M4  4   497.    3D3/2
+                             M5  6   489.    3D5/2
+                             N1  2   141.    4S
+                             N2  2   102.    4P1/2
+                             N3  4    93.    4P3/2
+                             N4  4    29.    4D3/2
+                             N5  6    28.    4D5/2
+                             O1  2    12.    5S
+                             O2  2     7.34  5P1/2
+----------------------------------------------------------------
+SB 121.76  51  00.0   0.00   K   2 30419.    1S		a)
+                             L1  2  4698.    2S		a)
+                             L2  2  4385.    2P1/2
+                             L3  4  4137.    2P3/2
+                             M1  2   949.    3S
+                             M2  2   817.    3P1/2
+                             M3  4   771.    3P3/2
+                             M4  4   542.    3D3/2
+                             M5  6   533.    3D5/2
+                             N1  2   157.    4S
+                             N2  2   114.    4P1/2
+                             N3  4   104.    4P3/2
+                             N4  4    38.    4D3/2
+                             N5  6    37.    4D5/2
+                             O1  2    15.    5S
+                             O2  3     8.64  5P1/2-5P3/2
+----------------------------------------------------------------
+TE 127.61  52  00.0   0.00   K   2 31814.    1S		a)
+                             L1  2  4939.    2S		a)
+                             L2  2  4612.    2P1/2	a)
+                             L3  4  4347.    2P3/2
+                             M1  2  1012.    3S
+                             M2  2   876.    3P1/2
+                             M3  4   825.    3P3/2
+                             M4  4   589.    3D3/2
+                             M5  6   578.    3D5/2
+                             N1  2   174.    4S
+                             N2  2   127.    4P1/2
+                             N3  4   117.    4P3/2
+                             N4  4    48.    4D3/2
+                             N5  6    46.    4D5/2
+                             O1  2    17.84  5S
+                             O2  4     9.01  5P1/2-5P3/2
+----------------------------------------------------------------
+I  126.91  53  00.0   0.00   K   2 33169.    1S		a)
+                             L1  2  5188.    2S		a)
+                             L2  2  4852.    2P1/2	a)
+                             L3  4  4557.    2P3/2	a)
+                             M1  2  1078.    3S
+                             M2  2   937.    3P1/2
+                             M3  4   881.    3P3/2
+                             M4  4   638.    3D3/2
+                             M5  6   626.    3D5/2
+                             N1  2   193.    4S
+                             N2  2   141.    4P1/2
+                             N3  4   131.    4P3/2
+                             N4  4    58.    4D3/2
+                             N5  6    56.    4D5/2
+                             O1  2    20.61  5S
+                             O2  5    10.45  5P1/2-5P3/2
+----------------------------------------------------------------
+XE 131.30  54  508.8   9.61  K   2 34570.    1S		a)
+                             L1  2  5460.    2S		a)
+                             L2  2  5110.    2P1/2	a)
+                             L3  4  4790.    2P3/2	a)
+                             M1  2  1148.7   3S
+                             M2  2  1002.1   3P1/2
+                             M3  4   940.6   3P3/2
+                             M4  4   689.0   3D3/2
+                             M5  6   676.4   3D5/2
+                             N1  2   213.2   4S
+                             N2  2   157.    4P1/2
+                             N3  4   145.5   4P3/2
+                             N4  4    69.5   4D3/2
+                             N5  6    67.5   4D5/2
+                             O1  2    23.39  5S
+                             O2  2    13.43  5P1/2
+                             O3  4    12.13  5P3/2
+----------------------------------------------------------------
+CS 132.91  55   00.0   0.00  K   2 35985.    1S		a)
+                             L1  2  5714.    2S		a)
+                             L2  2  5359.    2P1/2	a)
+                             L3  4  5012.    2P3/2	a)
+                             M1  2  1220.    3S
+                             M2  2  1068.    3P1/2
+                             M3  4  1000.    3P3/2
+                             M4  4   742.    3D3/2
+                             M5  6   728.    3D5/2
+                             N1  2   233.    4S
+                             N2  2   174.    4P1/2
+                             N3  4   164.    4P3/2
+                             N4  4    81.    4D3/2
+                             N5  6    79.    4D5/2
+                             O1  2    25.    5S
+                             O2  2    14.    5P1/2
+                             O3  4    12.3   5P3/2
+                             P1  1     3.89  6S
+----------------------------------------------------------------
+BA 137.36  56   00.0   0.00  K   2 37441.    1S		a)
+                             L1  2  5989.    2S		a)
+                             L2  2  5624.    2P1/2	a)
+                             L3  4  5247.    2P3/2	a)
+                             M1  2  1293.    3S
+                             M2  2  1138.    3P1/2
+                             M3  4  1063.    3P3/2
+                             M4  4   797.    3D3/2
+                             M5  6   782.    3D5/2
+                             N1  2   254.    4S
+                             N2  2   193.    4P1/2
+                             N3  4   181.    4P3/2
+                             N4  4    94.    4D3/2
+                             N5  6    92.    4D5/2
+                             O1  2    31.    5S
+                             O2  2    18.    5P1/2
+                             O3  4    16.    5P3/2
+                             P1  2     5.21  6S
+----------------------------------------------------------------
+LA 138.92  57   00.0   0.00  K   2 38925.    1S		a)
+                             L1  2  6266.    2S		a)
+                             L2  2  5891.    2P1/2	a)
+                             L3  4  5483.    2P3/2	a)
+                             M1  2  1365.    3S
+                             M2  2  1207.    3P1/2
+                             M3  4  1124.    3P3/2
+                             M4  4   851.    3D3/2
+                             M5  6   834.    3D5/2
+                             N1  2   273.    4S
+                             N2  2   210.    4P1/2
+                             N3  4   196.    4P3/2
+                             N4  4   105.    4D3/2
+                             N5  6   103.    4D5/2
+                             O1  2    36.    5S
+                             O2  2    22.    5P1/2
+                             O3  4    19.    5P3/2
+                             O4  1     5.75  5D3/2
+                             P1  2     5.58  6S
+----------------------------------------------------------------
+CE 140.13  58   00.0   0.00  K   2 40443.    1S		a)
+                             L1  2  6548.    2S		a)
+                             L2  2  6164.    2P1/2	a)
+                             L3  4  5723.    2P3/2	a)
+                             M1  2  1437.    3S
+                             M2  2  1275.    3P1/2
+                             M3  4  1184.    3P3/2
+                             M4  4   903.    3D3/2
+                             M5  6   885.    3D5/2
+                             N1  2   291.    4S
+                             N2  2   225.    4P1/2
+                             N3  4   209.    4P3/2
+                             N4  4   114.    4D3/2
+                             N5  6   111.    4D5/2
+                             N6  2     6.    4F5/2
+                             O1  2    39.    5S
+                             O2  2    25.    5P1/2
+                             O3  4    22.    5P3/2
+                             P1  2     5.65  6S
+----------------------------------------------------------------
+PR 140.92  59   00.0   0.00  K   2 41991.    1S		a)
+                             L1  2  6835.    2S		a)
+                             L2  2  6440.    2P1/2	a)
+                             L3  4  5964.    2P3/2	a)
+                             M1  2  1509.    3S
+                             M2  2  1342.    3P1/2
+                             M3  4  1244.    3P3/2
+                             M4  4   954.    3D3/2
+                             M5  6   934.    3D5/2
+                             N1  2   307.    4S
+                             N2  2   238.    4P1/2
+                             N3  4   220.    4P3/2
+                             N4  4   121.    4D3/2
+                             N5  6   117.    4D5/2
+                             N6  3     6.    4F5/2
+                             O1  2    41.    5S
+                             O2  2    27.    5P1/2
+                             O3  4    24.    5P3/2
+                             P1  2     5.42  6S
+----------------------------------------------------------------
+ND 144.27  60   00.0   0.00  K   2 43569.    1S		a)
+                             L1  2  7126.    2S		a)
+                             L2  2  6722.    2P1/2	a)
+                             L3  4  6208.    2P3/2	a)
+                             M1  2  1580.    3S
+                             M2  2  1408.    3P1/2
+                             M3  4  1303.    3P3/2
+                             M4  4  1005.    3D3/2
+                             M5  6   983.    3D5/2
+                             N1  2   321.    4S
+                             N2  2   250.    4P1/2
+                             N3  4   230.    4P3/2
+                             N4  4   126.    4D3/2
+                             N5  6   122.    4D5/2
+                             N6  4     6.    4F5/2
+                             O1  2    42.    5S
+                             O2  2    28.    5P1/2
+                             O3  4    25.    5P3/2
+                             P1  2     5.49  6S
+----------------------------------------------------------------
+PM 145.    61   00.0   0.00  K   2 45184.    1S		a)
+                             L1  2  7428.    2S		a)
+                             L2  2  7013.    2P1/2	a)
+                             L3  4  6459.    2P3/2	a)
+                             M1  2  1653.    3S
+                             M2  2  1476.    3P1/2
+                             M3  4  1362.    3P3/2
+                             M4  4  1057.    3D3/2
+                             M5  6  1032.    3D5/2
+                             N1  2   325.    4S
+                             N2  2   261.    4P1/2
+                             N3  4   240.    4P3/2
+                             N4  4   131.    4D3/2
+                             N5  6   127.    4D5/2
+                             N6  5     6.    4F5/2
+                             O1  2    43.    5S
+                             O2  2    28.    5P1/2
+                             O3  4    25.    5P3/2
+                             P1  2     5.55  6S
+----------------------------------------------------------------
+SM 150.35  62   00.0   0.00  K   2 46834.    1S		a)
+                             L1  2  7737.    2S		a)
+                             L2  2  7312.    2P1/2	a)
+                             L3  4  6716.    2P3/2	a)
+                             M1  2  1728.    3S
+                             M2  2  1546.    3P1/2
+                             M3  4  1422.    3P3/2
+                             M4  4  1110.    3D3/2
+                             M5  6  1083.    3D5/2
+                             N1  2   349.    4S
+                             N2  2   273.    4P1/2
+                             N3  4   251.    4P3/2
+                             N4  4   137.    4D3/2
+                             N5  6   132.    4D5/2
+                             N6  6     6.    4F5/2
+                             O1  2    44.    5S
+                             O2  2    29.    5P1/2
+                             O3  4    25.    5P3/2
+                             P1  2     5.63  6S
+----------------------------------------------------------------
+EU 152.0   63   00.0   0.00  K   2 48519.    1S		a)
+                             L1  2  8052.    2S		a)
+                             L2  2  7617.    2P1/2	a)
+                             L3  4  6977.    2P3/2	a)
+                             M1  2  1805.    3S
+                             M2  2  1618.    3P1/2
+                             M3  4  1484.    3P3/2
+                             M4  4  1164.    3D3/2
+                             M5  6  1135.    3D5/2
+                             N1  2   364.    4S
+                             N2  2   286.    4P1/2
+                             N3  4   262.    4P3/2
+                             N4  4   143.    4D3/2
+                             N5  6   137.    4D5/2
+                             N6  7     6.    4F5/2-4F7/2
+                             O1  2    45.    5S
+                             O2  2    30.    5P1/2
+                             O3  4    26.    5P3/2
+                             P1  2     5.68  6S
+----------------------------------------------------------------
+GD 157.26  64   00.0   0.00  K   2 50239.    1S		a)
+                             L1  2  8376.    2S		a)
+                             L2  2  7930.    2P1/2	a)
+                             L3  4  7243.    2P3/2	a)
+                             M1  2  1884.    3S
+                             M2  2  1692.    3P1/2
+                             M3  4  1547.    3P3/2
+                             M4  4  1220.    3D3/2
+                             M5  6  1189.    3D5/2
+                             N1  2   380.    4S
+                             N2  2   300.    4P1/2
+                             N3  4   273.    4P3/2
+                             N4  4   150.    4D3/2
+                             N5  6   143.    4D5/2
+                             N6  7     6.    4F5/2-4F7/2
+                             O1  2    46.    5S
+                             O2  2    31.    5P1/2
+                             O3  4    27.    5P3/2
+                             O4  1     6.    5D3/2
+                             P1  2     6.16  6S
+----------------------------------------------------------------
+TB 158.93  65   00.0   0.00  K   2 51996.    1S		a)
+                             L1  2  8708.    2S		a)
+                             L2  2  8252.    2P1/2	a)
+                             L3  4  7514.    2P3/2	a)
+                             M1  2  1965.    3S
+                             M2  2  1768.    3P1/2
+                             M3  4  1612.    3P3/2
+                             M4  4  1277.    3D3/2
+                             M5  6  1243.    3D5/2
+                             N1  2   398.    4S
+                             N2  2   315.    4P1/2
+                             N3  4   285.    4P3/2
+                             N4  4   157.    4D3/2
+                             N5  6   150.    4D5/2
+                             N6  9     6.    4F5/2-4F7/2
+                             O1  2    48.    5S
+                             O2  2    32.    5P1/2
+                             O3  4    28.    5P3/2
+                             P1  2     5.85  6S
+----------------------------------------------------------------
+DY 162.51  66   00.0   0.00  K   2 53789.    1S		a)
+                             L1  2  9046.    2S		a)
+                             L2  2  8581.    2P1/2	a)
+                             L3  4  7790.    2P3/2	a)
+                             M1  2  2048.    3S
+                             M2  2  1846.    3P1/2
+                             M3  4  1678.    3P3/2
+                             M4  4  1335.    3D3/2
+                             M5  6  1298.    3D5/2
+                             N1  2   416.    4S
+                             N2  2   331.    4P1/2
+                             N3  4   297.    4P3/2
+                             N4  4   164.    4D3/2
+                             N5  6   157.    4D5/2
+                             N6 10     6.    4F5/2-4F7/2
+                             O1  2    50.    5S
+                             O2  2    33.    5P1/2
+                             O3  4    28.    5P3/2
+                             P1  2     5.93  6S
+----------------------------------------------------------------
+HO 164.94  67   00.0   0.00  K   2 55618.    1S		a)
+                             L1  2  9394.    2S		a)
+                             L2  2  8918.    2P1/2	a)
+                             L3  4  8071.    2P3/2	a)
+                             M1  2  2133.    3S
+                             M2  2  1926.    3P1/2
+                             M3  4  1746.    3P3/2
+                             M4  4  1395.    3D3/2
+                             M5  6  1354.    3D5/2
+                             N1  2   434.    4S
+                             N2  2   348.    4P1/2
+                             N3  4   310.    4P3/2
+                             N4  4   172.    4D3/2
+                             N5  6   164.    4D5/2
+                             N6 11     6.    4F5/2-4F7/2
+                             O1  2    52.    5S
+                             O2  2    34.    5P1/2
+                             O3  4    29.    5P3/2
+                             P1  2     6.02  6S
+----------------------------------------------------------------
+ER 167.27  68   00.0   0.00  K   2 57486.    1S		a)
+                             L1  2  9751.    2S		a)
+                             L2  2  9264.    2P1/2	a)
+                             L3  4  8358.    2P3/2	a)
+                             M1  2  2220.    3S
+                             M2  2  2008.    3P1/2
+                             M3  4  1815.    3P3/2
+                             M4  4  1456.    3D3/2
+                             M5  6  1412.    3D5/2
+                             N1  2   452.    4S
+                             N2  2   365.    4P1/2
+                             N3  4   323.    4P3/2
+                             N4  4   181.    4D3/2
+                             N5  6   172.    4D5/2
+                             N6 12     6.    4F5/2-4F7/2
+                             O1  2    54.    5S
+                             O2  2    35.    5P1/2
+                             O3  4    30.    5P3/2
+                             P1  2     6.10  6S
+----------------------------------------------------------------
+TU 168.94  69   00.0   0.00  K   2 59390.    1S		a)
+                             L1  2 10116.    2S		a)
+                             L2  2  9617.    2P1/2	a)
+                             L3  4  8648.    2P3/2	a)
+                             M1  2  2309.    3S
+                             M2  2  2092.    3P1/2
+                             M3  4  1885.    3P3/2
+                             M4  4  1518.    3D3/2
+                             M5  6  1471.    3D5/2
+                             N1  2   471.    4S
+                             N2  2   382.    4P1/2
+                             N3  4   336.    4P3/2
+                             N4  4   190.    4D3/2
+                             N5  6   181.    4D5/2
+                             N6 13     7.    4F5/2-4F7/2
+                             O1  2    56.    5S
+                             O2  2    36.    5P1/2
+                             O3  4    30.    5P3/2
+                             P1  2     6.18  6S
+----------------------------------------------------------------
+YB 173.04  70   00.0   0.00  K   2 61332.    1S		a)
+                             L1  2 10486.    2S		a)
+                             L2  2  9978.    2P1/2	a)
+                             L3  4  8944.    2P3/2	a)
+                             M1  2  2401.    3S
+                             M2  2  2178.    3P1/2
+                             M3  4  1956.    3P3/2
+                             M4  4  1580.    3D3/2
+                             M5  6  1531.    3D5/2
+                             N1  2   490.    4S
+                             N2  2   399.    4P1/2
+                             N3  4   349.    4P3/2
+                             N4  4   200.    4D3/2
+                             N5  6   190.    4D5/2
+                             N6  6     8.   4F5/2
+                             N7  8     7.    4F7/2
+                             O1  2    58.    5S
+                             O2  2    37.    5P1/2
+                             O3  4    31.    5P3/2
+                             P1  2     6.25  6S
+----------------------------------------------------------------
+LU 174.99  71   00.0   0.00  K   2 63314.    1S		a)
+                             L1  2 10870.    2S		a)
+                             L2  2 10349.    2P1/2	a)
+                             L3  4  9244.    2P3/2	a)
+                             M1  2  2499.    3S
+                             M2  2  2270.    3P1/2
+                             M3  4  2032.    3P3/2
+                             M4  4  1647.    3D3/2
+                             M5  6  1596.    3D5/2
+                             N1  2   514.    4S
+                             N2  2   420.    4P1/2
+                             N3  4   366.    4P3/2
+                             N4  4   213.    4D3/2
+                             N5  6   202.    4D5/2
+                             N6  6    13.    4F5/2
+                             N7  8    12.    4F7/2
+                             O1  2    62.    5S
+                             O2  2    39.    5P1/2
+                             O3  4    32.    5P3/2
+                             O4  1     6.6   5D3/2
+                             P1  2     7.0   6S
+----------------------------------------------------------------
+HF 178.50  72   00.0   0.00  K   2 65351.    1S		a)
+                             L1  2 11271.    2S		a)
+                             L2  2 10739.    2P1/2	a)
+                             L3  4  9561.    2P3/2	a)
+                             M1  2  2604.    3S
+                             M2  2  2369.    3P1/2
+                             M3  4  2113.    3P3/2
+                             M4  4  1720.    3D3/2
+                             M5  6  1665.    3D5/2
+                             N1  2   542.    4S
+                             N2  2   444.    4P1/2
+                             N3  4   386.    4P3/2
+                             N4  4   229.    4D3/2
+                             N5  6   217.    4D5/2
+                             N6  6    21.    4F5/2
+                             N7  8    20.    4F7/2
+                             O1  2    68.    5S
+                             O2  2    43.    5P1/2
+                             O3  4    35.    5P3/2
+                             O4  2     7.0   5D3/2
+                             P1  2     7.5   6S
+----------------------------------------------------------------
+TA 180.95  73   00.0   0.00  K   2 67416.    1S		a)
+                             L1  2 11682.    2S		a)
+                             L2  2 11136.    2P1/2	a)
+                             L3  4  9881.    2P3/2	a)
+                             M1  2  2712.    3S
+                             M2  2  2472.    3P1/2
+                             M3  4  2197.    3P3/2
+                             M4  4  1796.    3D3/2
+                             M5  6  1737.    3D5/2
+                             N1  2   570.    4S
+                             N2  2   469.    4P1/2
+                             N3  4   407.    4P3/2
+                             N4  4   245.    4D3/2
+                             N5  6   232.    4D5/2
+                             N6  6    30.    4F5/2
+                             N7  8    28.    4F7/2
+                             O1  2    74.    5S
+                             O2  2    47.    5P1/2
+                             O3  4    38.    5P3/2
+                             O4  3     8.3   5D3/2
+                             P1  2     7.9   6S
+----------------------------------------------------------------
+W  183.86  74   00.0   0. 0  K   2 69525.    1S		a)
+                             L1  2 12100.    2S		a)
+                             L2  2 11544.    2P1/2	a)
+                             L3  4 10207.    2P3/2	a)
+                             M1  2  2823.    3S
+                             M2  2  2577.    3P1/2
+                             M3  4  2283.    3P3/2
+                             M4  4  1874.    3D3/2
+                             M5  6  1811.    3D5/2
+                             N1  2   599.    4S
+                             N2  2   495.    4P1/2
+                             N3  4   428.    4P3/2
+                             N4  4   261.    4D3/2
+                             N5  6   248.    4D5/2
+                             N6  6    38.    4F5/2
+                             N7  8    36.    4F7/2
+                             O1  2    80.    5S
+                             O2  2    51.    5P1/2
+                             O3  4    41.    5P3/2
+                             O4  4     9.0   5D3/2
+                             P1  2     8.0   6S
+----------------------------------------------------------------
+RE 186.22  75   00.0   0.00  K   2 71676.    1S		a)
+                             L1  2 12527.    2S		a)
+                             L2  2 11959.    2P1/2	a)
+                             L3  4 10535.    2P3/2	a)
+                             M1  2  2937.    3S
+                             M2  2  2686.    3P1/2
+                             M3  4  2371.    3P3/2
+                             M4  4  1953.    3D3/2
+                             M5  6  1887.    3D5/2
+                             N1  2   629.    4S
+                             N2  2   522.    4P1/2
+                             N3  4   450.    4P3/2
+                             N4  4   278.    4D3/2
+                             N5  6   264.    4D5/2
+                             N6  6    47.    4F5/2
+                             N7  8    45.    4F7/2
+                             O1  2    86.    5S
+                             O2  2    56.    5P1/2
+                             O3  4    45.    5P3/2
+                             O4  5     9.6   5D3/2-5D5/2
+                             P1  2     7.9   6S
+----------------------------------------------------------------
+OS 190.2   76   00.0   0.00  K   2 73871.    1S		a)
+                             L1  2 12968.    2S		a)
+                             L2  2 12385.    2P1/2	a)
+                             L3  4 10871.    2P3/2	a)
+                             M1  2  3054.    3S
+                             M2  2  2797.    3P1/2
+                             M3  4  2461.    3P3/2
+                             M4  4  2035.    3D3/2
+                             M5  6  1964.    3D5/2
+                             N1  2   660.    4S
+                             N2  2   551.    4P1/2
+                             N3  4   473.    4P3/2
+                             N4  4   295.    4D3/2
+                             N5  6   280.    4D5/2
+                             N6  6    56.    4F5/2
+                             N7  8    54.    4F7/2
+                             O1  2    92.    5S
+                             O2  2    61.    5P1/2
+                             O3  4    49.    5P3/2
+                             O4  6     9.6   5D3/2-5D5/2
+                             P1  2     8.5   6S
+----------------------------------------------------------------
+IR 192.2   77   00.0   0.00  K   2 76111.    1S		a)
+                             L1  2 13419.    2S		a)
+                             L2  2 12824.    2P1/2	a)
+                             L3  4 11215.    2P3/2	a)
+                             M1  2  3175.    3S
+                             M2  2  2912.    3P1/2
+                             M3  4  2554.    3P3/2
+                             M4  4  2119.    3D3/2
+                             M5  6  2044.    3D5/2
+                             N1  2   693.    4S
+                             N2  2   581.    4P1/2
+                             N3  4   497.    4P3/2
+                             N4  4   314.    4D3/2
+                             N5  6   298.    4D5/2
+                             N6  6    67.    4F5/2
+                             N7  8    64.    4F7/2
+                             O1  2    99.    5S
+                             O2  2    66.    5P1/2
+                             O3  4    53.    5P3/2
+                             O4  7     9.6   5D3/2-5D5/2
+                             P1  2     9.1   6S
+----------------------------------------------------------------
+PT 195.09  78   00.0   0.00  K   2 78395.    1S		a)
+                             L1  2 13880.    2S		a)
+                             L2  2 13273.    2P1/2	a)
+                             L3  4 11564.    2P3/2	a)
+                             M1  2  3300.    3S
+                             M2  2  3030.    3P1/2
+                             M3  4  2649.    3P3/2
+                             M4  4  2206.    3D3/2
+                             M5  6  2126.    3D5/2
+                             N1  2   727.    4S
+                             N2  2   612.    4P1/2
+                             N3  4   522.    4P3/2
+                             N4  4   335.    4D3/2
+                             N5  6   318.    4D5/2
+                             N6  6    78.    4F5/2
+                             N7  8    75.    4F7/2
+                             O1  2   106.    5S
+                             O2  2    71.    5P1/2
+                             O3  4    57.    5P3/2
+                             O4  9     9.6   5D3/2-5D5/2
+                             P1  1     9.0   6S
+----------------------------------------------------------------
+AU 197.0   79   00.0   0.00  K   2 80725.    1S		a)
+                             L1  2 14353.    2S		a)
+                             L2  2 13734.    2P1/2	a)
+                             L3  4 11919.    2P3/2	a)
+                             M1  2  3430.    3S
+                             M2  2  3153.    3P1/2
+                             M3  4  2748.    3P3/2
+                             M4  4  2295.    3D3/2
+                             M5  6  2210.    3D5/2
+                             N1  2   764.    4S
+                             N2  2   645.    4P1/2
+                             N3  4   548.    4P3/2
+                             N4  4   357.    4D3/2
+                             N5  6   339.    4D5/2
+                             N6  6    91.    4F5/2
+                             N7  8    87.    4F7/2
+                             O1  2   114.    5S
+                             O2  2    76.    5P1/2
+                             O3  4    61.    5P3/2
+                             O4  4    12.5   5D3/2
+                             O5  6    11.1   5D5/2
+                             P1  1     9.23  6S
+----------------------------------------------------------------
+HG 200.61  80   00.0   0.00  K   2 83102.    1S		a)
+                             L1  2 14839.    2S		a)
+                             L2  2 14209.    2P1/2	a)
+                             L3  4 12284.    2P3/2	a)
+                             M1  2  3567.    3S
+                             M2  2  3283.    3P1/2
+                             M3  4  2852.    3P3/2
+                             M4  4  2390.    3D3/2
+                             M5  6  2300.    3D5/2
+                             N1  2   806.    4S
+                             N2  2   683.    4P1/2
+                             N3  4   579.    4P3/2
+                             N4  4   382.    4D3/2
+                             N5  6   363.    4D5/2
+                             N6  6   107.    4F5/2
+                             N7  8   103.    4F7/2
+                             O1  2   125.    5S
+                             O2  2    85.    5P1/2
+                             O3  4    68.    5P3/2
+                             O4  4    14.    5D3/2
+                             O5  6    12.    5D5/2
+                             P1  2    10.4   6S
+----------------------------------------------------------------
+TL 204.39  81   00.0   0.00  K   2 85530.    1S		a)
+                             L1  2 15347.    2S		a)
+                             L2  2 14698.    2P1/2	a)
+                             L3  4 12658.    2P3/2	a)
+                             M1  2  3710.    3S
+                             M2  2  3420.    3P1/2
+                             M3  4  2961.    3P3/2
+                             M4  4  2490.    3D3/2
+                             M5  6  2394.    3D5/2
+                             N1  2   852.    4S
+                             N2  2   726.    4P1/2
+                             N3  4   615.    4P3/2
+                             N4  4   411.    4D3/2
+                             N5  6   391.    4D5/2
+                             N6  6   127.    4F5/2
+                             N7  8   123.    4F7/2
+                             O1  2   139.    5S
+                             O2  2    98.    5P1/2
+                             O3  4    79.    5P3/2
+                             O4  4    21.    5D3/2
+                             O5  6    19.    5D5/2
+                             P1  2     8.    6S
+                             P2  1     6.11  6P1/2
+----------------------------------------------------------------
+PB 207.21  82   00.0   0.00  K   2 88005.    1S		a)
+                             L1  2 15861.    2S		a)
+                             L2  2 15200.    2P1/2	a)
+                             L3  4 13055.    2P3/2	a)
+                             M1  2  3857.    3S
+                             M2  2  3560.    3P1/2
+                             M3  4  3072.    3P3/2
+                             M4  4  2592.    3D3/2
+                             M5  6  2490.    3D5/2
+                             N1  2   899.    4S
+                             N2  2   769.    4P1/2
+                             N3  4   651.    4P3/2
+                             N4  4   441.    4D3/2
+                             N5  6   419.    4D5/2
+                             N6  6   148.    4F5/2
+                             N7  8   144.    4F7/2
+                             O1  2   153.    5S
+                             O2  2   111.    5P1/2
+                             O3  4    90.    5P3/2
+                             O4  4    27.    5D3/2
+                             O5  6    25.    5D5/2
+                             P1  2    10.    6S
+                             P2  2     7.42  6P1/2
+----------------------------------------------------------------
+BI 209.00  83   00.0   0.00  K   2 90526.    1S		a)
+                             L1  2 16388.    2S		a)
+                             L2  2 15711.    2P1/2	a)
+                             L3  4 13419.    2P3/2	a)
+                             M1  2  4007.    3S
+                             M2  2  3704.    3P1/2
+                             M3  4  3185.    3P3/2
+                             M4  4  2696.    3D3/2
+                             M5  6  2588.    3D5/2
+                             N1  2   946.    4S
+                             N2  2   813.    4P1/2
+                             N3  4   687.    4P3/2
+                             N4  4   472.    4D3/2
+                             N5  6   448.    4D5/2
+                             N6  6   170.    4F5/2
+                             N7  8   165.    4F7/2
+                             O1  2   167.    5S
+                             O2  2   125.    5P1/2
+                             O3  4   101.    5P3/2
+                             O4  4    34.    5D3/2
+                             O5  6    32.    5D5/2
+                             P1  2    12.    6S
+                             P2  3     7.29  6P1/2-6P3/2
+----------------------------------------------------------------
+PO 209.    84   00.0   0.00  K   2 93105.    1S		a)
+                             L1  2 16939.    2S		a)
+                             L2  2 16244.    2P1/2	a)
+                             L3  4 13814.    2P3/2	a)
+                             M1  2  4161.    3S
+                             M2  2  3852.    3P1/2
+                             M3  4  3301.    3P3/2
+                             M4  4  2802.    3D3/2
+                             M5  6  2687.    3D5/2
+                             N1  2   994.    4S
+                             N2  2   858.    4P1/2
+                             N3  4   724.    4P3/2
+                             N4  4   503.    4D3/2
+                             N5  6   478.    4D5/2
+                             N6  6   193.    4F5/2
+                             N7  8   187.    4F7/2
+                             O1  2   181.    5S
+                             O2  2   139.    5P1/2
+                             O3  4   112.    5P3/2
+                             O4  4    41.    5D3/2
+                             O5  6    38.    5D5/2
+                             P1  2    15.    6S
+                             P2  4     8.43  6P1/2-6P3/2
+----------------------------------------------------------------
+AT 210.    85   00.0   0.00  K   2 95730.    1S		a)
+                             L1  2 17493.    2S		a)
+                             L2  2 16785.    2P1/2	a)
+                             L3  4 14214.    2P3/2	a)
+                             M1  2  4320.    3S
+                             M2  2  4005.    3P1/2
+                             M3  4  3420.    3P3/2
+                             M4  4  2910.    3D3/2
+                             M5  6  2788.    3D5/2
+                             N1  2  1044.    4S
+                             N2  2   904.    4P1/2
+                             N3  4   761.    4P3/2
+                             N4  4   535.    4D3/2
+                             N5  6   508.    4D5/2
+                             N6  6   217.    4F5/2
+                             N7  8   211.    4F7/2
+                             O1  2   196.    5S
+                             O2  2   153.    5P1/2
+                             O3  4   123.    5P3/2
+                             O4  4    48.    5D3/2
+                             O5  6    44.    5D5/2
+                             P1  2    19.    6S
+                             P2  2    11.    6P1/2
+                             P3  3     9.3   6P3/2
+----------------------------------------------------------------
+RN 222.    86   00.0   0.00  K   2 98404.    1S		a)
+                             L1  2 18049.    2S		a)
+                             L2  2 17337.    2P1/2	a)
+                             L3  4 14619.    2P3/2	a)
+                             M1  2  4483.    3S
+                             M2  2  4162.    3P1/2
+                             M3  4  3452.    3P3/2
+                             M4  4  3109.    3D3/2
+                             M5  6  2890.    3D5/2
+                             N1  2  1096.    4S
+                             N2  2   951.    4P1/2
+                             N3  4   798.    4P3/2
+                             N4  4   567.    4D3/2
+                             N5  6   538.    4D5/2
+                             N6  6   242.    4F5/2
+                             N7  8   235.    4F7/2
+                             O1  2   212.    5S
+                             O2  2   167.    5P1/2
+                             O3  4   134.    5P3/2
+                             O4  4    55.    5D3/2
+                             O5  6    51.    5D5/2
+                             P1  2    24.    6S
+                             P2  2    14.    6P1/2
+                             P3  4    10.7   6P3/2
+----------------------------------------------------------------
+FR 223.    87   00.0   0.00  K   2 101137.   1S		a)
+                             L1  2 18639.    2S		a)
+                             L2  2 17907.    2P1/2	a)
+                             L3  4 15031.    2P3/2	a)
+                             M1  2  4652.    3S  	a)
+                             M2  2  4324.    3P1/2
+                             M3  4  3666.    3P3/2
+                             M4  4  3134.    3D3/2
+                             M5  6  2998.    3D5/2
+                             N1  2  1153.    4S
+                             N2  2  1003.    4P1/2
+                             N3  4   839.    4P3/2
+                             N4  4   603.    4D3/2
+                             N5  6   572.    4D5/2
+                             N6  6   268.    4F5/2
+                             N7  8   260.    4F7/2
+                             O1  2   231.    5S
+                             O2  2   183.    5P1/2
+                             O3  4   147.    5P3/2
+                             O4  4    65.    5D3/2
+                             O5  6    61.    5D5/2
+                             P1  2    33.    6S
+                             P2  2    19.    6P1/2
+                             P3  4    14.    6P3/2
+                             Q1  1     4.0   7S
+----------------------------------------------------------------
+RA 226.05  88   00.0   0.00  K   2 103922.   1S		a)
+                             L1  2 19237.    2S		a)
+                             L2  2 18484.    2P1/2	a)
+                             L3  4 15444.    2P3/2	a)
+                             M1  2  4822.    3S  	a)
+                             M2  2  4491.    3P1/2
+                             M3  4  3793.    3P3/2
+                             M4  4  3254.    3D3/2
+                             M5  6  3111.    3D5/2
+                             N1  2  1214.    4S
+                             N2  2  1060.    4P1/2
+                             N3  4   884.    4P3/2
+                             N4  4   642.    4D3/2
+                             N5  6   609.    4D5/2
+                             N6  6   296.    4F5/2
+                             N7  8   287.    4F7/2
+                             O1  2   253.    5S
+                             O2  2   201.    5P1/2
+                             O3  4   161.    5P3/2
+                             O4  4    77.    5D3/2
+                             O5  6    73.    5D5/2
+                             P1  2    40.    6S
+                             P2  2    25.    6P1/2
+                             P3  4    19.    6P3/2
+                             Q1  2     5.28  7S
+----------------------------------------------------------------
+AC 227.    89   00.0   0.00  K   2 106755.   1S		a)
+                             L1  2 19840.    2S		a)
+                             L2  2 19083.    2P1/2	a)
+                             L3  4 15871.    2P3/2	a)
+                             M1  2  5002.    3S  	a)
+                             M2  2  4656.    3P1/2	a)
+                             M3  4  3921.    3P3/2
+                             M4  4  3374.    3D3/2
+                             M5  6  3223.    3D5/2
+                             N1  2  1274.    4S
+                             N2  2  1116.    4P1/2
+                             N3  4   928.    4P3/2
+                             N4  4   680.    4D3/2
+                             N5  6   645.    4D5/2
+                             N6  6   322.    4F5/2
+                             N7  8   313.    4F7/2
+                             O1  2   274.    5S
+                             O2  2   218.    5P1/2
+                             O3  4   174.    5P3/2
+                             O4  4    88.    5D3/2
+                             O5  6    83.    5D5/2
+                             P1  2    45.    6S
+                             P2  2    29.    6P1/2
+                             P3  4    22.    6P3/2
+                             P4  1     5.7   6D3/2-6D5/2
+                             Q1  2     6.3   7S
+----------------------------------------------------------------
+TH 232.05  90   00.0   0.00  K   2 109651.   1S		a)
+                             L1  2 20472.    2S		a)
+                             L2  2 19693.    2P1/2	a)
+                             L3  4 16300.    2P3/2	a)
+                             M1  2  5182.    3S  	a)
+                             M2  2  4830.    3P1/2	a)
+                             M3  4  4049.    3P3/2
+                             M4  4  3494.    3D3/2
+                             M5  6  3335.    3D5/2
+                             N1  2  1333.    4S
+                             N2  2  1171.    4P1/2
+                             N3  4   970.    4P3/2
+                             N4  4   717.    4D3/2
+                             N5  6   679.    4D5/2
+                             N6  6   347.    4F5/2
+                             N7  8   338.    4F7/2
+                             O1  2   293.    5S
+                             O2  2   233.    5P1/2
+                             O3  4   185.    5P3/2
+                             O4  4    97.    5D3/2
+                             O5  6    91.    5D5/2
+                             P1  2    50.    6S
+                             P2  2    33.    6P1/2
+                             P3  4    25.    6P3/2
+                             P4  2     6.    6D3/2-6D5/2
+                             Q1  2     6.    7S
+----------------------------------------------------------------
+PA 231.    91   00.0   0.00  K   2 112601.   1S		a)
+                             L1  2 21105.    2S		a)
+                             L2  2 20314.    2P1/2	a)
+                             L3  4 16733.    2P3/2	a)
+                             M1  2  5367.    3S  	a)
+                             M2  2  5001.    3P1/2	a)
+                             M3  4  4178.    3P3/2
+                             M4  4  3613.    3D3/2
+                             M5  6  3446.    3D5/2
+                             N1  2  1390.    4S
+                             N2  2  1225.    4P1/2
+                             N3  4  1011.    4P3/2
+                             N4  4   752.    4D3/2
+                             N5  6   712.    4D5/2
+                             N6  6   372.    4F5/2
+                             N7  8   362.    4F7/2
+                             O1  2   312.    5S
+                             O2  2   248.    5P1/2
+                             O3  4   195.    5P3/2
+                             O4  4   104.    5D3/2
+                             O5  6    97.    5D5/2
+                             O6  2     6.    5F5/2
+                             P1  2    50.    6S
+                             P2  2    32.    6P1/2
+                             P3  4    24.    6P3/2
+                             P4  1     6.    6D3/2-6D5/2
+                             Q1  2     6.    7S
+----------------------------------------------------------------
+U  238.07  92   00.0   0.00  K   2 115606.   1S		a)
+                             L1  2 21757.    2S		a)
+                             L2  2 20948.    2P1/2	a)
+                             L3  4 17166.    2P3/2	a)
+                             M1  2  5548.    3S  	a)
+                             M2  2  5182.    3P1/2	a)
+                             M3  4  4308.    3P3/2
+                             M4  4  3733.    3D3/2
+                             M5  6  3557.    3D5/2
+                             N1  2  1446.    4S
+                             N2  2  1278.    4P1/2
+                             N3  4  1050.    4P3/2
+                             N4  4   785.    4D3/2
+                             N5  6   743.    4D5/2
+                             N6  6   396.    4F5/2
+                             N7  8   386.    4F7/2
+                             O1  2   329.    5S
+                             O2  2   261.    5P1/2
+                             O3  4   203.    5P3/2
+                             O4  4   110.    5D3/2
+                             O5  6   101.    5D5/2
+                             O6  3     6.    5F5/2
+                             P1  2    52.    6S
+                             P2  2    34.    6P1/2
+                             P3  4    24.    6P3/2
+                             P4  1     6.1   6D3/2-6D5/2
+                             Q1  2     6.    7S
+----------------------------------------------------------------
+NP 237.    93   00.0   0.00  K   2 118678.   1S		a)
+                             L1  2 22426.    2S		a)
+                             L2  2 21600.    2P1/2	a)
+                             L3  4 17610.    2P3/2	a)
+                             M1  2  5723.    3S  	a)
+                             M2  2  5366.    3P1/2	a)
+                             M3  4  4440.    3P3/2
+                             M4  4  3854.    3D3/2
+                             M5  6  3669.    3D5/2
+                             N1  2  1504.    4S
+                             N2  2  1331.    4P1/2
+                             N3  4  1089.    4P3/2
+                             N4  4   819.    4D3/2
+                             N5  6   774.    4D5/2
+                             N6  6   421.    4F5/2
+                             N7  8   410.    4F7/2
+                             O1  2   346.    5S
+                             O2  2   274.    5P1/2
+                             O3  4   211.    5P3/2
+                             O4  4   116.    5D3/2
+                             O5  6   106.    5D5/2
+                             O6  4     6.    5F5/2
+                             P1  2    54.    6S
+                             P2  2    35.    6P1/2
+                             P3  4    25.    6P3/2
+                             P4  1     6.    6D3/2-6D5/2
+                             Q1  2     6.    7S
+----------------------------------------------------------------
+PU 244.    94   00.0   0.00  K   2 121818.   1S		a)
+                             L1  2 23097.    2S		a)
+                             L2  2 22266.    2P1/2	a)
+                             L3  4 18056.    2P3/2	a)
+                             M1  2  5933.    3S  	a)
+                             M2  2  5541.    3P1/2	a)
+                             M3  4  4557.    3P3/2	a)
+                             M4  4  3977.    3D3/2
+                             M5  6  3783.    3D5/2
+                             N1  2  1563.    4S
+                             N2  2  1384.    4P1/2
+                             N3  4  1128.    4P3/2
+                             N4  4   853.    4D3/2
+                             N5  6   805.    4D5/2
+                             N6  6   446.    4F5/2
+                             N7  8   434.    4F7/2
+                             O1  2   356.    5S
+                             O2  2   287.    5P1/2
+                             O3  4   219.    5P3/2
+                             O4  4   122.    5D3/2
+                             O5  6   111.    5D5/2
+                             O6  6     6.    5F5/2
+                             P1  2    53.    6S
+                             P2  2    34.    6P1/2
+                             P3  4    23.    6P3/2
+                             Q1  2     6.    7S
+----------------------------------------------------------------
+AM 243.    95   00.0   0.00  K   2 125027.   1S		a)
+                             L1  2 23773.    2S		a)
+                             L2  2 22944.    2P1/2	a)
+                             L3  4 18504.    2P3/2	a)
+                             M1  2  6121.    3S  	a)
+                             M2  2  5710.    3P1/2	a)
+                             M3  4  4667.    3P3/2	a)
+                             M4  4  4102.    3D3/2
+                             M5  6  3898.    3D5/2
+                             N1  2  1623.    4S
+                             N2  2  1439.    4P1/2
+                             N3  4  1167.    4P3/2
+                             N4  4   887.    4D3/2
+                             N5  6   836.    4D5/2
+                             N6  6   467.    4F5/2
+                             N7  8   452.    4F7/2
+                             O1  2   355.    5S
+                             O2  2   301.    5P1/2
+                             O3  4   220.    5P3/2
+                             O4  4   123.    5D3/2
+                             O5  6   112.    5D5/2
+                             O6  7     6.    5F5/2-5F7/2
+                             P1  2    54.    6S
+                             P2  2    44.    6P1/2
+                             P3  4    36.    6P3/2
+                             Q1  2     6.    7S
+----------------------------------------------------------------
+CM 247.    96   00.0   0.00  K   2 128220.   1S		a)
+                             L1  2 24460.    2S		a)
+                             L2  2 23779.    2P1/2	a)
+                             L3  4 18930.    2P3/2	a)
+                             M1  2  6288.    3S  	a)
+                             M2  2  5895.    3P1/2	a)
+                             M3  4  4797.    3P3/2	a)
+                             M4  4  4236.    3D3/2
+                             M5  6  4014.    3D5/2
+                             N1  2  1664.    4S
+                             N2  2  1493.    4P1/2
+                             N3  4  1194.    4P3/2
+                             N4  4   919.    4D3/2
+                             N5  6   864.    4D5/2
+                             N6  6   494.    4F5/2
+                             N7  8   479.    4F7/2
+                             O1  2   384.    5S
+                             O2  2   314.    5P1/2
+                             O3  4   239.    5P3/2
+                             O4  4   126.    5D3/2
+                             O5  6   119.    5D5/2
+                             O6  7    11.    5F5/2-5F7/2
+                             P1  2    60.    6S
+                             P2  2    39.    6P1/2
+                             P3  4    27.    6P3/2
+                             P4  1     5.    6D3/2-6D5/2
+                             Q1  2     6.    7S
+----------------------------------------------------------------
+BK 249.    97   00.0   0.00  K   2 131590.   1S		a)
+                             L1  2 25275.    2S		a)
+                             L2  2 24385.    2P1/2	a)
+                             L3  4 19452.    2P3/2	a)
+                             M1  2  6556.    3S  	a)
+                             M2  2  6147.    3P1/2	a)
+                             M3  4  4977.    3P3/2	a)
+                             M4  4  4366.    3D3/2
+                             M5  6  4133.    3D5/2
+                             N1  2  1729.    4S
+                             N2  2  1554.    4P1/2
+                             N3  4  1236.    4P3/2
+                             N4  4   955.    4D3/2
+                             N5  6   898.    4D5/2
+                             N6  6   520.    4F5/2
+                             N7  8   504.    4F7/2
+                             O1  2   401.    5S
+                             O2  2   329.    5P1/2
+                             O3  4   248.    5P3/2
+                             O4  4   142.    5D3/2
+                             O5  6   124.    5D5/2
+                             O6  8    12.    5F5/2-5F7/2
+                             P1  2    63.    6S
+                             P2  2    41.    6P1/2
+                             P3  4    27.    6P3/2
+                             P4  1     4.    6D3/2-6D5/2
+                             Q1  2     6.    7S
+----------------------------------------------------------------
+CF 249.    98   00.0   0.00  K   2 135960.   1S		a)
+                             L1  2 26110.    2S		a)
+                             L2  2 25250.    2P1/2	a)
+                             L3  4 19930.    2P3/2	a)
+                             M1  2  6754.    3S  	a)
+                             M2  2  6359.    3P1/2	a)
+                             M3  4  5109.    3P3/2	a)
+                             M4  4  4492.    3D3/2
+                             M5  6  4247.    3D5/2
+                             N1  2  1789.    4S
+                             N2  2  1610.    4P1/2
+                             N3  4  1273.    4P3/2
+                             N4  4   987.    4D3/2
+                             N5  6   925.    4D5/2
+                             N6  6   546.    4F5/2
+                             N7  8   529.    4F7/2
+                             O1  2   412.    5S
+                             O2  2   338.    5P1/2
+                             O3  4   251.    5P3/2
+                             O4  4   142.    5D3/2
+                             O5  6   129.    5D5/2
+                             O6 10     9.    5F5/2-5F7/2
+                             P1  2    61.    6S
+                             P2  2    39.    6P1/2
+                             P3  4    25.    6P3/2
+                             Q1  2     6.    7S
+----------------------------------------------------------------
+ES 254.    99   00.0   0.00  K   2 139490.   1S		a)
+                             L1  2 26900.    2S		a)
+                             L2  2 26020.    2P1/2	a)
+                             L3  4 20410.    2P3/2	a)
+                             M1  2  6977.    3S  	a)
+                             M2  2  6754.    3P1/2	a)
+                             M3  4  5252.    3P3/2	a)
+                             M4  4  4630.    3D3/2  	a)
+                             M5  6  4369.    3D5/2
+                             N1  2  1857.    4S
+                             N2  2  1674.    4P1/2
+                             N3  4  1316.    4P3/2
+                             N4  4  1024.    4D3/2
+                             N5  6   959.    4D5/2
+                             N6  6   573.    4F5/2
+                             N7  8   554.    4F7/2
+                             O1  2   429.    5S
+                             O2  2   353.    5P1/2
+                             O3  4   260.    5P3/2
+                             O4  4   148.    5D3/2
+                             O5  6   135.    5D5/2
+                             O6 11     9.    5F5/2-5F7/2
+                             P1  2    63.    6S
+                             P2  2    40.    6P1/2
+                             P3  4    25.    6P3/2
+                             Q1  2     6.    7S
+----------------------------------------------------------------
+FM 253.   100   00.0   0.00  K   2 143090.   1S		a)
+                             L1  2 27700.    2S		a)
+                             L2  2 26810.    2P1/2	a)
+                             L3  4 20900.    2P3/2	a)
+                             M1  2  7205.    3S  	a)
+                             M2  2  6793.    3P1/2	a)
+                             M3  4  5397.    3P3/2	a)
+                             M4  4  4766.    3D3/2 	a)
+                             M5  6  4498.    3D5/2
+                             N1  2  1933.    4S
+                             N2  2  1746.    4P1/2
+                             N3  4  1366.    4P3/2
+                             N4  4  1068.    4D3/2
+                             N5  6  1000.    4D5/2
+                             N6  6   606.    4F5/2
+                             N7  8   587.    4F7/2
+                             O1  2   453.    5S
+                             O2  2   375.    5P1/2
+                             O3  4   275.    5P3/2
+                             O4  4   160.    5D3/2
+                             O5  6   145.    5D5/2
+                             O6 12    15.    5F5/2-5F7/2
+                             P1  2    69.    6S
+                             P2  2    45.    6P1/2
+                             P3  4    29.    6P3/2
+                             Q1  2     7.    7S
+
+**********************************************************       */
+
+
+#endif   // end of G4AtomicShells.hh 
Index: trunk/source/materials/include/G4Element.hh
===================================================================
--- trunk/source/materials/include/G4Element.hh	(revision 822)
+++ trunk/source/materials/include/G4Element.hh	(revision 822)
@@ -0,0 +1,267 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4Element.hh,v 1.22 2006/10/17 15:15:46 vnivanch Exp $
+// GEANT4 tag $Name:  $
+//
+
+// class description
+//
+// An element is a chemical element either directly defined in terms of
+// its charactaristics: its name, symbol,
+//                      Z (effective atomic number)
+//                      N (effective number of nucleons)
+//                      A (effective mass of a mole)
+// or in terms of a collection of constituent isotopes with specified 
+// relative abundance (i.e. fraction of nb of atomes per volume).
+//
+// Quantities, with physical meaning or not, which are constant in a given 
+// element are computed and stored here as Derived data members.
+//
+// The class contains as a private static member the table of defined
+// elements (an ordered vector of elements).
+//
+// Elements can be assembled singly or in mixtures into materials used
+// in volume definitions via the G4Material class.
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// 09-07-96, new data members added by L.Urban
+// 17-01-97, aesthetic rearrangement, M.Maire
+// 20-01-97, Tsai formula for the rad length, M.Maire
+// 21-01-97, remove mixture flag, M.Maire
+// 24-01-97, new data member: fTaul
+//           new method: ComputeIonisationPara, M.Maire
+// 20-03-97, corrected initialization of pointers, M.Maire
+// 27-06-97, new function GetIsotope(int), M.Maire
+// 24-02-98, fWeightVector becomes fRelativeAbundanceVector
+// 27-04-98, atomic shell stuff, V. Grichine
+// 09-07-98, Ionisation parameters removed from the class, M.Maire
+// 04-08-98, new method GetElement(elementName), M.Maire
+// 16-11-98, Subshell -> Shell, mma
+// 30-03-01, suppression of the warning message in GetElement
+// 17-07-01, migration to STL, M. Verderi
+// 13-09-01, stl migration. Suppression of the data member fIndexInTable
+// 14-09-01, fCountUse: nb of materials which use this element
+// 26-02-02, fIndexInTable renewed 
+// 01-04-05, new data member fIndexZ to count the number of elements with same Z
+// 17-10-06: Add Get/Set fNaturalAbandances (V.Ivanchenko)
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef G4ELEMENT_HH
+#define G4ELEMENT_HH
+
+#include "globals.hh"
+#include <vector>
+#include "G4ios.hh"
+#include "G4Isotope.hh"
+#include "G4AtomicShells.hh"
+#include "G4IonisParamElm.hh"
+#include "G4IsotopeVector.hh"
+#include "G4ElementTable.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class G4Element
+{
+public:  // with description
+
+  //
+  // Constructor to Build an element directly; no reference to isotopes
+  //
+  G4Element(const G4String& name,		//its name
+            const G4String& symbol,		//its symbol
+                  G4double  Zeff,		//atomic number
+                  G4double  Aeff);		//mass of mole
+                  
+  //
+  // Constructor to Build an element from isotopes via AddIsotope
+  //
+  G4Element(const G4String& name,		//its name
+            const G4String& symbol,		//its symbol
+            G4int nbIsotopes);			//nb of isotopes
+
+  //
+  // Add an isotope to the element
+  // 
+  void AddIsotope(G4Isotope* isotope,			//isotope 
+                  G4double   RelativeAbundance);	//fraction of nb of 
+                  					//atomes per volume
+  virtual ~G4Element();
+  
+  //
+  // retrieval methods
+  //
+  G4String GetName()   const {return fName;};
+  G4String GetSymbol() const {return fSymbol;};
+  G4double GetZ()      const {return fZeff;};     //atomic number
+  G4double GetN()      const {return fNeff;};     //number of nucleons
+  G4double GetA()      const {return fAeff;};     //mass of a mole
+  G4bool   GetNaturalAbandancesFlag();
+
+  void     SetNaturalAbandancesFlag(G4bool);
+  
+  //the number of atomic shells in this element:
+  //
+  G4int GetNbOfAtomicShells() const {return fNbOfAtomicShells;};
+  
+  //the binding energy of the shell:
+  //
+  G4double GetAtomicShell(G4int) const;
+    
+  //number of isotopes constituing this element:
+  //
+  size_t GetNumberOfIsotopes() const {return fNumberOfIsotopes;};
+   
+  //vector of pointers to isotopes constituing this element:
+  //
+  G4IsotopeVector* GetIsotopeVector() const {return theIsotopeVector;};
+    
+  //vector of relative abundance of each isotope:
+  //
+  G4double* GetRelativeAbundanceVector() const 
+                   {return fRelativeAbundanceVector;};
+    
+  const G4Isotope* GetIsotope(G4int iso) const 
+                   {return (*theIsotopeVector)[iso];};
+
+  //the (static) Table of Elements:
+  //
+  static 
+  const  G4ElementTable* GetElementTable();
+  
+  static 
+  size_t GetNumberOfElements();
+  
+  //the index of this element in the Table:
+  //
+  size_t GetIndex() const {return fIndexInTable;};
+    
+  //return pointer to an element, given its name:
+  //
+  static
+  G4Element* GetElement(G4String name, G4bool warning=true);
+  
+  //count number of materials which use this element
+  //
+  G4int GetCountUse() const {return fCountUse;};
+  void  increaseCountUse()  {fCountUse++;};
+  void  decreaseCountUse()  {fCountUse--;};
+  
+  //count elements with same Z
+  //
+  G4int GetIndexZ() const {return fIndexZ;};
+        
+  //Coulomb correction factor:
+  //
+  G4double GetfCoulomb() const {return fCoulomb;};
+   
+  //Tsai formula for the radiation length:
+  //
+  G4double GetfRadTsai() const {return fRadTsai;};
+    
+  //pointer to ionisation parameters:
+  //
+  G4IonisParamElm* GetIonisation() const {return fIonisation;};
+    
+  // printing methods
+  //    
+  friend std::ostream& operator<<(std::ostream&, G4Element*);    
+  friend std::ostream& operator<<(std::ostream&, G4Element&);    
+  friend std::ostream& operator<<(std::ostream&, G4ElementTable);
+
+public:  // without description
+
+  G4int operator==(const G4Element&) const;
+  G4int operator!=(const G4Element&) const;
+
+  G4Element(__void__&);
+    // Fake default constructor for usage restricted to direct object
+    // persistency for clients requiring preallocation of memory for
+    // persistifiable objects.
+
+private:
+
+  G4Element(G4Element&);
+  const G4Element & operator=(const G4Element&);
+       
+private:
+
+  void InitializePointers();
+  void ComputeDerivedQuantities();
+  void ComputeCoulombFactor();
+  void ComputeLradTsaiFactor();
+
+private:
+
+  //
+  // Basic data members (which define an Element)
+  //
+  G4String fName;              // name
+  G4String fSymbol;            // symbol
+  G4double fZeff;              // Effective atomic number
+  G4double fNeff;              // Effective number of nucleons
+  G4double fAeff;              // Effective mass of a mole
+    
+  G4int fNbOfAtomicShells;     // number  of atomic shells
+  G4double* fAtomicShells ;    // Pointer to atomic shell binding energies
+    
+  // Isotope vector contains constituent isotopes of the element   
+  size_t fNumberOfIsotopes;    // Number of isotopes added to the element
+  G4IsotopeVector* theIsotopeVector;
+  G4double* fRelativeAbundanceVector;     // Fraction nb of atomes per volume
+                                          // for each constituent
+  G4int fCountUse;          // nb of materials which use this element
+  G4int fIndexZ;            // index for elements with same Z
+    
+  // Set up the static Table of Elements
+  static G4ElementTable theElementTable;
+  size_t fIndexInTable;
+  G4bool fNaturalAbandances;
+
+  //
+  // Derived data members (computed from the basic data members)
+  //
+  G4double fCoulomb;             // Coulomb correction factor
+  G4double fRadTsai;             // Tsai formula for the radiation length
+  G4IonisParamElm* fIonisation;  // Pointer to ionisation parameters
+};
+
+inline G4bool G4Element::GetNaturalAbandancesFlag()
+{
+  return fNaturalAbandances;
+}
+
+inline void G4Element::SetNaturalAbandancesFlag(G4bool val)
+{
+  fNaturalAbandances = val;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif
Index: trunk/source/materials/include/G4ElementTable.hh
===================================================================
--- trunk/source/materials/include/G4ElementTable.hh	(revision 822)
+++ trunk/source/materials/include/G4ElementTable.hh	(revision 822)
@@ -0,0 +1,46 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4ElementTable.hh,v 1.6 2006/06/29 19:10:58 gunter Exp $
+// GEANT4 tag $Name:  $
+//
+// 
+// ------------------------------------------------------------
+//      GEANT 4 class header file 
+//
+//      ----------------  G4ElementTable  ----------------
+// History:
+// First implementation: Torre Wenaus, November 1995
+// ------------------------------------------------------------
+ 
+#ifndef G4ELEMENTTABLE_HH
+#define G4ELEMENTTABLE_HH
+
+class G4Element;
+
+typedef std::vector<G4Element*> G4ElementTable;
+
+#endif
Index: trunk/source/materials/include/G4ElementVector.hh
===================================================================
--- trunk/source/materials/include/G4ElementVector.hh	(revision 822)
+++ trunk/source/materials/include/G4ElementVector.hh	(revision 822)
@@ -0,0 +1,47 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4ElementVector.hh,v 1.6 2006/06/29 19:11:00 gunter Exp $
+// GEANT4 tag $Name:  $
+//
+// 
+// ------------------------------------------------------------
+//	GEANT 4 class header file 
+//
+//      ----------------  G4ElementVector  ----------------
+// History:
+// First implementation: Torre Wenaus, November 1995
+// ------------------------------------------------------------
+ 
+#ifndef G4ELEMENTVECTOR_HH
+#define G4ELEMENTVECTOR_HH
+
+#include <vector>
+#include "G4Element.hh"
+
+typedef std::vector<G4Element*> G4ElementVector;
+
+#endif
Index: trunk/source/materials/include/G4IonisParamElm.hh
===================================================================
--- trunk/source/materials/include/G4IonisParamElm.hh	(revision 822)
+++ trunk/source/materials/include/G4IonisParamElm.hh	(revision 822)
@@ -0,0 +1,114 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4IonisParamElm.hh,v 1.9 2006/06/29 19:11:02 gunter Exp $
+// GEANT4 tag $Name:  $
+//
+
+// class description
+//
+// The class contains few (physical) quantities related to the Ionisation
+// process, for the Element defined by its atomic number Z
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+// 09.03.01: copy constructor and assignement operator in public (mma)
+// 09.07.98: data moved from G4Element (mma) 
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+#ifndef G4IonisParamElm_HH
+#define G4IonisParamElm_HH
+
+#include "G4ios.hh"
+#include "globals.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+class G4IonisParamElm
+{
+public:  // with description
+
+    G4IonisParamElm(G4double Z);
+    virtual ~G4IonisParamElm();
+
+    // retrieval methods
+    
+    G4double  GetZ()        const {return fZ;}       // atomic number Z
+    G4double  GetZ3()       const {return fZ3;}      // std::pow (Z,1/3)
+    G4double  GetZZ3()      const {return fZZ3;}     // std::pow (Z(Z+1),1/3)
+    G4double  GetlogZ3()    const {return flogZ3;}   // std::log(Z)/3
+
+    G4double  GetTau0() const {return fTau0;};
+                       // 0.1*std::pow(Z,1/3)*MeV/proton_mass_c2
+    
+    G4double  GetTaul() const {return fTaul;}        // 2*MeV/proton mass
+    
+    G4double  GetAlow() const {return fAlow;}
+    G4double  GetBlow() const {return fBlow;}
+    G4double  GetClow() const {return fClow;}
+                       // parameters for the low energy ion.loss
+    
+    G4double  GetMeanExcitationEnergy()  const {return fMeanExcitationEnergy;}
+                                        // 16*std::pow(Z,0.9)*eV 
+      
+    G4double* GetShellCorrectionVector() const {return fShellCorrectionVector;}
+                                       // shell correction coefficients
+   
+public:  // without description
+
+    G4IonisParamElm(G4IonisParamElm&);
+    const G4IonisParamElm& operator=(const G4IonisParamElm&);   
+    G4int operator==(const G4IonisParamElm&) const;
+    G4int operator!=(const G4IonisParamElm&) const;
+     
+    G4IonisParamElm(__void__&);
+      // Fake default constructor for usage restricted to direct object
+      // persistency for clients requiring preallocation of memory for
+      // persistifiable objects.
+
+private:
+
+  //
+  //  data members
+  //
+    G4double fZ;                 // effective Z
+    G4double fZ3;                // std::pow (Z,1/3)
+    G4double fZZ3;               // std::pow (Z(Z+1),1/3)
+    G4double flogZ3;             // std::log(Z)/3
+
+    //  ------ ionisation loss ---------------------------------
+    
+    G4double  fTau0 ;                 // 0.1*std::pow(Z,1/3)*MeV/proton_mass_c2
+    G4double  fTaul ;                 // 2*MeV/proton mass
+    G4double  fBetheBlochLow;         // Bethe-Bloch at fTaul*particle mass   
+    G4double  fAlow,fBlow,fClow;      // parameters for the low energy ion.loss
+    G4double  fMeanExcitationEnergy;  //     
+    G4double* fShellCorrectionVector; // shell correction coefficients
+};
+
+#endif
Index: trunk/source/materials/include/G4IonisParamMat.hh
===================================================================
--- trunk/source/materials/include/G4IonisParamMat.hh	(revision 822)
+++ trunk/source/materials/include/G4IonisParamMat.hh	(revision 822)
@@ -0,0 +1,159 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4IonisParamMat.hh,v 1.10 2007/09/27 14:05:47 vnivanch Exp $
+// GEANT4 tag $Name: geant4-09-01-patch-02 $
+//
+
+// class description
+//
+// The class contains few (physical) quantities related to the Ionisation
+// process, for a material defined by its pointer G4Material*
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+// 09-07-98: data moved from G4Material (mma)
+// 09-03-01: copy constructor and assignement operator in public (mma)
+// 28-10-02: add setMeanExcitationEnergy (V.Ivanchenko)
+// 27-09-07: add computation of parameters for ions (V.Ivanchenko)
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+#ifndef G4IonisParamMat_HH
+#define G4IonisParamMat_HH
+
+#include "G4ios.hh"
+#include "globals.hh"
+
+class G4Material;                        // forward declaration
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+class G4IonisParamMat  // with description
+{
+public:
+
+    G4IonisParamMat(G4Material*); 
+    virtual ~G4IonisParamMat();
+
+    //
+    // retrieval methods
+    //
+     
+    // parameters for mean energy loss calculation:
+    G4double  GetMeanExcitationEnergy()   const {return fMeanExcitationEnergy;};
+    void      SetMeanExcitationEnergy(G4double value);
+    G4double  FindMeanExcitationEnergy(const G4String& chFormula);
+    G4double  GetLogMeanExcEnergy()       const {return fLogMeanExcEnergy;};
+    G4double* GetShellCorrectionVector()  const {return fShellCorrectionVector;};
+    G4double  GetTaul()                   const {return fTaul;};
+    
+    // parameters of the density correction:
+    G4double  GetCdensity()               const {return fCdensity;};
+    G4double  GetMdensity()               const {return fMdensity;};
+    G4double  GetAdensity()               const {return fAdensity;};
+    G4double  GetX0density()              const {return fX0density;};
+    G4double  GetX1density()              const {return fX1density;};
+
+    // parameters of the energy loss fluctuation model:
+    G4double  GetF1fluct()                const {return fF1fluct;};
+    G4double  GetF2fluct()                const {return fF2fluct;};
+    G4double  GetEnergy1fluct()           const {return fEnergy1fluct;};
+    G4double  GetLogEnergy1fluct()        const {return fLogEnergy1fluct;};
+    G4double  GetEnergy2fluct()           const {return fEnergy2fluct;};
+    G4double  GetLogEnergy2fluct()        const {return fLogEnergy2fluct;};
+    G4double  GetEnergy0fluct()           const {return fEnergy0fluct;};
+    G4double  GetRateionexcfluct()        const {return fRateionexcfluct;};
+
+    // parameters for ion corrections computations
+    G4double  GetZeffective()             const {return fZeff;};
+    G4double  GetFermiEnergy()            const {return fFermiEnergy;};
+    G4double  GetLFactor()                const {return fLfactor;};
+
+public:  // without description
+
+    G4IonisParamMat(const G4IonisParamMat&);
+    const G4IonisParamMat& operator=(const G4IonisParamMat&);          
+    G4int operator==(const G4IonisParamMat&) const;
+    G4int operator!=(const G4IonisParamMat&) const;
+
+    G4IonisParamMat(__void__&);
+      // Fake default constructor for usage restricted to direct object
+      // persistency for clients requiring preallocation of memory for
+      // persistifiable objects.
+
+private:
+    
+    // Compute mean parameters : ExcitationEnergy,Shell corretion vector ...
+    void ComputeMeanParameters();
+
+    // Compute parameters for the density effect
+    void ComputeDensityEffect();
+
+    // Compute parameters for the energy fluctuation model
+    void ComputeFluctModel();
+
+    // Compute parameters for ion parameterizations
+    void ComputeIonParameters();
+
+private:
+
+//
+// data members
+//
+    G4Material* fMaterial;                    // this material
+
+   // parameters for mean energy loss calculation
+    G4double  fMeanExcitationEnergy;          // 
+    G4double  fLogMeanExcEnergy;              // 
+    G4double* fShellCorrectionVector;         // shell correction coefficients
+    G4double  fTaul;                          // lower limit of Bethe-Bloch formula
+
+   // parameters of the density correction....
+    G4double fCdensity;                      // mat.constant
+    G4double fMdensity;                      // exponent
+    G4double fAdensity;                      //
+    G4double fX0density;                     //
+    G4double fX1density;                     //
+
+   // parameters of the energy loss fluctuation model
+    G4double fF1fluct;                       
+    G4double fF2fluct;                       
+    G4double fEnergy1fluct;
+    G4double fLogEnergy1fluct;
+    G4double fEnergy2fluct;
+    G4double fLogEnergy2fluct;
+    G4double fEnergy0fluct;
+    G4double fRateionexcfluct;
+
+    // parameters for ion corrections computations
+    G4double fZeff;
+    G4double fFermiEnergy;
+    G4double fLfactor;
+};
+
+#endif
Index: trunk/source/materials/include/G4Isotope.hh
===================================================================
--- trunk/source/materials/include/G4Isotope.hh	(revision 822)
+++ trunk/source/materials/include/G4Isotope.hh	(revision 822)
@@ -0,0 +1,145 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4Isotope.hh,v 1.19 2006/06/29 19:11:07 gunter Exp $
+// GEANT4 tag $Name:  $
+// 
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// class description
+//
+// An isotope is a chemical isotope defined by its name,
+//                                                 Z: atomic number,
+//                                                 N: number of nucleons, 
+//                                                 A: mass of a mole (optional).
+//
+// The class contains as a private static member the table of defined
+// isotopes (an ordered vector of isotopes).
+//
+// Isotopes can be assembled into elements via the G4Element class.
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// 15.11.05: GetIsotope(isotopeName, G4bool warning=false)
+// 31.03.05: A becomes optional. Taken from Nist data base by default (mma)  
+// 26.02.02: fIndexInTable renewed 
+// 14.09.01: fCountUse: nb of elements which use this isotope 
+// 13.09.01: stl migration. Suppression of the data member fIndexInTable
+// 30.03.01: suppression of the warning message in GetIsotope
+// 04.08.98: new method GetIsotope(isotopeName) (mma)
+// 17.01.97: aesthetic rearrangement (mma)
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef G4ISOTOPE_HH
+#define G4ISOTOPE_HH
+
+#include "globals.hh"
+#include "G4ios.hh"
+#include <vector>
+
+class G4Isotope;
+typedef std::vector<G4Isotope*> G4IsotopeTable;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo......
+
+class G4Isotope
+{
+ public:  // with description
+
+    // Make an isotope
+    G4Isotope(const G4String& name,		//its name
+                    G4int     z,		//atomic number
+                    G4int     n,		//number of nucleons
+                    G4double  a = 0.);		//mass of mole
+                    
+    virtual ~G4Isotope();
+
+    // Retrieval methods
+    G4String GetName()  const {return fName;};    
+    G4int    GetZ()     const {return fZ;};
+    G4int    GetN()     const {return fN;};
+    G4double GetA()     const {return fA;};
+    
+    G4int GetCountUse() const {return fCountUse;};
+    void  increaseCountUse()  {fCountUse++;};
+    void  decreaseCountUse()  {fCountUse--;};
+    
+    static  
+    G4Isotope* GetIsotope(G4String name, G4bool warning=false);
+    
+    static const
+    G4IsotopeTable* GetIsotopeTable();
+    
+    static 
+    size_t GetNumberOfIsotopes();
+    
+    size_t GetIndex() const {return fIndexInTable;};    
+    
+    friend
+    std::ostream& operator<<(std::ostream&, G4Isotope*);
+    
+    friend
+    std::ostream& operator<<(std::ostream&, G4Isotope&);
+    
+    friend
+    std::ostream& operator<<(std::ostream&, G4IsotopeTable);
+     
+ public:  // without description
+ 
+    G4int operator==(const G4Isotope&) const;
+    G4int operator!=(const G4Isotope&) const;
+
+    G4Isotope(__void__&);
+      // Fake default constructor for usage restricted to direct object
+      // persistency for clients requiring preallocation of memory for
+      // persistifiable objects.
+   
+ private:
+     
+    G4Isotope(G4Isotope&);
+    G4Isotope& operator=(const G4Isotope&);
+     
+ private:
+
+    G4String fName;              // name of the Isotope
+    G4int    fZ;                 // atomic number
+    G4int    fN;                 // number of nucleons
+    G4double fA;                 // mass of a mole
+    
+    G4int    fCountUse;          // nb of elements which use this isotope
+
+    static 
+    G4IsotopeTable theIsotopeTable;
+    
+    size_t fIndexInTable;        // index in the Isotope table
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+
+#endif
Index: trunk/source/materials/include/G4IsotopeVector.hh
===================================================================
--- trunk/source/materials/include/G4IsotopeVector.hh	(revision 822)
+++ trunk/source/materials/include/G4IsotopeVector.hh	(revision 822)
@@ -0,0 +1,47 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4IsotopeVector.hh,v 1.6 2006/06/29 19:11:09 gunter Exp $
+// GEANT4 tag $Name:  $
+//
+// 
+// ------------------------------------------------------------
+//	GEANT 4 class header file 
+//
+//      ----------------  G4IsotopeVector  ----------------
+// History:
+// First implementation: Torre Wenaus, November 1995
+// ------------------------------------------------------------
+
+#ifndef G4ISOTOPEVECTOR_HH
+#define G4ISOTOPEVECTOR_HH
+
+#include <vector>
+#include "G4Isotope.hh"
+
+typedef std::vector<G4Isotope*> G4IsotopeVector;
+
+#endif
Index: trunk/source/materials/include/G4MPVEntry.hh
===================================================================
--- trunk/source/materials/include/G4MPVEntry.hh	(revision 822)
+++ trunk/source/materials/include/G4MPVEntry.hh	(revision 822)
@@ -0,0 +1,140 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4MPVEntry.hh,v 1.6 2006/06/29 19:11:11 gunter Exp $
+// GEANT4 tag $Name:  $
+//
+// 
+////////////////////////////////////////////////////////////////////////
+// G4MPVEntry Class Definition 
+////////////////////////////////////////////////////////////////////////
+//
+// File:	G4MPVEntry.hh	
+// Description: A G4MPVEntry is an MaterialPropertyVector Entry.  
+//		One Material Property Vector contains many MPVEntries  
+// Version:	1.0
+// Created:	1996-02-08	
+// Author:	Juliet Armstrong
+// Updated:     1999-10-29 add method and class descriptors
+//              1997-03-25 by Peter Gumplinger
+//		> cosmetics (only)
+// mail:        gum@triumf.ca
+//
+////////////////////////////////////////////////////////////////////////
+
+#ifndef G4MPVEntry_h
+#define G4MPVEntry_h 1
+
+/////////////
+// Includes
+/////////////
+
+#include "G4ios.hh"
+#include "globals.hh"
+
+// Class Description:
+// A G4MPVEntry is an MaterialPropertyVector Entry.
+// One Material Property Vector contains many MPVEntries.
+// Class Description - End:
+
+/////////////////////
+// Class Definition
+/////////////////////
+
+class G4MPVEntry {
+
+public: // Without description
+
+	//////////////
+	// Operators
+	//////////////G4MPVEntry.hh
+		
+	// Well defined semantics for these operators
+	// required by G4RWTPtrSortedVector
+
+	G4bool operator <(const G4MPVEntry &right) const;	
+	G4bool operator ==(const G4MPVEntry &right) const;
+	G4MPVEntry& operator =(const G4MPVEntry &right);
+
+	///////////////////////////////
+	// Constructor and Destructor
+	///////////////////////////////
+
+	G4MPVEntry(G4double aPhotonMomentum, G4double aPropertyValue); 
+
+	G4MPVEntry(const G4MPVEntry &right);
+
+	~G4MPVEntry();
+
+	////////////
+	// Methods
+	////////////
+
+	G4double GetPhotonMomentum();
+
+	G4double GetProperty();
+	
+	//////////
+	// Tests
+	//////////
+
+	void DumpEntry();
+
+private:
+
+	/////////////////////////
+	// Private Data members 
+	/////////////////////////
+
+	G4double thePhotonMomentum;
+	G4double theProperty;
+};
+
+////////////////////
+// Inline methods
+////////////////////
+
+// GetPhotonMomentum
+// -----------------
+//
+
+inline 
+G4double G4MPVEntry::GetPhotonMomentum()
+{
+	return thePhotonMomentum;
+}
+
+// GetProperty
+// -----------
+//
+
+inline 
+G4double G4MPVEntry::GetProperty()
+{
+	return theProperty;
+}
+
+#endif /* G4MPVEntry_h */
Index: trunk/source/materials/include/G4Material.hh
===================================================================
--- trunk/source/materials/include/G4Material.hh	(revision 822)
+++ trunk/source/materials/include/G4Material.hh	(revision 822)
@@ -0,0 +1,332 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4Material.hh,v 1.25 2006/06/29 19:11:13 gunter Exp $
+// GEANT4 tag $Name:  $
+//
+
+// class description
+//
+// Materials defined via the G4Material class are used to define the
+// composition of Geant volumes.
+// a Material is always made of Elements. It can be defined directly
+// from scratch (defined by an implicit, single element), specifying :
+//                                             its name,
+//                                             density,
+//                                             state informations,
+//                                            and Z,A of the underlying Element.
+//
+// or in terms of a collection of constituent Elements with specified weights
+// (composition specified either by fractional mass or atom counts).
+//
+// Quantities, with physical meaning or not, which are constant in a given 
+// material are computed and stored here as Derived data members.
+//
+// The class contains as a private static member the Table of defined
+// materials (an ordered vector of materials).
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// 10-07-96, new data members added by L.Urban
+// 12-12-96, new data members added by L.Urban
+// 20-01-97, aesthetic rearrangement. RadLength calculation modified
+//           Data members Zeff and Aeff REMOVED (i.e. passed to the Elements).
+//           (local definition of Zeff in DensityEffect and FluctModel...)
+//           Vacuum defined as a G4State. Mixture flag removed, M.Maire  
+// 29-01-97, State=Vacuum automatically set density=0 in the contructors.
+//           Subsequent protections have been put in the calculation of 
+//           MeanExcEnergy, ShellCorrectionVector, DensityEffect, M.Maire
+// 20-03-97, corrected initialization of pointers, M.Maire
+// 10-06-97, new data member added by V.Grichine (fSandiaPhotoAbsCof)
+// 27-06-97, new function GetElement(int), M.Maire
+// 24-02-98, fFractionVector become fMassFractionVector
+// 28-05-98, kState=kVacuum removed: 
+//           The vacuum is an ordinary gas vith very low density, M.Maire
+// 12-06-98, new method AddMaterial() allowing mixture of materials, M.Maire
+// 09-07-98, Ionisation parameters removed from the class, M.Maire
+// 04-08-98, new method GetMaterial(materialName), M.Maire
+// 05-10-98, change name: NumDensity -> NbOfAtomsPerVolume
+// 18-11-98, SandiaTable interface modified.
+// 19-07-99, new data member (chemicalFormula) added by V.Ivanchenko
+// 12-03-01, G4bool fImplicitElement (mma)
+// 30-03-01, suppression of the warning message in GetMaterial
+// 17-07-01, migration to STL. M. Verderi.
+// 14-09-01, Suppression of the data member fIndexInTable
+// 31-10-01, new function SetChemicalFormula() (mma)
+// 26-02-02, fIndexInTable renewed
+// 06-08-02, remove constructors with ChemicalFormula (mma)
+// 15-11-05, GetMaterial(materialName, G4bool warning=true)
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef G4MATERIAL_HH
+#define G4MATERIAL_HH
+
+#include "globals.hh"
+#include "G4ios.hh"
+#include <vector>
+#include "G4Element.hh"
+#include "G4MaterialPropertiesTable.hh"
+#include "G4IonisParamMat.hh"
+#include "G4SandiaTable.hh"
+#include "G4ElementVector.hh"
+#include "G4MaterialTable.hh"
+
+enum G4State { kStateUndefined, kStateSolid, kStateLiquid, kStateGas };
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class G4Material
+{
+public:  // with description
+
+  //
+  // Constructor to create a material from scratch.
+  //
+  G4Material(const G4String& name,				//its name
+                   G4double  z, 				//atomic number
+                   G4double  a,					//mass of mole
+                   G4double  density, 				//density
+                   G4State   state    = kStateUndefined,	//solid,gas
+                   G4double  temp     = STP_Temperature,	//temperature
+                   G4double  pressure = STP_Pressure);		//pressure
+
+  //
+  // Constructor to create a material from a combination of elements
+  // and/or materials subsequently added via AddElement and/or AddMaterial
+  //
+  G4Material(const G4String& name,				//its name
+                   G4double  density, 				//density
+                   G4int     nComponents,			//nbOfComponents
+                   G4State   state    = kStateUndefined,	//solid,gas
+                   G4double  temp     = STP_Temperature,	//temperature
+                   G4double  pressure = STP_Pressure);		//pressure
+
+  //
+  // Add an element, giving number of atoms
+  //
+  void AddElement(G4Element* element,				//the element
+                  G4int      nAtoms);				//nb of atoms in
+		    						// a molecule
+  //
+  // Add an element or material, giving fraction of mass
+  //
+  void AddElement (G4Element* element ,				//the element
+                   G4double   fraction);			//fractionOfMass
+                     
+  void AddMaterial(G4Material* material,			//the material
+                   G4double   fraction);			//fractionOfMass
+                     
+                     
+  virtual ~G4Material();
+  
+  void SetChemicalFormula(const G4String& chF) {fChemicalFormula=chF;};
+                          
+  //
+  // retrieval methods
+  // 
+  G4String GetName()            const {return fName;};
+  G4String GetChemicalFormula() const {return fChemicalFormula;};
+  G4double GetDensity()         const {return fDensity;};
+
+  G4State  GetState()       const {return fState;};
+  G4double GetTemperature() const {return fTemp;};
+  G4double GetPressure()    const {return fPressure;};
+    
+  //number of elements constituing this material:    
+  size_t GetNumberOfElements()         const {return fNumberOfElements;};
+    
+  //vector of pointers to elements constituing this material:          
+  const
+  G4ElementVector* GetElementVector()  const {return theElementVector;};
+  
+  //vector of fractional mass of each element:
+  const  G4double* GetFractionVector() const {return fMassFractionVector;};
+    
+  //vector of atom count of each element:
+  const  G4int*    GetAtomsVector()    const {return fAtomsVector;};
+
+  //return a pointer to an element, given its index in the material:
+  const 
+  G4Element* GetElement(G4int iel) const {return (*theElementVector)[iel];};
+  
+  //vector of nb of atoms per volume of each element in this material:
+  const
+  G4double* GetVecNbOfAtomsPerVolume() const {return VecNbOfAtomsPerVolume;};
+  //total number of atoms per volume:
+  G4double  GetTotNbOfAtomsPerVolume() const {return TotNbOfAtomsPerVolume;};
+  //total number of electrons per volume:
+  G4double  GetTotNbOfElectPerVolume() const {return TotNbOfElectPerVolume;};
+
+  //obsolete names (5-10-98) see the 2 functions above
+  const
+  G4double* GetAtomicNumDensityVector() const {return VecNbOfAtomsPerVolume;};
+  G4double  GetElectronDensity()        const {return TotNbOfElectPerVolume;};
+    
+  // Radiation length:     
+  G4double         GetRadlen()          const {return fRadlen;};
+    
+  // Nuclear interaction length:     
+  G4double GetNuclearInterLength()      const {return fNuclInterLen;};
+        
+  // ionisation parameters:
+  G4IonisParamMat* GetIonisation()      const {return fIonisation;};
+  
+  // Sandia table:
+  G4SandiaTable*   GetSandiaTable()     const {return fSandiaTable;};
+  
+  //meaningful only for single material:
+  G4double GetZ() const;
+  G4double GetA() const;
+  
+  //the MaterialPropertiesTable (if any) attached to this material:
+  void SetMaterialPropertiesTable(G4MaterialPropertiesTable* anMPT)
+                                     {fMaterialPropertiesTable = anMPT;};
+  				       
+  G4MaterialPropertiesTable* GetMaterialPropertiesTable() const
+                                     {return fMaterialPropertiesTable;};
+
+  //the (static) Table of Materials:
+  //
+  static
+  const G4MaterialTable* GetMaterialTable();
+      
+  static
+  size_t GetNumberOfMaterials();
+  
+  //the index of this material in the Table:    
+  size_t GetIndex() const {return fIndexInTable;};
+    
+  //return  pointer to a material, given its name:    
+  static  G4Material* GetMaterial(G4String name, G4bool warning=true);
+  
+  //
+  //printing methods
+  //
+  friend std::ostream& operator<<(std::ostream&, G4Material*);    
+  friend std::ostream& operator<<(std::ostream&, G4Material&);    
+  friend std::ostream& operator<<(std::ostream&, G4MaterialTable);
+    
+public:  // without description 
+       
+  G4int operator==(const G4Material&) const;
+  G4int operator!=(const G4Material&) const;
+  G4Material(__void__&);
+    // Fake default constructor for usage restricted to direct object
+    // persistency for clients requiring preallocation of memory for
+    // persistifiable objects.
+
+private:
+
+  G4Material(const G4Material&);
+  const G4Material& operator=(const G4Material&);
+
+  void InitializePointers();
+   
+  // Header routine for all derived quantities
+  void ComputeDerivedQuantities();
+
+  // Compute Radiation length
+  void ComputeRadiationLength();
+  
+  // Compute Nuclear interaction length
+  void ComputeNuclearInterLength();
+    
+private:
+
+  //
+  // Basic data members ( To define a material)
+  //
+
+  G4String         fName;                 // Material name
+  G4String         fChemicalFormula;      // Material chemical formula
+  G4double         fDensity;              // Material density
+  
+  G4State          fState;                // Material state (determined 
+                                          // internally based on density)
+  G4double         fTemp;                 // Temperature (defaults: STP)
+  G4double         fPressure;             // Pressure    (defaults: STP)
+
+  G4int            maxNbComponents;       // totalNbOfComponentsInTheMaterial 
+  size_t           fNumberOfComponents;   // Nb of components declared so far
+
+  size_t           fNumberOfElements;     // Nb of Elements in the material
+  G4ElementVector* theElementVector;      // vector of constituent Elements
+  G4bool           fImplicitElement;      // implicit Element created by this?
+  G4double*        fMassFractionVector;   // composition by fractional mass
+  G4int*           fAtomsVector;          // composition by atom count
+
+  G4MaterialPropertiesTable* fMaterialPropertiesTable;
+
+  static
+  G4MaterialTable theMaterialTable;       // the material table
+  size_t fIndexInTable;                   // the position in the table 
+
+  //
+  // Derived data members (computed from the basic data members)
+  //
+  // some general atomic properties
+   
+  G4double* VecNbOfAtomsPerVolume;        // vector of nb of atoms per volume
+  G4double  TotNbOfAtomsPerVolume;        // total nb of atoms per volume 
+  G4double  TotNbOfElectPerVolume;        // total nb of electrons per volume 
+  G4double  fRadlen;                      // Radiation length
+  G4double  fNuclInterLen;                // Nuclear interaction length  
+  
+  G4IonisParamMat* fIonisation;           // ionisation parameters
+  G4SandiaTable*   fSandiaTable;          // Sandia table         
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline
+G4double G4Material::GetZ() const
+{ 
+  if (fNumberOfElements > 1) {
+     G4cerr << "WARNING in GetZ. The material: " << fName << " is a mixture."
+            << G4endl;
+     G4Exception ( " the Atomic number is not well defined." );
+  } 
+  return (*theElementVector)[0]->GetZ();      
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline
+G4double G4Material::GetA() const
+{ 
+  if (fNumberOfElements > 1) { 
+     G4cerr << "WARNING in GetA. The material: " << fName << " is a mixture."
+            << G4endl;
+     G4Exception ( " the Atomic mass is not well defined." );
+  } 
+  return  (*theElementVector)[0]->GetA();      
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif
Index: trunk/source/materials/include/G4MaterialPropertiesTable.hh
===================================================================
--- trunk/source/materials/include/G4MaterialPropertiesTable.hh	(revision 822)
+++ trunk/source/materials/include/G4MaterialPropertiesTable.hh	(revision 822)
@@ -0,0 +1,155 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4MaterialPropertiesTable.hh,v 1.18 2006/06/29 19:11:15 gunter Exp $
+// GEANT4 tag $Name:  $
+//
+// 
+////////////////////////////////////////////////////////////////////////
+// G4MaterialPropertiesTable Definition
+////////////////////////////////////////////////////////////////////////
+//
+// File:        G4MaterialPropertiesTable.hh
+// Description: An Material properties table is a hash table, with 
+// 		key = property name, and value either G4double or
+//              G4MaterialPropertyVector 
+// Version:     1.0
+// Created:     1996-02-08
+// Author:      Juliet Armstrong
+// Updated:     2005-05-12 add SetGROUPVEL() by P. Gumplinger
+//              2002-11-05 add named material constants by P. Gumplinger
+//              1999-11-05 Migration from G4RWTPtrHashDictionary to STL
+//                         by John Allison
+//              1999-10-29 add method and class descriptors
+//              1997-03-25 by Peter Gumplinger
+//              > cosmetics (only)
+// mail:        gum@triumf.ca
+//
+////////////////////////////////////////////////////////////////////////
+
+#ifndef G4MaterialPropertiesTable_h
+#define G4MaterialPropertiesTable_h 1
+
+/////////////
+// Includes
+/////////////
+
+#include <cmath>
+#include <map>
+#include "globals.hh"
+#include "G4MaterialPropertyVector.hh"
+
+// Class Description:
+// An Material properties table is a hash table, with key = property
+// name, and value either G4double or G4MaterialPropertyVector.
+// Class Description - End:
+
+/////////////////////
+// Class Definition
+/////////////////////
+
+class G4MaterialPropertiesTable {
+
+        ////////////////
+        // Constructor
+        ////////////////
+
+public: // Without description
+
+	G4MaterialPropertiesTable(); 
+	
+	///////////////
+	// Destructor
+	///////////////
+
+public: // Without description
+
+	~G4MaterialPropertiesTable();
+
+	////////////
+	// Methods
+	////////////
+
+public: // With description
+
+        void AddConstProperty(const char     *key,
+                              G4double PropertyValue);
+        // Add a new property to the table by giving a key-name and value 
+
+	void AddProperty(const char     *key,
+		         G4double *PhotonMomenta,
+		         G4double *PropertyValues,
+		         G4int     NumEntries);
+        // Add a new property to the table by giving a key-name and the
+        // arrays x and y of size NumEntries.
+
+	void AddProperty(const char *key, G4MaterialPropertyVector *opv);
+        // Add a new property to the table by giving a key-name and an
+        // already constructed G4MaterialPropertyVector.
+
+        void RemoveConstProperty(const char *key);
+        // Remove a constant property from the table.
+
+	void RemoveProperty(const char *key);
+        // Remove a property from the table.
+
+        G4double GetConstProperty(const char *key);
+        // Get the constant property from the table corresponding to the key-name
+
+        G4bool ConstPropertyExists(const char *key);
+        // Return true if a const property 'key' exists.
+
+	G4MaterialPropertyVector* GetProperty(const char *key);
+        // Get the property from the table corresponding to the key-name.
+
+	void AddEntry(const char *key, G4double aPhotonMomentum,
+                                 G4double  aPropertyValue);
+        // Add a new entry (pair of numbers) to the table for a given key.
+
+	void RemoveEntry(const char *key, G4double  aPhotonMomentum);
+        // Remove an entry from the table for a given key and x-value.
+
+	void DumpTable();
+
+private:
+
+	/////////////////////////
+	// Private Data members
+	/////////////////////////
+
+	std::map<G4String, G4MaterialPropertyVector*, std::less<G4String> > MPT;
+	typedef std::map<G4String, G4MaterialPropertyVector*,
+	  std::less<G4String> >::iterator MPTiterator;
+
+        std::map< G4String, G4double, std::less<G4String> > MPTC;
+        typedef std::map< G4String, G4double,
+          std::less<G4String> >::iterator MPTCiterator;
+
+        G4MaterialPropertyVector* SetGROUPVEL();
+
+};
+
+#endif /* G4MaterialPropertiesTable_h */
Index: trunk/source/materials/include/G4MaterialPropertyVector.hh
===================================================================
--- trunk/source/materials/include/G4MaterialPropertyVector.hh	(revision 822)
+++ trunk/source/materials/include/G4MaterialPropertyVector.hh	(revision 822)
@@ -0,0 +1,201 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4MaterialPropertyVector.hh,v 1.10 2006/06/29 19:11:17 gunter Exp $
+// GEANT4 tag $Name:  $
+//
+// 
+////////////////////////////////////////////////////////////////////////
+// G4MaterialPropertyVector Class Definition
+////////////////////////////////////////////////////////////////////////
+//
+// File:        G4MaterialPropertyVector.hh
+//
+// Description: A one-to-one mapping from Photon Momentum to some
+//              optical property 
+// Version:     1.0
+// Created:     1996-02-08
+// Author:      Juliet Armstrong
+// Updated:     1999-10-29 add method and class descriptors
+//              1997-03-25 by Peter Gumplinger
+//              > value.h -> templates.hh
+// mail:        gum@triumf.ca
+//
+////////////////////////////////////////////////////////////////////////
+
+#ifndef G4MaterialPropertyVector_h   
+#define G4MaterialPropertyVector_h 1
+
+/////////////
+// Includes
+/////////////
+
+#include "G4MPVEntry.hh"
+#include <vector>
+#include <functional>
+
+// Class Description:
+// A one-to-one mapping from Photon Momentum to some optical property.
+// Class Description - End:
+
+/////////////////////
+// Class Definition
+/////////////////////
+
+class G4MaterialPropertyVector {
+
+	struct MPVEntry_less
+	  : public std::binary_function<G4MPVEntry*, G4MPVEntry*, G4bool>
+	{
+	  G4bool operator()(G4MPVEntry* x, G4MPVEntry* y) { return *x < *y; }
+	};
+
+public: // Without description
+
+	//////////////
+	// Operators
+	//////////////
+
+	G4bool operator ++();
+        G4MaterialPropertyVector&
+                   operator =(const G4MaterialPropertyVector &right);
+
+	/////////////////
+	// Constructors
+	/////////////////
+
+	G4MaterialPropertyVector() : MPV(0) 
+	{
+		CurrentEntry = -1;
+		NumEntries   = 0;
+	};
+
+public: // With description
+	
+	G4MaterialPropertyVector(G4double *PhotonMomenta, 
+		  	   	 G4double *PropertyValues,
+				 G4int     NumElements);
+        // Constructor of G4MaterialPropertyVector object.
+
+public: // Without description
+
+	G4MaterialPropertyVector(const G4MaterialPropertyVector &right);
+
+        ///////////////
+        // Destructor
+        ///////////////
+
+	~G4MaterialPropertyVector();
+
+        ////////////
+        // Methods
+        ////////////
+
+public: // With description
+
+	void ResetIterator();
+
+        void AddElement(G4double aPhotonMomentum, 
+			G4double aPropertyValue);
+        // Add a new element (pair of numbers) to the G4MaterialPropertyVector.
+	void RemoveElement(G4double aPhotonMomentum);
+        // Remove the element with given x-value.
+
+        G4double GetProperty(G4double aPhotonMomentum) const;
+        // Returns the y-value for given x-value (with interpolation).
+	G4double GetPhotonMomentum(G4double aProperty) const;
+        // Returns the x-value for given y-value (with interpolation).
+        // NOTE: Assumes that the y-value is an increasing function of 
+        //       the x-value. Returns the x-value corresponding to the 
+        //       y-value passed in. If several x-values correspond to 
+        //       the y-value passed in, the method returns the first 
+        //       x-value in the vector that corresponds to that value.
+	// For use with G4MaterialPropertyVector iterator: return
+        // property (or Photon momentum) at current point of iterator.
+
+	G4double GetProperty() const;
+	G4double GetPhotonMomentum() const;
+
+	G4double GetMaxProperty() const;
+	G4double GetMinProperty() const;
+	G4double GetMaxPhotonMomentum() const;
+	G4double GetMinPhotonMomentum() const;
+		
+	//////////
+	// Tests
+	//////////
+
+	void DumpVector();	
+
+private:
+
+	/////////////////////
+	// Helper Functions
+	/////////////////////
+
+	G4MPVEntry GetEntry(G4int i) const;
+
+	void GetAdjacentBins(G4double aPhotonMomentum,
+                             G4int *left,G4int *right) const;
+
+	/////////////////////////
+        // Private Data Members
+	/////////////////////////
+
+        std::vector<G4MPVEntry*> MPV;
+	G4int NumEntries;
+	G4int CurrentEntry;
+};
+
+///////////////////
+// Inline methods
+///////////////////
+
+inline 
+G4double G4MaterialPropertyVector::GetMaxProperty() const
+{
+  return MPV.back()->GetProperty();
+}
+
+inline
+G4double G4MaterialPropertyVector::GetMinProperty() const
+{
+  return MPV.front()->GetProperty();
+}
+
+inline
+G4double G4MaterialPropertyVector::GetMaxPhotonMomentum() const
+{
+  return MPV.back()->GetPhotonMomentum();
+}
+
+inline 
+G4double G4MaterialPropertyVector::GetMinPhotonMomentum() const
+{
+  return MPV.front()->GetPhotonMomentum();
+}
+
+#endif /* G4MaterialPropertyVector_h */
Index: trunk/source/materials/include/G4MaterialTable.hh
===================================================================
--- trunk/source/materials/include/G4MaterialTable.hh	(revision 822)
+++ trunk/source/materials/include/G4MaterialTable.hh	(revision 822)
@@ -0,0 +1,46 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4MaterialTable.hh,v 1.6 2006/06/29 19:11:19 gunter Exp $
+// GEANT4 tag $Name:  $
+//
+// 
+// ------------------------------------------------------------
+//	GEANT 4 class header file 
+//
+//      ----------------  G4MaterialTable  ----------------
+// History:
+// First implementation: Torre Wenaus, November 1995
+// ------------------------------------------------------------
+ 
+#ifndef G4MATERIALTABLE_HH
+#define G4MATERIALTABLE_HH
+
+class G4Material;
+
+typedef std::vector<G4Material*> G4MaterialTable;
+
+#endif
Index: trunk/source/materials/include/G4NistElementBuilder.hh
===================================================================
--- trunk/source/materials/include/G4NistElementBuilder.hh	(revision 822)
+++ trunk/source/materials/include/G4NistElementBuilder.hh	(revision 822)
@@ -0,0 +1,222 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: G4NistElementBuilder.hh,v 1.13 2007/07/26 18:52:12 vnivanch Exp $
+// GEANT4 tag $Name:  $
+
+#ifndef G4NistElementBuilder_h
+#define G4NistElementBuilder_h 1
+
+//---------------------------------------------------------------------------
+//
+// ClassName:   G4NistElementBuilder
+//
+// Description: Utility class to hold and manipulate G4Elements defined from
+//              Nist data base
+//
+// Author:      V.Ivanchenko 21.11.2004
+//
+// Modifications:
+// 27.02.06 V.Ivanchenko Return m=0 if Z&N combination is out of NIST  
+// 27.02.06 V.Ivanchneko add GetAtomicMassAmu 
+// 17.10.06 V.Ivanchneko add GetAtomicMass and GetNistElementNames methods
+// 02.05.07 V.Ivanchneko add GetNistFirstIsotopeN and GetNumberOfNistIsotopes 
+//
+//----------------------------------------------------------------------------
+//
+// Class Description:
+//
+// Element data from the NIST DB on Atomic Weights and Isotope Compositions
+// http://physics.nist.gov/PhysRefData/Compositions/index.html
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "globals.hh"
+#include "G4AtomicShells.hh"
+#include <vector>
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+const G4int maxNumElements = 108;
+const G4int maxAbundance   = 3500;
+
+class G4Element;
+
+class G4NistElementBuilder
+{
+public:
+  G4NistElementBuilder(G4int vb);
+  ~G4NistElementBuilder();
+
+  G4int    GetZ           (const G4String& symb);
+  G4double GetA           (G4int Z);
+  G4double GetIsotopeMass (G4int Z, G4int N);
+  G4double GetAtomicMass  (G4int Z, G4int N);
+
+  G4double GetIsotopeAbundance (G4int Z, G4int N);
+
+  G4int    GetNistFirstIsotopeN(G4int Z);
+  G4int    GetNumberOfNistIsotopes(G4int Z);
+
+  G4int    GetMaxNumElements(); 
+
+  void SetVerbose   (G4int);
+  void PrintElement (G4int Z);
+
+  // Find or build a G4Element by atomic number
+  G4Element* FindOrBuildElement (G4int Z, G4bool buildIsotopes = true);
+
+  // Find  or build a G4Element by symbol
+  G4Element* FindOrBuildElement (const G4String& symb,
+				 G4bool buildIsotopes = true);
+
+  // Return reference to vector of element names 
+  const std::vector<G4String>& GetElementNames() const;
+
+private:
+
+  void Initialise();
+
+  void AddElement(const G4String& symbol, G4int Z, G4int nc, const G4int& N,
+                  const G4double& A, const G4double& sA, const G4double& W);
+
+  // Build a G4Element from dataBase
+  G4Element* BuildElement(G4int Z, G4bool buildIsotopes);
+
+private:
+
+  G4String   elmSymbol     [maxNumElements];
+  G4double   atomicMass    [maxNumElements];
+  G4int      nIsotopes     [maxNumElements];
+  G4int      nFirstIsotope [maxNumElements];
+  G4int      idxIsotopes   [maxNumElements];
+
+  G4int      elmIndex      [maxNumElements];
+
+  G4double   massIsotopes  [maxAbundance];
+  G4double   sigMass       [maxAbundance];
+  G4double   relAbundance  [maxAbundance];
+
+  G4int      limitNumElements;  // protection 
+  G4int      index;
+  G4int      verbose;
+  G4bool     first;
+
+  std::vector<G4String>    elmNames;
+  G4AtomicShells           aShell;
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline G4int G4NistElementBuilder::GetZ(const G4String& name)
+{
+  G4int Z = maxNumElements;
+  do {Z--;} while( Z>0 && elmSymbol[Z] != name);
+  return Z;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline G4double G4NistElementBuilder::GetA(G4int Z)
+{
+  G4double a = 0.0;
+  if(Z>0 && Z<maxNumElements) a = atomicMass[Z];
+  return a;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline G4double G4NistElementBuilder::GetIsotopeMass(G4int Z, G4int N)
+{
+  G4double m = 0.0;
+  G4int i = N - nFirstIsotope[Z];
+  if(i >= 0 && i <nIsotopes[Z]) 
+    m = massIsotopes[i + idxIsotopes[Z]]*amu_c2
+      - Z*electron_mass_c2 + aShell.GetTotalBindingEnergy(Z); 
+  return m;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline G4double G4NistElementBuilder::GetAtomicMass(G4int Z, G4int N)
+{
+  G4double m = 0.0;
+  G4int i = N - nFirstIsotope[Z];
+  if(i >= 0 && i <nIsotopes[Z]) 
+    m = massIsotopes[i + idxIsotopes[Z]]*amu_c2; 
+  return m;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline G4double G4NistElementBuilder::GetIsotopeAbundance(G4int Z, G4int N)
+{
+  G4double x = 0.0;
+  G4int i = N - nFirstIsotope[Z];
+  if(i >= 0 && i <nIsotopes[Z]) x = relAbundance[i + idxIsotopes[Z]]; 
+  return x;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline G4int G4NistElementBuilder::GetNistFirstIsotopeN(G4int Z) 
+{
+  return nFirstIsotope[Z];
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline G4int G4NistElementBuilder::GetNumberOfNistIsotopes(G4int Z) 
+{
+  return nIsotopes[Z];
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline 
+const std::vector<G4String>& G4NistElementBuilder::GetElementNames() const
+{
+  return elmNames;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline G4int G4NistElementBuilder::GetMaxNumElements() 
+{
+  return maxNumElements-1;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline void G4NistElementBuilder::SetVerbose(G4int val) 
+{
+  verbose = val;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+
+#endif
Index: trunk/source/materials/include/G4NistManager.hh
===================================================================
--- trunk/source/materials/include/G4NistManager.hh	(revision 822)
+++ trunk/source/materials/include/G4NistManager.hh	(revision 822)
@@ -0,0 +1,412 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: G4NistManager.hh,v 1.17 2007/12/11 13:32:08 gcosmo Exp $
+// GEANT4 tag $Name: geant4-09-01-patch-02 $
+//
+//
+// -------------------------------------------------------------------
+//
+// GEANT4 Class header file
+//
+// File name:     G4NistManager
+//
+// Author:        Vladimir Ivanchenko
+//
+// Creation date: 23.12.2004
+//
+// Modifications:
+// 27.02.06 V.Ivanchneko add GetAtomicMassAmu and ConstructNewGasMaterial
+// 11.05.06 V.Ivanchneko add warning flag to FindMaterial method
+// 17.10.06 V.Ivanchneko add methods: GetAtomicMass, GetNistElementNames,
+//                       GetNistMaterialNames
+// 02.05.07 V.Ivanchneko add GetNistFirstIsotopeN and GetNumberOfNistIsotopes 
+// 28.07.07 V.Ivanchneko make simple methods inline
+// 28.10.07 V.Ivanchneko add state, T, P to maetrial build
+//
+// Class Description:
+//
+// A utility static class
+//
+
+// -------------------------------------------------------------------
+//
+// Class Description:
+//
+// Element data from the NIST DB on Atomic Weights and Isotope Compositions
+// http://physics.nist.gov/PhysRefData/Compositions/index.html
+//
+// -------------------------------------------------------------------
+//
+
+#ifndef G4NistManager_h
+#define G4NistManager_h 1
+
+#include <vector>
+#include "globals.hh"
+#include "G4Material.hh"
+#include "G4NistElementBuilder.hh"
+#include "G4NistMaterialBuilder.hh"
+
+class G4NistMessenger;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+
+class G4NistManager
+{
+
+public:
+
+  static G4NistManager* Instance();
+  ~G4NistManager();
+
+  // Elements
+  //
+  inline G4Element* GetElement(size_t index);
+  
+  // Find or build G4Element by atomic number
+  inline G4Element* FindOrBuildElement(G4int Z, G4bool isotopes=true);
+  
+  // Find or build G4Element by symbol
+  inline G4Element* FindOrBuildElement(const G4String& symb, 
+				       G4bool isotopes=true);
+
+  inline size_t   GetNumberOfElements() const;
+  inline G4int    GetZ(const G4String& symb) const;
+
+  // Mass in amu
+  inline G4double GetAtomicMassAmu(G4int Z) const;
+
+  // Mass in Geant4 units
+  inline G4double GetIsotopeMass(G4int Z, G4int N) const;
+  inline G4double GetAtomicMass(G4int Z, G4int N) const;
+
+  // Number of isotopes
+  inline G4int    GetNistFirstIsotopeN(G4int Z) const;
+  inline G4int    GetNumberOfNistIsotopes(G4int Z) const;
+
+  inline G4double GetIsotopeAbundance(G4int Z, G4int N) const;
+
+  inline void PrintElement(G4int Z);  
+
+  void PrintElement(const G4String&);    
+  void PrintG4Element(const G4String&);  
+
+  inline const std::vector<G4String>& GetNistElementNames() const;
+
+  // Materials
+  //
+  inline G4Material* GetMaterial(size_t index);
+  
+  // Find or build a G4Material by name, from the dataBase
+  //
+  inline G4Material* FindOrBuildMaterial(const G4String& name, 
+					 G4bool isotopes=true,
+					 G4bool warning=false);
+  
+  // construct a G4Material from scratch by atome count
+  // 
+  inline G4Material* ConstructNewMaterial(
+			          const G4String& name,
+				  const std::vector<G4String>& elm,
+				  const std::vector<G4int>& nbAtoms,
+				  G4double dens, 
+				  G4bool isotopes=true,
+				  G4State   state    = kStateSolid,     
+				  G4double  temp     = STP_Temperature,  
+				  G4double  pressure = STP_Pressure); 
+				      
+  // construct a G4Material from scratch by fraction mass
+  // 
+  inline G4Material* ConstructNewMaterial(
+				  const G4String& name,
+				  const std::vector<G4String>& elm,
+				  const std::vector<G4double>& weight,
+				  G4double dens, 
+				  G4bool isotopes=true,
+				  G4State   state    = kStateSolid,     
+				  G4double  temp     = STP_Temperature,  
+				  G4double  pressure = STP_Pressure); 
+
+  // construct a gas G4Material from scratch by atome count
+  // 
+  inline G4Material* ConstructNewGasMaterial(const G4String& name,
+					     const G4String& nameNist,
+					     G4double temp, 
+					     G4double pres, 
+					     G4bool isotopes=true);
+
+  inline size_t GetNumberOfMaterials();
+  
+  inline G4int GetVerbose();
+
+  void SetVerbose(G4int);
+
+  void PrintG4Material(const G4String&);
+
+  inline void ListMaterials(const G4String&);
+
+  inline const std::vector<G4String>& GetNistMaterialNames() const;
+
+  G4double GetZ13(G4double Z);
+
+  G4double GetLOGA(G4double A);
+
+private:
+
+  G4NistManager();
+  static G4NistManager* instance;
+
+  static G4double POWERZ13[256];
+  static G4double LOGA[256];
+  
+  std::vector<G4Element*>   elements;
+  std::vector<G4Material*>  materials;
+  
+  size_t   nElements;
+  size_t   nMaterials;
+  
+  G4int    verbose;
+
+  G4NistElementBuilder*    elmBuilder;
+  G4NistMaterialBuilder*   matBuilder;
+  G4NistMessenger*         messenger;
+
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline 
+size_t G4NistManager::GetNumberOfMaterials() 
+{
+  return nMaterials;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline 
+G4Element* G4NistManager::GetElement(size_t index)
+{
+  G4Element* elm = 0; 
+  const G4ElementTable* theElementTable = G4Element::GetElementTable();
+  if(index < theElementTable->size()) elm = (*theElementTable)[index];
+  return elm;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline 
+G4Element* G4NistManager::FindOrBuildElement(G4int Z, G4bool isotopes)
+{
+  return elmBuilder->FindOrBuildElement(Z, isotopes);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline
+G4Element* G4NistManager::FindOrBuildElement(const G4String& symb,
+                                                   G4bool isotopes)
+{
+  return elmBuilder->FindOrBuildElement(symb, isotopes);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline
+size_t G4NistManager::GetNumberOfElements() const
+{ 
+  return nElements;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline 
+G4int G4NistManager::GetZ(const G4String& symb) const
+{
+  return elmBuilder->GetZ(symb);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline 
+G4double G4NistManager::GetAtomicMassAmu(G4int Z) const
+{
+  return elmBuilder->GetA(Z);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline 
+G4double G4NistManager::GetIsotopeMass(G4int Z, G4int N) const
+{
+  return elmBuilder->GetIsotopeMass(Z, N);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline 
+G4double G4NistManager::GetAtomicMass(G4int Z, G4int N) const
+{
+  return elmBuilder->GetAtomicMass(Z, N);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline 
+G4double G4NistManager::GetIsotopeAbundance(G4int Z, G4int N) const
+{
+  return elmBuilder->GetIsotopeAbundance(Z, N);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline 
+G4int G4NistManager::GetNistFirstIsotopeN(G4int Z) const
+{
+  return elmBuilder->GetNistFirstIsotopeN(Z);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline 
+G4int G4NistManager::GetNumberOfNistIsotopes(G4int Z) const
+{
+  return elmBuilder->GetNumberOfNistIsotopes(Z);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline 
+const std::vector<G4String>& G4NistManager::GetNistElementNames() const
+{
+  return elmBuilder->GetElementNames();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline 
+void G4NistManager::PrintElement(G4int Z)
+{
+  elmBuilder->PrintElement(Z);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline
+G4Material* G4NistManager::GetMaterial(size_t index)
+{
+  const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable();
+  G4Material* mat = 0;
+  if(index < theMaterialTable->size()) mat = (*theMaterialTable)[index];
+  return mat;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline
+G4int G4NistManager::GetVerbose()
+{
+  return verbose;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline
+G4Material* G4NistManager::FindOrBuildMaterial(const G4String& name,
+					       G4bool isotopes,
+					       G4bool warning)
+{
+  return matBuilder->FindOrBuildMaterial(name, isotopes, warning);  
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline
+G4Material* G4NistManager::ConstructNewMaterial(
+                                      const G4String& name,
+                                      const std::vector<G4String>& elm,
+                                      const std::vector<G4int>& nbAtoms,
+				      G4double dens, 
+				      G4bool isotopes,
+				      G4State   state,     
+				      G4double  T,  
+				      G4double  P) 
+
+{
+  return 
+    matBuilder->ConstructNewMaterial(name,elm,nbAtoms,dens,isotopes,state,T,P);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline
+G4Material* G4NistManager::ConstructNewMaterial(
+                                      const G4String& name,
+                                      const std::vector<G4String>& elm,
+                                      const std::vector<G4double>& w,
+				      G4double dens, 
+				      G4bool isotopes,
+				      G4State   state,     
+				      G4double  T,  
+				      G4double  P) 
+{
+  return matBuilder->ConstructNewMaterial(name,elm,w,dens,isotopes,state,T,P);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline
+G4Material* G4NistManager::ConstructNewGasMaterial(
+				      const G4String& name,
+                                      const G4String& nameNist,
+				      G4double temp, G4double pres, 
+				      G4bool isotopes)
+{
+  return matBuilder->ConstructNewGasMaterial(name,nameNist,
+					     temp,pres,isotopes);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline
+void G4NistManager::ListMaterials(const G4String& list)
+{
+  matBuilder->ListMaterials(list);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+inline
+const std::vector<G4String>& G4NistManager::GetNistMaterialNames() const
+{
+  return matBuilder->GetMaterialNames();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif
+
Index: trunk/source/materials/include/G4NistMaterialBuilder.hh
===================================================================
--- trunk/source/materials/include/G4NistMaterialBuilder.hh	(revision 822)
+++ trunk/source/materials/include/G4NistMaterialBuilder.hh	(revision 822)
@@ -0,0 +1,185 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: G4NistMaterialBuilder.hh,v 1.12 2007/10/30 10:05:52 vnivanch Exp $
+// GEANT4 tag $Name:  $
+
+#ifndef G4NistMaterialBuilder_h
+#define G4NistMaterialBuilder_h 1
+
+//---------------------------------------------------------------------------
+//
+// ClassName:   G4NistMaterialBuilder
+//
+// Description: Utility class to hold and manipulate G4Materials
+//
+// Author:      V.Ivanchenko 21.11.2004
+//
+// Modifications:
+// 31.10.05 Add chemical effect and gas properties (V.Ivanchenko)
+// 27.02.06 V.Ivanchneko add ConstructNewGasMaterial
+// 11.05.06 V.Ivanchneko add warning flag to FindOrBuildMaterial method
+// 27.07.06 V.Ivanchneko set defaul warning=true for FindOrBuildMaterial
+// 27.07.07 V.Ivanchneko add matIndex vector to control built materials
+// 28.07.07 V.Ivanchneko add BuildMaterial method using Nist index
+//
+//----------------------------------------------------------------------------
+//
+// Class Description:
+//
+// Element data from the NIST DB on Atomic Weights and Isotope Compositions
+// http://physics.nist.gov/PhysRefData/Compositions/index.html
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "globals.hh"
+#include "G4Material.hh"
+#include <vector>
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class G4NistElementBuilder;
+
+class G4NistMaterialBuilder
+{
+public:
+
+  G4NistMaterialBuilder(G4NistElementBuilder*, G4int verb=0);
+			
+  ~G4NistMaterialBuilder();
+ 
+  // Find or build a G4Material by name, from dataBase
+  //
+  G4Material* FindOrBuildMaterial (const G4String& name, 
+				   G4bool isotopes=true,
+				   G4bool warning=true);
+					    
+  // construct a G4Material from scratch by atome count
+  // 
+  G4Material* ConstructNewMaterial (const G4String& name,
+				    const std::vector<G4String>& elm,
+				    const std::vector<G4int>& nbAtoms,
+				    G4double dens, 
+				    G4bool isotopes=true,
+				    G4State   state    = kStateSolid,     
+				    G4double  temp     = STP_Temperature,  
+				    G4double  pressure = STP_Pressure); 
+				      
+  // construct a G4Material from scratch by fraction mass
+  //
+  G4Material* ConstructNewMaterial (const G4String& name,
+				    const std::vector<G4String>& elm,
+				    const std::vector<G4double>& weight,
+				    G4double dens, 
+				    G4bool isotopes=true,
+				    G4State   state    = kStateSolid,     
+				    G4double  temp     = STP_Temperature,  
+				    G4double  pressure = STP_Pressure); 
+
+
+  // construct a gas G4Material from scratch by atome count
+  // 
+  G4Material* ConstructNewGasMaterial(const G4String& name, 
+				      const G4String& nameNist,
+				      G4double temp, G4double pres, 
+				      G4bool isotopes=true);
+
+  void SetVerbose(G4int val);
+  void ListMaterials(const G4String&);
+  void ListNistSimpleMaterials();
+  void ListNistCompoundMaterials();
+  void ListHepMaterials();
+
+  const std::vector<G4String>& GetMaterialNames() const;
+
+private:
+
+  void Initialise();
+  void NistSimpleMaterials();
+  void NistCompoundMaterials();
+  void HepAndNuclearMaterials();
+
+  void AddMaterial(const G4String& nameMat, G4double dens, G4int Z=0,
+                         G4double pot=0.0, G4int ncomp=1,
+                         G4State=kStateSolid,
+                         G4double temp=STP_Temperature,
+                         G4double pres=STP_Pressure);
+
+  void AddChemicalFormula(const G4String& nameMat, const G4String& ch);
+  void AddGas(const G4String& nameMat, G4double t=STP_Temperature,
+              G4double p=STP_Pressure);
+
+  void AddElementByWeightFraction(G4int Z, G4double);
+  void AddElementByAtomCount     (G4int Z, G4int);
+
+  void AddElementByWeightFraction(const G4String& name, G4double);
+  void AddElementByAtomCount     (const G4String& name, G4int);
+
+  // build a G4Material from dataBase
+  G4Material* BuildMaterial(const G4String& name, G4bool isotopes);
+  G4Material* BuildMaterial(G4int idx, G4bool isotopes);
+
+  void DumpElm(G4int);
+  void DumpMix(G4int);
+
+private:
+
+  G4NistElementBuilder*  elmBuilder;
+
+  G4int                  verbose;
+  G4int                  nMaterials;
+  G4int                  nComponents;
+  G4int                  nCurrent;
+  G4int                  nElementary;
+  G4int                  nNIST;
+
+  std::vector<G4String>  names;
+  std::vector<G4String>  chFormulas;
+
+  std::vector<G4double>  densities;
+  std::vector<G4double>  ionPotentials;
+  std::vector<G4State>   states;
+  std::vector<G4double>  fractions;
+  std::vector<G4int>     components;
+  std::vector<G4int>     indexes;
+  std::vector<G4int>     elements;
+
+  std::vector<G4int>     matIndex;
+
+  std::vector<G4double>  temperatures;
+  std::vector<G4double>  presures;
+
+  G4bool                 first;
+
+};
+
+inline const std::vector<G4String>& 
+       G4NistMaterialBuilder::GetMaterialNames() const
+{
+  return names;
+}
+
+#endif
Index: trunk/source/materials/include/G4NistMessenger.hh
===================================================================
--- trunk/source/materials/include/G4NistMessenger.hh	(revision 822)
+++ trunk/source/materials/include/G4NistMessenger.hh	(revision 822)
@@ -0,0 +1,110 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4NistMessenger.hh,v 1.4 2007/05/02 10:48:52 vnivanch Exp $
+// GEANT4 tag $Name:  $
+//
+// File name:     G4NistMessenger
+//
+// Author:        Vladimir Ivanchenko
+//
+// Creation date: 23.12.2004
+//
+// Modifications:
+// 29.04.07 V.Ivanchenko add recCmd
+//
+//
+// Class Description:
+//  This is a messenger class to interface to exchange information
+//  between G4NistManager and UI.
+//
+//  /material/  directory
+//
+//   Commands :
+//    verbose  val        verbose level for material/element builders
+//
+//
+//  /material/nist/  directory
+//
+//   Commands :
+//    printElement   symbol    output element parameters by symbol
+//    printZElement    Z       output element parameters by number
+//    listMaterials   key      list of materials (key = simple compound hep)
+//
+//  /material/g4/  directory
+//
+//   Commands :
+//    printElement   name        output element  parameters
+//    printMaterial  name        output material parameters
+
+// -------------------------------------------------------------------
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef G4NistMessenger_h
+#define G4NistMessenger_h 1
+
+#include "globals.hh"
+#include "G4UImessenger.hh"
+
+class G4NistManager;
+class G4UIdirectory;
+class G4UIcmdWithAnInteger;
+class G4UIcmdWithAString;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class G4NistMessenger: public G4UImessenger
+{
+public:
+
+  G4NistMessenger(G4NistManager* );
+  virtual ~G4NistMessenger();
+
+  void SetNewValue(G4UIcommand*, G4String);
+
+private:
+
+  G4NistManager*             manager;
+  
+  G4UIdirectory*             matDir;
+  G4UIcmdWithAnInteger*      verCmd;
+    
+  G4UIdirectory*             nistDir;
+  G4UIcmdWithAString*        prtElmCmd;  
+  G4UIcmdWithAnInteger*      przElmCmd;
+  G4UIcmdWithAString*        lisMatCmd;
+    
+  G4UIdirectory*             g4Dir;
+  G4UIcmdWithAString*        g4ElmCmd;   
+  G4UIcmdWithAString*        g4MatCmd;     
+
+};
+
+#endif
+
Index: trunk/source/materials/include/G4OpticalSurface.hh
===================================================================
--- trunk/source/materials/include/G4OpticalSurface.hh	(revision 822)
+++ trunk/source/materials/include/G4OpticalSurface.hh	(revision 822)
@@ -0,0 +1,178 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4OpticalSurface.hh,v 1.8 2006/06/29 19:12:31 gunter Exp $
+// GEANT4 tag $Name:  $
+//
+// 
+////////////////////////////////////////////////////////////////////////
+// G4OpticalSurface Definition
+////////////////////////////////////////////////////////////////////////
+//
+// File:        G4OpticalSurface.hh
+// Description: A optical surface class for use in G4OpBoundaryProcess
+// Version:     2.0
+// Created:     1997-06-26
+// Author:      Peter Gumplinger
+// Updated:     1999-10-29 add method and class descriptors
+// mail:        gum@triumf.ca
+//
+////////////////////////////////////////////////////////////////////////
+
+#ifndef G4OpticalSurface_h
+#define G4OpticalSurface_h 1
+
+/////////////
+// Includes
+/////////////
+
+#include "G4Types.hh"
+#include "G4SurfaceProperty.hh"
+
+// Class Description:
+// A optical surface class for use in the G4OpBoundaryProcess class.
+// Contains the enumerations: G4OpticalSurfaceFinish, G4OpticalSurfaceType,
+// and G4OpticalSurfaceModel.
+// Class Description - End:
+
+enum G4OpticalSurfaceFinish
+{
+   polished,                    // smooth perfectly polished surface
+   polishedfrontpainted,        // smooth top-layer (front) paint
+   polishedbackpainted,         // same is 'polished' but with a back-paint
+   ground,                      // rough surface
+   groundfrontpainted,          // rough top-layer (front) paint
+   groundbackpainted            // same as 'ground' but with a back-paint
+};
+
+enum G4OpticalSurfaceModel
+{
+   glisur,                      // original GEANT3 model
+   unified                      // UNIFIED model
+};
+
+class G4MaterialPropertiesTable;
+
+/////////////////////
+// Class Definition
+/////////////////////
+
+class G4OpticalSurface : public G4SurfaceProperty
+{
+
+public: // Without description
+  
+        //////////////
+        // Operators
+        //////////////
+  
+	G4OpticalSurface(const G4OpticalSurface &right);
+	const G4OpticalSurface & operator=(const G4OpticalSurface &right);
+  
+	G4int operator==(const G4OpticalSurface &right) const;
+	G4int operator!=(const G4OpticalSurface &right) const;
+
+public: // With description
+
+        ////////////////////////////////
+        // Constructors and Destructor
+        ////////////////////////////////
+
+	G4OpticalSurface(const G4String& name,
+			 G4OpticalSurfaceModel model = glisur,
+			 G4OpticalSurfaceFinish finish = polished,
+			 G4SurfaceType type = dielectric_dielectric,
+			 G4double value = 1.0);
+        // Constructor of an optical surface object.
+
+public: // Without description
+
+	~G4OpticalSurface();
+
+	////////////
+	// Methods
+        ////////////
+
+	// public methods
+
+public: // With description
+
+        G4OpticalSurfaceFinish GetFinish() const {return theFinish;};
+        // Returns the optical surface finish.
+        void         SetFinish(const G4OpticalSurfaceFinish finish)
+						 {theFinish = finish;};
+        // Sets the optical surface finish.
+
+        G4OpticalSurfaceModel GetModel() const {return theModel;};
+        // Returns the optical surface model used.
+        void           SetModel(const G4OpticalSurfaceModel model)
+						   {theModel = model;};
+        // Sets the optical surface model to be followed.
+
+	G4double GetSigmaAlpha() const {return sigma_alpha;};
+        // Returns an unified model surface parameter.
+	void     SetSigmaAlpha(const G4double s_a)
+				        {sigma_alpha = s_a;};
+        // Sets an unified model surface parameter.
+
+	G4double GetPolish() const {return polish;};
+        // Returns the optical surface polish type.
+	void     SetPolish(const G4double plsh) {polish=plsh;};
+        // Sets the optical surface polish type.
+
+	G4MaterialPropertiesTable* GetMaterialPropertiesTable() const
+				       { return theMaterialPropertiesTable;};
+        // Retrieves the pointer of the G4MaterialPropertiesTable 
+        // attached to optical surface.
+
+	void SetMaterialPropertiesTable(G4MaterialPropertiesTable *anMPT)
+				    { theMaterialPropertiesTable = anMPT;};
+        // Attaches a G4MaterialPropertiesTable to the optical surface.
+
+	void DumpInfo() const;
+        // Prints information about the optical surface.
+
+private:
+
+// ------------------
+// Basic data members ( To define an optical surface)
+// ------------------
+
+        G4OpticalSurfaceModel theModel;		// Surface model
+        G4OpticalSurfaceFinish theFinish;	// Surface finish
+
+	G4double sigma_alpha;		// The sigma of micro-facet polar angle
+	G4double polish;		// Polish parameter in glisur model
+
+	G4MaterialPropertiesTable* theMaterialPropertiesTable;
+
+};
+
+////////////////////
+// Inline methods
+////////////////////
+
+#endif /* G4OpticalSurface_h */
Index: trunk/source/materials/include/G4SandiaTable.hh
===================================================================
--- trunk/source/materials/include/G4SandiaTable.hh	(revision 822)
+++ trunk/source/materials/include/G4SandiaTable.hh	(revision 822)
@@ -0,0 +1,349 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4SandiaTable.hh,v 1.21 2007/10/02 10:13:33 vnivanch Exp $
+// GEANT4 tag $Name:  $
+
+// class description
+//
+// This class is an interface to G4StaticSandiaData.
+// it provides - Sandia coeff for an element, given its Z
+//             - sandia coeff for a material, given a pointer to it
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+//
+// History:
+//
+// 10.06.97 created. V. Grichine
+// 18.11.98 simplified public interface; new methods for materials.  mma
+// 30.01.01 major bug in the computation of AoverAvo and in the units (/g!)
+//          in GetSandiaCofPerAtom(). mma
+// 03.04.01 fnulcof[4] added; returned if energy < emin
+// 05.03.04 V.Grichine, new methods for old sorting algorithm for PAI model
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+#ifndef G4SANDIATABLE_HH
+#define G4SANDIATABLE_HH
+
+#include "G4OrderedTable.hh"      
+#include "G4ios.hh"
+#include "globals.hh"
+#include <assert.h>
+
+class G4Material;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+class G4SandiaTable
+{
+public:  // with description
+
+  G4SandiaTable(G4Material*);	         
+	         
+  ~G4SandiaTable();
+
+  //main computation per atom:
+  static G4double* GetSandiaCofPerAtom(G4int Z, G4double energy);
+  static G4double  GetZtoA            (G4int Z);
+
+  //per volume of a material:
+  inline G4int GetMatNbOfIntervals();
+  inline G4double  GetSandiaCofForMaterial(G4int,G4int);
+  inline G4double* GetSandiaCofForMaterial(G4double energy);
+  inline G4double  GetSandiaMatTable(G4int,G4int);
+
+  inline G4double  GetSandiaCofForMaterialPAI(G4int,G4int);
+  inline G4double* GetSandiaCofForMaterialPAI(G4double energy);
+  inline G4double  GetSandiaMatTablePAI(G4int,G4int);
+  inline G4OrderedTable*  GetSandiaMatrixPAI();
+
+public:  // without description
+
+  G4SandiaTable(__void__&);
+  // Fake default constructor for usage restricted to direct object
+  // persistency for clients requiring preallocation of memory for
+  // persistifiable objects.
+
+private:
+       
+  void ComputeMatSandiaMatrix();
+  void ComputeMatSandiaMatrixPAI();
+
+  // methods per atom
+  inline G4int     GetNbOfIntervals   (G4int Z);
+  inline G4double  GetSandiaCofPerAtom(G4int Z, G4int, G4int);
+  inline G4double  GetIonizationPot   (G4int Z);
+
+  // static members of the class
+  static const G4int      fNumberOfElements;
+  static const G4int      fIntervalLimit;
+  static const G4int      fNumberOfIntervals;
+
+  static const G4double   fSandiaTable[981][5];
+  static const G4int      fNbOfIntervals[101];
+  static const G4double   fZtoAratio[101];
+  static const G4double   fIonizationPotentials[101];
+  static const G4double   funitc[4];
+               
+  static       G4int      fCumulInterval[101];
+  static       G4double   fSandiaCofPerAtom[4];
+  
+  // members of the class
+  G4Material*     fMaterial;
+  G4int           fMatNbOfIntervals;
+  G4OrderedTable* fMatSandiaMatrix;
+  G4OrderedTable* fMatSandiaMatrixPAI;
+  
+  G4double        fnulcof[4];
+		   
+/////////////////////////////////////////////////////////////////////
+//
+// Methods for old implementation of PAI model
+// Will be removed for the next major release
+
+public:  // without description
+
+  G4SandiaTable(G4int);	         
+
+  inline void SandiaSwap( G4double** da,
+			  G4int i,
+			  G4int j );
+
+  void SandiaSort( G4double** da,
+		   G4int sz );
+
+  G4int SandiaIntervals( G4int Z[],
+			 G4int el );
+
+  G4int SandiaMixing(       G4int Z[],
+			    const G4double fractionW[],
+			    G4int el,
+			    G4int mi );
+
+  inline G4double GetPhotoAbsorpCof(G4int i , G4int j) const;
+
+  inline G4int GetMaxInterval() const; 
+
+  inline G4double** GetPointerToCof(); 
+
+private:
+
+  void ComputeMatTable();
+
+//////////////////////////////////////////////////////////////////////////
+//
+// data members for PAI model
+
+private:
+		
+  G4double** fPhotoAbsorptionCof ;	// SandiaTable  for mixture
+
+  G4int fMaxInterval ;
+
+//
+//
+//////////////////////////////////////////////////////////////////////////
+  
+};
+    
+// Inline methods
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+inline G4int 
+G4SandiaTable::GetMatNbOfIntervals()  
+{
+  return fMatNbOfIntervals;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+inline G4int 
+G4SandiaTable::GetNbOfIntervals(G4int Z)
+{
+  //  assert (Z>0 && Z<101);
+  return fNbOfIntervals[Z];
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+inline G4double
+G4SandiaTable::GetSandiaCofPerAtom(G4int Z, G4int interval, G4int j)
+{
+  assert (Z>0 && Z<101 && interval>=0 && interval<fNbOfIntervals[Z]
+	      && j>=0 && j<5);
+
+  G4int row = fCumulInterval[Z-1] + interval;
+  G4double x = fSandiaTable[row][0]*keV;
+  if (j > 0) {
+    x = Z*amu/fZtoAratio[Z]*
+      (fSandiaTable[row][j]*cm2*std::pow(keV,G4double(j))/g);     
+  }
+  return x;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+inline G4double  
+G4SandiaTable::GetSandiaCofForMaterial(G4int interval, G4int j)    
+{
+  assert (interval>=0 && interval<fMatNbOfIntervals && j>=0 && j<5);                      
+  return ((*(*fMatSandiaMatrix)[interval])[j]); 
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+inline G4double* 
+G4SandiaTable::GetSandiaCofForMaterial(G4double energy)
+{
+  G4double* x = fnulcof;
+  if (energy >= (*(*fMatSandiaMatrix)[0])[0]) {
+   
+    G4int interval = fMatNbOfIntervals - 1;
+    while ((interval>0)&&(energy<(*(*fMatSandiaMatrix)[interval])[0])) 
+      {interval--;} 
+    x = &((*(*fMatSandiaMatrix)[interval])[1]);
+  }
+  return x;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+inline G4double  
+G4SandiaTable::GetSandiaMatTable(G4int interval, G4int j) 
+{
+  assert (interval >= 0 && interval < fMaxInterval && j >= 0 && j < 5 );
+  G4double     unitCof ;
+  if(j == 0)   unitCof = keV ;
+  else         unitCof = (cm2/g)*std::pow(keV,(G4double)j);                      
+  return ( (*(*fMatSandiaMatrix)[interval])[j] )*unitCof; 
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+inline G4double  
+G4SandiaTable::GetSandiaCofForMaterialPAI(G4int interval, G4int j)    
+{
+  assert (interval>=0 && interval<fMatNbOfIntervals && j>=0 && j<5);                      
+  if(!fMatSandiaMatrixPAI) ComputeMatSandiaMatrixPAI();
+  return ((*(*fMatSandiaMatrixPAI)[interval])[j]); 
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+inline G4double* 
+G4SandiaTable::GetSandiaCofForMaterialPAI(G4double energy)
+{
+  if(!fMatSandiaMatrixPAI) ComputeMatSandiaMatrixPAI();
+  G4double* x = fnulcof;
+  if (energy >= (*(*fMatSandiaMatrixPAI)[0])[0]) {
+   
+    G4int interval = fMatNbOfIntervals - 1;
+    while ((interval>0)&&(energy<(*(*fMatSandiaMatrixPAI)[interval])[0])) 
+      {interval--;} 
+    x = &((*(*fMatSandiaMatrixPAI)[interval])[1]);
+  }
+  return x;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+inline G4double  
+G4SandiaTable::GetSandiaMatTablePAI(G4int interval, G4int j) 
+{
+  assert (interval >= 0 && interval < fMaxInterval && j >= 0 && j < 5 );
+  if(!fMatSandiaMatrixPAI) ComputeMatSandiaMatrixPAI();
+  G4double     unitCof ;
+  if(j == 0)   unitCof = keV ;
+  else         unitCof = (cm2/g)*std::pow(keV,(G4double)j);                      
+  return ( (*(*fMatSandiaMatrixPAI)[interval])[j] )*unitCof; 
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+inline G4double
+G4SandiaTable::GetIonizationPot(G4int Z)
+{
+  return fIonizationPotentials[Z]*eV;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+inline G4OrderedTable*  
+G4SandiaTable::GetSandiaMatrixPAI()
+{
+  if(!fMatSandiaMatrixPAI) ComputeMatSandiaMatrixPAI();
+  return fMatSandiaMatrixPAI;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+///////////////////////////////////////////////////////////////////////
+//
+// Inline methods for PAI model, will be removed in next major release
+
+inline G4int 
+G4SandiaTable::GetMaxInterval() const { 
+  return fMaxInterval;
+}
+
+inline G4double** 
+G4SandiaTable::GetPointerToCof() 
+{ 
+  if(!fPhotoAbsorptionCof) ComputeMatTable(); 
+  return fPhotoAbsorptionCof;
+}
+
+inline void
+G4SandiaTable::SandiaSwap( G4double** da ,
+                           G4int i,
+                           G4int j )
+{
+  G4double tmp = da[i][0] ;
+  da[i][0] = da[j][0] ;
+  da[j][0] = tmp ;
+}
+
+inline
+G4double G4SandiaTable::GetPhotoAbsorpCof(G4int i, G4int j) const
+{
+  G4double     unitCof ;
+  if(j == 0)   unitCof = keV ;
+  else         unitCof = (cm2/g)*std::pow(keV,(G4double)j) ;
+   
+  return  fPhotoAbsorptionCof[i][j]*unitCof ;
+}
+
+//
+//
+////////////////////////////////////////////////////////////////////////////
+
+
+#endif 
+
Index: trunk/source/materials/include/G4StaticSandiaData.hh
===================================================================
--- trunk/source/materials/include/G4StaticSandiaData.hh	(revision 822)
+++ trunk/source/materials/include/G4StaticSandiaData.hh	(revision 822)
@@ -0,0 +1,1569 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4StaticSandiaData.hh,v 1.7 2006/06/29 19:12:35 gunter Exp $
+// GEANT4 tag $Name:  $
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+//
+// 15.04.02 V.Grichine, bug fixed in Pb: comma after  15.861, 
+// 09.11.98 simplified public interface; removed mixting stuf.  MMA
+// 10.06.97 created. V. Grichine
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+#include"G4SandiaTable.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+// class description 
+// 
+// File for static data of PhotoAbsorption cross section coefficients 
+// according Sandia parametrisation
+//
+// const G4double G4SandiaTable::fSandiaTable[981][5]
+//
+// These are the coefficients from F. Biggs, R. Lighthill 'Analytical
+// Approximation for X-ray Cross Sections III', SAND-0070, May 1990.
+//
+// fSandiaTable [n][0]    - left energy borders in   keV   !!!
+// fSandiaTable [n][1-4]  - Photoelectric cross-section coefficients
+//                          in cm^2 keV^(1-4)/g , respectively
+//
+// The first energy intervals and coefficients for Xe are corrected to
+// correspond perfectly to the data of J.B. West, J. Morton 'Absolute
+// Photoionization Cross-sections Tables for Xenon in the VUV and the Soft
+// X-ray regions', Atomic Data and Nuclear Data Tables 22(1978)103-107. The
+// coefficients are checked to correspond perfectly to the data from B.L.
+// Henke et al.,'Low-Energy X-Ray Interaction Coefficients:Photoabsorption,
+// Scattering, and Reflection' Atomic Data and Nuclear Data Tables, 27
+// (1982)1-144.
+// The coeficients for Carbon are checked to correspond perfectly to the
+// data of B.L. Henke et al. (as Xe). The first three energy intervals
+// and coefficients for C are corrected to correspond perfectly to the data
+// of Gallagher et al., J.Phys.Chem.Ref.Data, 17(1)(1988).
+// The coefficients for Oxygen are checked to correspond perfectly to the
+// data of B.L. Henke et al. (as Xe). The first two energy intervals and
+// coefficients for O are corrected to correspond perfectly to the data of
+// Gallagher et al. (as C).
+// The coeficients for Hydrogen are checked to correspond perfectly to the
+// data of B.L. Henke et al. (as Xe). The first three energy intervals
+// and coefficients for H are corrected to correspond perfectly to the data
+// of L.C. Lee et al., J. of Chem.Phys.,67(3)(1977).
+// The first energy intervals and coefficients for He, Ne, Ar, and Kr are
+// corrected to correspond perfectly to the data of G.V. Marr and J.B. West,
+// Absolute Photoionization Cross-section Tables for Helium, Neon, Argon,
+// and Krypton in the VUV Spectral Regions, Atomic Data and Nuclear Data
+// Tables, 18(1976)497-508.
+//------------------------------------------------------------------------------
+//
+// Ionization potentials of first 100 elements in eV   
+//
+// const G4double G4SandiaTable::fIonizationPotentials[101]
+//
+// The most of ionization energies are taken from S. Ruben, Handbook of the
+// Elements, 3rd ed. (Open Court, La Salle, IL, 1985). 28 of the ionization
+// energies have been changed slightly to bring them up to date (changes
+// from W.C. Martin and B.N. Taylor of the National Institute os Standards
+// and Technology, January 1990). Here the ionization energy is the least
+// energy necessary to remove to infinity one electron from an atom of the
+// element.
+
+const G4double G4SandiaTable::fSandiaTable[981][5] = 
+{
+
+
+{ 0.0,          0.0,         0.0,         0.0,         0.0 },  // 'zero' row
+
+// Z - Element - Elm - Number of intervals   new   (for corrected element)
+
+// 1 - Hydrogen - H - 10    new (commented are Sandia version)
+
+//    0.01,     0.1000E-07,  0.0000E+00,  0.0000E+00,  0.0000E+00,
+//   0.014,    -0.6383E+02, -0.6446E+01,  0.1317E+02, -0.5045E-01,
+
+{ 0.01,         0.0000E+00,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0136,      -1.231E+06,   5.900E+04,  -8.407E+02,   3.74E+00   } ,
+{ 0.02,	       -1.131E+04,  -3.682E+02,   9.516E+01,  -1.075E+00  } ,
+{ 0.0457,       2.139E+05,  -3.303E+04,   1.765E+03,  -2.983E+01  } ,
+{ 0.1,          0.3051E+01, -0.7818E+01,  0.1144E+02,  0.6959E-01 } ,
+{ 0.8,          0.7636E-01, -0.9406E+00,  0.6144E+01,  0.1425E+01 } ,
+{ 4.0,          0.1180E-02, -0.8236E-01,  0.2886E+01,  0.5534E+01 } ,
+{ 20.0,         0.1620E-04, -0.5610E-02,  0.1214E+01,  0.1761E+02 } ,
+{ 100.0,        0.1034E-05, -0.4114E-03,  0.6287E+00,  0.3927E+02 } ,
+{ 500.0,        0.4599E-06,  0.5006E-03, -0.1425E-01,  0.1960E+03 } ,
+
+// 2 - Helium - He - 7      new
+
+//   0.01,     0.1000E-07,  0.0000E+00,  0.0000E+00,  0.0000E+00,
+//   0.025,   -0.1196E+04,  0.4759E+03,  0.1979E+02, -0.3540E+00,
+
+{ 0.01,        -2.997E+03,   1.050E+03,  -8.333E+00,   3.107E-02  } ,
+{ 0.15,         0.1857E+02, -0.4079E+02,  0.8609E+02, -0.2618E+01 } ,
+{ 0.8,          0.1606E+01, -0.1726E+02,  0.8101E+02, -0.4928E+01 } ,
+{ 4.0,          0.3663E-02, -0.3782E+00,  0.2288E+02,  0.6006E+02 } ,
+{ 20.0,         0.5934E-03, -0.1109E+00,  0.1388E+02,  0.1680E+03 } ,
+{ 100.0,        0.1120E-04, -0.3894E-02,  0.6136E+01,  0.4354E+03 } ,
+{ 500.0,        0.4921E-05,  0.1493E-02,  0.4725E+01,  0.7128E+03 } ,
+
+// 3 - Lithium - Li - 7
+
+{ 0.01,        -0.2418E+03,  0.3530E+02, -0.2699E+00,  0.5580E-03 } ,
+{ 0.055,       -0.1474E+03,  0.1578E+03,  0.2036E+03, -0.8521E+01 } ,
+{ 0.8,          0.4375E+01, -0.5094E+02,  0.3053E+03, -0.3064E+02 } ,
+{ 4.0,          0.4040E-01, -0.2930E+01,  0.1293E+03,  0.1828E+03 } ,
+{ 20.0,         0.3139E-02, -0.6107E+00,  0.7342E+02,  0.6852E+03 } ,
+{ 100.0,        0.4823E-04, -0.1161E-01,  0.2898E+02,  0.2129E+04 } ,
+{ 500.0,        0.2128E-04,  0.1951E-01,  0.1009E+02,  0.7144E+04 } ,
+
+// 4 - Beryllium - Be - 7
+
+{ 0.01,        -0.2785E+03,  0.1252E+03, -0.1912E+01,  0.8371E-02 } ,
+{ 0.111,       -0.4798E+03,  0.6302E+03,  0.4187E+03, -0.2783E+02 } ,
+{ 0.8,          0.1037E+02, -0.1280E+03,  0.8807E+03, -0.1646E+03 } ,
+{ 4.0,          0.1018E+00, -0.8264E+01,  0.4158E+03,  0.4366E+03 } ,
+{ 20.0,         0.5693E-02, -0.1595E+01,  0.2644E+03,  0.1566E+04 } ,
+{ 100.0,        0.2129E-03, -0.7972E-01,  0.1155E+03,  0.6065E+04 } ,
+{ 500.0,        0.7797E-04,  0.7695E-01,  0.3396E+02,  0.2439E+05 } ,
+
+// 5 - Boron - B - 7
+
+{ 0.01,	       -0.3387E+03,  0.1923E+03, -0.2742E+01,  0.1204E-01 } ,
+{ 0.188,       -0.9943E+03,  0.1816E+04,  0.3939E+03, -0.1755E+02 } ,
+{ 0.8,          0.3689E+01, -0.8834E+02,  0.1525E+04, -0.2145E+03 } ,
+{ 4.0,          0.6447E+00, -0.3953E+02,  0.1281E+04,  0.1768E+03 } ,
+{ 20.0,         0.1852E-02, -0.1356E+01,  0.5252E+03,  0.5160E+04 } ,
+{ 100.0,        0.4282E-03, -0.1297E+00,  0.2892E+03,  0.1601E+05 } ,
+{ 500.0,        0.1965E-03,  0.1947E+00,  0.1001E+03,  0.5902E+05 } ,
+
+// 6 - Carbon - C - 10      new
+
+//C    0.01,   0.5704E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00,
+
+{ 0.01,	        0.0 ,        0.0 ,        0.0 ,        0.0        } ,
+{ 0.0136,       1.390E+05,  -5.808E+03,   8.269E+01,  -3.935E-01  } ,
+{ 0.02,        -3.829E+04,   3.768E+03,  -9.082E+01,   6.775E-01  } ,
+{ 0.0457,      -0.3935E+03,  0.3219E+03, -0.6549E+01,  0.2086E+00 } ,
+{ 0.284,       -0.9022E+03,  0.1760E+04,  0.1549E+04, -0.2280E+02 } ,
+{ 0.8,         -0.7363E+01, -0.1537E+02,  0.2672E+04, -0.4482E+03 } ,
+{ 4.0,          0.1640E+01, -0.9428E+02,  0.2872E+04, -0.5583E+03 } ,
+{ 20.0,        -0.3742E-02, -0.1232E+01,  0.9489E+03,  0.1406E+05 } ,
+{ 100.0,        0.6760E-03, -0.1164E+00,  0.6566E+03,  0.2739E+05 } ,
+{ 500.0,        0.4503E-03,  0.4692E+00,  0.2183E+03,  0.1308E+06 } ,
+
+// 7 - Nitrogen - N - 8
+
+{ 0.01,         0.1010E+05,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0404,      -0.3622E+03,  0.3873E+03,  0.1244E+02, -0.4452E+00 } ,
+{ 0.4016,      -0.2338E+04,  0.5732E+04, -0.2082E+03,  0.1482E+03 } ,
+{ 0.8,         -0.4940E+01, -0.8442E+02,  0.4620E+04, -0.1186E+04 } ,
+{ 4.0,          0.2019E+01, -0.1249E+03,  0.4609E+04, -0.9421E+03 } ,
+{ 20.0,         0.1709E-01, -0.8196E+01,  0.2345E+04,  0.1369E+05 } ,
+{ 100.0,        0.1872E-02, -0.6732E+00,  0.1282E+04,  0.5700E+05 } ,
+{ 500.0,        0.8122E-03,  0.8364E+00,  0.4410E+03,  0.2358E+06 } ,
+
+// 8 - Oxygen - O - 8     new
+
+// C   0.01,   0.1144E+05,  0.0000E+00,  0.0000E+00,  0.0000E+00,
+
+{ 0.01,         9.343E+03,   9.026E+02,  -2.467E+01,   1.505E-01  } ,
+{ 0.02,         6.034E+03,   7.319E+02,  -2.677E+01,   2.842E-01  } ,
+{ 0.0483,      -0.2863E+03,  0.4085E+03,  0.4436E+02, -0.1782E+01 } ,
+{ 0.532,       -0.7181E+02,  0.4748E+03,  0.5542E+04, -0.1363E+04 } ,
+{ 4.0,          0.2745E+01, -0.1747E+03,  0.7159E+04, -0.2213E+04 } ,
+{ 20.0,         0.3774E-01, -0.1559E+02,  0.4045E+04,  0.1810E+05 } ,
+{ 100.0,        0.3169E-02, -0.1146E+01,  0.2194E+04,  0.9131E+05 } ,
+{ 500.0,        0.1367E-02,  0.1473E+01,  0.7214E+03,  0.4048E+06 } ,
+
+// 9 - Fluorine - F - 7
+
+{ 0.01,         0.1129E+05,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0724,      -0.2676E+03,  0.4767E+03,  0.8767E+02, -0.4504E+01 } ,
+{ 0.687,       -0.8907E+02,  0.6850E+03,  0.7217E+04, -0.2022E+04 } ,
+{ 4.0,          0.2813E+01, -0.2020E+03,  0.9903E+04, -0.4454E+04 } ,
+{ 20.0,         0.6097E-01, -0.2435E+02,  0.6099E+04,  0.2258E+05 } ,
+{ 100.0,        0.4857E-02, -0.1805E+01,  0.3335E+04,  0.1285E+06 } ,
+{ 500.0,        0.2041E-02,  0.2257E+01,  0.1084E+04,  0.5997E+06 } ,
+
+// 10 - Neon - Ne - 8       new
+
+// C   0.01,     0.1000E-05,  0.0000E+00,  0.0000E+00,  0.0000E+00,
+// C   0.0183,   0.8235E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00,
+// C   0.045,   -0.6059E+04,  0.3242E+04, -0.1796E+03,  0.3141E+01,
+
+{ 0.01,	        1.553E+04,  -1.011E+02,  -5.441E+00,   4.873E-02  } ,
+{ 0.045,        9.347E+02,   2.197E+03,  -1.282E+02,   2.253E+00  } ,
+{ 0.124,       -0.1940E+03,  0.4340E+03,  0.2357E+03, -0.1666E+02 } ,
+{ 0.867,       -0.8680E+02,  0.7434E+03,  0.1077E+05, -0.3822E+04 } ,
+{ 4.0,          0.3167E+01, -0.2491E+03,  0.1439E+05, -0.8187E+04 } ,
+{ 20.0,         0.1288E+00, -0.4471E+02,  0.9862E+04,  0.2497E+05 } ,
+{ 100.0,        0.5202E-02,  0.7337E-01,  0.4614E+04,  0.2256E+06 } ,
+{ 500.0,        0.3087E-02,  0.3402E+01,  0.1569E+04,  0.1147E+07 } ,
+
+// 11 - Sodium - Na - 7
+
+{ 0.01,         0.5429E+02,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.031,        0.8874E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.063,       -0.5565E+03,  0.1088E+04,  0.1062E+03, -0.6845E+01 } ,
+{ 1.073,        0.1732E+01, -0.1853E+03,  0.1712E+05, -0.8415E+04 } ,
+{ 20.0,         0.2726E+00, -0.8218E+02,  0.1475E+05,  0.9467E+04 } ,
+{ 100.0,        0.2083E-02,  0.4548E+01,  0.5521E+04,  0.3358E+06 } ,
+{ 500.0,        0.4199E-02,  0.4808E+01,  0.1793E+04,  0.1898E+07 } ,
+
+// 12 - Magnesium - Mg - 7
+
+{ 0.01,	       -0.5574E+03,  0.8687E+02, -0.1493E+01,  0.8660E-02 } ,
+{ 0.051,       -0.2726E+05,  0.9700E+04, -0.6921E+03,  0.1445E+02 } ,
+{ 0.123,       -0.6179E+03,  0.1379E+04,  0.2321E+03, -0.2291E+02 } ,
+{ 1.305,       -0.6648E+00, -0.1084E+03,  0.2219E+05, -0.1241E+05 } ,
+{ 20.0,         0.4080E+00, -0.1205E+03,  0.2139E+05, -0.1143E+03 } ,
+{ 100.0,        0.8338E-02,  0.2236E+01,  0.8819E+04,  0.4284E+06 } ,
+{ 500.0,        0.6233E-02,  0.7344E+01,  0.2662E+04,  0.2460E+07 } ,
+
+// 13 - Aluminum - Al - 8
+
+{ 0.01,        -0.1654E+05,  0.1585E+03,  0.3907E+01, -0.3383E-01 } ,
+{ 0.0159,       0.1122E+04, -0.4015E+02,  0.6623E+00, -0.2813E-02 } ,
+{ 0.073,        0.2390E+05, -0.6953E+03, -0.7978E+02,  0.1974E+01 } ,
+{ 0.1177,      -0.5284E+03,  0.1399E+04,  0.4360E+03, -0.4747E+02 } ,
+{ 1.56,        -0.3674E+01, -0.1622E+02,  0.2732E+05, -0.1752E+05 } ,
+{ 20.0,         0.4158E+00, -0.1351E+03,  0.2716E+05,  0.3723E+03 } ,
+{ 100.0,        0.1125E-01,  0.2747E+01,  0.1174E+05,  0.5695E+06 } ,
+{ 500.0,        0.8505E-02,  0.1049E+02,  0.4429E+04,  0.2413E+07 } ,
+
+// 14 - Silicon - Si - 7
+
+{ 0.01,         0.4575E+03,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0305,      -0.1168E+03,  0.1269E+03, -0.5506E+01,  0.6616E-01 } ,
+{ 0.099,       -0.6451E+03,  0.1836E+04,  0.5350E+03, -0.6436E+02 } ,
+{ 1.839,       -0.4056E+01, -0.1089E+02,  0.3544E+05, -0.2595E+05 } ,
+{ 20.0,         0.4945E+00, -0.1682E+03,  0.3627E+05, -0.1605E+05 } ,
+{ 100.0,        0.2716E-01, -0.5428E+01,  0.1775E+05,  0.6765E+06 } ,
+{ 500.0,        0.1127E-01,  0.1376E+02,  0.4871E+04,  0.4477E+07 } ,
+
+// 15 - Phosphorus - P - 7
+
+{ 0.01,         0.4728E+03,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0306,      -0.2227E+03,  0.2204E+03, -0.1122E+02,  0.1569E+00 } ,
+{ 0.132,       -0.5700E+03,  0.1909E+04,  0.7651E+03, -0.1123E+03 } ,
+{ 2.144,       -0.6098E+01,  0.7712E+02,  0.4196E+05, -0.3437E+05 } ,
+{ 20.0,         0.5710E+00, -0.2001E+03,  0.4505E+05, -0.3853E+05 } ,
+{ 100.0,        0.3613E-01, -0.8426E+01,  0.2277E+05,  0.8080E+06 } ,
+{ 500.0,        0.1421E-01,  0.1770E+02,  0.6221E+04,  0.5554E+07 } ,
+
+// 16 - Sulfer - S - 7
+
+{ 0.01,         0.5368E+03,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0341,      -0.2097E+03,  0.3174E+03, -0.1815E+02,  0.2796E+00 } ,
+{ 0.165,       -0.4885E+03,  0.1976E+04,  0.1206E+04, -0.1934E+03 } ,
+{ 2.472,       -0.1021E+02,  0.2346E+03,  0.5164E+05, -0.4707E+05 } ,
+{ 20.0,         0.7467E+00, -0.2534E+03,  0.5800E+05, -0.6691E+05 } ,
+{ 100.0,        0.6338E-01, -0.3443E+02,  0.4058E+05,  0.2233E+06 } ,
+{ 500.0,        0.1857E-01,  0.2398E+02,  0.6706E+04,  0.8358E+07 } ,
+
+// 17 - Chlorine - Cl - 7
+
+{ 0.01,         0.7808E+03,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0436,      -0.6163E+02,  0.3934E+03, -0.2563E+02,  0.4396E+00 } ,
+{ 0.2,         -0.2147E+03,  0.1269E+04,  0.2099E+04, -0.3705E+03 } ,
+{ 2.824,       -0.1192E+02,  0.3253E+03,  0.5927E+05, -0.5980E+05 } ,
+{ 20.0,         0.8789E+00, -0.2920E+03,  0.6860E+05, -0.1018E+06 } ,
+{ 100.0,        0.6556E-01, -0.2175E+02,  0.3895E+05,  0.9737E+06 } ,
+{ 500.0,        0.2236E-01,  0.2884E+02,  0.9717E+04,  0.9001E+07 } ,
+
+// 18 - Argon - Ar - 7      new
+
+// C   0.01,     0.1275E+05,  0.0000E+00,  0.0000E+00,  0.0000E+00,
+// C   0.0302,  -0.1674E+04,  0.1047E+04, -0.9010E+02,  0.2166E+01,
+
+{ 0.01,	       -8.294E+04,   5.720E+03,  -1.101E+02,   6.668E-01  } ,
+{ 0.04,	       -1.401E+03,   9.577E+02,  -7.842E+01,   1.797E+00  } ,
+{ 0.245,       -0.2244E+03,  0.1388E+04,  0.2571E+04, -0.5113E+03 } ,
+{ 3.203,       -0.1446E+02,  0.4359E+03,  0.6578E+05, -0.7284E+05 } ,
+{ 20.0,	        0.8786E+00, -0.3001E+03,  0.7682E+05, -0.1219E+06 } ,
+{ 100.0,        0.6779E-01, -0.2695E+02,  0.5069E+05,  0.5281E+06 } ,
+{ 500.0,        0.2598E-01,  0.3454E+02,  0.1059E+05,  0.1068E+08 } ,
+
+// 19 - Potassium - K - 7
+
+{ 0.01,         0.3111E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0305,       0.6162E+02,  0.5770E+03, -0.4497E+02,  0.9218E+00 } ,
+{ 0.294,       -0.3601E+03,  0.2287E+04,  0.2513E+04, -0.4591E+03 } ,
+{ 3.607,       -0.2113E+02,  0.7161E+03,  0.8183E+05, -0.9859E+05 } ,
+{ 20.0,         0.1048E+01, -0.3644E+03,  0.9844E+05, -0.1760E+06 } ,
+{ 100.0,        0.1040E+00, -0.3553E+02,  0.6096E+05,  0.1226E+07 } ,
+{ 500.0,        0.3453E-01,  0.4621E+02,  0.1669E+05,  0.1238E+08 } ,
+
+// 20 - Calcium - Ca - 7
+
+{ 0.01,         0.3029E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0305,       0.3816E+03,  0.5887E+03, -0.4888E+02,  0.1019E+01 } ,
+{ 0.346,       -0.1054E+03,  0.1120E+04,  0.5115E+04, -0.1325E+04 } ,
+{ 4.037,       -0.3015E+02,  0.1141E+04,  0.9459E+05, -0.1195E+06 } ,
+{ 20.0,         0.1408E+01, -0.4553E+03,  0.1206E+06, -0.2531E+06 } ,
+{ 100.0,        0.1204E+00, -0.5356E+02,  0.8779E+05,  0.6252E+06 } ,
+{ 500.0,        0.4178E-01,  0.5761E+02,  0.1377E+05,  0.2019E+08 } ,
+
+// 21 Scandium - Sc - 6
+
+{ 0.01,         0.1121E+04,  0.7413E+01, -0.3020E+00,  0.1510E-02 } ,
+{ 0.032,        0.2970E+03,  0.6359E+03, -0.4935E+02,  0.1044E+01 } ,
+{ 0.402,       -0.1507E+03,  0.1501E+04,  0.5139E+04, -0.1442E+04 } ,
+{ 4.491,        0.4615E+00, -0.2614E+03,  0.1217E+06, -0.2057E+06 } ,
+{ 100.0,        0.1509E+00, -0.6913E+02,  0.9253E+05,  0.1096E+07 } ,
+{ 500.0,        0.4833E-01,  0.6881E+02,  0.2762E+05,  0.1290E+08 } ,
+
+// 22 - Titanium - Ti - 6
+
+{ 0.01,         0.3596E+04, -0.6877E+02,  0.9609E+00, -0.4754E-02 } ,
+{ 0.1,         -0.3132E+03,  0.1024E+04, -0.1008E+03,  0.3096E+01 } ,
+{ 0.456,       -0.4626E+02,  0.8678E+03,  0.7308E+04, -0.2383E+04 } ,
+{ 4.966,        0.2074E+00, -0.2292E+03,  0.1371E+06, -0.2489E+06 } ,
+{ 100.0,        0.1972E+00, -0.9550E+02,  0.1106E+06,  0.1067E+07 } ,
+{ 500.0,        0.5606E-01,  0.8140E+02,  0.3106E+05,  0.1567E+08 } ,
+
+// 23 - Vanadium - V - 7
+
+{ 0.01,         0.4117E+04, -0.1054E+03,  0.1531E+01, -0.7725E-02 } ,
+{ 0.12,        -0.4052E+03,  0.1169E+04, -0.1212E+03,  0.4148E+01 } ,
+{ 0.513,        0.9968E+04, -0.1796E+04, -0.1204E+04,  0.1481E+04 } ,
+{ 0.628,       -0.1429E+03,  0.1632E+04,  0.7203E+04, -0.2283E+04 } ,
+{ 5.465,        0.3940E+00, -0.2733E+03,  0.1564E+06, -0.3184E+06 } ,
+{ 100.0,        0.2007E+00, -0.8911E+02,  0.1254E+06,  0.1137E+07 } ,
+{ 500.0,        0.6449E-01,  0.9483E+02,  0.3584E+05,  0.1821E+08 } ,
+
+// 24 - Chromium - Cr - 6
+
+{ 0.01,         0.5069E+04, -0.7968E+02,  0.8395E+00, -0.4494E-02 } ,
+{ 0.106,       -0.4404E+03,  0.1301E+04, -0.1166E+03,  0.3481E+01 } ,
+{ 0.575,        0.3932E+02,  0.1537E+03,  0.1228E+05, -0.4984E+04 } ,
+{ 5.989,        0.2740E+00, -0.2665E+03,  0.1818E+06, -0.3997E+06 } ,
+{ 100.0,        0.2727E+00, -0.1288E+03,  0.1543E+06,  0.9755E+06 } ,
+{ 500.0,        0.7660E-01,  0.1142E+03,  0.4290E+05,  0.2161E+08 } ,
+
+// 25 - Manganese - Mn - 6
+
+{ 0.01,         0.5692E+04, -0.1278E+03,  0.1150E+01, -0.3774E-02 } ,
+{ 0.1,         -0.4901E+03,  0.1450E+04, -0.1365E+03,  0.4134E+01 } ,
+{ 0.64,        -0.3065E+02,  0.7209E+03,  0.1275E+05, -0.5462E+04 } ,
+{ 6.539,        0.2930E+00, -0.2703E+03,  0.2034E+06, -0.4886E+06 } ,
+{ 100.0,        0.2940E+00, -0.1342E+03,  0.1761E+06,  0.8747E+06 } ,
+{ 500.0,        0.8736E-01,  0.1322E+03,  0.4952E+05,  0.2436E+08 } ,
+
+// 26 - Iron - Fe - 7
+
+{ 0.01,        -0.3328E+04,  0.2590E+03, -0.3812E+01,  0.1679E-01 } ,
+{ 0.024,        0.4132E+04,  0.3963E+03, -0.2505E+02,  0.3437E+00 } ,
+{ 0.12,        -0.2683E+02,  0.1250E+04, -0.7321E+02,  0.1137E+01 } ,
+{ 0.708,       -0.8128E+01,  0.6550E+03,  0.1511E+05, -0.7079E+04 } ,
+{ 7.112,        0.2151E+00, -0.2680E+03,  0.2341E+06, -0.6063E+06 } ,
+{ 100.0,        0.3511E+00, -0.1633E+03,  0.2090E+06,  0.7131E+06 } ,
+{ 500.0,        0.1026E+00,  0.1572E+03,  0.5901E+05,  0.2806E+08 } ,
+
+// 27 - Cobalt - Co - 7
+
+{ 0.01,	        0.2074E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0308,       0.6932E+04, -0.6765E-01, -0.9182E+01,  0.1413E+00 } ,
+{ 0.093,       -0.8228E+03,  0.1982E+04, -0.1782E+03,  0.4937E+01 } ,
+{ 0.779,        0.2092E+02,  0.3311E+03,  0.1820E+05, -0.9303E+04 } ,
+{ 7.709,        0.4947E-01, -0.2478E+03,  0.2586E+06, -0.7185E+06 } ,
+{ 100.0,        0.3588E+00, -0.1492E+03,  0.2296E+06,  0.8856E+06 } ,
+{ 500.0,        0.1154E+00,  0.1796E+03,  0.6740E+05,  0.3100E+08 } ,
+
+// 28 - Nickel - Ni - 8
+
+{ 0.01,	        0.8515E+04, -0.2121E+03,  0.2132E+01, -0.7667E-02 } ,
+{ 0.1,	       -0.1021E+04,  0.2388E+04, -0.2361E+03,  0.7261E+01 } ,
+{ 0.854,        0.0000E+00,  0.6600E+04,  0.0000E+00,  0.0000E+00 } ,
+{ 0.871,        0.0000E+00,  0.9810E+04,  0.0000E+00,  0.0000E+00 } ,
+{ 1.008,       -0.1175E+03,  0.2171E+04,  0.1514E+05, -0.6042E+04 } ,
+{ 8.332,        0.1685E-01, -0.2522E+03,  0.3005E+06, -0.9000E+06 } ,
+{ 100.0,        0.4681E+00, -0.2085E+03,  0.2782E+06,  0.4399E+06 } ,
+{ 500.0,        0.1364E+00,  0.2148E+03,  0.8039E+05,  0.3626E+08 } ,
+
+// 29 - Cooper - Cu - 7
+
+{ 0.01,	        0.9992E+04, -0.3780E+03,  0.5657E+01, -0.2788E-01 } ,
+{ 0.1,	       -0.8896E+03,  0.2391E+04, -0.1986E+03,  0.3649E+01 } ,
+{ 0.933,       -0.5089E+03,  0.4139E+04,  0.7468E+04, -0.6981E+03 } ,
+{ 1.096,       -0.9173E+02,  0.1862E+04,  0.1777E+05, -0.8202E+04 } ,
+{ 8.981,        0.7440E-02, -0.2371E+03,  0.3202E+06, -0.1028E+07 } ,
+{ 100.0,        0.4729E+00, -0.2055E+03,  0.3000E+06,  0.2182E+06 } ,
+{ 500.0,        0.1472E+00,  0.2345E+03,  0.8644E+05,  0.3990E+08 } ,
+
+// 30 - Zinc - Zn - 9
+
+{ 0.01,         0.1479E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0307,       0.1325E+05, -0.6762E+03,  0.1188E+02, -0.6785E-01 } ,
+{ 0.109,       -0.1330E+04,  0.3104E+04, -0.3092E+03,  0.8946E+01 } ,
+{ 1.02,        -0.2807E+05,  0.1091E+06, -0.1511E+06,  0.7897E+05 } ,
+{ 1.043,       -0.3057E+04,  0.1385E+05,  0.3780E+03, -0.2163E+03 } ,
+{ 1.193,       -0.8018E+02,  0.1794E+04,  0.2095E+05, -0.1070E+05 } ,
+{ 9.659,       -0.1158E+01, -0.3871E+02,  0.3499E+06, -0.1154E+07 } ,
+{ 100.0,        0.4820E+00, -0.1832E+03,  0.3296E+06,  0.6802E+06 } ,
+{ 500.0,        0.1669E+00,  0.2696E+03,  0.1000E+06,  0.4382E+08 } ,
+
+// 31 - Gallium - Ga - 9
+
+{ 0.01,         0.1479E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0278,       0.1211E+05, -0.7144E+03,  0.1535E+02, -0.1030E+00 } ,
+{ 0.076,       -0.1199E+04,  0.3215E+04, -0.3594E+03,  0.1152E+02 } ,
+{ 1.116,       -0.1457E+05,  0.6363E+05, -0.1011E+06,  0.6416E+05 } ,
+{ 1.142,        0.3470E+04, -0.8674E+04,  0.2548E+05, -0.8411E+04 } ,
+{ 1.298,       -0.9431E+02,  0.2078E+04,  0.2172E+05, -0.1101E+05 } ,
+{ 10.367,      -0.1253E+01, -0.2897E+02,  0.3783E+06, -0.1357E+07 } ,
+{ 100.0,        0.5591E+00, -0.2217E+03,  0.3625E+06,  0.3392E+06 } ,
+{ 500.0,        0.1949E+00,  0.2371E+03,  0.1767E+06,  0.2400E+08 } ,
+
+// 32 - Germanium - Ge - 9
+
+{ 0.01,	        0.4941E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0305,       0.1269E+05, -0.9339E+03,  0.2767E+02, -0.1952E+00 } ,
+{ 0.1,         -0.1358E+04,  0.3695E+04, -0.4569E+03,  0.1599E+02 } ,
+{ 1.217,       -0.7402E+04,  0.3636E+05, -0.6670E+05,  0.5346E+05 } ,
+{ 1.248,       -0.3400E+03,  0.3232E+04,  0.1163E+05, -0.1089E+04 } ,
+{ 1.413,       -0.5940E+02,  0.1646E+04,  0.2621E+05, -0.1507E+05 } ,
+{ 11.104,      -0.2025E+01,  0.1283E+03,  0.4069E+06, -0.1510E+07 } ,
+{ 100.0,        0.6478E+00, -0.2603E+03,  0.4045E+06, -0.5153E+05 } ,
+{ 500.0,        0.2155E+00,  0.2609E+03,  0.2074E+06,  0.2220E+08 } ,
+
+// 33 - Arsenic - As - 9
+
+{ 0.01,         0.2547E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0371,       0.2402E+05, -0.3110E+04,  0.1364E+03, -0.1877E+01 } ,
+{ 0.1,         -0.1536E+04,  0.4198E+04, -0.5497E+03,  0.1920E+02 } ,
+{ 1.323,       -0.4525E+04,  0.2468E+05, -0.5133E+05,  0.5102E+05 } ,
+{ 1.359,       -0.3858E+03,  0.1013E+05,  0.3603E+04, -0.7657E+03 } ,
+{ 1.529,       -0.5339E+02,  0.1649E+04,  0.2950E+05, -0.1800E+05 } ,
+{ 11.867,      -0.1655E+01,  0.8588E+02,  0.4504E+06, -0.1795E+07 } ,
+{ 100.0,        0.7880E+00, -0.3490E+03,  0.4641E+06, -0.1258E+07 } ,
+{ 500.0,        0.2393E+00,  0.2906E+03,  0.2360E+06,  0.2145E+08 } ,
+
+// 34 - Selenium - Se - 9
+
+{ 0.01,         0.1577E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0371,       0.1806E+05, -0.2230E+04,  0.9408E+02, -0.1263E+01 } ,
+{ 0.114,       -0.1610E+04,  0.4614E+04, -0.6392E+03,  0.2252E+02 } ,
+{ 1.434,       -0.6637E+03,  0.4194E+04, -0.1104E+05,  0.2806E+05 } ,
+{ 1.475,       -0.4265E+03,  0.9660E+04,  0.5343E+04, -0.1174E+04 } ,
+{ 1.652,       -0.3968E+02,  0.1459E+04,  0.3327E+05, -0.2228E+05 } ,
+{ 12.658,      -0.3461E+01,  0.4401E+03,  0.4690E+06, -0.1943E+07 } ,
+{ 100.0,        0.8564E+00, -0.3723E+03,  0.5020E+06, -0.1430E+07 } ,
+{ 500.0,        0.2590E+00,  0.3237E+03,  0.2541E+06,  0.2321E+08 } ,
+
+// 35 -Bromine - Br - 10
+
+{ 0.01,         0.2129E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.035,        0.1451E+05, -0.1941E+04,  0.8744E+02, -0.1214E+01 } ,
+{ 0.1,         -0.3534E+04,  0.6788E+04, -0.1134E+04,  0.5165E+02 } ,
+{ 0.5,         -0.3347E+03,  0.2195E+04,  0.1033E+04, -0.2839E+03 } ,
+{ 1.551,        0.1461E+03, -0.1050E+04,  0.3457E+04,  0.2000E+05 } ,
+{ 1.597,       -0.4318E+03,  0.1007E+05,  0.6548E+04, -0.1535E+04 } ,
+{ 1.782,       -0.4033E+02,  0.1607E+04,  0.3681E+05, -0.2478E+05 } ,
+{ 13.474,      -0.3955E+01,  0.5482E+03,  0.5202E+06, -0.2262E+07 } ,
+{ 100.0,        0.9718E+00, -0.4209E+03,  0.5662E+06, -0.2099E+07 } ,
+{ 500.0,        0.2907E+00,  0.3653E+03,  0.2908E+06,  0.2417E+08 } ,
+
+// 36 - Krypton - Kr - 10  new
+
+// C  0.01,    0.3691E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00,
+
+{ 0.01,	       -6.520E+03,   4.096E+02,  -2.238E+00,  -2.240E-02  } ,
+{ 0.0305,       0.2024E+04, -0.2083E+03,  0.4439E+01,  0.1056E+00 } ,
+{ 0.097,        0.7648E+03,  0.5257E+04, -0.9960E+03,  0.4686E+02 } ,
+{ 0.3,	       -0.2451E+03,  0.2199E+04,  0.1217E+04, -0.3120E+03 } ,
+{ 1.675,        0.3611E+03, -0.2974E+04,  0.1308E+05,  0.1268E+05 } ,
+{ 1.727,       -0.4163E+03,  0.1017E+05,  0.7535E+04, -0.1891E+04 } ,
+{ 1.921,       -0.9924E+00,  0.8455E+03,  0.4446E+05, -0.3490E+05 } ,
+{ 14.323,      -0.3076E+01,  0.4257E+03,  0.5613E+06, -0.2587E+07 } ,
+{ 100.0,        0.1050E+01, -0.4435E+03,  0.6114E+06, -0.3028E+07 } ,
+{ 500.0,        0.3136E+00,  0.3952E+03,  0.3252E+06,  0.2248E+08 } ,
+
+// 37 - Rubidium - Rb - 10
+
+{ 0.01,	        0.4606E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0305,       0.1441E+04, -0.1761E+03,  0.6821E+01,  0.4470E-01 } ,
+{ 0.111,       -0.6763E+03,  0.6772E+04, -0.1372E+04,  0.7035E+02 } ,
+{ 0.3,	       -0.3457E+03,  0.2591E+04,  0.1242E+04, -0.3481E+03 } ,
+{ 1.805,        0.3524E+03, -0.3194E+04,  0.1657E+05,  0.1224E+05 } ,
+{ 1.863,       -0.4025E+03,  0.1067E+05,  0.8396E+04, -0.2275E+04 } ,
+{ 2.065,        0.5234E+01,  0.7494E+03,  0.5033E+05, -0.4276E+05 } ,
+{ 15.2,        -0.2207E+01,  0.2653E+03,  0.6269E+06, -0.3163E+07 } ,
+{ 100.0,        0.1101E+01, -0.4280E+03,  0.6664E+06, -0.3481E+07 } ,
+{ 500.0,        0.3467E+00,  0.4515E+03,  0.3525E+06,  0.2783E+08 } ,
+
+// 38 - Strontium - Sr - 10
+
+{ 0.01,	        0.4850E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0307,       0.7854E+03, -0.6513E+02,  0.2134E+01,  0.1138E+00 } ,
+{ 0.133,       -0.2484E+04,  0.8950E+04, -0.2019E+04,  0.1171E+03 } ,
+{ 0.3,	       -0.3209E+03,  0.2818E+04,  0.1344E+04, -0.3984E+03 } ,
+{ 1.94,	        0.2746E+03, -0.2830E+04,  0.2149E+05,  0.7655E+04 } ,
+{ 2.007,       -0.4181E+03,  0.1025E+05,  0.1159E+05, -0.3199E+04 } ,
+{ 2.216,       -0.4367E+02,  0.1966E+04,  0.4835E+05, -0.3788E+05 } ,
+{ 16.105,      -0.5177E+00, -0.2546E+02,  0.6941E+06, -0.3733E+07 } ,
+{ 100.0,        0.1296E+01, -0.5192E+03,  0.7384E+06, -0.5043E+07 } ,
+{ 500.0,        0.3800E+00,  0.4950E+03,  0.4111E+06,  0.1955E+08 } ,
+
+// 39 - Yttrium - Y - 10
+
+{ 0.01,	        0.3854E+05, -0.1366E+04,  0.1672E+02, -0.6795E-01 } ,
+{ 0.0232,       0.2849E+04, -0.2828E+03,  0.1529E+02, -0.1723E+00 } ,
+{ 0.1677,      -0.6721E+04,  0.1290E+05, -0.3111E+04,  0.1985E+03 } ,
+{ 0.8,	        0.3585E+03, -0.4223E+03,  0.6620E+04, -0.2706E+04 } ,
+{ 2.079,       -0.8813E+02,  0.1184E+04,  0.2198E+05, -0.1440E+04 } ,
+{ 2.155,       -0.4141E+03,  0.1043E+05,  0.1385E+05, -0.4020E+04 } ,
+{ 2.373,       -0.1282E+02,  0.1204E+04,  0.6028E+05, -0.5752E+05 } ,
+{ 17.038,       0.4265E+00, -0.1646E+03,  0.7684E+06, -0.4421E+07 } ,
+{ 100.0,        0.1334E+01, -0.4917E+03,  0.8066E+06, -0.5879E+07 } ,
+{ 500.0,        0.4194E+00,  0.5651E+03,  0.4353E+06,  0.2981E+08 } ,
+
+// 40 - Zirconium - Zr - 9
+
+{ 0.01,         0.2993E+03,  0.1449E+03, -0.3012E+01,  0.1713E-01 } ,
+{ 0.18,        -0.7040E+04,  0.1434E+05, -0.3926E+04,  0.2887E+03 } ,
+{ 0.5,         -0.1647E+03,  0.2296E+04,  0.3166E+04, -0.1127E+04 } ,
+{ 2.223,       -0.2164E+03,  0.3512E+04,  0.2053E+05, -0.3382E+04 } ,
+{ 2.307,       -0.3996E+03,  0.1064E+05,  0.1548E+05, -0.4776E+04 } ,
+{ 2.533,       -0.3011E+02,  0.1794E+04,  0.6153E+05, -0.5699E+05 } ,
+{ 17.998,      -0.5900E+00,  0.1945E+03,  0.8031E+06, -0.4579E+07 } ,
+{ 100.0,        0.1474E+01, -0.5530E+03,  0.8907E+06, -0.7927E+07 } ,
+{ 500.0,        0.4562E+00,  0.6248E+03,  0.4760E+06,  0.3216E+08 } ,
+
+// 41 - Niobium - Nb - 10
+
+{ 0.01,	        0.3251E+04, -0.6844E+02,  0.1575E+01, -0.1094E-01 } ,
+{ 0.0297,       0.2754E+04, -0.4897E+03,  0.4237E+02, -0.8372E+00 } ,
+{ 0.2083,      -0.2018E+04,  0.8543E+04, -0.1769E+04,  0.2770E+02 } ,
+{ 0.9,          0.2150E+03,  0.4490E+03,  0.6409E+04, -0.2429E+04 } ,
+{ 2.37,        -0.2981E+03,  0.6188E+04,  0.1735E+05, -0.4420E+04 } ,
+{ 2.464,       -0.3923E+03,  0.1102E+05,  0.1751E+05, -0.5733E+04 } ,
+{ 2.698,       -0.1658E+02,  0.1435E+04,  0.7050E+05, -0.7037E+05 } ,
+{ 18.986,      -0.2292E+01,  0.5516E+03,  0.8555E+06, -0.5018E+07 } ,
+{ 100.0,        0.1599E+01, -0.5764E+03,  0.9643E+06, -0.8517E+07 } ,
+{ 500.0,        0.4986E+00,  0.7224E+03,  0.4910E+06,  0.4104E+08 } ,
+
+// 42 - Molybdenum - Mo - 10
+
+{ 0.01,        -0.3508E+04,  0.3050E+03, -0.4620E+01,  0.1998E-01 } ,
+{ 0.03,         0.3053E+04, -0.6192E+03,  0.5104E+02, -0.9955E+00 } ,
+{ 0.229,       -0.7786E+04,  0.1722E+05, -0.5215E+04,  0.3992E+03 } ,
+{ 0.8,         -0.1114E+03,  0.1895E+04,  0.5405E+04, -0.2261E+04 } ,
+{ 2.521,       -0.3027E+03,  0.7576E+04,  0.1570E+05, -0.4795E+04 } ,
+{ 2.625,       -0.3784E+03,  0.1099E+05,  0.1983E+05, -0.6801E+04 } ,
+{ 2.867,       -0.1840E+02,  0.1552E+04,  0.7635E+05, -0.8181E+05 } ,
+{ 20.0,        -0.2560E+01,  0.7317E+03,  0.9005E+06, -0.5349E+07 } ,
+{ 100.0,        0.1540E+01, -0.4834E+03,  0.1021E+07, -0.9300E+07 } ,
+{ 500.0,        0.5359E+00,  0.7662E+03,  0.5243E+06,  0.5200E+08 } ,
+
+// 43 - Technetium - Tc - 10
+
+{ 0.01,         0.2680E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.068,       -0.7592E+03,  0.8677E+03, -0.1346E+03,  0.6198E+01 } ,
+{ 0.253,       -0.3269E+05,  0.4110E+05, -0.1328E+05,  0.1384E+04 } ,
+{ 0.425,       -0.3863E+03,  0.3458E+04,  0.3500E+04, -0.1341E+04 } ,
+{ 2.677,       -0.2871E+03,  0.7198E+04,  0.1867E+05, -0.5767E+04 } ,
+{ 2.793,       -0.1101E+03,  0.1635E+05,  0.3183E+04, -0.1491E+04 } ,
+{ 3.043,       -0.2936E+02,  0.1924E+04,  0.7955E+05, -0.8669E+05 } ,
+{ 21.044,       0.5721E+00,  0.7164E+02,  0.1004E+07, -0.6678E+07 } ,
+{ 100.0,        0.1769E+01, -0.5691E+03,  0.1097E+07, -0.1069E+08 } ,
+{ 500.0,        0.5748E+00,  0.8119E+03,  0.6113E+06,  0.3605E+08 } ,
+
+// 44 - Ruthenium - Ru - 10
+
+{ 0.01,	        0.2116E+04,  0.1001E+03, -0.2614E+01,  0.1466E-01 } ,
+{ 0.0716,       0.1947E+03,  0.7270E+03, -0.1490E+03,  0.8002E+01 } ,
+{ 0.2794,      -0.2141E+05,  0.2872E+05, -0.8592E+04,  0.8312E+03 } ,
+{ 0.4606,      -0.2430E+01,  0.2793E+04,  0.5237E+04, -0.2042E+04 } ,
+{ 2.838,       -0.2831E+03,  0.7880E+04,  0.1913E+05, -0.6518E+04 } ,
+{ 2.967,       -0.3547E+03,  0.1093E+05,  0.2575E+05, -0.9586E+04 } ,
+{ 3.224,       -0.1311E+02,  0.1428E+04,  0.9237E+05, -0.1148E+06 } ,
+{ 22.117,       0.1007E-01,  0.1277E+03,  0.1086E+07, -0.7755E+07 } ,
+{ 100.0,        0.1633E+01, -0.4030E+03,  0.1144E+07, -0.9817E+07 } ,
+{ 500.0,        0.6218E+00,  0.9117E+03,  0.5873E+06,  0.6614E+08 } ,
+
+// 45 - Rhodium - Rh - 10
+
+{ 0.01,         0.2535E+04,  0.1329E+03, -0.3193E+01,  0.1648E-01 } ,
+{ 0.072,       -0.1037E+04,  0.1357E+04, -0.2412E+03,  0.1212E+02 } ,
+{ 0.307,        0.1155E+04,  0.3456E+04,  0.8529E+03, -0.3075E+03 } ,
+{ 0.4962,      -0.4773E+03,  0.3678E+04,  0.5261E+04, -0.2225E+04 } ,
+{ 3.004,       -0.2665E+03,  0.7197E+04,  0.2390E+05, -0.7946E+04 } ,
+{ 3.146,       -0.3285E+03,  0.9342E+04,  0.3454E+05, -0.1203E+05 } ,
+{ 3.412,       -0.2532E+02,  0.2009E+04,  0.9447E+05, -0.1115E+06 } ,
+{ 23.220,      -0.3043E+01,  0.9079E+03,  0.1126E+07, -0.8086E+07 } ,
+{ 100.0,        0.1870E+01, -0.4570E+03,  0.1251E+07, -0.1191E+08 } ,
+{ 500.0,        0.6726E+00,  0.9644E+03,  0.7281E+06,  0.4409E+08 } ,
+
+// 46 - Palladium - Pd - 10
+
+{ 0.01,         0.1095E+05, -0.2552E+03,  0.1914E+01, -0.3916E-02 } ,
+{ 0.07,         0.2418E+04,  0.9664E+02, -0.1050E+03,  0.9047E+01 } ,
+{ 0.335,       -0.1605E+05,  0.3107E+05, -0.1240E+05,  0.1658E+04 } ,
+{ 0.5315,      -0.4705E+03,  0.3846E+04,  0.5959E+04, -0.2639E+04 } ,
+{ 3.174,       -0.2530E+03,  0.7129E+04,  0.2620E+05, -0.9068E+04 } ,
+{ 3.33,        -0.3225E+03,  0.1001E+05,  0.3550E+05, -0.1354E+05 } ,
+{ 3.605,        0.1642E+02,  0.4603E+03,  0.1181E+06, -0.1737E+06 } ,
+{ 24.35,       -0.2888E+01,  0.8714E+03,  0.1203E+07, -0.9306E+07 } ,
+{ 100.0,        0.1857E+01, -0.3662E+03,  0.1308E+07, -0.1219E+08 } ,
+{ 500.0,        0.7151E+00,  0.1066E+04,  0.7318E+06,  0.6061E+08 } ,
+
+// 47 - Silver - Ag - 10
+
+{ 0.01,	        0.1054E+05, -0.1973E+03,  0.1033E+01, -0.6574E-03 } ,
+{ 0.086,       -0.4089E+04,  0.3916E+04, -0.8005E+03,  0.4841E+02 } ,
+{ 0.367,       -0.2951E+04,  0.6256E+04,  0.1909E+04, -0.8620E+03 } ,
+{ 0.5714,      -0.2321E+02,  0.1892E+04,  0.9451E+04, -0.4150E+04 } ,
+{ 3.351,       -0.2547E+03,  0.7851E+04,  0.2733E+05, -0.1038E+05 } ,
+{ 3.524,       -0.3170E+03,  0.1045E+05,  0.3850E+05, -0.1560E+05 } ,
+{ 3.806,       -0.1817E+01,  0.1265E+04,  0.1192E+06, -0.1684E+06 } ,
+{ 25.514,      -0.4061E+01,  0.1339E+04,  0.1260E+07, -0.9752E+07 } ,
+{ 100.0,        0.2065E+01, -0.4444E+03,  0.1433E+07, -0.1533E+08 } ,
+{ 500.0,        0.7734E+00,  0.1157E+04,  0.8006E+06,  0.6214E+08 } ,
+
+// 48 - Cadmium - Cd - 11
+
+{ 0.01,         0.1876E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.03,         0.8550E+04, -0.2785E+03,  0.2021E+01,  0.1032E-01 } ,
+{ 0.098,        0.4933E+03,  0.1167E+04, -0.3452E+03,  0.2759E+02 } ,
+{ 0.404,        0.2088E+04,  0.3036E+04,  0.1247E+04, -0.2691E+03 } ,
+{ 0.6165,       0.7508E+01,  0.2031E+04,  0.1014E+05, -0.4621E+04 } ,
+{ 3.537,       -0.2454E+03,  0.8162E+04,  0.2822E+05, -0.1156E+05 } ,
+{ 3.727,       -0.2677E+03,  0.8244E+04,  0.4935E+05, -0.1791E+05 } ,
+{ 4.018,       -0.2306E+02,  0.2129E+04,  0.1161E+06, -0.1547E+06 } ,
+{ 26.711,      -0.8206E+01,  0.2269E+04,  0.1268E+07, -0.9746E+07 } ,
+{ 100.0,        0.2254E+01, -0.4904E+03,  0.1506E+07, -0.1642E+08 } ,
+{ 500.0,        0.8123E+00,  0.1229E+04,  0.8686E+06,  0.5293E+08 } ,
+
+// 49 - Indium - I - 11
+
+{ 0.01,         0.1702E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.031,        0.2333E+05, -0.1510E+04,  0.3498E+02, -0.2775E+00 } ,
+{ 0.103,       -0.4354E+04,  0.4933E+04, -0.1221E+04,  0.9073E+02 } ,
+{ 0.443,       -0.2048E+04,  0.9964E+04, -0.2857E+04,  0.7223E+03 } ,
+{ 0.702,       -0.1763E+03,  0.3053E+04,  0.9756E+04, -0.4718E+04 } ,
+{ 3.73,        -0.2324E+03,  0.7725E+04,  0.3333E+05, -0.1361E+05 } ,
+{ 3.938,       -0.2675E+03,  0.8828E+04,  0.5249E+05, -0.2065E+05 } ,
+{ 4.238,       -0.2149E+02,  0.2143E+04,  0.1256E+06, -0.1775E+06 } ,
+{ 27.94,       -0.2097E+01,  0.1045E+04,  0.1428E+07, -0.1216E+08 } ,
+{ 100.0,        0.2233E+01, -0.3526E+03,  0.1578E+07, -0.1747E+08 } ,
+{ 500.0,        0.8685E+00,  0.1331E+04,  0.9171E+06,  0.6234E+08 } ,
+
+// 50 - Tin - Sn - 11
+
+{ 0.01,         0.1857E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0318,       0.3071E+05, -0.2069E+04,  0.4886E+02, -0.3894E+00 } ,
+{ 0.093,        0.6119E+02,  0.1769E+04, -0.5287E+03,  0.4438E+02 } ,
+{ 0.485,        0.2325E+04,  0.2905E+04,  0.1395E+04, -0.1160E+03 } ,
+{ 0.714,       -0.8411E+03,  0.7174E+04,  0.3429E+04, -0.1945E+04 } ,
+{ 3.929,       -0.2078E+03,  0.6795E+04,  0.3953E+05, -0.1546E+05 } ,
+{ 4.156,       -0.2735E+03,  0.1006E+05,  0.5154E+05, -0.2316E+05 } ,
+{ 4.465,        0.1409E+02,  0.5245E+03,  0.1554E+06, -0.2738E+06 } ,
+{ 29.2,        -0.6053E+01,  0.2152E+04,  0.1430E+07, -0.1218E+08 } ,
+{ 100.0,        0.2434E+01, -0.4441E+03,  0.1694E+07, -0.2116E+08 } ,
+{ 500.0,        0.9156E+00,  0.1438E+04,  0.9506E+06,  0.6990E+08 } ,
+
+// 51 - Antimony - Sb - 11
+
+{ 0.01,         0.7076E+03,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0304,       0.2538E+05, -0.2014E+04,  0.5518E+02, -0.5093E+00 } ,
+{ 0.096,       -0.2763E+04,  0.3809E+04, -0.9187E+03,  0.6404E+02 } ,
+{ 0.528,        0.4191E+04,  0.1201E+04,  0.6138E+03,  0.8057E+03 } ,
+{ 0.766,        0.9566E+02,  0.1292E+04,  0.1534E+05, -0.8151E+04 } ,
+{ 4.132,       -0.2154E+03,  0.7884E+04,  0.3884E+05, -0.1742E+05 } ,
+{ 4.381,       -0.2413E+03,  0.8640E+04,  0.6267E+05, -0.2629E+05 } ,
+{ 4.698,       -0.2300E+02,  0.2351E+04,  0.1410E+06, -0.2130E+06 } ,
+{ 30.491,      -0.9816E+01,  0.3157E+04,  0.1443E+07, -0.1193E+08 } ,
+{ 100.0,        0.2470E+01, -0.3671E+03,  0.1779E+07, -0.2260E+08 } ,
+{ 500.0,        0.9713E+00,  0.1520E+04,  0.1016E+07,  0.7466E+08 } ,
+
+// 52 - Tellurium - Te - 11
+
+{ 0.01,         0.9416E+03,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0528,      -0.5818E+05,  0.1470E+05, -0.1039E+04,  0.2257E+02 } ,
+{ 0.106,       -0.2734E+04,  0.3947E+04, -0.9985E+03,  0.7313E+02 } ,
+{ 0.572,       -0.1058E+06,  0.2917E+06, -0.2491E+06,  0.7124E+05 } ,
+{ 1.006,       -0.4397E+02,  0.2059E+04,  0.1571E+05, -0.9021E+04 } ,
+{ 4.341,       -0.1946E+03,  0.7129E+04,  0.4399E+05, -0.1939E+05 } ,
+{ 4.612,       -0.2372E+03,  0.9166E+04,  0.6308E+05, -0.2911E+05 } ,
+{ 4.939,        0.1086E+01,  0.1149E+04,  0.1640E+06, -0.2950E+06 } ,
+{ 31.814,      -0.3401E+01,  0.1832E+04,  0.1571E+07, -0.1426E+08 } ,
+{ 100.0,        0.2389E+01, -0.1733E+03,  0.1798E+07, -0.2273E+08 } ,
+{ 500.0,        0.1007E+01,  0.1586E+04,  0.1076E+07,  0.7154E+08 } ,
+
+// 53 - Iodine - I - 12
+
+{ 0.01,         0.7020E+03,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.034,        0.2410E+05, -0.2114E+04,  0.6324E+02, -0.6266E+00 } ,
+{ 0.103,       -0.2554E+04,  0.4115E+04, -0.1059E+04,  0.7800E+02 } ,
+{ 0.619,       -0.4564E+05,  0.1181E+06, -0.9050E+05,  0.2490E+05 } ,
+{ 0.931,        0.1940E+05, -0.1268E+05, -0.1443E+05,  0.1681E+05 } ,
+{ 1.072,       -0.1016E+04,  0.1150E+05, -0.8332E+04,  0.1024E+05 } ,
+{ 4.557,       -0.1833E+03,  0.6763E+04,  0.5201E+05, -0.2240E+05 } ,
+{ 4.852,       -0.2150E+03,  0.8275E+04,  0.7525E+05, -0.3297E+05 } ,
+{ 5.188,       -0.2566E+02,  0.2615E+04,  0.1595E+06, -0.2557E+06 } ,
+{ 33.17,       -0.3670E+01,  0.1872E+04,  0.1719E+07, -0.1646E+08 } ,
+{ 100.0,        0.2225E+01,  0.1829E+03,  0.1881E+07, -0.2157E+08 } ,
+{ 500.0,        0.1098E+01,  0.1755E+04,  0.1154E+07,  0.8971E+08 } ,
+
+// 54 - Xenon - Xe - 13          new
+
+// C   0.01,     0.6262E+03,  0.0000E+00,  0.0000E+00,  0.0000E+00,
+// C   0.0515,   0.7578E+05, -0.1206E+05,  0.6503E+03, -0.1177E+02,
+// C   0.1073,  -0.1456E+04,  0.3607E+04, -0.1050E+04,  0.8562E+02,
+
+{ 0.01,         3.405E+03,  -3.311E+02,   1.048E+01,  -7.987E-02  } ,
+{ 0.065,       -4.118E+04,   2.024E+04,  -2.136E+03,   6.490E+01  } ,
+{ 0.1073,       7.622E+04,  -2.983E+04,   3.608E+03,  -1.222E+02  } ,
+{ 0.180,       -4.086E+02,   2.713E+03,  -8.147E+02,   6.519E+01  } ,
+{ 0.672,        0.5494E+05, -0.4316E+05, -0.3353E+05,  0.3122E+05 } ,
+{ 0.936,       -0.2422E+05,  0.6454E+05, -0.3914E+05,  0.8599E+04 } ,
+{ 1.143,       -0.6606E+03,  0.7269E+04,  0.6119E+04, -0.3383E+04 } ,
+{ 4.782,       -0.1565E+03,  0.5749E+04,  0.5985E+05, -0.2396E+05 } ,
+{ 5.102,       -0.2236E+03,  0.9444E+04,  0.7463E+05, -0.3742E+05 } ,
+{ 5.445,       -0.2010E+02,  0.2400E+04,  0.1720E+06, -0.2977E+06 } ,
+{ 34.561,      -0.1622E+01,  0.1830E+04,  0.1780E+07, -0.1721E+08 } ,
+{ 100.0,        0.2082E+01,  0.3625E+03,  0.1962E+07, -0.2448E+08 } ,
+{ 500.0,        0.1148E+01,  0.1892E+04,  0.1133E+07,  0.1244E+09 } ,
+
+// 55 - Cesium - Cs - 11
+
+{ 0.01,         0.6813E+03,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0704,       0.1642E+06, -0.2922E+05,  0.1724E+04, -0.3361E+02 } ,
+{ 0.111,       -0.2400E+04,  0.4936E+04, -0.1531E+04,  0.1354E+03 } ,
+{ 0.726,        0.1295E+05, -0.7423E+04, -0.6620E+04,  0.9125E+04 } ,
+{ 1.065,        0.6121E+03, -0.1572E+04,  0.2712E+05, -0.1563E+05 } ,
+{ 5.012,       -0.8402E+02,  0.2872E+04,  0.7699E+05, -0.1853E+05 } ,
+{ 5.36,        -0.2254E+03,  0.1015E+05,  0.7940E+05, -0.4284E+05 } ,
+{ 5.713,       -0.1987E+01,  0.1400E+04,  0.2040E+06, -0.4166E+06 } ,
+{ 35.985,      -0.4238E+01,  0.2444E+04,  0.1873E+07, -0.1899E+08 } ,
+{ 100.0,        0.2278E+01,  0.4044E+03,  0.2085E+07, -0.2635E+08 } ,
+{ 500.0,        0.1226E+01,  0.2030E+04,  0.1249E+07,  0.1169E+09 } ,
+
+// 56 - Barium - Ba - 11
+
+{ 0.01,         0.5765E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0305,       0.1759E+04, -0.2331E+03,  0.9598E+01,  0.3960E-01 } ,
+{ 0.09,        -0.4276E+03,  0.2995E+04, -0.9837E+03,  0.8771E+02 } ,
+{ 0.78,         0.6154E+04,  0.1190E+04, -0.2858E+03,  0.1593E+04 } ,
+{ 1.135,        0.2420E+03, -0.4033E+03,  0.3138E+05, -0.2304E+05 } ,
+{ 5.247,       -0.1084E+03,  0.4043E+04,  0.7718E+05, -0.2532E+05 } ,
+{ 5.623,       -0.1836E+03,  0.7952E+04,  0.9545E+05, -0.4532E+05 } ,
+{ 5.987,        0.8708E+01,  0.7581E+03,  0.2258E+06, -0.5011E+06 } ,
+{ 37.441,      -0.5846E+01,  0.3162E+04,  0.1902E+07, -0.1948E+08 } ,
+{ 100.0,        0.2590E+01,  0.2297E+03,  0.2236E+07, -0.3193E+08 } ,
+{ 500.0,        0.1281E+01,  0.2144E+04,  0.1303E+07,  0.1193E+09 } ,
+
+// 57 - Lantanum - La - 12
+
+{ 0.01,         0.4514E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.04,         0.2741E+05, -0.4218E+04,  0.2117E+03, -0.3183E+01 } ,
+{ 0.13,        -0.1231E+04,  0.4053E+04, -0.1329E+04,  0.1203E+03 } ,
+{ 0.832,        0.2431E+04,  0.3780E+04,  0.2792E+04, -0.2167E+03 } ,
+{ 1.124,       -0.4024E+03,  0.8837E+04,  0.2398E+04, -0.4154E+03 } ,
+{ 1.204,       -0.2694E+03,  0.4549E+04,  0.1944E+05, -0.1264E+05 } ,
+{ 5.484,       -0.9085E+02,  0.3459E+04,  0.8639E+05, -0.2558E+05 } ,
+{ 5.891,       -0.1485E+03,  0.6357E+04,  0.1121E+06, -0.4626E+05 } ,
+{ 6.266,       -0.6527E+01,  0.1901E+04,  0.2209E+06, -0.4602E+06 } ,
+{ 38.925,      -0.7588E+01,  0.3685E+04,  0.1991E+07, -0.2054E+08 } ,
+{ 100.0,        0.2727E+01,  0.3137E+03,  0.2356E+07, -0.3362E+08 } ,
+{ 500.0,        0.1365E+01,  0.2298E+04,  0.1393E+07,  0.1220E+09 } ,
+
+// 58 - Cerium - Ce - 13
+
+{ 0.01,         0.1542E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.053,        0.2448E+05, -0.5012E+04,  0.3411E+03, -0.7413E+01 } ,
+{ 0.11,        -0.1622E+04,  0.4662E+04, -0.1505E+04,  0.1385E+03 } ,
+{ 0.883,        0.5551E+05, -0.1769E+06,  0.2024E+06, -0.7125E+05 } ,
+{ 1.185,        0.4656E+04,  0.6580E+04, -0.3256E+04,  0.8079E+03 } ,
+{ 1.273,       -0.2828E+03,  0.1019E+05,  0.2005E+04, -0.4180E+03 } ,
+{ 1.435,        0.3264E+03, -0.7440E+03,  0.3609E+05,  0.2685E+05 } ,
+{ 5.723,       -0.7263E+02,  0.2822E+04,  0.9606E+05, -0.2458E+05 } ,
+{ 6.164,       -0.1695E+03,  0.7899E+04,  0.1139E+06, -0.5644E+05 } ,
+{ 6.549,        0.1939E+02,  0.3799E+03,  0.2661E+06, -0.6583E+06 } ,
+{ 40.443,      -0.1029E+02,  0.4409E+04,  0.2101E+07, -0.2280E+08 } ,
+{ 100.0,        0.2723E+01,  0.4916E+03,  0.2494E+07, -0.3595E+08 } ,
+{ 500.0,        0.1464E+01,  0.2444E+04,  0.1486E+07,  0.1376E+09 } ,
+
+// 59 - Praseodymium - Pr - 13
+
+{ 0.01,         0.3935E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.04,         0.5885E+02,  0.5060E+02,  0.1142E+02, -0.2858E+00 } ,
+{ 0.113,       -0.2475E+04,  0.6072E+04, -0.2077E+04,  0.2099E+03 } ,
+{ 0.931,       -0.6489E+04,  0.2485E+05, -0.1060E+05,  0.2589E+04 } ,
+{ 1.242,       -0.5349E+03,  0.8049E+04,  0.5499E+04, -0.9313E+03 } ,
+{ 1.337,       -0.3829E+03,  0.1003E+05,  0.3437E+04, -0.7202E+03 } ,
+{ 1.505,        0.1158E+03,  0.1754E+04,  0.2978E+05, -0.2081E+05 } ,
+{ 5.964,       -0.4523E+02,  0.1773E+04,  0.1075E+06, -0.1884E+05 } ,
+{ 6.44,        -0.1401E+03,  0.6504E+04,  0.1315E+06, -0.5758E+05 } ,
+{ 6.835,        0.8492E+01,  0.8664E+03,  0.2819E+06, -0.7256E+06 } ,
+{ 41.991,      -0.9126E+01,  0.4223E+04,  0.2290E+07, -0.2709E+08 } ,
+{ 100.0,        0.3207E+01,  0.3424E+03,  0.2697E+07, -0.4123E+08 } ,
+{ 500.0,        0.1557E+01,  0.2710E+04,  0.1566E+07,  0.1383E+09 } ,
+
+// 60 - Neodymium - Nd - 12
+
+{ 0.01,         0.2269E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0305,      -0.1142E+04,  0.4035E+03, -0.1726E+02,  0.2479E+00 } ,
+{ 0.117,       -0.4138E+03,  0.3657E+04, -0.1265E+04,  0.1287E+03 } ,
+{ 0.978,        0.1241E+05, -0.6608E+04, -0.8545E+04,  0.1174E+05 } ,
+{ 1.298,        0.2239E+03,  0.1199E+05, -0.1181E+04,  0.2855E+03 } ,
+{ 1.575,       -0.3530E+03,  0.6609E+04,  0.1641E+05, -0.7462E+04 } ,
+{ 6.208,       -0.6644E+02,  0.2796E+04,  0.1098E+06, -0.2924E+05 } ,
+{ 6.722,       -0.1114E+03,  0.5206E+04,  0.1457E+06, -0.5559E+05 } ,
+{ 7.128,        0.8287E+01,  0.9600E+03,  0.2935E+06, -0.7637E+06 } ,
+{ 43.569,      -0.9944E+01,  0.4886E+04,  0.2320E+07, -0.2702E+08 } ,
+{ 100.0,        0.3820E+01,  0.8492E+02,  0.2868E+07, -0.4750E+08 } ,
+{ 500.0,        0.1633E+01,  0.2833E+04,  0.1759E+07,  0.9295E+08 } ,
+
+// 61 - Promethium - Pm - 13
+
+{ 0.01,         0.2285E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0305,       0.3175E+04, -0.4311E+03,  0.2911E+02, -0.5124E+00 } ,
+{ 0.122,       -0.7108E+03,  0.4102E+04, -0.1397E+04,  0.1482E+03 } ,
+{ 1.027,       -0.5546E+03,  0.7912E+04,  0.4958E+04, -0.7606E+03 } ,
+{ 1.357,       -0.5157E+03,  0.8937E+04,  0.6066E+04, -0.1148E+04 } ,
+{ 1.471,       -0.4607E+03,  0.9760E+04,  0.6028E+04, -0.1298E+04 } ,
+{ 1.648,       -0.1912E+03,  0.5138E+04,  0.2120E+05, -0.1345E+05 } ,
+{ 6.459,       -0.7165E+02,  0.3169E+04,  0.1166E+06, -0.3499E+05 } ,
+{ 7.013,       -0.2589E+03,  0.8215E+04, -0.1102E+06,  0.1824E+07 } ,
+{ 7.428,       -0.4251E+02,  0.4740E+04,  0.2377E+06, -0.4279E+06 } ,
+{ 45.184,       0.9003E-01,  0.2739E+04,  0.2641E+07, -0.3336E+08 } ,
+{ 100.0,        0.2857E+01,  0.1090E+04,  0.2888E+07, -0.4432E+08 } ,
+{ 500.0,        0.1742E+01,  0.3069E+04,  0.1744E+07,  0.1719E+09 } ,
+
+// 62 - Samarium - Sm - 11
+
+{ 0.01,         0.1754E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0305,       0.1174E+04,  0.1370E+03, -0.4815E+01,  0.3574E-01 } ,
+{ 0.128,       -0.1315E+04,  0.5218E+04, -0.1900E+04,  0.2181E+03 } ,
+{ 1.078,       -0.5499E+03,  0.7881E+04,  0.5664E+04, -0.8952E+03 } ,
+{ 1.419,       -0.1126E+03,  0.3912E+04,  0.3230E+05, -0.2774E+05 } ,
+{ 6.716,       -0.3580E+02,  0.1576E+04,  0.1290E+06, -0.2201E+05 } ,
+{ 7.312,       -0.6400E+02,  0.3084E+04,  0.1751E+06, -0.4595E+05 } ,
+{ 7.736,        0.7096E+01,  0.1071E+04,  0.3267E+06, -0.9193E+06 } ,
+{ 46.834,      -0.1082E+02,  0.5919E+04,  0.2475E+07, -0.2997E+08 } ,
+{ 100.0,        0.3844E+01,  0.4077E+03,  0.3137E+07, -0.5576E+08 } ,
+{ 500.0,        0.1799E+01,  0.3181E+04,  0.1898E+07,  0.1263E+09 } ,
+
+// 63 - Europium - Eu - 13
+
+{ 0.01,         0.2047E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0305,       0.4276E+04, -0.4382E+03,  0.2276E+02, -0.3499E+00 } ,
+{ 0.134,       -0.4678E+03,  0.4034E+04, -0.1326E+04,  0.1388E+03 } ,
+{ 1.131,       -0.5507E+03,  0.7936E+04,  0.6518E+04, -0.1058E+04 } ,
+{ 1.481,       -0.4589E+03,  0.1019E+05,  0.5669E+04, -0.1234E+04 } ,
+{ 1.614,       -0.4913E+03,  0.8740E+04,  0.1016E+05, -0.2142E+04 } ,
+{ 1.8,         -0.2288E+03,  0.5934E+04,  0.2154E+05, -0.1326E+05 } ,
+{ 6.977,       -0.2466E+02,  0.1115E+04,  0.1400E+06, -0.1768E+05 } ,
+{ 7.618,       -0.6266E+02,  0.3143E+04,  0.1878E+06, -0.5089E+05 } ,
+{ 8.052,       -0.4306E+01,  0.2026E+04,  0.3280E+06, -0.9012E+06 } ,
+{ 48.519,      -0.7610E+01,  0.5488E+04,  0.2642E+07, -0.3287E+08 } ,
+{ 100.0,        0.3783E+01,  0.7655E+03,  0.3245E+07, -0.5731E+08 } ,
+{ 500.0,        0.1904E+01,  0.3400E+04,  0.2020E+07,  0.1315E+09 } ,
+
+// 64 - Gadolinium - Gd - 12
+
+{ 0.01,	        0.1620E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0305,       0.1627E+04,  0.8320E+02, -0.5112E+01,  0.7828E-01 } ,
+{ 0.14,        -0.2404E+04,  0.7220E+04, -0.2684E+04,  0.2976E+03 } ,
+{ 1.185,       -0.5394E+03,  0.7849E+04,  0.7295E+04, -0.1216E+04 } ,
+{ 1.544,       -0.4486E+03,  0.1029E+05,  0.6091E+04, -0.1380E+04 } ,
+{ 1.688,       -0.4679E+03,  0.9424E+04,  0.9571E+04, -0.2201E+04 } ,
+{ 1.881,       -0.3017E+03,  0.6938E+04,  0.1944E+05, -0.1104E+05 } ,
+{ 7.243,       -0.5768E+02,  0.2841E+04,  0.1366E+06, -0.4131E+05 } ,
+{ 7.93,        -0.3358E+02,  0.1701E+04,  0.2029E+06, -0.3312E+05 } ,
+{ 8.375,       -0.8668E+01,  0.2379E+04,  0.3331E+06, -0.9285E+06 } ,
+{ 50.239,       0.3209E+01,  0.1579E+04,  0.3144E+07, -0.4804E+08 } ,
+{ 500.0,        0.1966E+01,  0.3553E+04,  0.2103E+07,  0.1345E+09 } ,
+
+// 65 - Terbium - Tb - 12
+
+{ 0.01,         0.1879E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0305,       0.3021E+04, -0.1618E+03,  0.9979E+01, -0.1862E+00 } ,
+{ 0.147,       -0.1406E+04,  0.5621E+04, -0.1912E+04,  0.2075E+03 } ,
+{ 1.24,        -0.5345E+03,  0.7632E+04,  0.8660E+04, -0.1449E+04 } ,
+{ 1.61,        -0.4988E+03,  0.9401E+04,  0.9226E+04, -0.2000E+04 } ,
+{ 1.765,       -0.4700E+03,  0.9391E+04,  0.1117E+05, -0.2613E+04 } ,
+{ 1.963,       -0.1902E+03,  0.5724E+04,  0.2615E+05, -0.1782E+05 } ,
+{ 7.514,       -0.1568E+03,  0.1116E+05,  0.8757E+05, -0.7647E+05 } ,
+{ 8.252,       -0.4533E+02,  0.2421E+04,  0.2126E+06, -0.4859E+05 } ,
+{ 8.708,       -0.4721E+01,  0.2127E+04,  0.3644E+06, -0.1109E+07 } ,
+{ 51.996,       0.3903E+01,  0.1250E+04,  0.3405E+07, -0.5637E+08 } ,
+{ 500.0,        0.2077E+01,  0.3763E+04,  0.2261E+07,  0.1155E+09 } ,
+
+// 66 - Dysprosium - Dy - 12
+
+{ 0.01,         0.3294E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0305,       0.3167E+04, -0.4242E+02,  0.5269E+01, -0.1178E+00 } ,
+{ 0.154,       -0.1109E+04,  0.5234E+04, -0.1650E+04,  0.1694E+03 } ,
+{ 1.295,       -0.5242E+03,  0.7751E+04,  0.9341E+04, -0.1624E+04 } ,
+{ 1.676,       -0.4635E+03,  0.1050E+05,  0.8066E+04, -0.1930E+04 } ,
+{ 1.842,       -0.4608E+03,  0.9448E+04,  0.1216E+05, -0.2942E+04 } ,
+{ 2.046,       -0.1077E+03,  0.4675E+04,  0.3253E+05, -0.2519E+05 } ,
+{ 7.79,        -0.6326E+02,  0.3407E+04,  0.1499E+06, -0.5526E+05 } ,
+{ 8.58,        -0.7262E+02,  0.4176E+04,  0.2130E+06, -0.8026E+05 } ,
+{ 9.046,       -0.1800E+02,  0.3374E+04,  0.3526E+06, -0.9982E+06 } ,
+{ 53.788,       0.4112E+01,  0.1344E+04,  0.3520E+07, -0.5867E+08 } ,
+{ 500.0,        0.2166E+01,  0.3928E+04,  0.2396E+07,  0.1007E+09 } ,
+
+// 67 - Holmium - Ho - 12
+
+{ 0.01,         0.1647E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0426,       0.2949E+04, -0.5473E+02, -0.1313E+01,  0.5447E-01 } ,
+{ 0.161,       -0.1961E+04,  0.6859E+04, -0.2353E+04,  0.2538E+03 } ,
+{ 1.351,       -0.5221E+03,  0.8169E+04,  0.9852E+04, -0.1807E+04 } ,
+{ 1.743,       -0.4878E+03,  0.9589E+04,  0.1119E+05, -0.2580E+04 } ,
+{ 1.923,       -0.4549E+03,  0.9349E+04,  0.1378E+05, -0.3393E+04 } ,
+{ 2.13,        -0.1379E+03,  0.5032E+04,  0.3428E+05, -0.2787E+05 } ,
+{ 8.072,       -0.4939E+02,  0.2705E+04,  0.1628E+06, -0.5056E+05 } ,
+{ 8.918,       -0.4426E+02,  0.2555E+04,  0.2349E+06, -0.5948E+05 } ,
+{ 9.394,       -0.2988E+01,  0.2094E+04,  0.4072E+06, -0.1335E+07 } ,
+{ 55.618,       0.5131E+01,  0.5023E+03,  0.4000E+07, -0.7974E+08 } ,
+{ 500.0,        0.2274E+01,  0.4258E+04,  0.2387E+07,  0.1450E+09 } ,
+
+// 68 - Erbium - Er - 12
+
+{ 0.01,         0.2419E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0322,       0.3178E+04, -0.8940E+02,  0.5741E+01, -0.1173E+00 } ,
+{ 0.169,       -0.1598E+04,  0.6371E+04, -0.2015E+04,  0.1951E+03 } ,
+{ 1.409,       -0.5148E+03,  0.8464E+04,  0.1038E+05, -0.1998E+04 } ,
+{ 1.812,       -0.4781E+03,  0.8546E+04,  0.1463E+05, -0.3195E+04 } ,
+{ 2.006,       -0.4470E+03,  0.9490E+04,  0.1489E+05, -0.3799E+04 } ,
+{ 2.217,       -0.2279E+03,  0.6501E+04,  0.3083E+05, -0.2363E+05 } ,
+{ 8.358,       -0.5162E+02,  0.2947E+04,  0.1710E+06, -0.5828E+05 } ,
+{ 9.264,       -0.5360E+02,  0.3254E+04,  0.2449E+06, -0.7821E+05 } ,
+{ 9.752,        0.6456E+01,  0.1211E+04,  0.4583E+06, -0.1684E+07 } ,
+{ 57.486,       0.4025E+01,  0.2031E+04,  0.3795E+07, -0.6651E+08 } ,
+{ 500.0,        0.2386E+01,  0.4497E+04,  0.2558E+07,  0.1403E+09 } ,
+
+// 69 - Thulium - Tm - 10
+
+{ 0.01,         0.1729E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.031,        0.5004E+04, -0.3383E+03,  0.1358E+02, -0.1932E+00 } ,
+{ 0.18,        -0.1721E+04,  0.6821E+04, -0.2191E+04,  0.2162E+03 } ,
+{ 1.468,       -0.5074E+03,  0.8420E+04,  0.1161E+05, -0.2277E+04 } ,
+{ 1.881,        0.4504E+03, -0.4717E+04,  0.9421E+05, -0.1104E+06 } ,
+{ 8.648,       -0.5189E+02,  0.3077E+04,  0.1808E+06, -0.6499E+05 } ,
+{ 9.617,       -0.5311E+02,  0.3348E+04,  0.2598E+06, -0.8657E+05 } ,
+{ 10.116,      -0.3887E+01,  0.2132E+04,  0.4637E+06, -0.1723E+07 } ,
+{ 59.39,        0.4124E+01,  0.2299E+04,  0.3956E+07, -0.7043E+08 } ,
+{ 500.0,        0.2512E+01,  0.4774E+04,  0.2690E+07,  0.1454E+09 } ,
+
+// 70 - Ytterbium - Yb - 10
+
+{ 0.01,         0.2440E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.075,        0.5923E+04, -0.5235E+03,  0.2450E+02, -0.3644E+00 } ,
+{ 0.185,       -0.1402E+04,  0.6524E+04, -0.1996E+04,  0.1849E+03 } ,
+{ 1.528,       -0.4649E+03,  0.1046E+05,  0.8110E+04, -0.1884E+04 } ,
+{ 1.95,         0.3077E+03, -0.2145E+04,  0.8374E+05, -0.9504E+05 } ,
+{ 8.943,       -0.5328E+02,  0.3291E+04,  0.1869E+06, -0.7332E+05 } ,
+{ 9.978,       -0.7311E+02,  0.4929E+04,  0.2602E+06, -0.1239E+06 } ,
+{ 10.489,      -0.2434E+02,  0.4269E+04,  0.4243E+06, -0.1379E+07 } ,
+{ 61.332,       0.4575E+01,  0.2312E+04,  0.4086E+07, -0.7562E+08 } ,
+{ 500.0,        0.2606E+01,  0.4980E+04,  0.2895E+07,  0.9923E+08 } ,
+
+// 71 - Lutetium - Lu - 10
+
+{ 0.01,         0.2123E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.09,         0.8368E+04, -0.1105E+04,  0.5971E+02, -0.9746E+00 } ,
+{ 0.195,       -0.1536E+04,  0.7063E+04, -0.2291E+04,  0.2250E+03 } ,
+{ 1.588,       -0.4936E+03,  0.9095E+04,  0.1255E+05, -0.2717E+04 } ,
+{ 2.024,        0.2304E+03, -0.1379E+04,  0.8594E+05, -0.1012E+06 } ,
+{ 9.245,       -0.5213E+02,  0.3333E+04,  0.1974E+06, -0.7977E+05 } ,
+{ 10.349,      -0.5333E+02,  0.3627E+04,  0.2858E+06, -0.1071E+06 } ,
+{ 10.874,       0.3726E+01,  0.1486E+04,  0.5352E+06, -0.2222E+07 } ,
+{ 63.316,       0.5266E+01,  0.2137E+04,  0.4329E+07, -0.8327E+08 } ,
+{ 500.0,        0.2736E+01,  0.5209E+04,  0.3153E+07,  0.5239E+08 } ,
+
+// 72 - Hafnium - Hf - 10
+
+{ 0.01,         0.5463E+04, -0.2212E+03,  0.3566E+01, -0.1819E-01 } ,
+{ 0.0512,       0.9488E+04, -0.1416E+04,  0.8076E+02, -0.1382E+01 } ,
+{ 0.213,       -0.1796E+04,  0.7903E+04, -0.2748E+04,  0.2932E+03 } ,
+{ 1.662,       -0.4835E+03,  0.9549E+04,  0.1284E+05, -0.2957E+04 } ,
+{ 2.108,        0.3480E+03, -0.3031E+04,  0.9762E+05, -0.1203E+06 } ,
+{ 9.56,        -0.6090E+02,  0.4112E+04,  0.2015E+06, -0.9934E+05 } ,
+{ 10.739,      -0.7386E+02,  0.5387E+04,  0.2859E+06, -0.1536E+06 } ,
+{ 11.272,      -0.1873E+02,  0.4102E+04,  0.4698E+06, -0.1572E+07 } ,
+{ 65.345,       0.4753E+01,  0.2673E+04,  0.4462E+07, -0.8960E+08 } ,
+{ 500.0,        0.2845E+01,  0.5554E+04,  0.3013E+07,  0.1535E+09 } ,
+
+// 73 - Tantalum - Ta - 11
+
+{ 0.01,        -0.9358E+04,  0.4382E+03, -0.5661E+01,  0.2301E-01 } ,
+{ 0.0233,       0.3537E+05, -0.2591E+04,  0.6585E+02, -0.5643E+00 } ,
+{ 0.0428,       0.9080E+04, -0.1376E+04,  0.8354E+02, -0.1487E+01 } ,
+{ 0.229,       -0.1944E+04,  0.8490E+04, -0.3040E+04,  0.3330E+03 } ,
+{ 1.735,       -0.4771E+03,  0.1003E+05,  0.1338E+05, -0.3254E+04 } ,
+{ 2.194,        0.1047E+03,  0.6524E+03,  0.8380E+05, -0.1025E+06 } ,
+{ 9.880,       -0.5521E+02,  0.3828E+04,  0.2145E+06, -0.1019E+06 } ,
+{ 11.136,      -0.4987E+02,  0.3641E+04,  0.3160E+06, -0.1250E+06 } ,
+{ 11.68,       -0.2176E+01,  0.2172E+04,  0.5708E+06, -0.2482E+07 } ,
+{ 67.416,       0.5194E+01,  0.2794E+04,  0.4645E+07, -0.9648E+08 } ,
+{ 500.0,        0.2973E+01,  0.5785E+04,  0.3320E+07,  0.9608E+08 } ,
+
+// 74 - Tungsten - W - 11
+
+{ 0.01,        -0.2084E+04,  0.1834E+03, -0.2686E+01,  0.1131E-01 } ,
+{ 0.031,       -0.1398E+05,  0.2451E+04, -0.1057E+03,  0.1381E+01 } ,
+{ 0.0493,       0.9985E+04, -0.1816E+04,  0.1301E+03, -0.2747E+01 } ,
+{ 0.245,       -0.1825E+04,  0.8623E+04, -0.3114E+04,  0.3432E+03 } ,
+{ 1.809,       -0.4666E+03,  0.1057E+05,  0.1355E+05, -0.3503E+04 } ,
+{ 2.281,        0.1412E+03,  0.2762E+03,  0.8940E+05, -0.1129E+06 } ,
+{ 10.204,      -0.6206E+02,  0.4525E+04,  0.2194E+06, -0.1223E+06 } ,
+{ 11.541,      -0.1211E+03,  0.1058E+05,  0.2701E+06, -0.2556E+06 } ,
+{ 12.098,      -0.2105E+02,  0.4623E+04,  0.5109E+06, -0.1835E+07 } ,
+{ 69.525,       0.5276E+01,  0.2999E+04,  0.4828E+07, -0.1030E+09 } ,
+{ 500.0,        0.3099E+01,  0.6112E+04,  0.3348E+07,  0.1310E+09 } ,
+
+// 75 - Rhenium - Re - 10
+
+{ 0.01,        -0.5759E+04,  0.4019E+03, -0.6479E+01,  0.3113E-01 } ,
+{ 0.0384,       0.1235E+05, -0.2571E+04,  0.1879E+03, -0.4072E+01 } ,
+{ 0.26,        -0.1846E+04,  0.9196E+04, -0.3553E+04,  0.4261E+03 } ,
+{ 1.883,       -0.4438E+03,  0.1148E+05,  0.1253E+05, -0.3520E+04 } ,
+{ 2.368,        0.1961E+03, -0.3585E+03,  0.9550E+05, -0.1180E+06 } ,
+{ 10.534,      -0.5721E+02,  0.4284E+04,  0.2331E+06, -0.1270E+06 } ,
+{ 11.957,      -0.1192E+03,  0.1081E+05,  0.2828E+06, -0.2788E+06 } ,
+{ 12.528,      -0.8548E+01,  0.3122E+04,  0.5972E+06, -0.2571E+07 } ,
+{ 71.676,       0.4901E+01,  0.3621E+04,  0.4969E+07, -0.1085E+09 } ,
+{ 500.0,        0.3238E+01,  0.6600E+04,  0.3237E+07,  0.2204E+09 } ,
+
+// 76 - Osmium - Os - 10
+
+{ 0.01,         0.5189E+03,  0.1085E+03, -0.2362E+01,  0.1285E-01 } ,
+{ 0.0464,       0.9943E+04, -0.1964E+04,  0.1499E+03, -0.3533E+01 } ,
+{ 0.272,       -0.1915E+04,  0.9625E+04, -0.3819E+04,  0.4641E+03 } ,
+{ 1.96,        -0.4312E+03,  0.1174E+05,  0.1298E+05, -0.3813E+04 } ,
+{ 2.457,       -0.7620E+02,  0.3809E+04,  0.8189E+05, -0.1090E+06 } ,
+{ 10.871,      -0.5946E+02,  0.4643E+04,  0.2401E+06, -0.1434E+06 } ,
+{ 12.385,      -0.1116E+03,  0.1035E+05,  0.3012E+06, -0.2961E+06 } ,
+{ 12.969,      -0.1803E+02,  0.4548E+04,  0.5700E+06, -0.2246E+07 } ,
+{ 73.871,       0.5735E+01,  0.3318E+04,  0.5232E+07, -0.1209E+09 } ,
+{ 500.0,        0.3351E+01,  0.6829E+04,  0.3509E+07,  0.1607E+09 } ,
+
+// 77 - Iridium - Ir - 10
+
+{ 0.01,        -0.9441E+02,  0.1284E+03, -0.2563E+01,  0.1347E-01 } ,
+{ 0.048,        0.9926E+04, -0.2049E+04,  0.1630E+03, -0.4025E+01 } ,
+{ 0.295,       -0.2391E+04,  0.1087E+05, -0.4456E+04,  0.5612E+03 } ,
+{ 2.04,        -0.4371E+03,  0.1150E+05,  0.1539E+05, -0.4560E+04 } ,
+{ 2.551,        0.1540E+03, -0.7160E+03,  0.1147E+06, -0.1673E+06 } ,
+{ 11.215,      -0.5153E+02,  0.4097E+04,  0.2582E+06, -0.1419E+06 } ,
+{ 12.824,      -0.1366E+03,  0.1456E+05,  0.2707E+06, -0.3461E+06 } ,
+{ 13.419,      -0.1995E+02,  0.4906E+04,  0.6064E+06, -0.2648E+07 } ,
+{ 76.111,       0.6213E+01,  0.3458E+04,  0.5442E+07, -0.1286E+09 } ,
+{ 500.0,        0.3505E+01,  0.7126E+04,  0.3805E+07,  0.1114E+09 } ,
+
+// 78 - Platinum - Pt - 11
+
+{ 0.01,         0.1220E+05, -0.3768E+03,  0.4167E+01, -0.1564E-01 } ,
+{ 0.0226,       0.1396E+05, -0.1184E+04,  0.3650E+02, -0.3548E+00 } ,
+{ 0.0735,       0.1172E+05, -0.2752E+04,  0.2212E+03, -0.4579E+01 } ,
+{ 0.313,       -0.2373E+04,  0.1129E+05, -0.4739E+04,  0.6166E+03 } ,
+{ 2.122,       -0.4333E+03,  0.1147E+05,  0.1710E+05, -0.5181E+04 } ,
+{ 2.645,       -0.7755E+02,  0.2847E+04,  0.1047E+06, -0.1599E+06 } ,
+{ 11.564,      -0.6719E+02,  0.5737E+04,  0.2565E+06, -0.1880E+06 } ,
+{ 13.273,      -0.1399E+03,  0.1605E+05,  0.2671E+06, -0.3742E+06 } ,
+{ 13.88,        0.1076E+02,  0.9617E+03,  0.7776E+06, -0.4207E+07 } ,
+{ 78.395,       0.6088E+01,  0.4001E+04,  0.5552E+07, -0.1300E+09 } ,
+{ 500.0,        0.3646E+01,  0.7453E+04,  0.3931E+07,  0.1226E+09 } ,
+
+// 79 - Gold - Au - 10
+
+{ 0.01,         0.4105E+04,  0.2410E+02, -0.1837E+01,  0.1252E-01 } ,
+{ 0.07,         0.1581E+05, -0.4931E+04,  0.5197E+03, -0.1622E+02 } ,
+{ 0.334,       -0.2231E+04,  0.1142E+05, -0.4781E+04,  0.6012E+03 } ,
+{ 2.206,       -0.4203E+03,  0.1212E+05,  0.1690E+05, -0.5448E+04 } ,
+{ 2.743,        0.1443E+03, -0.4096E+03,  0.1249E+06, -0.1944E+06 } ,
+{ 11.919,      -0.8194E+02,  0.7574E+04,  0.2506E+06, -0.2318E+06 } ,
+{ 13.734,      -0.1134E+03,  0.1194E+05,  0.3355E+06, -0.3921E+06 } ,
+{ 14.353,      -0.3392E+01,  0.3070E+04,  0.7247E+06, -0.3499E+07 } ,
+{ 80.725,       0.7917E+01,  0.2918E+04,  0.6095E+07, -0.1596E+09 } ,
+{ 500.0,        0.3811E+01,  0.7846E+04,  0.4248E+07,  0.4571E+08 } ,
+
+// 80 - Mercury - Hg - 10
+
+{ 0.01,	        0.5142E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.09,         0.1780E+05, -0.5970E+04,  0.6765E+03, -0.2176E+02 } ,
+{ 0.36,        -0.2317E+04,  0.1206E+05, -0.5219E+04,  0.7004E+03 } ,
+{ 2.295,       -0.3961E+03,  0.1286E+05,  0.1582E+05, -0.5482E+04 } ,
+{ 2.847,        0.2241E+03, -0.2195E+04,  0.1429E+06, -0.2325E+06 } ,
+{ 12.283,      -0.7533E+02,  0.7084E+04,  0.2675E+06, -0.2412E+06 } ,
+{ 14.209,      -0.1288E+03,  0.1524E+05,  0.3090E+06, -0.4397E+06 } ,
+{ 14.842,       0.4681E+00,  0.2405E+04,  0.7958E+06, -0.4232E+07 } ,
+{ 83.102,       0.6983E+01,  0.4309E+04,  0.5980E+07, -0.1518E+09 } ,
+{ 500.0,        0.3946E+01,  0.8311E+04,  0.4256E+07,  0.8942E+08 } ,
+
+// 81 - Thallium - Tl - 11
+
+{ 0.01,         0.1823E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0313,      -0.1010E+05,  0.1911E+04, -0.7721E+02,  0.9111E+00 } ,
+{ 0.0985,       0.1488E+05, -0.4878E+04,  0.5536E+03, -0.1923E+02 } ,
+{ 0.386,       -0.2399E+04,  0.1271E+05, -0.5745E+04,  0.7873E+03 } ,
+{ 2.389,       -0.4087E+03,  0.1156E+05,  0.2169E+05, -0.7188E+04 } ,
+{ 2.956,        0.1551E+03, -0.9040E+03,  0.1404E+06, -0.2314E+06 } ,
+{ 12.656,      -0.6647E+02,  0.6324E+04,  0.2871E+06, -0.2439E+06 } ,
+{ 14.697,      -0.1405E+03,  0.2137E+05,  0.2340E+06, -0.4290E+06 } ,
+{ 15.346,      -0.1053E+02,  0.4195E+04,  0.7543E+06, -0.3747E+07 } ,
+{ 85.53,        0.7684E+01,  0.4048E+04,  0.6314E+07, -0.1714E+09 } ,
+{ 500.0,        0.4082E+01,  0.8543E+04,  0.4521E+07,  0.5178E+08 } ,
+
+// 82 - Lead - Pb - 11
+
+{ 0.01,         0.1569E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0311,      -0.9651E+04,  0.1870E+04, -0.7761E+02,  0.9425E+00 } ,
+{ 0.095,        0.1609E+05, -0.5855E+04,  0.7149E+03, -0.2672E+02 } ,
+{ 0.413,       -0.2194E+04,  0.1239E+05, -0.5418E+04,  0.6794E+03 } ,
+{ 2.484,       -0.4016E+03,  0.1173E+05,  0.2316E+05, -0.7955E+04 } ,
+{ 3.066,        0.6749E+02,  0.6789E+03,  0.1401E+06, -0.2437E+06 } ,
+{ 13.035,      -0.7125E+02,  0.7126E+04,  0.2931E+06, -0.2779E+06 } ,
+{ 15.2,        -0.1363E+03,  0.1992E+05,  0.2721E+06, -0.4887E+06 } ,
+{ 15.861,      -0.8206E+01,  0.4058E+04,  0.7950E+06, -0.4115E+07 } ,
+{ 88.004,       0.7595E+01,  0.4692E+04,  0.6429E+07, -0.1747E+09 } ,
+{ 500.0,        0.4240E+01,  0.8883E+04,  0.4754E+07,  0.3448E+08 } ,
+
+// 83 - Bismuth - Bi - 13
+
+{ 0.01,        -0.4395E+03,  0.1185E+02,  0.2207E+00, -0.1865E-02 } ,
+{ 0.024,        0.4586E+04, -0.1052E+03, -0.2706E+01,  0.7877E-01 } ,
+{ 0.026,        0.1118E+05, -0.3159E+03, -0.9250E+01,  0.2918E+00 } ,
+{ 0.0379,      -0.1578E+05,  0.3450E+04, -0.1741E+03,  0.2596E+01 } ,
+{ 0.1136,       0.2124E+05, -0.8884E+04,  0.1240E+04, -0.5312E+02 } ,
+{ 0.362,       -0.1835E+04,  0.1188E+05, -0.5123E+04,  0.6229E+03 } ,
+{ 2.581,       -0.3943E+03,  0.1129E+05,  0.2671E+05, -0.9164E+04 } ,
+{ 3.177,        0.2402E+03, -0.2657E+04,  0.1637E+06, -0.2867E+06 } ,
+{ 13.42,       -0.6824E+02,  0.7005E+04,  0.3089E+06, -0.2951E+06 } ,
+{ 15.714,      -0.1337E+03,  0.1999E+05,  0.2903E+06, -0.5342E+06 } ,
+{ 16.391,      -0.1411E+01,  0.3094E+04,  0.8901E+06, -0.5203E+07 } ,
+{ 90.526,       0.9935E+01,  0.3289E+04,  0.6983E+07, -0.2020E+09 } ,
+{ 500.0,        0.4425E+01,  0.9396E+04,  0.5008E+07, -0.5280E+08 } ,
+
+// 84 - Polonium - Po - 11
+
+{ 0.01,         0.1109E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0305,       0.1939E+05, -0.1380E+04,  0.3526E+02, -0.3106E+00 } ,
+{ 0.07,         0.9152E+04, -0.3829E+04,  0.5535E+03, -0.2106E+02 } ,
+{ 0.2415,      -0.1131E+04,  0.1041E+05, -0.4126E+04,  0.4235E+03 } ,
+{ 2.683,       -0.3899E+03,  0.1134E+05,  0.2963E+05, -0.1038E+05 } ,
+{ 3.302,        0.4918E+03, -0.1053E+05,  0.2383E+06, -0.4647E+06 } ,
+{ 13.814,      -0.7471E+02,  0.8106E+04,  0.3143E+06, -0.3397E+06 } ,
+{ 16.244,      -0.1335E+03,  0.2199E+05,  0.2786E+06, -0.5569E+06 } ,
+{ 16.936,       0.7789E+01,  0.1767E+04,  0.1003E+07, -0.6443E+07 } ,
+{ 93.105,       0.8525E+01,  0.5102E+04,  0.6990E+07, -0.2009E+09 } ,
+{ 500.0,        0.4633E+01,  0.9868E+04,  0.5142E+07,  0.1775E+08 } ,
+
+// 85 - Astatine - At - 11
+
+{ 0.01,         0.5224E+03,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0305,       0.2744E+05, -0.2310E+04,  0.6658E+02, -0.6458E+00 } ,
+{ 0.072,        0.6422E+04, -0.2954E+04,  0.4933E+03, -0.2019E+02 } ,
+{ 0.244,       -0.1933E+04,  0.1303E+05, -0.5806E+04,  0.6870E+03 } ,
+{ 2.787,       -0.3889E+03,  0.1171E+05,  0.3195E+05, -0.1160E+05 } ,
+{ 3.426,        0.3129E+03, -0.6378E+04,  0.2158E+06, -0.4073E+06 } ,
+{ 14.214,      -0.6880E+02,  0.7565E+04,  0.3411E+06, -0.3547E+06 } ,
+{ 16.785,      -0.1280E+03,  0.1941E+05,  0.3508E+06, -0.6556E+06 } ,
+{ 17.491,      -0.1695E+01,  0.3621E+04,  0.9663E+06, -0.5746E+07 } ,
+{ 95.73,        0.9913E+01,  0.4822E+04,  0.7370E+07, -0.2163E+09 } ,
+{ 500.0,        0.4871E+01,  0.1062E+05,  0.5352E+07, -0.2702E+08 } ,
+
+// 86 - Radon - Rn - 11
+
+{ 0.01,	        0.1284E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0466,      -0.7912E+03,  0.2111E+04, -0.1709E+03,  0.3589E+01 } ,
+{ 0.093,        0.1243E+05, -0.6150E+04,  0.1021E+04, -0.4644E+02 } ,
+{ 0.305,       -0.1804E+04,  0.1279E+05, -0.5624E+04,  0.6228E+03 } ,
+{ 2.892,       -0.3616E+03,  0.1088E+05,  0.3423E+05, -0.1248E+05 } ,
+{ 3.538,        0.1691E+03, -0.2424E+04,  0.1954E+06, -0.4008E+06 } ,
+{ 14.619,      -0.6756E+02,  0.7739E+04,  0.3363E+06, -0.3748E+06 } ,
+{ 17.337,      -0.1220E+03,  0.1976E+05,  0.3335E+06, -0.6657E+06 } ,
+{ 18.055,      -0.5899E+00,  0.3312E+04,  0.9833E+06, -0.6258E+07 } ,
+{ 98.404,       0.8633E+01,  0.5888E+04,  0.7122E+07, -0.2120E+09 } ,
+{ 500.0,        0.4841E+01,  0.1057E+05,  0.5286E+07,  0.1022E+08 } ,
+
+// 87 - Francium - Fr - 11
+
+{ 0.01,         0.1287E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0494,      -0.9129E+04,  0.3064E+04, -0.1840E+03,  0.2869E+01 } ,
+{ 0.196,        0.1217E+05, -0.1865E+04, -0.1031E+04,  0.1980E+03 } ,
+{ 0.525,       -0.2201E+04,  0.1461E+05, -0.7082E+04,  0.9132E+03 } ,
+{ 3.0,         -0.3615E+03,  0.1150E+05,  0.3541E+05, -0.1363E+05 } ,
+{ 3.664,       -0.5769E+03,  0.1660E+05,  0.5526E+05, -0.7044E+05 } ,
+{ 15.03,       -0.6236E+02,  0.7249E+04,  0.3612E+06, -0.3893E+06 } ,
+{ 17.904,      -0.1213E+03,  0.2052E+05,  0.3455E+06, -0.7195E+06 } ,
+{ 18.639,      -0.8453E+01,  0.4660E+04,  0.9757E+06, -0.6010E+07 } ,
+{ 101.137,      0.1104E+02,  0.4630E+04,  0.7706E+07, -0.2445E+09 } ,
+{ 500.0,        0.5063E+01,  0.1115E+05,  0.5666E+07, -0.1082E+09 } ,
+
+// 88 - Radium - Ra - 11
+
+{ 0.01,         0.1415E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0579,      -0.3003E+05,  0.8875E+04, -0.6798E+03,  0.1571E+02 } ,
+{ 0.15,         0.2941E+05, -0.1786E+05,  0.3591E+04, -0.2242E+03 } ,
+{ 0.396,       -0.1852E+04,  0.1361E+05, -0.6123E+04,  0.6294E+03 } ,
+{ 3.109,       -0.3547E+03,  0.1164E+05,  0.3753E+05, -0.1492E+05 } ,
+{ 3.791,        0.2933E+03, -0.6829E+04,  0.2528E+06, -0.5565E+06 } ,
+{ 15.446,      -0.6085E+02,  0.7287E+04,  0.3762E+06, -0.4161E+06 } ,
+{ 18.484,      -0.1192E+03,  0.2119E+05,  0.3500E+06, -0.7644E+06 } ,
+{ 19.237,      -0.1024E+02,  0.5310E+04,  0.9756E+06, -0.5773E+07 } ,
+{ 103.922,      0.1241E+02,  0.3727E+04,  0.8307E+07, -0.2833E+09 } ,
+{ 500.0,        0.5221E+01,  0.1168E+05,  0.5739E+07, -0.9046E+08 } ,
+
+// 89 - Actinium - Ac - 11
+
+{ 0.01,         0.1258E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0712,      -0.2747E+04,  0.3975E+03,  0.1941E+03, -0.1439E+02 } ,
+{ 0.216,        0.1958E+05, -0.9878E+04,  0.1388E+04, -0.1778E+02 } ,
+{ 0.375,       -0.2098E+04,  0.1506E+05, -0.7581E+04,  0.9825E+03 } ,
+{ 3.219,       -0.3474E+03,  0.1153E+05,  0.4113E+05, -0.1657E+05 } ,
+{ 3.909,        0.5789E+03, -0.1507E+05,  0.3328E+06, -0.7718E+06 } ,
+{ 15.87,       -0.6339E+02,  0.7915E+04,  0.3884E+06, -0.4637E+06 } ,
+{ 19.083,      -0.1182E+03,  0.2194E+05,  0.3621E+06, -0.8244E+06 } ,
+{ 19.845,       0.8142E+01,  0.2287E+04,  0.1185E+07, -0.8493E+07 } ,
+{ 106.759,      0.1003E+02,  0.6690E+04,  0.7961E+07, -0.2545E+09 } ,
+{ 500.0,        0.5479E+01,  0.1217E+05,  0.5897E+07, -0.2287E+08 } ,
+
+// 90 - Thorium - Th - 10
+
+{ 0.01,	        0.1134E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0879,       0.1398E+05, -0.6113E+04,  0.8572E+03, -0.2963E+02 } ,
+{ 0.676,       -0.1466E+04,  0.1349E+05, -0.6743E+04,  0.1013E+04 } ,
+{ 3.332,       -0.3308E+03,  0.1094E+05,  0.4517E+05, -0.1812E+05 } ,
+{ 4.046,        0.2265E+03, -0.3796E+04,  0.2424E+06, -0.5526E+06 } ,
+{ 16.3,        -0.5998E+02,  0.7669E+04,  0.4039E+06, -0.4843E+06 } ,
+{ 19.693,      -0.1152E+03,  0.2229E+05,  0.3694E+06, -0.8743E+06 } ,
+{ 20.466,      -0.1965E+02,  0.7238E+04,  0.9916E+06, -0.5869E+07 } ,
+{ 109.651,      0.1150E+02,  0.6085E+04,  0.8292E+07, -0.2758E+09 } ,
+{ 500.0,        0.5620E+01,  0.1245E+05,  0.6338E+07, -0.1549E+09 } ,
+
+// 91 - Protactinium - Pa - 10
+
+{ 0.01,         0.2194E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.094,        0.8794E+04, -0.2841E+04,  0.2038E+03,  0.1370E+02 } ,
+{ 0.371,       -0.2042E+04,  0.1581E+05, -0.8451E+04,  0.1211E+04 } ,
+{ 3.442,       -0.3240E+03,  0.1078E+05,  0.5022E+05, -0.2015E+05 } ,
+{ 4.174,        0.1921E+04, -0.5267E+05,  0.6573E+06, -0.1562E+07 } ,
+{ 16.733,      -0.6436E+02,  0.8617E+04,  0.4180E+06, -0.5495E+06 } ,
+{ 20.314,      -0.1129E+03,  0.2138E+05,  0.4231E+06, -0.9875E+06 } ,
+{ 21.105,       0.1526E+02,  0.1356E+04,  0.1351E+07, -0.1082E+08 } ,
+{ 112.601,      0.1254E+02,  0.5894E+04,  0.8877E+07, -0.3120E+09 } ,
+{ 500.0,        0.5918E+01,  0.1306E+05,  0.6683E+07, -0.1778E+09 } ,
+
+// 92 - Uranium - U - 11
+
+{ 0.01,         0.4400E+04, -0.1564E+03,  0.2241E+01, -0.1062E-01 } ,
+{ 0.0171,      -0.2175E+04,  0.4327E+03, -0.1164E+02,  0.8742E-01 } ,
+{ 0.0963,       0.1528E+05, -0.7106E+04,  0.1060E+04, -0.4036E+02 } ,
+{ 0.617,       -0.1807E+04,  0.1483E+05, -0.7405E+04,  0.8426E+03 } ,
+{ 3.552,       -0.3148E+03,  0.1094E+05,  0.5041E+05, -0.2121E+05 } ,
+{ 4.304,       -0.1100E+03,  0.4889E+04,  0.1908E+06, -0.4810E+06 } ,
+{ 17.17,       -0.6720E+02,  0.9489E+04,  0.4107E+06, -0.6000E+06 } ,
+{ 20.948,      -0.1033E+03,  0.1864E+05,  0.4878E+06, -0.1076E+07 } ,
+{ 21.759,       0.6281E+00,  0.3792E+04,  0.1281E+07, -0.1003E+08 } ,
+{ 115.606,      0.1146E+02,  0.7568E+04,  0.8699E+07, -0.3106E+09 } ,
+{ 500.0,        0.6017E+01,  0.1327E+05,  0.7079E+07, -0.2456E+09 } ,
+
+// 93 - Neptunium - Np - 10
+
+{ 0.01,         0.2522E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.1013,       0.1668E+05, -0.8606E+04,  0.1441E+04, -0.6401E+02 } ,
+{ 0.431,       -0.2561E+04,  0.1858E+05, -0.1101E+05,  0.1791E+04 } ,
+{ 3.664,       -0.3232E+03,  0.1200E+05,  0.5096E+05, -0.2302E+05 } ,
+{ 4.435,       -0.4467E+02,  0.2778E+04,  0.2204E+06, -0.5257E+06 } ,
+{ 17.613,      -0.6355E+02,  0.9093E+04,  0.4439E+06, -0.6341E+06 } ,
+{ 21.6,        -0.1103E+03,  0.2501E+05,  0.3841E+06, -0.1044E+07 } ,
+{ 22.427,       0.5579E+01,  0.3489E+04,  0.1354E+07, -0.1078E+08 } ,
+{ 118.67,       0.1272E+02,  0.7422E+04,  0.9191E+07, -0.3336E+09 } ,
+{ 500.0,        0.6330E+01,  0.1392E+05,  0.7484E+07, -0.3064E+09 } ,
+
+// 94 - Plutonium - Pu - 11
+
+{ 0.01,	        0.3508E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.0306,      -0.2939E+04,  0.8224E+03, -0.3576E+02,  0.5087E+00 } ,
+{ 0.1054,       0.1270E+05, -0.6607E+04,  0.1093E+04, -0.3674E+02 } ,
+{ 0.405,       -0.2063E+04,  0.1760E+05, -0.1057E+05,  0.1695E+04 } ,
+{ 3.778,       -0.3181E+03,  0.1245E+05,  0.5096E+05, -0.2427E+05 } ,
+{ 4.556,        0.3925E+03, -0.1022E+05,  0.3515E+06, -0.9309E+06 } ,
+{ 18.063,      -0.6367E+02,  0.9444E+04,  0.4539E+06, -0.6824E+06 } ,
+{ 22.27,       -0.1065E+03,  0.2299E+05,  0.4461E+06, -0.1181E+07 } ,
+{ 23.109,      -0.1248E+02,  0.6703E+04,  0.1250E+07, -0.9411E+07 } ,
+{ 121.797,      0.1781E+02,  0.3158E+04,  0.1075E+08, -0.4693E+09 } ,
+{ 500.0,        0.6490E+01,  0.1422E+05,  0.8179E+07, -0.5340E+09 } ,
+
+// 95 - Americium - Am - 11
+
+{ 0.01,         0.9600E+03,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.103,        0.3669E+04, -0.1927E+04,  0.3556E+03, -0.1775E+02 } ,
+{ 0.498,       -0.8806E+05,  0.1824E+06, -0.1119E+06,  0.2150E+05 } ,
+{ 0.828,       -0.8786E+03,  0.1063E+05, -0.5553E+03, -0.1750E+04 } ,
+{ 3.887,       -0.3188E+03,  0.1325E+05,  0.5127E+05, -0.2586E+05 } ,
+{ 4.667,        0.3232E+03, -0.9027E+04,  0.3584E+06, -0.9931E+06 } ,
+{ 18.519,      -0.6201E+02,  0.9427E+04,  0.4778E+06, -0.7281E+06 } ,
+{ 22.958,      -0.9199E+02,  0.1716E+05,  0.6101E+06, -0.1350E+07 } ,
+{ 23.812,      -0.3730E+01,  0.5425E+04,  0.1376E+07, -0.1109E+08 } ,
+{ 124.99,       0.1966E+02,  0.2217E+04,  0.1154E+08, -0.5298E+09 } ,
+{ 500.0,        0.6763E+01,  0.1479E+05,  0.8647E+07, -0.6116E+09 } ,
+
+// 96 - Curium - Cm - 11
+
+{ 0.01,         0.1000E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.1,          0.3148E+04, -0.1605E+04,  0.2954E+03, -0.1411E+02 } ,
+{ 0.498,       -0.7979E+05,  0.1716E+06, -0.1079E+06,  0.2118E+05 } ,
+{ 0.853,       -0.8139E+03,  0.1040E+05,  0.4547E+03, -0.2530E+04 } ,
+{ 3.971,       -0.3144E+03,  0.1378E+05,  0.5160E+05, -0.2733E+05 } ,
+{ 4.797,       -0.2912E+03,  0.1117E+05,  0.1679E+06, -0.4469E+06 } ,
+{ 18.982,      -0.5879E+02,  0.9126E+04,  0.4981E+06, -0.7597E+06 } ,
+{ 23.663,      -0.1010E+03,  0.2212E+05,  0.5193E+06, -0.1402E+07 } ,
+{ 24.535,      -0.1147E+02,  0.7190E+04,  0.1327E+07, -0.1016E+08 } ,
+{ 128.253,      0.2200E+02,  0.1083E+04,  0.1208E+08, -0.5684E+09 } ,
+{ 500.0,        0.7017E+01,  0.1493E+05,  0.9471E+07, -0.8527E+09 } ,
+
+// 97 - Berkelium - Bk - 11
+
+{ 0.01,         0.1100E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.1,          0.3725E+04, -0.1998E+04,  0.3728E+03, -0.1783E+02 } ,
+{ 0.531,       -0.1348E+06,  0.2867E+06, -0.1865E+06,  0.3853E+05 } ,
+{ 0.877,       -0.1092E+04,  0.1257E+05, -0.3090E+04, -0.6861E+03 } ,
+{ 4.132,       -0.3108E+03,  0.1396E+05,  0.5452E+05, -0.2964E+05 } ,
+{ 4.977,       -0.8536E+02,  0.5200E+04,  0.2278E+06, -0.6067E+06 } ,
+{ 19.452,      -0.6035E+02,  0.9752E+04,  0.5095E+06, -0.8299E+06 } ,
+{ 24.385,      -0.1018E+03,  0.2538E+05,  0.4681E+06, -0.1412E+07 } ,
+{ 25.275,      -0.1308E+02,  0.7916E+04,  0.1354E+07, -0.1049E+08 } ,
+{ 131.59,       0.2374E+02,  0.1750E+03,  0.1285E+08, -0.6352E+09 } ,
+{ 500.0,        0.7219E+01,  0.1592E+05,  0.9491E+07, -0.8283E+09 } ,
+
+// 98 - Californium - Cf - 11
+
+{ 0.01,         0.1220E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.1,          0.3846E+04, -0.2092E+04,  0.3854E+03, -0.1758E+02 } ,
+{ 0.548,       -0.5378E+05,  0.1380E+06, -0.9898E+05,  0.2185E+05 } ,
+{ 0.902,       -0.9355E+03,  0.1168E+05, -0.4663E+03, -0.2379E+04 } ,
+{ 4.254,       -0.3044E+03,  0.1361E+05,  0.6013E+05, -0.3273E+05 } ,
+{ 5.109,        0.3450E+03, -0.1057E+05,  0.4170E+06, -0.1248E+07 } ,
+{ 19.929,      -0.5797E+02,  0.9571E+04,  0.5352E+06, -0.8755E+06 } ,
+{ 25.125,      -0.9148E+02,  0.1942E+05,  0.6490E+06, -0.1673E+07 } ,
+{ 26.03,       -0.5416E+02,  0.1706E+05,  0.8630E+06, -0.1792E+07 } ,
+{ 135.005,      0.2771E+02, -0.2903E+04,  0.1419E+08, -0.7456E+09 } ,
+{ 500.0,        0.7544E+01,  0.1589E+05,  0.1052E+08, -0.1089E+10 } ,
+
+// 99 - Einsteinium - Es - 12
+
+{ 0.01,	        0.1330E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.927,       -0.8936E+03,  0.1145E+05,  0.1094E+04, -0.3692E+04 } ,
+{ 4.378,       -0.2152E+03,  0.7720E+04,  0.5372E+05, -0.2276E+05 } ,
+{ 4.63,        -0.2914E+03,  0.1268E+05,  0.6828E+05, -0.3620E+05 } ,
+{ 5.259,       -0.2568E+03,  0.1341E+05,  0.8685E+05, -0.5387E+05 } ,
+{ 6.574,       -0.2104E+03,  0.1155E+05,  0.1107E+06, -0.7279E+05 } ,
+{ 6.977,        0.1088E+03,  0.1536E+04,  0.2458E+06, -0.6005E+06 } ,
+{ 20.414,      -0.5691E+02,  0.9660E+04,  0.5556E+06, -0.9320E+06 } ,
+{ 26.02,       -0.9167E+02,  0.2050E+05,  0.6520E+06, -0.1784E+07 } ,
+{ 26.9,	        0.9687E+00,  0.5331E+04,  0.1646E+07, -0.1518E+08 } ,
+{ 139.49,       0.3315E+02, -0.7298E+04,  0.1587E+08, -0.8866E+09 } ,
+{ 500.0,        0.7728E+01,  0.1675E+05,  0.1090E+08, -0.1231E+10 } ,
+
+// 100 - Fermium - Fm - 12
+
+{ 0.01,         0.1460E+04,  0.0000E+00,  0.0000E+00,  0.0000E+00 } ,
+{ 0.952,       -0.1082E+04,  0.1308E+05, -0.9100E+03, -0.2846E+04 } ,
+{ 4.498,       -0.1923E+03,  0.6709E+04,  0.6231E+05, -0.2410E+05 } ,
+{ 4.766,       -0.2559E+03,  0.1024E+05,  0.8602E+05, -0.3977E+05 } ,
+{ 5.397,       -0.2466E+03,  0.1276E+05,  0.9751E+05, -0.5925E+05 } ,
+{ 6.793,       -0.2304E+03,  0.1518E+05,  0.9220E+05, -0.7454E+05 } ,
+{ 7.205,        0.8675E+02,  0.2132E+04,  0.2568E+06, -0.6538E+06 } ,
+{ 20.907,      -0.5793E+02,  0.1018E+05,  0.5793E+06, -0.1018E+07 } ,
+{ 26.81,       -0.8637E+02,  0.1890E+05,  0.7445E+06, -0.1949E+07 } ,
+{ 27.7,         0.5556E+00,  0.5648E+04,  0.1738E+07, -0.1662E+08 } ,
+{ 143.09,       0.2968E+02, -0.2026E+04,  0.1484E+08, -0.7825E+09 } ,
+{ 500.0,        0.8135E+01,  0.1726E+05,  0.1171E+08, -0.1346E+10 }
+
+} ;  // --------------- end of fSandiaTable array -----------------------
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+// Array of interval numbers in Sandia table. This value is the number (integer)
+// of energy interval in which Sandia coeeficients are parametrized for each
+// element.
+
+const G4int G4SandiaTable::fNbOfIntervals [101] = 
+{
+
+      0,  // nonexisting 'zero' element
+
+//    H,                                                     He,         (2)
+     10,                                                      7,
+
+//   Li,    Be,     B,    C,     N,     O,     F,            Ne,        (10)
+      7,     7,     7,    10,    8,     8,     7,             8,
+
+//   Na,    Mg,    Al,    Si,    P,     S,    Cl,            Ar,        (18)
+      7,     7,     8,     7,    7,     7,     7,             7,
+
+//    K,    Ca,    Sc,    Ti,    V,    Cr,    Mn,     Fe,    Co,    Ni, (28)
+      7,     7,     6,     6,    7,     6,     6,      7,     7,     8,
+
+//   Cu,    Zn,    Ga,    Ge,    As,    Se,    Br,           Kr,        (36)
+      7,     9,     9,     9,     9,     9,    10,           10,
+
+//   Rb,    Sr,    Y,     Zr,    Nb,    Mo,    Tc,    Ru,    Rh,    Pd, (46)
+     10,    10,    10,     9,    10,    10,    10,    10,    10,    10,
+
+//   Ag,    Cd,    In,    Sn,    Sb,    Te,     J,           Xe,        (54)
+     10,    11,    11,    11,    11,    11,    12,           13,
+
+//   Cs,    Ba,    La,    Ce,    Pr,    Nd,    Pm,    Sm,    Eu,    Gd, (64)
+     11,    11,    12,    13,    13,    12,    13,    11,    13,    12,
+
+//   Tb,    Dy,    Ho,    Er,    Tm,    Yb,    Lu,    Hf,    Ta,     W, (74)
+     12,    12,    12,    12,    10,    10,    10,    10,    11,    11,
+
+//   Re,    Os,    Ir,    Pt,    Au,    Hg,    Tl,    Pb,    Bi,    Po, (84)
+     10,    10,    10,    11,    10,    10,    11,    11,    13,    11,
+
+//   At,   Rn,     Fr,    Ra,    Ac,    Th,    Pa,    U,     Np     Pu, (94)
+     11,   11,     11,    11,    11,    10,    10,    11,    10,    11,
+
+//   Am,    Cm,    Bk,    Cf,    Es,    Fm                             (100)
+     11,    11,    11,    11,    12,    12
+
+};    
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+// The ration of atomic number to atomic mass for first 100 elements
+// (which assumes A in amu/atom or in g/mole)
+
+const G4double G4SandiaTable::fZtoAratio[101] = 
+{
+
+      0,  // nonexisting 'zero' element
+
+//    H,                                                             He,         (2)
+ 0.9921,                                                         0.4997,
+
+//   Li,     Be,      B,      C,      N,      O,      F,             Ne,        (10)
+ 0.4322, 0.4438, 0.4625, 0.4995, 0.4998,    0.5, 0.4737,         0.4956,
+
+//   Na,     Mg,     Al,     Si,      P,      S,     Cl,             Ar,        (18)
+ 0.4785, 0.4937, 0.4818, 0.4985, 0.4843, 0.4991, 0.4795,         0.4506,
+
+//    K,     Ca,     Sc,     Ti,      V,     Cr,     Mn,     Fe,     Co,     Ni,(28)
+ 0.4860, 0.4990, 0.4671, 0.4595, 0.4515, 0.4616, 0.4551, 0.4656, 0.4581, 0.4771,
+
+//   Cu,     Zn,     Ga,     Ge,     As,     Se,     Br,             Kr,        (36)
+ 0.4564, 0.4589, 0.4446, 0.4408, 0.4405, 0.4306, 0.4380,         0.4296,
+
+//   Rb,     Sr,      Y,     Zr,     Nb,     Mo,     Tc,     Ru,     Rh,     Pd,(46)
+ 0.4329, 0.4337, 0.4387, 0.4385, 0.4413, 0.4378, 0.4388, 0.4353, 0.4373, 0.4322,
+
+//   Ag,     Cd,     In,     Sn,     Sb,     Te,      J,             Xe,        (54)
+ 0.4357, 0.4270, 0.4268, 0.4213, 0.4189, 0.4075, 0.4176,         0.4113,
+
+//   Cs,     Ba,     La,     Ce,     Pr,     Nd,     Pm,     Sm,     Eu,     Gd,(64)
+ 0.4138, 0.4078, 0.4104, 0.4139, 0.4187, 0.4160, 0.4207, 0.4123, 0.4146, 0.4070,
+
+//   Tb,     Dy,     Ho,     Er,     Tm,     Yb,     Lu,     Hf,     Ta,      W,(74)
+ 0.4090, 0.4062, 0.4062, 0.4066, 0.4084, 0.4045, 0.4058, 0.4034, 0.4034, 0.4025,
+
+// Re,       Os,     Ir,     Pt,     Au,     Hg,     Tl,     Pb,     Bi,     Po,(84)
+ 0.4028, 0.3996, 0.4006, 0.3998, 0.4011, 0.3988, 0.3963, 0.3958, 0.3972, 0.4019,
+
+//   At,     Rn,     Fr,     Ra,     Ac,     Th,     Pa,      U,     Np,     Pu,(94)
+ 0.4048, 0.3874, 0.3901, 0.3893, 0.3920, 0.3879, 0.3939, 0.3865, 0.3923, 0.3852,
+
+//   Am,     Cm,     Bk,     Cf,     Es,     Fm                                (100)
+ 0.3909, 0.3887, 0.3927, 0.3904, 0.3929, 0.3891
+
+};     
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+// Ionization potentials of first 100 elements in eV   !!!
+//
+// The most of ionization energies are taken from S. Ruben, Handbook of the
+// Elements, 3rd ed. (Open Court, La Salle, IL, 1985). 28 of the ionization
+// energies have been changed slightly to bring them up to date (changes
+// from W.C. Martin and B.N. Taylor of the National Institute os Standards
+// and Technology, January 1990). Here the ionization energy is the least
+// energy necessary to remove to infinity one electron from an atom of the
+// element.
+																		
+const G4double G4SandiaTable::fIonizationPotentials[101] =
+{
+     0,  // nonexisting 'zero' element
+
+//   H,                                                     He,         (2)
+ 13.60,                                                  24.59,
+
+//  Li,    Be,     B,     C,     N,     O,     F,           Ne,        (10)
+  5.39,  9.32,  8.30, 11.26, 14.53, 13.62, 17.42,        21.56,
+
+//  Na,    Mg,    Al,    Si,     P,     S,    Cl,           Ar,        (18)
+  5.14,  7.65,  5.99,  8.15, 10.49, 10.36, 12.97,        15.76,
+
+//   K,    Ca,    Sc,    Ti,     V,    Cr,    Mn,    Fe,    Co,    Ni, (28)
+  4.34,  6.11,  6.56,  6.83,  6.75,  6.77,  7.43,  7.90,  7.88,  7.64,
+
+//  Cu,    Zn,    Ga,    Ge,    As,    Se,    Br,           Kr,        (36)
+  7.73,  9.39,  6.00,  7.90,  9.82,  9.75, 11.81,        14.00,
+
+//  Rb,    Sr,     Y,    Zr,    Nb,    Mo,    Tc,    Ru,    Rh,    Pd, (46)
+  4.18,  5.69,  6.22,  6.63,  6.76,  7.09,  7.28,  7.36,  7.46,  8.34,
+
+//  Ag,    Cd,    In,    Sn,    Sb,    Te,     J,           Xe,        (54)
+  7.58,  8.99,  5.79,  7.34,  8.64,  9.01, 10.45,        12.13,
+
+//  Cs,    Ba,    La,    Ce,    Pr,    Nd,    Pm,    Sm,    Eu,    Gd, (64)
+  3.89,  5.21,  5.58,  5.54,  5.46,  5.52,  5.55,  5.64,  5.67,  6.15,
+
+//  Tb,    Dy,    Ho,    Er,    Tm,    Yb,    Lu,    Hf,    Ta,     W, (74)
+  5.86,  5.94,  6.02,  6.11,  6.18,  6.25,  5.43,  6.83,  7.89,  7.98,
+
+//  Re,    Os,    Ir,    Pt,    Au,    Hg,    Tl,    Pb,    Bi,    Po, (84)
+  7.88,  8.70,  9.10,  9.00,  9.23, 10.44,  6.11,  7.42,  7.29,  8.42,
+
+//  At,    Rn,    Fr,    Ra,    Ac,    Th,    Pa,     U,    Np,    Pu, (94)
+  9.65, 10.75,  3.97,  5.28,  5.17,  6.08,  5.89,  6.19,  6.27,  6.06,
+
+//  Am,    Cm,    Bk,    Cf,    Es,    Fm                             (100)
+  5.99,  6.02,  6.23,  6.30,  6.42,  6.50
+
+};     // ............... end of fIonizationPotentials array
+
+
+
+const G4int G4SandiaTable::fNumberOfElements  = 100 ;
+
+const G4int G4SandiaTable::fIntervalLimit     = 100 ;
+
+const G4int G4SandiaTable::fNumberOfIntervals = 980 ;
+
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+
Index: trunk/source/materials/include/G4SurfaceProperty.hh
===================================================================
--- trunk/source/materials/include/G4SurfaceProperty.hh	(revision 822)
+++ trunk/source/materials/include/G4SurfaceProperty.hh	(revision 822)
@@ -0,0 +1,153 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4SurfaceProperty.hh,v 1.4 2007/04/25 16:18:34 gum Exp $
+// GEANT4 tag $Name:  $
+//
+// 
+////////////////////////////////////////////////////////////////////////
+// G4SurfaceProperty Definition
+////////////////////////////////////////////////////////////////////////
+//
+// Class Description:
+//
+// A base class describing a surface property.
+// Derived classes are G4Opticalsurface, G4Firovsurface, etc.      
+// Contains the enumeration G4SurfaceType.
+
+// File:        G4SurfaceProperty.hh
+// Description: A base class for for descriping surface property such
+//              as G4OpticalSurface, G4FirsovSurface, G4X-raySurface
+// Version:     1.0
+// Created:     13-10-2003
+// Author:      Fan Lei
+//
+////////////////////////////////////////////////////////////////////////
+
+#ifndef G4SurfaceProperty_h
+#define G4SurfaceProperty_h 1
+
+/////////////
+// Includes
+/////////////
+
+#include <vector>
+
+#include "G4Types.hh"
+#include "G4String.hh"
+
+class G4SurfaceProperty;
+
+typedef std::vector<G4SurfaceProperty*> G4SurfacePropertyTable;
+
+enum G4SurfaceType
+{
+   dielectric_metal,            // dielectric-metal interface
+   dielectric_dielectric,       // dielectric-dielectric interface
+   firsov,                      // for Firsov Process
+   x_ray                        // for x-ray mirror process
+};
+
+/////////////////////
+// Class Definition
+/////////////////////
+
+class G4SurfaceProperty
+{
+
+public: // Without description
+
+        //////////////
+        // Operators
+        //////////////
+
+  //    G4SurfaceProperty(const G4SurfaceProperty &right);
+  //	const G4SurfaceProperty & operator=(const G4SurfaceProperty &right);
+
+  //	G4int operator==(const G4SurfaceProperty &right) const;
+  //	G4int operator!=(const G4SurfaceProperty &right) const;
+
+public: // With description
+
+        ////////////////////////////////
+        // Constructors and Destructor
+        ////////////////////////////////
+
+        G4SurfaceProperty(const G4String& name,
+			  G4SurfaceType type = x_ray)
+	  : theName(name), theType(type)
+        {
+          theSurfacePropertyTable.push_back(this);
+        }
+        // Constructor of a X-ray optical surface object.
+
+public: // Without description
+
+	~G4SurfaceProperty(){};
+
+	////////////
+	// Methods
+        ////////////
+
+	// public methods
+
+public: // With description
+
+	G4String GetName() const { return theName; };
+        // Returns the surface name.
+	void     SetName(const G4String& name){theName = name;};
+        // Sets the surface name.
+
+        G4SurfaceType GetType() const {return theType;};
+        // Returns the surface type.
+        void         SetType(const G4SurfaceType type){theType = type;};
+        // Sets the surface type.        
+
+        static void CleanSurfacePropertyTable();
+        static const G4SurfacePropertyTable* GetSurfacePropertyTable();
+        static size_t GetNumberOfSurfaceProperties();
+        static void DumpInfo();
+        // To handle the table of surface properties.
+
+protected:
+
+// ------------------
+// Basic data members ( To define surface property)
+// ------------------
+
+	G4String theName;		// Surface name
+
+	G4SurfaceType theType;		// Surface type
+
+        static G4SurfacePropertyTable theSurfacePropertyTable;
+        // The static Table of SurfaceProperties.
+};
+
+////////////////////
+// Inline methods
+////////////////////
+
+#endif /* G4SurfaceProperty_h */
Index: trunk/source/materials/src/G4AtomicShells.cc
===================================================================
--- trunk/source/materials/src/G4AtomicShells.cc	(revision 822)
+++ trunk/source/materials/src/G4AtomicShells.cc	(revision 822)
@@ -0,0 +1,775 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4AtomicShells.cc,v 1.7 2006/10/17 15:15:46 vnivanch Exp $
+// GEANT4 tag $Name:  $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+// 24-04-98, implementation of the first version, V. Grichine
+// 16-11-98, GetBindingEnergy(Z,ShellNb), M.Maire
+// 19-07-04, add a protection in GetNumberOfShells(), mma
+// 11-02-05, GetNumberOfElectrons(Z,ShellNb), V.Ivanchenko
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+
+#include "G4AtomicShells.hh"
+#include <assert.h>
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+const G4int
+G4AtomicShells::fNumberOfShells[101] =
+{
+ 0 ,  // nonexisting zero element
+
+ 1 ,  1 ,  2 ,  2 ,  3 ,    3 ,  4 ,  4 ,  3 ,  4 ,  //  1 - 10
+
+ 5 ,  5 ,  6 ,  6 ,  6 ,    6 ,  6 ,  7 ,  8 ,  8 ,  // 11 - 20
+
+ 9 ,  9 ,  9 ,  9 ,  9 ,    9 ,  9 , 10 , 10 , 10 ,  // 21 - 30
+
+11 , 11 , 11 , 11 , 11 ,   12 , 13 , 13 , 14 , 14 ,  // 31 - 40
+
+14 , 14 , 14 , 14 , 14 ,   15 , 15 , 15 , 16 , 16 ,  // 41 - 50
+
+// ----------------------------------------------------------
+
+16 , 16 , 16 , 17 , 18 ,   18 , 19 , 19 , 19 , 19 ,  // 51 - 60
+
+19 , 19 , 19 , 20 , 19 ,   19 , 19 , 19 , 19 , 20 ,  // 61 - 70
+
+21 , 21 , 21 , 21 , 21 ,   21 , 21 , 21 , 22 , 22 ,  // 71 - 80
+
+23 , 23 , 23 , 23 , 24 ,   24 , 25 , 25 , 26 , 26 ,  // 81 - 90
+
+27 , 27 , 27 , 26 , 26 ,   27 , 27 , 26 , 26 , 26    // 91 - 100
+
+};
+
+// The total shell number is:
+// 1 + G4AtomicShells::TotalNumberOfShells(100) = 1 + 1539 = 1540 
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+const G4double
+G4AtomicShells::fBindingEnergies[1540] =
+{
+  0.0 ,   // Nonexisting zero element
+
+  //  H  ---------------------------------------------------------
+  13.60 ,
+
+  //  He ---------------------------------------------------------
+  24.59 ,
+
+  //  Li  --------------------------------------------------------
+  58.0 ,  5.39 ,
+
+  //  Be  --------------------------------------------------------
+  115.0 , 9.32 ,
+
+  //  B   --------------------------------------------------------
+  192.0 , 12.93 , 8.3 ,
+
+  //  C  ---------------------------------------------------------
+  288.0 , 16.59 , 11.26 ,
+
+  //  N  ---------------------------------------------------------
+  403.0 , 37.3 , 20.33 , 14.53 ,
+
+  //  O  ---------------------------------------------------------
+  543.1 , 41.6 , 28.48 , 13.62 ,
+
+  //  F  ---------------------------------------------------------
+  696.7 , 37.85 , 17.42 ,
+
+  //  Ne ---------------------------------------------------------
+  870.1 , 48.47 , 21.66 , 21.56 ,
+
+  //  Na ---------------------------------------------------------
+  1075.0 , 66.0 , 34.0 , 34.0 , 5.14 ,
+
+  //  Mg ---------------------------------------------------------
+  1308.0 , 92.0 , 54.0 , 54.0 , 7.65 ,
+
+  //  Al ---------------------------------------------------------
+  1564.0 , 121. , 77.0 , 77.0 , 10.62 , 5.99 ,
+
+  //  Si ---------------------------------------------------------
+  1844.0 , 154.0 , 104.0 , 104.0 , 13.46 , 8.15 ,
+
+  //  P  ---------------------------------------------------------
+  2148.0 , 191.0 , 135.0 , 134.0 , 16.15 , 10.49 ,
+
+  //  S  ---------------------------------------------------------
+  2476.0 , 232.0 , 170.0 , 168.0 , 20.20 , 10.36 ,
+
+  //  Cl ---------------------------------------------------------
+  2829.0 , 277.0 , 208.0 , 206.0 , 24.54 , 12.97 ,
+
+  //  Ar ---------------------------------------------------------
+  3206.3 , 326.5 , 250.6 , 248.5 , 29.24 , 15.94 , 15.76 ,
+
+  //  K  ---------------------------------------------------------
+  3610.0 , 381.0 , 299.0 , 296.0 , 37.0 , 19.0 , 18.7 , 4.34 ,
+
+  //  Ca ---------------------------------------------------------
+  4041.0 , 441.0 , 353.0 , 349.0 , 46.0 , 28.0 , 28.0 , 6.11 ,
+
+  //  Sc ---------------------------------------------------------
+  4494.0 , 503.0 , 408.0 , 403.0 , 55.0 , 33.0 , 33.0 , 8.0 , 6.54 ,
+
+  //  Ti ---------------------------------------------------------
+  4966.0 , 567.0 , 465.0 , 459.0 , 64.0 , 39.0 , 38.0 , 8.0 , 6.82 ,
+
+  //  V  ---------------------------------------------------------
+  5465.0 , 633.0 , 525.0 , 518.0 , 72.0 , 44.0 , 43.0 , 8.0 , 6.74 ,
+
+  //  Cr ---------------------------------------------------------
+  5989.0 , 702.0 , 589.0 , 580.0 , 80.0 , 49.0 , 48.0 , 8.25 , 6.77 ,
+
+  //  Mn ---------------------------------------------------------
+  6539.0 , 755.0 , 656.0 , 645.0 , 89.0 , 55.0 , 53.0 , 9.0 , 7.43 ,
+
+  //  Fe ---------------------------------------------------------
+  7112.0 , 851.0 , 726.0 , 713.0 , 98.0 , 61.0 , 59.0 , 9.0 , 7.87 ,
+
+  //  Co ---------------------------------------------------------
+  7709.0 , 931.0 , 800.0 , 785.0 , 107.0 , 68.0 , 66.0 , 9.0 , 7.86 ,
+
+  //  Ni ---------------------------------------------------------
+  8333.0 , 1015.0 , 877.0 , 860.0 , 117.0 , 75.0 , 73.0 , 10.0 , 10.0 ,
+     7.64 ,
+
+  //  Cu ---------------------------------------------------------
+  8979.0 , 1103.0 , 958.0 , 938.0 , 127.0 , 82.0 , 80.0 , 11.0 , 10.4 ,
+     7.73 ,
+
+  //  Zn ---------------------------------------------------------
+  9659.0 , 1198.0 , 1047.0 , 1024.0 , 141.0 , 94.0 , 91.0 , 12.0 , 11.2 ,
+     9.39 ,
+
+  //  Ga ---------------------------------------------------------
+  10367.0 , 1302.0 , 1146.0 , 1119.0 , 162.0 , 111.0 , 107.0 , 21.0 ,
+     20.0 ,   11.0 ,    6.0 ,
+
+  //  Ge ---------------------------------------------------------
+  11103.0 , 1413.0 , 1251.0 , 1220.0 , 184.0 , 130.0 , 125.0 , 33.0 ,
+     32.0 ,   14.3 ,    7.9 ,
+
+  //  As ---------------------------------------------------------
+  11867.0 , 1531.0 , 1362.0 , 1327.0 , 208.0 , 151.0 , 145.0 , 46.0 ,
+     45.0 ,   17.0 ,    9.81 ,
+
+  //  Se ---------------------------------------------------------
+  12658.0 , 1656.0 , 1479.0 , 1439.0 , 234.0 , 173.0 , 166.0 , 61.0 ,
+     60.0 ,   20.15 ,   9.75 ,
+
+  //  Br ---------------------------------------------------------
+  13474.0 , 1787.0 , 1602.0 , 1556.0 , 262.0 , 197.0 , 189.0 , 77.0 ,
+     76.0 ,   23.8 ,   11.85 ,
+
+  //  Kr ---------------------------------------------------------
+  14326.0 , 1924.6 , 1730.9 , 1678.4 , 292.8 , 222.2 , 214.4 , 95.0 ,
+     93.8 ,   27.51 ,  14.65 ,  14.0 ,
+
+  //  Rb ---------------------------------------------------------
+  15200.0 , 2068.0 , 1867.0 , 1807.0 , 325.0 , 251.0 , 242.0 , 116.0 ,
+    114.0 ,   32.0 ,   16.0 ,   15.3 ,   4.18 ,
+
+  //  Sr ---------------------------------------------------------
+  16105.0 , 2219.0 , 2010.0 , 1943.0 , 361.0 , 283.0 , 273.0 , 139.0 ,
+    137.0 ,   40.0 ,   23.0 ,   22.0 ,   5.69 ,
+
+  //  Y  ---------------------------------------------------------
+  17038.0 , 2375.0 , 2158.0 , 2083.0 , 397.0 , 315.0 , 304.0 , 163.0 ,
+    161.0 ,   48.0 ,   30.0 ,   29.0 ,   6.38 ,  6.48 ,
+
+  //  Zr ---------------------------------------------------------
+  17998.0 , 2536.0 , 2311.0 , 2227.0 , 434.0 , 348.0 , 335.0 , 187.0 ,
+    185.0 ,   56.0 ,   35.0 ,   33.0 ,   8.61 ,  6.84 ,
+
+  //  Nb ----------------------------------------------------------
+  18986.0 , 2702.0 , 2469.0 , 2375.0 , 472.0 , 382.0 , 367.0 , 212.0 ,
+    209.0 ,   62.0 ,   40.0 ,   38.0 ,   7.17 ,  6.88 ,
+
+  //  Mo -----------------------------------------------------------
+  20000.0 , 2872.0 , 2632.0 , 2527.0 , 511.0 , 416.0 , 399.0 , 237.0 ,
+    234.0 ,   68.0 ,   45.0 ,   42.0 ,   8.56 ,  7.10 ,
+
+  //  Tc -----------------------------------------------------------
+  21044.0 , 3048.0 , 2800.0 , 2683.0 , 551.0 , 451.0 , 432.0 , 263.0 ,
+    259.0 ,   74.0 ,   49.0 ,   45.0 ,   8.6 ,   7.28 ,
+
+  //  Ru -----------------------------------------------------------
+  22117.0 , 3230.0 , 2973.0 , 2844.0 , 592.0 , 488.0 , 466.0 , 290.0 ,
+    286.0 ,   81.0 ,   53.0 ,   49.0 ,   8.5 ,   7.37 ,
+
+  //  Rh -----------------------------------------------------------
+  23220.0 , 3418.0 , 3152.0 , 3010.0 , 634.0 , 526.0 , 501.0 , 318.0 ,
+    313.0 ,   87.0 ,   58.0 ,   53.0 ,   9.56 ,  7.46 ,
+
+  //  Pd -----------------------------------------------------------
+  24350.0 , 3611.0 , 3337.0 , 3180.0 , 677.0 , 565.0 , 537.0 , 347.0 ,
+    342.0 ,   93.0 ,   63.0 ,   57.0 ,   8.78 ,  8.34 ,  7.52 ,
+
+  //  Ag -----------------------------------------------------------
+  25514.0 , 3812.0 , 3530.0 , 3357.0 , 724.0 , 608.0 , 577.0 , 379.0 ,
+    373.0 ,  101.0 ,   69.0 ,   63.0 ,  11.0 ,  10.0 ,   7.58 ,
+
+  //  Cd ------------------------------------------------------------
+  26711.0 , 4022.0 , 3732.0 , 3542.0 , 775.0 , 655.0 , 621.0 , 415.0 ,
+    408.0 ,  112.0 ,   78.0 ,   71.0 ,  14.0 ,  13.0 ,   8.99 ,
+
+  //  In ------------------------------------------------------------
+  27940.0 , 4242.0 , 3943.0 , 3735.0 , 830.0 , 707.0 , 669.0 , 455.0 ,
+    447.0 ,  126.0 ,   90.0 ,   82.0 ,  21.0 ,  20.0 ,  10.0 ,   5.79 ,
+
+  //  Sn ------------------------------------------------------------
+  29200.0 , 4469.0 , 4160.0 , 3933.0 , 888.0 , 761.0 , 719.0 , 497.0 ,
+    489.0 ,  141.0 ,  102.0 ,   93.0 ,  29.0 ,  28.0 ,  12.0 ,   7.34 ,
+
+  //  Sb ------------------------------------------------------------
+  30419.0 , 4698.0 , 4385.0 , 4137.0 , 949.0 , 817.0 , 771.0 , 542.0 ,
+    533.0 ,  157.0 ,  114.0 ,  104.0 ,  38.0 ,  37.0 ,  15.0 ,   8.64 ,
+
+  //  Te ------------------------------------------------------------
+  31814.0 , 4939.0 , 4612.0 , 4347.0 , 1012.0 , 876.0 , 825.0 , 589.0 ,
+    578.0 ,  174.0 ,  127.0 ,  117.0 ,   48.0 ,  46.0 ,  17.84 ,  9.01 ,
+
+  //  I  ------------------------------------------------------------
+  33169.0 , 5188.0 , 4852.0 , 4557.0 , 1078.0 , 937.0 , 881.0 , 638.0 ,
+    626.0 ,  193.0 ,  141.0 ,  131.0 ,   58.0 ,  56.0 ,  20.61 , 10.45 ,
+
+  //  Xe ------------------------------------------------------------
+  34570.0 , 5460.0 , 5110.0 , 4790.0 , 1148.7 , 1002.1 , 940.6 , 689.0 ,
+    676.4 ,  213.2 ,  157.0 ,  145.5 ,   69.5 ,   67.5 ,  23.39 , 13.43 ,
+     12.13 ,
+
+  //  Cs ------------------------------------------------------------
+  35985.0 , 5714.0 , 5359.0 , 5012.0 , 1220.0 , 1068.0 , 1000.0 , 742.0 ,
+    728.0 ,  233.0 ,  174.0 ,  164.0 ,   81.0 ,   79.0 ,   25.0 ,  14.0 ,
+     12.3 ,    3.89 ,
+
+  //  Ba -------------------------------------------------------------
+  37441.0 , 5989.0 , 5624.0 , 5247.0 , 1293.0 , 1138.0 , 1063.0 , 797.0 ,
+    782.0 ,  254.0 ,  193.0 ,  181.0 ,   94.0 ,   92.0 ,   31.0 ,  18.0 ,
+     16.0 ,    5.21 ,
+
+  //  La -------------------------------------------------------------
+  38925.0 , 6266.0 , 5891.0 , 5483.0 , 1365.0 , 1207.0 , 1124.0 , 851.0 ,
+    834.0 ,  273.0 ,  210.0 ,  196.0 ,  105.0 ,  103.0 ,   36.0 ,  22.0 ,
+     19.0 ,    5.75 ,   5.58 ,
+
+  //  Ce -------------------------------------------------------------
+  40443.0 , 6548.0 , 6164.0 , 5723.0 , 1437.0 , 1275.0 , 1184.0 , 903.0 ,
+    885.0 ,  291.0 ,  225.0 ,  209.0 ,  114.0 ,  111.0 ,    6.0 ,  39.0 ,
+     25.0 ,   22.0 ,    5.65 ,
+
+  //  Pr -------------------------------------------------------------
+  41991.0 , 6835.0 , 6440.0 , 5964.0 , 1509.0 , 1342.0 , 1244.0 , 954.0 ,
+    934.0 ,  307.0 ,  238.0 ,  220.0 ,  121.0 ,  117.0 ,    6.0 ,  41.0 ,
+     27.0 ,   24.0 ,    5.42 ,
+
+  //  Nd -------------------------------------------------------------
+  43569.0 , 7126.0 , 6722.0 , 6208.0 , 1580.0 , 1408.0 , 1303.0 , 1005.0 ,
+    983.0 ,  321.0 ,  250.0 ,  230.0 ,  126.0 ,  122.0 ,    6.0 ,   42.0 ,
+     28.0 ,   25.0 ,    5.49 ,
+
+  //  Pm -------------------------------------------------------------
+  45184.0 , 7428.0 , 7013.0 , 6459.0 , 1653.0 , 1476.0 , 1362.0 , 1057.0 ,
+   1032.0 ,  325.0 ,  261.0 ,  240.0 ,  131.0 ,  127.0 ,    6.0 ,   43.0 ,
+     28.0 ,   25.0 ,    5.55 ,
+
+  //  Sm -------------------------------------------------------------
+  46834.0 , 7737.0 , 7312.0 , 6716.0 , 1728.0 , 1546.0 , 1422.0 , 1110.0 ,
+   1083.0 ,  349.0 ,  273.0 ,  251.0 ,  137.0 ,  132.0 ,    6.0 ,   44.0 ,
+     29.0 ,   25.0 ,    5.63 ,
+
+  //  Eu -------------------------------------------------------------
+  48519.0 , 8052.0 , 7617.0 , 6977.0 , 1805.0 , 1618.0 , 1484.0 , 1164.0 ,
+   1135.0 ,  364.0 ,  286.0 ,  262.0 ,  143.0 ,  137.0 ,    6.0 ,   45.0 ,
+     30.0 ,   26.0 ,    5.68 ,
+
+  //  Gd -------------------------------------------------------------
+  50239.0 , 8376.0 , 7930.0 , 7243.0 , 1884.0 , 1692.0 , 1547.0 , 1220.0 ,
+   1189.0 ,  380.0 ,  300.0 ,  273.0 ,  150.0 ,  143.0 ,    6.0 ,   46.0 ,
+     31.0 ,   27.0 ,    6.0 ,    6.16 ,
+
+  //  Tb -------------------------------------------------------------
+  51996.0 , 8708.0 , 8252.0 , 7514.0 , 1965.0 , 1768.0 , 1612.0 , 1277.0 ,
+   1243.0 ,  398.0 ,  315.0 ,  285.0 ,  157.0 ,  150.0 ,    6.0 ,   48.0 ,
+     32.0 ,   28.0 ,    5.85 ,
+
+  //  Dy -------------------------------------------------------------
+  53789.0 , 9046.0 , 8581.0 , 7790.0 , 2048.0 , 1846.0 , 1678.0 , 1335.0 ,
+   1298.0 ,  416.0 ,  331.0 ,  297.0 ,  164.0 ,  157.0 ,    6.0 ,   50.0 ,
+     33.0 ,   28.0 ,    5.93 ,
+
+  //  Ho -------------------------------------------------------------
+  55618.0 , 9394.0 , 8918.0 , 8071.0 , 2133.0 , 1926.0 , 1746.0 , 1395.0 ,
+   1354.0 ,  434.0 ,  348.0 ,  310.0 ,  172.0 ,  164.0 ,    6.0 ,   52.0 ,
+     34.0 ,   29.0 ,    6.02 ,
+
+  //  Er -------------------------------------------------------------
+  57486.0 , 9751.0 , 9264.0 , 8358.0 , 2220.0 , 2008.0 , 1815.0 , 1456.0 ,
+   1412.0 ,  452.0 ,  365.0 ,  323.0 ,  181.0 ,  172.0 ,    6.0 ,   54.0 ,
+     35.0 ,   30.0 ,    6.10 ,
+
+  //  Tu -------------------------------------------------------------
+  59390.0 , 10116.0 , 9617.0 , 8648.0 , 2309.0 , 2092.0 , 1885.0 , 1518.0 ,
+   1471.0 ,   471.0 ,  382.0 ,  336.0 ,  190.0 ,  181.0 ,    7.0 ,   56.0 ,
+     36.0 ,    30.0 ,    6.18 ,
+
+  //  Yb -------------------------------------------------------------
+  61332.0 , 10486.0 , 9978.0 , 8944.0 , 2401.0 , 2178.0 , 1956.0 , 1580.0 ,
+   1531.0 ,   490.0 ,  399.0 ,  349.0 ,  200.0 ,  190.0 ,    8.0 ,    7.0 ,
+     58.0 ,    37.0 ,   31.0 ,    6.25 ,
+
+  //  Lu -------------------------------------------------------------
+  63314.0 , 10870.0 , 10349.0 , 9244.0 , 2499.0 , 2270.0 , 2032.0 , 1647.0 ,
+   1596.0 ,   514.0 ,   420.0 ,  366.0 ,  213.0 ,  202.0 ,   13.0 ,   12.0 ,
+     62.0 ,    39.0 ,    32.0 ,    6.6 ,    7.0 ,
+
+  //  Hf -------------------------------------------------------------
+  65351.0 , 11271.0 , 10739.0 , 9561.0 , 2604.0 , 2369.0 , 2113.0 , 1720.0 ,
+   1665.0 ,   542.0 ,   444.0 ,  386.0 ,  229.0 ,  217.0 ,   21.0 ,   20.0 ,
+     68.0 ,    43.0 ,    35.0 ,    7.0 ,    7.5 ,
+
+  //  Ta -------------------------------------------------------------
+  67416.0 , 11682.0 , 11136.0 , 9881.0 , 2712.0 , 2472.0 , 2197.0 , 1796.0 ,
+   1737.0 ,   570.0 ,   469.0 ,  407.0 ,  245.0 ,  232.0 ,   30.0 ,   28.0 ,
+     74.0 ,    47.0 ,    38.0 ,    8.3 ,    7.9 ,
+
+  //  W  -------------------------------------------------------------
+  69525.0 , 12100.0 , 11544.0 , 10207.0 , 2823.0 , 2577.0 , 2283.0 , 1874.0 ,
+   1811.0 ,   599.0 ,   495.0 ,   428.0 ,  261.0 ,  248.0 ,   38.0 ,   36.0 ,
+     80.0 ,    51.0 ,    41.0 ,     9.0 ,    8.0 ,
+
+  //  Re -------------------------------------------------------------
+  71676.0 , 12527.0 , 11959.0 , 10535.0 , 2937.0 , 2686.0 , 2371.0 , 1953.0 ,
+   1887.0 ,   629.0 ,   522.0 ,   450.0 ,  278.0 ,  264.0 ,   47.0 ,   45.0 ,
+     86.0 ,    56.0 ,    45.0 ,     9.6 ,    7.9 ,
+
+  //  Os -------------------------------------------------------------
+  73871.0 , 12968.0 , 12385.0 , 10871.0 , 3054.0 , 2797.0 , 2461.0 , 2035.0 ,
+   1964.0 ,   660.0 ,   551.0 ,   473.0 ,  295.0 ,  280.0 ,   56.0 ,   54.0 ,
+     92.0 ,    61.0 ,    49.0 ,     9.6 ,    8.5 ,
+
+  //  Ir -------------------------------------------------------------
+  76111.0 , 13419.0 , 12824.0 , 11215.0 , 3175.0 , 2912.0 , 2554.0 , 2119.0 ,
+   2044.0 ,   693.0 ,   581.0 ,   497.0 ,  314.0 ,  298.0 ,   67.0 ,   64.0 ,
+     99.0 ,    66.0 ,    53.0 ,     9.6 ,    9.1 ,
+
+  //  Pt -------------------------------------------------------------
+  78395.0 , 13880.0 , 13273.0 , 11564.0 , 3300.0 , 3030.0 , 2649.0 , 2206.0 ,
+   2126.0 ,   727.0 ,   612.0 ,   522.0 ,  335.0 ,  318.0 ,   78.0 ,   75.0 ,
+    106.0 ,    71.0 ,    57.0 ,     9.6 ,    9.0 ,
+
+  //  Au -------------------------------------------------------------
+  80725.0 , 14353.0 , 13734.0 , 11919.0 , 3430.0 , 3153.0 , 2748.0 , 2295.0 ,
+   2210.0 ,   764.0 ,   645.0 ,   548.0 ,  357.0 ,  339.0 ,   91.0 ,   87.0 ,
+    114.0 ,    76.0 ,    61.0 ,    12.5 ,   11.1 ,    9.23 ,
+
+  //  Hg -------------------------------------------------------------
+  83102.0 , 14839.0 , 14209.0 , 12284.0 , 3567.0 , 3283.0 , 2852.0 , 2390.0 ,
+   2300.0 ,   806.0 ,   683.0 ,   579.0 ,  382.0 ,  363.0 ,  107.0 ,  103.0 ,
+    125.0 ,    85.0 ,    68.0 ,    14.0 ,   12.0 ,   10.4 ,
+
+  //  Tl -------------------------------------------------------------
+  85530.0 , 15347.0 , 14698.0 , 12658.0 , 3710.0 , 3420.0 , 2961.0 , 2490.0 ,
+   2394.0 ,   852.0 ,   726.0 ,   615.0 ,  411.0 ,  391.0 ,  127.0 ,  123.0 ,
+    139.0 ,    98.0 ,    79.0 ,    21.0 ,   19.0 ,    8.0 ,    6.11 ,
+
+  //  Pb -------------------------------------------------------------
+  88005.0 , 15861.0 , 15200.0 , 13055.0 , 3857.0 , 3560.0 , 3072.0 , 2592.0 ,
+   2490.0 ,   899.0 ,   769.0 ,   651.0 ,  441.0 ,  419.0 ,  148.0 ,  144.0 ,
+    153.0 ,   111.0 ,    90.0 ,    27.0 ,   25.0 ,   10.0 ,    7.42 ,
+
+  //  Bi -------------------------------------------------------------
+  90526.0 , 16388.0 , 15711.0 , 13419.0 , 4007.0 , 3704.0 , 3185.0 , 2696.0 ,
+   2588.0 ,   946.0 ,   813.0 ,   687.0 ,  472.0 ,  448.0 ,  170.0 ,  165.0 ,
+    167.0 ,   125.0 ,   101.0 ,    34.0 ,   32.0 ,   12.0 ,    7.29 ,
+
+  //  Po -------------------------------------------------------------
+  93105.0 , 16939.0 , 16244.0 , 13814.0 , 4161.0 , 3852.0 , 3301.0 , 2802.0 ,
+   2687.0 ,   994.0 ,   858.0 ,   724.0 ,  503.0 ,  478.0 ,  193.0 ,  187.0 ,
+    181.0 ,   139.0 ,   112.0 ,    41.0 ,   38.0 ,   15.0 ,    8.43 ,
+
+  //  At -------------------------------------------------------------
+  95730.0 , 17493.0 , 16785.0 , 14214.0 , 4320.0 , 4005.0 , 3420.0 , 2910.0 ,
+   2788.0 ,  1044.0 ,   904.0 ,   761.0 ,  535.0 ,  508.0 ,  217.0 ,  211.0 ,
+    196.0 ,   153.0 ,   123.0 ,    48.0 ,   44.0 ,   19.0 ,   11.0 ,    9.3 ,
+
+  //  Rn -------------------------------------------------------------
+  98404.0 , 18049.0 , 17337.0 , 14619.0 , 4483.0 , 4162.0 , 3452.0 , 3109.0 ,
+   2890.0 ,  1096.0 ,   951.0 ,   798.0 ,  567.0 ,  538.0 ,  242.0 ,  235.0 ,
+    212.0 ,   167.0 ,   134.0 ,    55.0 ,   51.0 ,   24.0 ,   14.0 ,   10.7 ,
+
+  //  Fr -------------------------------------------------------------
+ 101137.0 , 18639.0 , 17907.0 , 15031.0 , 4652.0 , 4324.0 , 3666.0 , 3134.0 ,
+   2998.0 ,  1153.0 ,  1003.0 ,   839.0 ,  603.0 ,  572.0 ,  268.0 ,  260.0 ,
+    231.0 ,   183.0 ,   147.0 ,    65.0 ,   61.0 ,   33.0 ,   19.0 ,   14.0 ,
+      4.0 ,
+
+  //  Ra -------------------------------------------------------------
+ 103922.0 , 19237.0 , 18484.0 , 15444.0 , 4822.0 , 4491.0 , 3793.0 , 3254.0 ,
+   3111.0 ,  1214.0 ,  1060.0 ,   884.0 ,  642.0 ,  609.0 ,  296.0 ,  287.0 ,
+    253.0 ,   201.0 ,   161.0 ,    77.0 ,   73.0 ,   40.0 ,   25.0 ,   19.0 ,
+      5.28 ,
+
+  //  Ac -------------------------------------------------------------
+ 106755.0 , 19840.0 , 19083.0 , 15871.0 , 5002.0 , 4656.0 , 3921.0 , 3374.0 ,
+   3223.0 ,  1274.0 ,  1116.0 ,   928.0 ,  680.0 ,  645.0 ,  322.0 ,  313.0 ,
+    274.0 ,   218.0 ,   174.0 ,    88.0 ,   83.0 ,   45.0 ,   29.0 ,   22.0 ,
+      5.7 ,     6.3 ,
+
+  //  Th -------------------------------------------------------------
+ 109651.0 , 20472.0 , 19693.0 , 16300.0 , 5182.0 , 4830.0 , 4049.0 , 3494.0 ,
+   3335.0 ,  1333.0 ,  1171.0 ,   970.0 ,  717.0 ,  679.0 ,  347.0 ,  338.0 ,
+    293.0 ,   233.0 ,   185.0 ,    97.0 ,   91.0 ,   50.0 ,   33.0 ,   25.0 ,
+      6.0 ,     6.0 ,
+
+  //  Pa -------------------------------------------------------------
+ 112601.0 , 21105.0 , 20314.0 , 16733.0 , 5367.0 , 5001.0 , 4178.0 , 3613.0 ,
+   3446.0 ,  1390.0 ,  1225.0 ,  1011.0 ,  752.0 ,  712.0 ,  372.0 ,  362.0 ,
+    312.0 ,   248.0 ,   195.0 ,   104.0 ,   97.0 ,    6.0 ,   50.0 ,   32.0 ,
+     24.0 ,     6.0 ,     6.0 ,
+
+  //  U  -------------------------------------------------------------
+ 115606.0 , 21757.0 , 20948.0 , 17166.0 , 5548.0 , 5182.0 , 4308.0 , 3733.0 ,
+   3557.0 ,  1446.0 ,  1278.0 ,  1050.0 ,  785.0 ,  743.0 ,  396.0 ,  386.0 ,
+    329.0 ,   261.0 ,   203.0 ,   110.0 ,  101.0 ,    6.0 ,   52.0 ,   34.0 ,
+     24.0 ,     6.1 ,     6.0 ,
+
+  //  Np -------------------------------------------------------------
+ 118678.0 , 22426.0 , 21600.0 , 17610.0 , 5723.0 , 5366.0 , 4440.0 , 3854.0 ,
+   3669.0 ,  1504.0 ,  1331.0 ,  1089.0 ,  819.0 ,  774.0 ,  421.0 ,  410.0 ,
+    346.0 ,   274.0 ,   211.0 ,   116.0 ,  106.0 ,    6.0 ,   54.0 ,   35.0 ,
+     25.0 ,     6.0 ,     6.0 ,
+
+  //  Pu -------------------------------------------------------------
+ 121818.0 , 23097.0 , 22266.0 , 18056.0 , 5933.0 , 5541.0 , 4557.0 , 3977.0 ,
+   3783.0 ,  1563.0 ,  1384.0 ,  1128.0 ,  853.0 ,  805.0 ,  446.0 ,  434.0 ,
+    356.0 ,   287.0 ,   219.0 ,   122.0 ,  111.0 ,    6.0 ,   53.0 ,   34.0 ,
+     23.0 ,     6.0 ,
+
+  //  Am -------------------------------------------------------------
+ 125027.0 , 23773.0 , 22944.0 , 18504.0 , 6121.0 , 5710.0 , 4667.0 , 4102.0 ,
+   3898.0 ,  1623.0 ,  1439.0 ,  1167.0 ,  887.0 ,  836.0 ,  467.0 ,  452.0 ,
+    355.0 ,   301.0 ,   220.0 ,   123.0 ,  112.0 ,    6.0 ,   54.0 ,   44.0 ,
+     36.0 ,     6.0 ,
+
+  //  Cm -------------------------------------------------------------
+ 128220.0 , 24460.0 , 23779.0 , 18930.0 , 6288.0 , 5895.0 , 4797.0 , 4236.0 ,
+   4014.0 ,  1664.0 ,  1493.0 ,  1194.0 ,  919.0 ,  864.0 ,  494.0 ,  479.0 ,
+    384.0 ,   314.0 ,   239.0 ,   126.0 ,  119.0 ,   11.0 ,   60.0 ,   39.0 ,
+     27.0 ,     5.0 ,     6.0 ,
+
+  //  Bk -------------------------------------------------------------
+ 131590.0 , 25275.0 , 24385.0 , 19452.0 , 6556.0 , 6147.0 , 4977.0 , 4366.0 ,
+   4133.0 ,  1729.0 ,  1554.0 ,  1236.0 ,  955.0 ,  898.0 ,  520.0 ,  504.0 ,
+    401.0 ,   329.0 ,   248.0 ,   142.0 ,  124.0 ,   12.0 ,   63.0 ,   41.0 ,
+     27.0 ,     4.0 ,     6.0 ,
+
+  //  Cf -------------------------------------------------------------
+ 135960.0 , 26110.0 , 25250.0 , 19930.0 , 6754.0 , 6359.0 , 5109.0 , 4492.0 ,
+   4247.0 ,  1789.0 ,  1610.0 ,  1273.0 ,  987.0 ,  925.0 ,  546.0 ,  529.0 ,
+    412.0 ,   338.0 ,   251.0 ,   142.0 ,  129.0 ,    9.0 ,   61.0 ,   39.0 ,
+     25.0 ,     6.0 ,
+
+  //  Es -------------------------------------------------------------
+ 139490.0 , 26900.0 , 26020.0 , 20410.0 , 6977.0 , 6754.0 , 5252.0 , 4630.0 ,
+   4369.0 ,  1857.0 ,  1674.0 ,  1316.0 , 1024.0 ,  959.0 ,  573.0 ,  554.0 ,
+    429.0 ,   353.0 ,   260.0 ,   148.0 ,  135.0 ,    9.0 ,   63.0 ,   40.0 ,
+     25.0 ,     6.0 ,
+
+  //  Fm -------------------------------------------------------------
+ 143090.0 , 27700.0 , 26810.0 , 20900.0 , 7205.0 , 6793.0 , 5397.0 , 4766.0 ,
+   4498.0 ,  1933.0 ,  1746.0 ,  1366.0 , 1068.0 , 1000.0 ,  606.0 ,  587.0 ,
+    453.0 ,   375.0 ,   275.0 ,   160.0 ,  145.0 ,   15.0 ,   69.0 ,   45.0 ,
+     29.0 ,     7.0 ,
+
+};
+
+const G4int
+G4AtomicShells::fNumberOfElectrons[1540] =
+{
+  0,   // Nonexisting zero element
+  //  H  ---------------------------------------------------------
+  1,
+  //  He ---------------------------------------------------------
+  2,
+  //  Li  --------------------------------------------------------
+  2, 1,
+  //  Be  --------------------------------------------------------
+  2, 2,
+  //  B   --------------------------------------------------------
+  2, 2, 1,
+  //  C  ---------------------------------------------------------
+  2, 2, 2,
+  //  N  ---------------------------------------------------------
+  2, 2, 2, 1,
+  //  O  ---------------------------------------------------------
+  2, 2, 2, 2,
+  //  F  ---------------------------------------------------------
+  2, 2, 5,
+  //  Ne ---------------------------------------------------------
+  2, 2, 2, 4,
+  //  Na ---------------------------------------------------------
+  2, 2, 2, 4, 1,
+  //  Mg ---------------------------------------------------------
+  2, 2, 2, 4, 2,
+  //  Al ---------------------------------------------------------
+  2, 2, 2, 4, 2, 1,
+  //  Si ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2,
+  //  P  ---------------------------------------------------------
+  2, 2, 2, 4, 2, 3,
+  //  S  ---------------------------------------------------------
+  2, 2, 2, 4, 2, 4,
+  //  Cl ---------------------------------------------------------
+  2, 2, 2, 4, 2, 5,
+  //  Ar ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4,
+  //  K  ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 1,
+  //  Ca ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 2,
+  //  Sc ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 1, 2,
+  //  Ti ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 2, 2,
+  //  V  ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 3, 2,
+  //  Cr ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 2,
+  //  Mn ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 5, 2,
+  //  Fe ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 6, 2,
+  //  Co ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 7, 2,
+  //  Ni ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 4, 2,
+  //  Cu ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 5, 2,
+  //  Zn ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2,
+  //  Ga ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 1,
+  //  Ge ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2,
+  //  As ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 3,
+  //  Se ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 4,
+  //  Br ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 5,
+  //  Kr ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4,
+  //  Rb ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 1,
+  //  Sr ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 2,
+  //  Y  ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 1, 2,
+  //  Zr ---------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 2, 2,
+  //  Nb ----------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 3, 2,
+  //  Mo -----------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 2,
+  //  Tc -----------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 5, 2,
+  //  Ru -----------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 6, 2,
+  //  Rh -----------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 7, 2,
+  //  Pd -----------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 4, 2,
+  //  Ag -----------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 5, 2,
+  //  Cd ------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2,
+  //  In ------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 1,
+  //  Sn ------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2,
+  //  Sb ------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 3,
+  //  Te ------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 4,
+  //  I  ------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 5,
+  //  Xe ------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4,
+  //  Cs ------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 1,
+  //  Ba -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 2,
+  //  La -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 1, 2,
+  //  Ce -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 2, 4, 2,
+  //  Pr -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 3, 2, 2, 4, 2,
+  //  Nd -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 4, 2, 2, 4, 2,
+  //  Pm -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 5, 2, 2, 4, 2,
+  //  Sm -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 2, 2, 4, 2,
+  //  Eu -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 7, 2, 2, 4, 2,
+  //  Gd -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 7, 2, 2, 4, 1, 2,
+  //  Tb -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 9, 2, 2, 4, 2,
+  //  Dy -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6,10, 2, 2, 4, 2,
+  //  Ho -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6,11, 2, 2, 4, 2,
+  //  Er -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6,12, 2, 2, 4, 2,
+  //  Tu -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6,13, 2, 2, 4, 2,
+  //  Yb -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 2,
+  //  Lu -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 1, 2,
+  //  Hf -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 2, 2,
+  //  Ta -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 3, 2,
+  //  W  -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 2,
+  //  Re -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 5, 2,
+  //  Os -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 6, 2,
+  //  Ir -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 7, 2,
+  //  Pt -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 9, 1,
+  //  Au -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 1,
+  //  Hg -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2,
+  //  Tl -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 1,
+  //  Pb -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2,
+  //  Bi -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 3,
+  //  Po -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 4,
+  //  At -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 3,
+  //  Rn -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 4,
+  //  Fr -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 4, 1,
+  //  Ra -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 4, 2,
+  //  Ac -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 4, 1, 2,
+  //  Th -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 4, 2, 2,
+  //  Pa -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 2, 4, 1, 2,
+  //  U  -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 3, 2, 2, 4, 1, 2,
+  //  Np -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 4, 2, 2, 4, 1, 2,
+  //  Pu -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 6, 2, 2, 4, 2,
+  //  Am -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 7, 2, 2, 4, 2,
+  //  Cm -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 7, 2, 2, 4, 1, 2,
+  //  Bk -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 8, 2, 2, 4, 1, 2,
+  //  Cf -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6,10, 2, 2, 4, 2,
+  //  Es -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6,11, 2, 2, 4, 2,
+  //  Fm -------------------------------------------------------------
+  2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6,12, 2, 2, 4, 2
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4int
+G4AtomicShells::GetNumberOfShells(G4int Z)  
+{
+  assert (Z>=1 && Z<=101);
+  return fNumberOfShells[Z];
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4double 
+G4AtomicShells::GetBindingEnergy(G4int Z, G4int ShellNb)
+{
+  assert (Z>=1 && Z<=101 && ShellNb<fNumberOfShells[Z]);
+  
+  G4int indice = 1;
+  for (G4int z = 1 ; z < Z ; z++) indice += fNumberOfShells[z];
+  indice += ShellNb;  
+  return fBindingEnergies[indice]*eV;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4int
+G4AtomicShells::GetNumberOfElectrons(G4int Z, G4int ShellNb)
+{
+  assert (Z>=1 && Z<=101 && ShellNb<fNumberOfShells[Z]);
+  
+  G4int indice = 1;
+  for (G4int z = 1 ; z < Z ; z++) indice += fNumberOfShells[z];
+  indice += ShellNb;  
+  return fNumberOfElectrons[indice];
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4double G4AtomicShells::GetTotalBindingEnergy (G4int Z)
+{
+  assert (Z>=1 && Z<=101);
+  
+  G4int idx = 1;
+  for (G4int z = 1 ; z < Z ; z++) idx += fNumberOfShells[z];
+  G4double energy = 0.0;
+  G4int idxmax = idx +  fNumberOfShells[Z];
+  for (G4int i=idx; i<idxmax; i++) {energy += fBindingEnergies[i];}
+  return energy*eV;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
Index: trunk/source/materials/src/G4Element.cc
===================================================================
--- trunk/source/materials/src/G4Element.cc	(revision 822)
+++ trunk/source/materials/src/G4Element.cc	(revision 822)
@@ -0,0 +1,420 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4Element.cc,v 1.26 2007/10/18 11:14:33 vnivanch Exp $
+// GEANT4 tag $Name:  $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// 26-06-96: Code uses operators (+=, *=, ++, -> etc.) correctly, P. Urban
+// 09-07-96: new data members added by L.Urban
+// 17-01-97: aesthetic rearrangement, M.Maire
+// 20-01-97: Compute Tsai's formula for the rad length, M.Maire
+// 21-01-97: remove mixture flag, M.Maire
+// 24-01-97: ComputeIonisationParameters(). 
+//           new data member: fTaul, M.Maire
+// 29-01-97: Forbidden to create Element with Z<1 or N<Z, M.Maire
+// 20-03-97: corrected initialization of pointers, M.Maire
+// 28-04-98: atomic subshell binding energies stuff, V. Grichine  
+// 09-07-98: Ionisation parameters removed from the class, M.Maire
+// 16-11-98: name Subshell -> Shell; GetBindingEnergy() (mma)
+// 09-03-01: assignement operator revised (mma)
+// 02-05-01: check identical Z in AddIsotope (marc)
+// 03-05-01: flux.precision(prec) at begin/end of operator<<
+// 13-09-01: suppression of the data member fIndexInTable
+// 14-09-01: fCountUse: nb of materials which use this element
+// 26-02-02: fIndexInTable renewed
+// 30-03-05: warning in GetElement(elementName)
+// 15-11-05: GetElement(elementName, G4bool warning=true) 
+// 17-10-06: Add fNaturalAbandances (V.Ivanchenko)
+// 27-07-07, improve destructor (V.Ivanchenko) 
+// 18-10-07, move definition of material index to ComputeDerivedQuantities (V.Ivanchenko) 
+ 
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "G4Element.hh"
+#include <iomanip>
+
+G4ElementTable G4Element::theElementTable;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// Constructor to Generate an element from scratch
+
+G4Element::G4Element(const G4String& name, const G4String& symbol,
+                     G4double zeff, G4double aeff)
+  : fName(name), fSymbol(symbol)		     
+{
+  if (zeff<1.) G4Exception (" ERROR from G4Element::G4Element !"
+			    " It is not allowed to create an Element with Z < 1" );
+
+  if (aeff/(g/mole)<zeff) G4Exception (" ERROR from G4Element::G4Element !"
+				       " Attempt to create an Element with N < Z !!!" );
+
+  if ((zeff-G4int(zeff)) > perMillion)
+    G4cerr << name << " : WARNING from G4Element::G4Element !"  
+      " Trying to define an element as a mixture directly via effective Z."
+	   << G4endl;
+
+  InitializePointers();
+
+  fZeff   = zeff;
+  fNeff   = aeff/(g/mole);
+  fAeff   = aeff;
+   
+  fNbOfAtomicShells = G4AtomicShells::GetNumberOfShells((G4int)fZeff);
+  fAtomicShells     = new G4double[fNbOfAtomicShells];
+  for (G4int i=0;i<fNbOfAtomicShells;i++)
+    fAtomicShells[i] = G4AtomicShells::GetBindingEnergy((G4int)fZeff,i);
+           
+  ComputeDerivedQuantities();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// Constructor to Generate element from a List of 'nIsotopes' isotopes, added
+// via AddIsotope
+
+G4Element::G4Element(const G4String& name,
+                     const G4String& symbol, G4int nIsotopes)
+  : fName(name),fSymbol(symbol)
+{
+  InitializePointers();
+
+  size_t n = size_t(nIsotopes);
+
+  theIsotopeVector         = new G4IsotopeVector(n,0);
+  fRelativeAbundanceVector = new G4double[nIsotopes];
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// Add an isotope to the element
+
+void G4Element::AddIsotope(G4Isotope* isotope, G4double abundance)
+{
+  if (theIsotopeVector == 0)
+    G4Exception ("ERROR from G4Element::AddIsotope!"
+		 " Trying to add an Isotope before contructing the element.");
+
+  // filling ...
+  if ( fNumberOfIsotopes < theIsotopeVector->size() ) {
+    // check same Z
+    if (fNumberOfIsotopes==0) fZeff = G4double(isotope->GetZ());
+    else if (G4double(isotope->GetZ()) != fZeff) 
+      G4Exception ("ERROR from G4Element::AddIsotope!"
+		   " Try to add isotopes with different Z");
+    //Z ok   
+    fRelativeAbundanceVector[fNumberOfIsotopes] = abundance;
+    (*theIsotopeVector)[fNumberOfIsotopes] = isotope;
+    ++fNumberOfIsotopes;
+    isotope->increaseCountUse();
+  } 
+  else G4Exception ("ERROR from G4Element::AddIsotope!"  
+		    " Attempt to add more than the declared number of isotopes.");
+
+  // filled.
+  if ( fNumberOfIsotopes == theIsotopeVector->size() ) {
+    // Compute Neff, Aeff
+    G4double wtSum=0.0;
+
+    fNeff = fAeff = 0.0;
+    for (size_t i=0;i<fNumberOfIsotopes;i++) {
+      fNeff +=  fRelativeAbundanceVector[i]*(*theIsotopeVector)[i]->GetN();
+      fAeff +=  fRelativeAbundanceVector[i]*(*theIsotopeVector)[i]->GetA();
+      wtSum +=  fRelativeAbundanceVector[i];
+    }
+    fNeff /=  wtSum;
+    fAeff /=  wtSum;
+      
+    fNbOfAtomicShells = G4AtomicShells::GetNumberOfShells((G4int)fZeff);
+    fAtomicShells     = new G4double[fNbOfAtomicShells];
+    for (G4int j=0;j<fNbOfAtomicShells;j++)
+      fAtomicShells[j] = G4AtomicShells::GetBindingEnergy((G4int)fZeff,j);
+         
+    ComputeDerivedQuantities();
+
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4Element::InitializePointers()
+{
+  theIsotopeVector = 0;
+  fRelativeAbundanceVector = 0;
+  fAtomicShells = 0;
+  fIonisation = 0;
+  fNumberOfIsotopes = 0;
+  fNaturalAbandances = false;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// Fake default constructor - sets only member data and allocates memory
+//                            for usage restricted to object persistency
+
+G4Element::G4Element( __void__& )
+  : fZeff(0), fNeff(0), fAeff(0), fNbOfAtomicShells(0), 
+    fAtomicShells(0), fNumberOfIsotopes(0), theIsotopeVector(0), 
+    fRelativeAbundanceVector(0), fCountUse(0), fIndexInTable(0), 
+    fCoulomb(0), fRadTsai(0), fIonisation(0)
+{
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4Element::~G4Element()
+{
+  //  G4cout << "### Destruction of element " << fName << " started" <<G4endl;
+
+  if (theIsotopeVector)         delete theIsotopeVector;
+  if (fRelativeAbundanceVector) delete [] fRelativeAbundanceVector;
+  if (fAtomicShells)            delete [] fAtomicShells;
+  if (fIonisation)              delete    fIonisation;
+  
+  //remove this element from theElementTable
+  theElementTable[fIndexInTable] = 0;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4Element::ComputeDerivedQuantities()
+{
+  // some basic functions of the atomic number
+
+  // Store in table
+  theElementTable.push_back(this);
+  fIndexInTable = theElementTable.size() - 1;
+      
+  // check if elements with same Z already exist
+  fIndexZ = 0; 
+  for (size_t J=0 ; J<fIndexInTable ; J++)
+    if (theElementTable[J]->GetZ() == fZeff) fIndexZ++;
+
+  //nb of materials which use this element
+  fCountUse = 0;
+
+  // Radiation Length
+  ComputeCoulombFactor();
+  ComputeLradTsaiFactor(); 
+
+  // parameters for energy loss by ionisation 
+  if (fIonisation) delete fIonisation;  
+  fIonisation = new G4IonisParamElm(fZeff);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4Element::ComputeCoulombFactor()
+{
+  //
+  //  Compute Coulomb correction factor (Phys Rev. D50 3-1 (1994) page 1254)
+
+  const G4double k1 = 0.0083 , k2 = 0.20206 ,k3 = 0.0020 , k4 = 0.0369 ;
+
+  G4double az2 = (fine_structure_const*fZeff)*(fine_structure_const*fZeff);
+  G4double az4 = az2 * az2;
+
+  fCoulomb = (k1*az4 + k2 + 1./(1.+az2))*az2 - (k3*az4 + k4)*az4;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4Element::ComputeLradTsaiFactor()
+{
+  //
+  //  Compute Tsai's Expression for the Radiation Length
+  //  (Phys Rev. D50 3-1 (1994) page 1254)
+
+  const G4double Lrad_light[]  = {5.31  , 4.79  , 4.74 ,  4.71} ;
+  const G4double Lprad_light[] = {6.144 , 5.621 , 5.805 , 5.924} ;
+  
+  const G4double logZ3 = std::log(fZeff)/3.;
+
+  G4double Lrad, Lprad;
+  G4int iz = (int)(fZeff+0.5) - 1 ;
+  if (iz <= 3) { Lrad = Lrad_light[iz] ;  Lprad = Lprad_light[iz] ; }
+    else { Lrad = std::log(184.15) - logZ3 ; Lprad = std::log(1194.) - 2*logZ3;}
+
+  fRadTsai = 4*alpha_rcl2*fZeff*(fZeff*(Lrad-fCoulomb) + Lprad); 
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4double G4Element::GetAtomicShell(G4int i) const
+{
+  if (i<0 || i>=fNbOfAtomicShells)
+      G4Exception("Invalid argument in G4Element::GetAtomicShell");
+  return fAtomicShells[i];
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+const G4ElementTable* G4Element::GetElementTable()
+{
+  return &theElementTable;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+size_t G4Element::GetNumberOfElements()
+{
+  return theElementTable.size();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4Element* G4Element::GetElement(G4String elementName, G4bool warning)
+{  
+  // search the element by its name 
+  for (size_t J=0 ; J<theElementTable.size() ; J++)
+   {
+     if (theElementTable[J]->GetName() == elementName)
+       return theElementTable[J];
+   }
+   
+  // the element does not exist in the table
+  if (warning) {
+  G4cout << "\n---> warning from G4Element::GetElement(). The element: "
+         << elementName << " does not exist in the table. Return NULL pointer."
+	 << G4endl;
+  }   
+  return 0;   
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4Element::G4Element(G4Element& right)
+{
+  InitializePointers();
+  *this = right;
+
+  // Store this new element in table and set the index
+  theElementTable.push_back(this);
+  fIndexInTable = theElementTable.size() - 1; 
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+const G4Element& G4Element::operator=(const G4Element& right)
+{
+  if (this != &right)
+    {
+      fName                    = right.fName;
+      fSymbol                  = right.fSymbol;
+      fZeff                    = right.fZeff;
+      fNeff                    = right.fNeff;
+      fAeff                    = right.fAeff;
+      
+      if (fAtomicShells) delete [] fAtomicShells;      
+      fNbOfAtomicShells        = right.fNbOfAtomicShells;
+      fAtomicShells     = new G4double[fNbOfAtomicShells];
+      for (G4int i=0;i<fNbOfAtomicShells;i++)      
+         fAtomicShells[i]      = right.fAtomicShells[i];
+	 
+      if (theIsotopeVector) delete theIsotopeVector;
+      if (fRelativeAbundanceVector) delete [] fRelativeAbundanceVector;
+	      	 
+      fNumberOfIsotopes        = right.fNumberOfIsotopes;
+      if (fNumberOfIsotopes > 0)
+        {
+	 theIsotopeVector         = new G4IsotopeVector(fNumberOfIsotopes,0);
+	 fRelativeAbundanceVector = new G4double[fNumberOfIsotopes];
+	 for (size_t i=0;i<fNumberOfIsotopes;i++)
+	    {
+             (*theIsotopeVector)[i]      = (*right.theIsotopeVector)[i];
+             fRelativeAbundanceVector[i] = right.fRelativeAbundanceVector[i];
+	    }
+	}   
+      ComputeDerivedQuantities();
+     } 
+  return *this;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4int G4Element::operator==(const G4Element& right) const
+{
+  return (this == (G4Element*) &right);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4int G4Element::operator!=(const G4Element& right) const
+{
+  return (this != (G4Element*) &right);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+std::ostream& operator<<(std::ostream& flux, G4Element* element)
+{
+  std::ios::fmtflags mode = flux.flags();
+  flux.setf(std::ios::fixed,std::ios::floatfield);
+  G4long prec = flux.precision(3);
+  
+  flux
+    << " Element: " << element->fName   << " (" << element->fSymbol << ")"
+    << "   Z = " << std::setw(4) << std::setprecision(1) <<  element->fZeff 
+    << "   N = " << std::setw(5) << std::setprecision(1) <<  element->fNeff
+    << "   A = " << std::setw(6) << std::setprecision(2)
+                 << (element->fAeff)/(g/mole) << " g/mole";
+   
+  for (size_t i=0; i<element->fNumberOfIsotopes; i++)
+  flux 
+    << "\n   ---> " << (*(element->theIsotopeVector))[i] 
+    << "   abundance: " << std::setw(6) << std::setprecision(2) 
+    << (element->fRelativeAbundanceVector[i])/perCent << " %";
+    
+  flux.precision(prec);        
+  flux.setf(mode,std::ios::floatfield);         
+  return flux;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+ std::ostream& operator<<(std::ostream& flux, G4Element& element)
+{
+  flux << &element;        
+  return flux;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+     
+std::ostream& operator<<(std::ostream& flux, G4ElementTable ElementTable)
+{
+ //Dump info for all known elements
+   flux << "\n***** Table : Nb of elements = " << ElementTable.size() 
+        << " *****\n" << G4endl;
+        
+   for (size_t i=0; i<ElementTable.size(); i++) flux << ElementTable[i] 
+						     << G4endl << G4endl;
+
+   return flux;
+}
+      
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Index: trunk/source/materials/src/G4IonisParamElm.cc
===================================================================
--- trunk/source/materials/src/G4IonisParamElm.cc	(revision 822)
+++ trunk/source/materials/src/G4IonisParamElm.cc	(revision 822)
@@ -0,0 +1,173 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4IonisParamElm.cc,v 1.14 2006/06/29 19:12:43 gunter Exp $
+// GEANT4 tag $Name:  $
+//
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+//
+// 06-09-04, Update calculated values after any change of ionisation 
+//           potential change. V.Ivanchenko
+// 17-10-02, Fix excitation energy interpolation. V.Ivanchenko
+// 08-03-01, correct handling of fShellCorrectionVector. M.Maire
+// 22-11-00, tabulation of ionisation potential from 
+//           the ICRU Report N#37. V.Ivanchenko
+// 09-07-98, data moved from G4Element. M.Maire
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+#include "G4IonisParamElm.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4IonisParamElm::G4IonisParamElm(G4double Z)
+{
+    if (Z < 1.) G4Exception
+      (" ERROR! It is not allowed to create an Element with Z < 1" );
+    
+    // some basic functions of the atomic number
+    fZ = Z;
+    fZ3  = std::pow(fZ, 1./3.);
+    fZZ3 = std::pow(fZ*(fZ+1.), 1./3.);
+    flogZ3 = std::log(fZ)/3.;
+   
+     // Parameters for energy loss by ionisation   
+
+     // Mean excitation energy
+     // from "Stopping Powers for Electrons and Positrons"
+     // ICRU Report N#37, 1984  (energy in eV)
+    static double exc[100] = { 
+    21.8, 20.9,	13.3, 15.9, 15.2, 13.0,	11.7, 11.9, 11.5, 13.7,
+    13.6, 13.0,	12.8, 12.4, 11.5, 11.3,	10.2, 10.4, 10.0,  9.6,
+    10.3, 10.6,	10.7, 10.7, 10.9, 11.0,	11.0, 11.1, 11.1, 11.0,
+    10.8, 10.4,	10.5, 10.2,  9.8,  9.8,  9.8,  9.6,  9.7,  9.8,
+    10.2, 10.1, 10.0, 10.0, 10.0, 10.2, 10.0,  9.8, 10.0,  9.8,
+     9.5,  9.3,  9.3,  8.9,  8.9,  8.8,  8.8,  8.8,  9.1,  9.1,
+     9.2,  9.3,  9.2,  9.2,  9.4,  9.5,  9.7,  9.7,  9.8,  9.8,
+     9.8,  9.8,  9.8,  9.8,  9.8,  9.8,  9.8, 10.1, 10.0, 10.0,
+    10.0, 10.0,  9.9,  9.9,  9.7,  9.2,  9.5,  9.4,  9.4,  9.4,
+     9.6,  9.7,  9.7,  9.8,  9.8,  9.8,  9.8,  9.9,  9.9,  9.9 };
+
+    G4int iz = (G4int)Z - 1 ;
+    if(0  > iz) iz = 0;
+    else if(99 < iz) iz = 99 ;
+    fMeanExcitationEnergy = fZ * exc[iz] * eV ;
+
+
+    fTau0 = 0.1*fZ3*MeV/proton_mass_c2;
+    fTaul = 2.*MeV/proton_mass_c2;
+
+    // compute the Bethe-Bloch formula for energy = fTaul*particle mass
+    G4double rate = fMeanExcitationEnergy/electron_mass_c2 ;
+    G4double w = fTaul*(fTaul+2.) ;
+    fBetheBlochLow = (fTaul+1.)*(fTaul+1.)*std::log(2.*w/rate)/w - 1. ;
+    fBetheBlochLow = 2.*fZ*twopi_mc2_rcl2*fBetheBlochLow ; 
+  
+    fClow = std::sqrt(fTaul)*fBetheBlochLow;
+    fAlow = 6.458040 * fClow/fTau0;
+    G4double Taum = 0.035*fZ3*MeV/proton_mass_c2;
+    fBlow =-3.229020*fClow/(fTau0*std::sqrt(Taum));
+
+    // Shell correction factors
+    fShellCorrectionVector = new G4double[3]; //[3]
+    rate = 0.001*fMeanExcitationEnergy/eV;
+    G4double rate2 = rate*rate;
+    /*    
+    fShellCorrectionVector[0] = ( 1.10289e5 + 5.14781e8*rate)*rate2 ;
+    fShellCorrectionVector[1] = ( 7.93805e3 - 2.22565e7*rate)*rate2 ;
+    fShellCorrectionVector[2] = (-9.92256e1 + 2.10823e5*rate)*rate2 ;
+    */
+    fShellCorrectionVector[0] = ( 0.422377   + 3.858019*rate)*rate2 ;
+    fShellCorrectionVector[1] = ( 0.0304043  - 0.1667989*rate)*rate2 ;
+    fShellCorrectionVector[2] = (-0.00038106 + 0.00157955*rate)*rate2 ;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+// Fake default constructor - sets only member data and allocates memory
+//                            for usage restricted to object persistency
+
+G4IonisParamElm::G4IonisParamElm(__void__&)
+  : fShellCorrectionVector(0)
+{
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4IonisParamElm::~G4IonisParamElm()
+{
+  if (fShellCorrectionVector) delete [] fShellCorrectionVector; 
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4IonisParamElm::G4IonisParamElm(G4IonisParamElm& right)
+{
+  *this = right;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+const G4IonisParamElm& G4IonisParamElm::operator=(const G4IonisParamElm& right)
+{
+  if (this != &right)
+    {
+      fZ                     = right.fZ;
+      fZ3                    = right.fZ3;
+      fZZ3                   = right.fZZ3;
+      flogZ3                 = right.flogZ3;
+      fTau0                  = right.fTau0;
+      fTaul                  = right.fTaul;
+      fBetheBlochLow         = right.fBetheBlochLow;
+      fAlow                  = right.fAlow;
+      fBlow                  = right.fBlow;
+      fClow                  = right.fClow;
+      fMeanExcitationEnergy  = right.fMeanExcitationEnergy;
+      if (fShellCorrectionVector) delete [] fShellCorrectionVector;             
+      fShellCorrectionVector = new G4double[3];            
+      fShellCorrectionVector[0] = right.fShellCorrectionVector[0];
+      fShellCorrectionVector[1] = right.fShellCorrectionVector[1];
+      fShellCorrectionVector[2] = right.fShellCorrectionVector[2];      
+     } 
+  return *this;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4int G4IonisParamElm::operator==(const G4IonisParamElm& right) const
+{
+  return (this == (G4IonisParamElm *) &right);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4int G4IonisParamElm::operator!=(const G4IonisParamElm& right) const
+{
+  return (this != (G4IonisParamElm *) &right);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
Index: trunk/source/materials/src/G4IonisParamMat.cc
===================================================================
--- trunk/source/materials/src/G4IonisParamMat.cc	(revision 822)
+++ trunk/source/materials/src/G4IonisParamMat.cc	(revision 822)
@@ -0,0 +1,439 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4IonisParamMat.cc,v 1.20 2007/09/27 14:05:47 vnivanch Exp $
+// GEANT4 tag $Name: geant4-09-01-patch-02 $
+//
+// 
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+// 09-07-98, data moved from G4Material, M.Maire
+// 18-07-98, bug corrected in ComputeDensityEffect() for gas
+// 16-01-01, bug corrected in ComputeDensityEffect() E100eV (L.Urban)
+// 08-02-01, fShellCorrectionVector correctly handled (mma)
+// 28-10-02, add setMeanExcitationEnergy (V.Ivanchenko)
+// 06-09-04, factor 2 to shell correction term (V.Ivanchenko) 
+// 10-05-05, add a missing coma in FindMeanExcitationEnergy() - Bug#746 (mma)
+// 27-09-07, add computation of parameters for ions (V.Ivanchenko)
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+#include "G4IonisParamMat.hh"
+#include "G4Material.hh"
+#include "G4NistManager.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4IonisParamMat::G4IonisParamMat(G4Material* material)
+  : fMaterial(material)
+{
+  ComputeMeanParameters();
+  ComputeDensityEffect();
+  ComputeFluctModel();
+  ComputeIonParameters();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+// Fake default constructor - sets only member data and allocates memory
+//                            for usage restricted to object persistency
+
+G4IonisParamMat::G4IonisParamMat(__void__&)
+  : fMaterial(0), fShellCorrectionVector(0)
+{
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+void G4IonisParamMat::ComputeMeanParameters()
+{
+  // compute mean excitation energy and shell correction vector
+
+  fTaul = (*(fMaterial->GetElementVector()))[0]->GetIonisation()->GetTaul();
+
+  fMeanExcitationEnergy = 0.;
+  fLogMeanExcEnergy = 0.;
+
+
+  for (size_t i=0; i < fMaterial->GetNumberOfElements(); i++) {
+    fLogMeanExcEnergy += 
+             (fMaterial->GetVecNbOfAtomsPerVolume())[i]
+            *((*(fMaterial->GetElementVector()))[i]->GetZ())
+            *std::log((*(fMaterial->GetElementVector()))[i]->GetIonisation()
+             ->GetMeanExcitationEnergy());
+  }
+
+  fLogMeanExcEnergy /= fMaterial->GetTotNbOfElectPerVolume();
+  fMeanExcitationEnergy = std::exp(fLogMeanExcEnergy);
+
+  fShellCorrectionVector = new G4double[3]; //[3]
+
+  for (G4int j=0; j<=2; j++)
+  {
+    fShellCorrectionVector[j] = 0.;
+
+    for (size_t k=0; k<fMaterial->GetNumberOfElements(); k++) {
+      fShellCorrectionVector[j] += (fMaterial->GetVecNbOfAtomsPerVolume())[k] 
+              *((*(fMaterial->GetElementVector()))[k]->GetIonisation()
+                                              ->GetShellCorrectionVector()[j]);
+    }
+    fShellCorrectionVector[j] *= 2.0/fMaterial->GetTotNbOfElectPerVolume();
+  } 
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+                    
+void G4IonisParamMat::ComputeDensityEffect()
+{
+  // Compute parameters for the density effect correction in DE/Dx formula.
+  // The parametrization is from R.M. Sternheimer, Phys. Rev.B,3:3681 (1971)
+
+  const G4double Cd2 = 4*pi*hbarc_squared*classic_electr_radius;
+  const G4double twoln10 = 2.*std::log(10.);
+
+  G4int icase;
+  
+  fCdensity = 1. + std::log(fMeanExcitationEnergy*fMeanExcitationEnergy
+              /(Cd2*fMaterial->GetTotNbOfElectPerVolume()));
+
+  //
+  // condensed materials
+  //
+  G4State State = fMaterial->GetState();
+  
+  if ((State == kStateSolid)||(State == kStateLiquid)) {
+
+      const G4double E100eV  = 100.*eV; 
+      const G4double ClimiS[] = {3.681 , 5.215 };
+      const G4double X0valS[] = {1.0   , 1.5   };
+      const G4double X1valS[] = {2.0   , 3.0   };
+                                
+      if(fMeanExcitationEnergy < E100eV) icase = 0;
+         else                            icase = 1;
+
+      if(fCdensity < ClimiS[icase]) fX0density = 0.2;
+         else                       fX0density = 0.326*fCdensity-X0valS[icase];
+
+      fX1density = X1valS[icase] ; fMdensity = 3.0;
+      
+      //special: Hydrogen
+      if ((fMaterial->GetNumberOfElements()==1)&&(fMaterial->GetZ()==1.)) {
+         fX0density = 0.425; fX1density = 2.0; fMdensity = 5.949;
+      }
+  }
+
+  //
+  // gases
+  //
+  if (State == kStateGas) { 
+
+      const G4double ClimiG[] = { 10. , 10.5 , 11. , 11.5 , 12.25 , 13.804};
+      const G4double X0valG[] = { 1.6 , 1.7 ,  1.8 ,  1.9 , 2.0   ,  2.0 };
+      const G4double X1valG[] = { 4.0 , 4.0 ,  4.0 ,  4.0 , 4.0   ,  5.0 };
+
+      icase = 5;
+      fX0density = 0.326*fCdensity-2.5 ; fX1density = 5.0 ; fMdensity = 3. ; 
+      while((icase > 0)&&(fCdensity < ClimiG[icase])) icase-- ;
+      fX0density = X0valG[icase]  ; fX1density = X1valG[icase] ;
+      
+      //special: Hydrogen
+      if ((fMaterial->GetNumberOfElements()==1)&&(fMaterial->GetZ()==1.)) {
+         fX0density = 1.837; fX1density = 3.0; fMdensity = 4.754;
+      }
+      
+      //special: Helium
+      if ((fMaterial->GetNumberOfElements()==1)&&(fMaterial->GetZ()==2.)) {
+         fX0density = 2.191; fX1density = 3.0; fMdensity = 3.297;
+      }
+
+      // change parameters if the gas is not in STP.
+      // For the correction the density(STP) is needed. 
+      // Density(STP) is calculated here : 
+      
+      G4double Density  = fMaterial->GetDensity();
+      G4double Pressure = fMaterial->GetPressure();
+      G4double Temp     = fMaterial->GetTemperature();
+      
+     G4double DensitySTP = Density*STP_Pressure*Temp/(Pressure*STP_Temperature);
+
+      G4double ParCorr = std::log(Density/DensitySTP);
+  
+      fCdensity  -= ParCorr;
+      fX0density -= ParCorr/twoln10;
+      fX1density -= ParCorr/twoln10;
+  }
+
+  G4double Xa = fCdensity/twoln10;
+  fAdensity = twoln10*(Xa-fX0density)
+              /std::pow((fX1density-fX0density),fMdensity);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+void G4IonisParamMat::ComputeFluctModel()
+{
+  // compute parameters for the energy loss fluctuation model
+
+  // need an 'effective Z' ?????
+  G4double Zeff = 0.;
+  for (size_t i=0;i<fMaterial->GetNumberOfElements();i++) 
+     Zeff += (fMaterial->GetFractionVector())[i]
+             *((*(fMaterial->GetElementVector()))[i]->GetZ());
+
+  if (Zeff > 2.) fF2fluct = 2./Zeff ;
+    else         fF2fluct = 0.;
+
+  fF1fluct         = 1. - fF2fluct;
+  fEnergy2fluct    = 10.*Zeff*Zeff*eV;
+  fLogEnergy2fluct = std::log(fEnergy2fluct);
+  fLogEnergy1fluct = (fLogMeanExcEnergy - fF2fluct*fLogEnergy2fluct)
+                     /fF1fluct;
+  fEnergy1fluct    = std::exp(fLogEnergy1fluct);
+  fEnergy0fluct    = 10.*eV;
+  fRateionexcfluct = 0.4;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+void G4IonisParamMat::ComputeIonParameters()
+{
+  // compute parameters for ion transport
+  // The aproximation from:
+  // J.F.Ziegler, J.P. Biersack, U. Littmark
+  // The Stopping and Range of Ions in Matter,
+  // Vol.1, Pergamon Press, 1985
+  // Fast ions or hadrons
+
+  static G4double vFermi[92] = {
+    1.0309,  0.15976, 0.59782, 1.0781,  1.0486,  1.0,     1.058,   0.93942, 0.74562, 0.3424,
+    0.45259, 0.71074, 0.90519, 0.97411, 0.97184, 0.89852, 0.70827, 0.39816, 0.36552, 0.62712,
+    0.81707, 0.9943,  1.1423,  1.2381,  1.1222,  0.92705, 1.0047,  1.2,     1.0661,  0.97411,
+    0.84912, 0.95,    1.0903,  1.0429,  0.49715, 0.37755, 0.35211, 0.57801, 0.77773, 1.0207,
+    1.029,   1.2542,  1.122,   1.1241,  1.0882,  1.2709,  1.2542,  0.90094, 0.74093, 0.86054,
+    0.93155, 1.0047,  0.55379, 0.43289, 0.32636, 0.5131,  0.695,   0.72591, 0.71202, 0.67413,
+    0.71418, 0.71453, 0.5911,  0.70263, 0.68049, 0.68203, 0.68121, 0.68532, 0.68715, 0.61884,
+    0.71801, 0.83048, 1.1222,  1.2381,  1.045,   1.0733,  1.0953,  1.2381,  1.2879,  0.78654,
+    0.66401, 0.84912, 0.88433, 0.80746, 0.43357, 0.41923, 0.43638, 0.51464, 0.73087, 0.81065,
+    1.9578,  1.0257} ;
+
+  static G4double lFactor[92] = {
+    1.0,  1.0,  1.1,  1.06, 1.01, 1.03, 1.04, 0.99, 0.95, 0.9,
+    0.82, 0.81, 0.83, 0.88, 1.0,  0.95, 0.97, 0.99, 0.98, 0.97,
+    0.98, 0.97, 0.96, 0.93, 0.91, 0.9,  0.88, 0.9,  0.9,  0.9,
+    0.9,  0.85, 0.9,  0.9,  0.91, 0.92, 0.9,  0.9,  0.9,  0.9,
+    0.9,  0.88, 0.9,  0.88, 0.88, 0.9,  0.9,  0.88, 0.9,  0.9,
+    0.9,  0.9,  0.96, 1.2,  0.9,  0.88, 0.88, 0.85, 0.9,  0.9,
+    0.92, 0.95, 0.99, 1.03, 1.05, 1.07, 1.08, 1.1,  1.08, 1.08,
+    1.08, 1.08, 1.09, 1.09, 1.1,  1.11, 1.12, 1.13, 1.14, 1.15,
+    1.17, 1.2,  1.18, 1.17, 1.17, 1.16, 1.16, 1.16, 1.16, 1.16,
+    1.16, 1.16} ;
+
+  // get elements in the actual material,
+  const G4ElementVector* theElementVector = fMaterial->GetElementVector() ;
+  const G4double* theAtomicNumDensityVector =
+                         fMaterial->GetAtomicNumDensityVector() ;
+  const G4int NumberOfElements = fMaterial->GetNumberOfElements() ;
+
+  //  loop for the elements in the material
+  //  to find out average values Z, vF, lF
+  G4double z = 0.0, vF = 0.0, lF = 0.0, norm = 0.0 ;
+
+  if( 1 == NumberOfElements ) {
+    z = fMaterial->GetZ() ;
+    G4int iz = G4int(z) - 1 ;
+    if(iz < 0) iz = 0 ;
+    else if(iz > 91) iz = 91 ;
+    vF   = vFermi[iz] ;
+    lF   = lFactor[iz] ;
+
+  } else {
+    for (G4int iel=0; iel<NumberOfElements; iel++)
+      {
+        const G4Element* element = (*theElementVector)[iel] ;
+        G4double z2 = element->GetZ() ;
+        const G4double weight = theAtomicNumDensityVector[iel] ;
+        norm += weight ;
+        z    += z2 * weight ;
+        G4int iz = G4int(z2) - 1 ;
+        if(iz < 0) iz = 0 ;
+        else if(iz > 91) iz =91 ;
+        vF   += vFermi[iz] * weight ;
+        lF   += lFactor[iz] * weight ;
+      }
+    z  /= norm ;
+    vF /= norm ;
+    lF /= norm ;
+  }  
+  fZeff        = z;
+  fLfactor     = lF;
+  fFermiEnergy = 25.*keV*vF*vF;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+void G4IonisParamMat::SetMeanExcitationEnergy(G4double value)
+{
+  if(value == fMeanExcitationEnergy || value <= 0.0) return;
+
+  if (G4NistManager::Instance()->GetVerbose() > 0) 
+    G4cout << "G4Material: Mean excitation energy is changed for "
+           << fMaterial->GetName()
+           << " Iold= " << fMeanExcitationEnergy/eV
+           << "eV; Inew= " << value/eV << " eV;"
+           << G4endl;
+
+  fMeanExcitationEnergy = value;
+  fLogMeanExcEnergy = std::log(value);
+  ComputeDensityEffect();
+  ComputeFluctModel();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4double G4IonisParamMat::FindMeanExcitationEnergy(const G4String& chFormula)
+{
+
+  // The data on mean excitation energy for compaunds
+  // from "Stopping Powers for Electrons and Positrons"
+  // ICRU Report N#37, 1984  (energy in eV)
+
+  const size_t numberOfMolecula = 79 ;
+  
+  static G4String name[numberOfMolecula] = {
+
+    // gas
+    "NH_3",       "C_4H_10",    "CO_2",       "C_2H_6",      "C_7H_16",
+    "C_6H_14",    "CH_4",       "NO",         "N_2O",        "C_8H_18",
+    "C_5H_12",    "C_3H_8",     "H_2O-Gas", 
+
+    // liquid
+    "C_3H_6O",    "C_6H_5NH_2",  "C_6H_6",    "C_4H_9OH",    "CCl_4",    
+    "C_6H_5Cl",   "CHCl_3",      "C_6H_12",   "C_6H_4Cl_2",  "C_4Cl_2H_8O", 
+    "C_2Cl_2H_4", "(C_2H_5)_2O", "C_2H_5OH",  "C_3H_5(OH)_3","C_7H_16",     
+    "C_6H_14",    "CH_3OH",      "C_6H_5NO_2","C_5H_12",     "C_3H_7OH",    
+    "C_5H_5N",    "C_8H_8",      "C_2Cl_4",   "C_7H_8",      "C_2Cl_3H",    
+    "H_2O",       "C_8H_10",
+
+    //solid
+    "C_5H_5N_5",  "C_5H_5N_5O",  "(C_6H_11NO)-nylon",  "C_25H_52", 
+    "(C_2H_4)-Polyethylene",     "(C_5H_8O-2)-Polymethil_Methacrylate",   
+    "(C_8H_8)-Polystyrene",      "A-150-tissue",       "Al_2O_3",  "CaF_2", 
+    "LiF",        "Photo_Emulsion",  "(C_2F_4)-Teflon",  "SiO_2"     
+
+  } ;
+    
+  static G4double meanExcitation[numberOfMolecula] = {
+
+    53.7,   48.3,  85.0,  45.4,  49.2,
+    49.1,   41.7,  87.8,  84.9,  49.5,
+    48.2,   47.1,  71.6,
+
+    64.2,   66.2,  63.4,  59.9,  166.3,
+    89.1,  156.0,  56.4, 106.5,  103.3, 
+   111.9,   60.0,  62.9,  72.6,   54.4,  
+    54.0,  67.6,   75.8,  53.6,   61.1,  
+    66.2,  64.0,  159.2,  62.5,  148.1,  
+    75.0,  61.8,
+
+    71.4,  75.0,   63.9,  48.3,   57.4,
+    74.0,  68.7,   65.1, 145.2,  166.,
+    94.0, 331.0,   99.1, 139.2 
+
+  } ;
+
+  G4double x = fMeanExcitationEnergy;
+
+  for(size_t i=0; i<numberOfMolecula; i++) {
+    if(chFormula == name[i]) {
+      x = meanExcitation[i]*eV;
+      break;
+    }
+  }
+  return x;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4IonisParamMat::~G4IonisParamMat()
+{
+  if (fShellCorrectionVector) delete [] fShellCorrectionVector;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4IonisParamMat::G4IonisParamMat(const G4IonisParamMat& right)
+{
+  *this = right;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+const G4IonisParamMat& G4IonisParamMat::operator=(const G4IonisParamMat& right)
+{
+  if (this != &right)
+    {
+      fMaterial                 = right.fMaterial;
+      fMeanExcitationEnergy     = right.fMeanExcitationEnergy;
+      fLogMeanExcEnergy         = right.fLogMeanExcEnergy;
+      if (fShellCorrectionVector) delete [] fShellCorrectionVector;      
+      fShellCorrectionVector    = new G4double[3];             
+      fShellCorrectionVector[0] = right.fShellCorrectionVector[0];
+      fShellCorrectionVector[1] = right.fShellCorrectionVector[1];
+      fShellCorrectionVector[2] = right.fShellCorrectionVector[2];
+      fTaul                     = right.fTaul;
+      fCdensity                 = right.fCdensity;
+      fMdensity                 = right.fMdensity;
+      fAdensity                 = right.fAdensity;
+      fX0density                = right.fX0density;
+      fX1density                = right.fX1density;
+      fF1fluct                  = right.fF1fluct;
+      fF2fluct                  = right.fF2fluct;
+      fEnergy1fluct             = right.fEnergy1fluct;
+      fLogEnergy1fluct          = right.fLogEnergy1fluct;      
+      fEnergy2fluct             = right.fEnergy2fluct;
+      fLogEnergy2fluct          = right.fLogEnergy2fluct;      
+      fEnergy0fluct             = right.fEnergy0fluct;
+      fRateionexcfluct          = right.fRateionexcfluct;
+     } 
+  return *this;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4int G4IonisParamMat::operator==(const G4IonisParamMat& right) const
+{
+  return (this == (G4IonisParamMat*) &right);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4int G4IonisParamMat::operator!=(const G4IonisParamMat& right) const
+{
+  return (this != (G4IonisParamMat*) &right);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
Index: trunk/source/materials/src/G4Isotope.cc
===================================================================
--- trunk/source/materials/src/G4Isotope.cc	(revision 822)
+++ trunk/source/materials/src/G4Isotope.cc	(revision 822)
@@ -0,0 +1,212 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4Isotope.cc,v 1.21 2007/10/18 11:14:33 vnivanch Exp $
+// GEANT4 tag $Name:  $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// 26.06.96: Code uses operators (+=, *=, ++, -> etc.) correctly, P. Urban
+// 29.01.97: Forbidden to create Isotope with Z<1 or N<Z, M.Maire
+// 03.05.01: flux.precision(prec) at begin/end of operator<<
+// 17.07.01: migration to STL. M. Verderi.
+// 13.09.01: suppression of the data member fIndexInTable
+// 14.09.01: fCountUse: nb of elements which use this isotope 
+// 26.02.02: fIndexInTable renewed
+// 17.10.06: if fA is not defined in the constructor, it is computed from
+//           NistManager v.Ivanchenko
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "G4Isotope.hh"
+#include "G4NistManager.hh"
+#include <iomanip>
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4IsotopeTable G4Isotope::theIsotopeTable;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// Create an isotope
+//
+G4Isotope::G4Isotope(const G4String& Name, G4int Z, G4int N, G4double A)
+: fName(Name), fZ(Z), fN(N), fA(A), fCountUse(0)
+{
+  if (Z<1) G4Exception
+    (" ERROR! It is not allowed to create an Isotope with Z < 1" );
+
+  if (N<Z) G4Exception
+    (" ERROR! Attempt to create an Isotope with N < Z !!!" );
+    
+  if (A<=DBL_MIN)
+    fA = (G4NistManager::Instance()->GetIsotopeMass(Z,N))*g/(mole*amu_c2);  
+
+  theIsotopeTable.push_back(this);
+  fIndexInTable = theIsotopeTable.size() - 1;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// Fake default constructor - sets only member data and allocates memory
+//                            for usage restricted to object persistency
+
+G4Isotope::G4Isotope(__void__&)
+  : fZ(0), fN(0), fA(0), fCountUse(0)
+{
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4Isotope::~G4Isotope()
+{
+  /*
+  if (fCountUse != 0)
+    G4cout << "--> warning from ~G4Isotope(): the isotope " << fName
+           << " is still referenced by " << fCountUse << " G4Elements \n" 
+	   << G4endl;
+  */     
+  //remove this isotope from theIsotopeTable
+  theIsotopeTable[fIndexInTable] = 0;
+}  
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4Isotope::G4Isotope(G4Isotope& right)
+{
+  *this = right;
+  
+  //insert this new isotope in table
+  theIsotopeTable.push_back(this);
+  fIndexInTable = theIsotopeTable.size() - 1;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4Isotope & G4Isotope::operator=(const G4Isotope& right)
+{
+  if (this != &right)
+  {
+    fName = right.fName;
+    fZ = right.fZ;
+    fN = right.fN;
+    fA = right.fA;
+  }
+  return *this;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4int G4Isotope::operator==(const G4Isotope &right) const
+{
+  return (this == (G4Isotope *) &right);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4int G4Isotope::operator!=(const G4Isotope &right) const
+{
+  return (this != (G4Isotope *) &right);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+std::ostream& operator<<(std::ostream& flux, G4Isotope* isotope)
+{
+  std::ios::fmtflags mode = flux.flags();
+  flux.setf(std::ios::fixed,std::ios::floatfield);
+  G4long prec = flux.precision(3);
+    
+  flux
+    << " Isotope: " << std::setw(5) << isotope->fName 
+    << "   Z = " << std::setw(2)    << isotope->fZ 
+    << "   N = " << std::setw(3)    << isotope->fN
+    << "   A = " << std::setw(6) << std::setprecision(2) 
+    << (isotope->fA)/(g/mole) << " g/mole";
+
+  flux.precision(prec);       
+  flux.setf(mode,std::ios::floatfield);       
+  return flux;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+ std::ostream& operator<<(std::ostream& flux, G4Isotope& isotope)
+{
+  flux << &isotope;        
+  return flux;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+     
+std::ostream& operator<<(std::ostream& flux, G4IsotopeTable IsotopeTable)
+{
+ //Dump info for all known isotopes
+   flux 
+     << "\n***** Table : Nb of isotopes = " << IsotopeTable.size() 
+     << " *****\n" << G4endl;
+        
+   for (size_t i=0; i<IsotopeTable.size(); i++)
+     flux << IsotopeTable[i] << G4endl;
+
+   return flux;
+}
+      
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+const G4IsotopeTable* G4Isotope::GetIsotopeTable()
+{
+  return &theIsotopeTable;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+size_t G4Isotope::GetNumberOfIsotopes()
+{
+  return theIsotopeTable.size();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4Isotope* G4Isotope::GetIsotope(G4String isotopeName, G4bool warning)
+{  
+  // search the isotope by its name 
+  for (size_t J=0 ; J<theIsotopeTable.size() ; J++)
+   {
+    if (theIsotopeTable[J]->GetName() == isotopeName)
+      return theIsotopeTable[J];
+   }
+   
+  // the isotope does not exist in the table
+  if (warning) {
+  G4cout << "\n---> warning from G4Isotope::GetIsotope(). The isotope: "
+         << isotopeName << " does not exist in the table. Return NULL pointer."
+	 << G4endl;
+  }     
+  return 0;          
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Index: trunk/source/materials/src/G4MPVEntry.cc
===================================================================
--- trunk/source/materials/src/G4MPVEntry.cc	(revision 822)
+++ trunk/source/materials/src/G4MPVEntry.cc	(revision 822)
@@ -0,0 +1,127 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4MPVEntry.cc,v 1.7 2006/06/29 19:12:49 gunter Exp $
+// GEANT4 tag $Name:  $
+//
+// 
+////////////////////////////////////////////////////////////////////////
+// G4MPVEntry Class Implementation
+////////////////////////////////////////////////////////////////////////
+//
+// File:        G4MPVEntry.cc
+// Version:     1.0
+// Created:     1996-02-08
+// Author:      Juliet Armstrong
+// Updated:     1997-03-25 by Peter Gumplinger
+//              > cosmetics (only)
+// mail:        gum@triumf.ca
+//
+////////////////////////////////////////////////////////////////////////
+
+#include "G4MPVEntry.hh"
+
+/////////////////////////
+// Class Implementation
+/////////////////////////
+
+        //////////////
+        // Operators
+        //////////////
+
+// Overload the == operator
+// ------------------------
+// Well defined == semantics required by G4RWTPtrSortedVector
+//
+G4bool G4MPVEntry::operator ==(const G4MPVEntry &right) const  
+{
+	if (thePhotonMomentum == right.thePhotonMomentum) 
+		return true;
+	else
+		return false; 
+}
+
+// Overload the < operator
+// -----------------------
+// Well defined < semantics required by G4RWTPtrSortedVector
+//
+G4bool G4MPVEntry::operator <(const G4MPVEntry &right) const  
+{
+	if (thePhotonMomentum < right.thePhotonMomentum) 
+		return true;
+	else
+		return false;
+}
+
+// Overload the = operator
+// -----------------------
+// Well defined = semantics required by G4RWTPtrSortedVector
+//
+G4MPVEntry& G4MPVEntry::operator =(const G4MPVEntry& right)
+{
+        if (this == &right) return *this;
+	
+        thePhotonMomentum = right.thePhotonMomentum;
+        theProperty = right.theProperty;
+        return *this;
+}
+
+        /////////////////
+        // Constructors
+        /////////////////
+
+G4MPVEntry::G4MPVEntry(G4double aPhotonMomentum, G4double aProperty)
+{
+        thePhotonMomentum = aPhotonMomentum;
+        theProperty = aProperty;
+}
+
+G4MPVEntry::G4MPVEntry(const G4MPVEntry &right)
+{
+        thePhotonMomentum = right.thePhotonMomentum;
+        theProperty = right.theProperty;
+}
+
+
+        ////////////////
+        // Destructors
+        ////////////////
+
+G4MPVEntry::~G4MPVEntry(){}
+
+        ////////////
+        // Methods
+        ////////////
+
+void G4MPVEntry::DumpEntry()
+{
+	G4cout << "(" 
+	     << thePhotonMomentum 
+	     << ", " 
+	     << theProperty
+ 	     << ")" 
+	     << G4endl;	
+}
Index: trunk/source/materials/src/G4Material.cc
===================================================================
--- trunk/source/materials/src/G4Material.cc	(revision 822)
+++ trunk/source/materials/src/G4Material.cc	(revision 822)
@@ -0,0 +1,595 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4Material.cc,v 1.38.2.1 2008/04/28 07:24:36 gcosmo Exp $
+// GEANT4 tag $Name: geant4-09-01-patch-02 $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//
+// 26-06-96, Code uses operators (+=, *=, ++, -> etc.) correctly, P. Urban
+// 10-07-96, new data members added by L.Urban
+// 12-12-96, new data members added by L.Urban
+// 20-01-97, aesthetic rearrangement. RadLength calculation modified.
+//           Data members Zeff and Aeff REMOVED (i.e. passed to the Elements).
+//           (local definition of Zeff in DensityEffect and FluctModel...)
+//           Vacuum defined as a G4State. Mixture flag removed, M.Maire. 
+// 29-01-97, State=Vacuum automatically set density=0 in the contructors.
+//           Subsequent protections have been put in the calculation of 
+//           MeanExcEnergy, ShellCorrectionVector, DensityEffect, M.Maire.
+// 11-02-97, ComputeDensityEffect() rearranged, M.Maire.
+// 20-03-97, corrected initialization of pointers, M.Maire.
+// 28-05-98, the kState=kVacuum has been removed.
+//           automatic check for a minimal density, M.Maire 
+// 12-06-98, new method AddMaterial() allowing mixture of materials, M.Maire  
+// 09-07-98, ionisation parameters removed from the class, M.Maire
+// 05-10-98, change names: NumDensity -> NbOfAtomsPerVolume
+// 18-11-98, new interface to SandiaTable
+// 19-01-99  enlarge tolerance on test of coherence of gas conditions
+// 19-07-99, Constructors with chemicalFormula added by V.Ivanchenko
+// 16-01-01, Nuclear interaction length, M.Maire
+// 12-03-01, G4bool fImplicitElement;
+//           copy constructor and assignement operator revised (mma)
+// 03-05-01, flux.precision(prec) at begin/end of operator<<
+// 17-07-01, migration to STL. M. Verderi.
+// 14-09-01, Suppression of the data member fIndexInTable
+// 26-02-02, fIndexInTable renewed
+// 16-04-02, G4Exception put in constructor with chemical formula
+// 06-05-02, remove the check of the ideal gas state equation
+// 06-08-02, remove constructors with chemical formula (mma)
+// 22-01-04, proper STL handling of theElementVector (Hisaya)
+// 30-03-05, warning in GetMaterial(materialName) 
+// 09-03-06, minor change of printout (V.Ivanchenko) 
+// 10-01-07, compute fAtomVector in the case of mass fraction (V.Ivanchenko) 
+// 27-07-07, improve destructor (V.Ivanchenko) 
+// 18-10-07, move definition of material index to InitialisePointers (V.Ivanchenko) 
+// 
+
+// 
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "G4Material.hh"
+#include "G4UnitsTable.hh"
+#include <iomanip>
+
+
+G4MaterialTable G4Material::theMaterialTable;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// Constructor to create a material from scratch
+
+G4Material::G4Material(const G4String& name, G4double z,
+                       G4double a, G4double density, 
+                       G4State state, G4double temp, G4double pressure)
+  : fName(name)		       
+{
+  InitializePointers();
+    
+  if (density < universe_mean_density)
+     { G4cerr << "--- Warning from G4Material::G4Material()"
+              << " define a material with density=0 is not allowed. \n"
+              << " The material " << name << " will be constructed with the"
+              << " default minimal density: " << universe_mean_density/(g/cm3) 
+              << "g/cm3" << G4endl;
+       density = universe_mean_density;
+     } 
+
+  fDensity  = density;
+  fState    = state;
+  fTemp     = temp;
+  fPressure = pressure;
+  fChemicalFormula = " ";
+
+  // Initialize theElementVector allocating one
+  // element corresponding to this material
+  maxNbComponents        = fNumberOfComponents = fNumberOfElements = 1;
+  fImplicitElement       = true;
+  theElementVector       = new G4ElementVector();
+  theElementVector->push_back( new G4Element(name, " ", z, a));  
+  fMassFractionVector    = new G4double[1];
+  fMassFractionVector[0] = 1. ;
+  
+  (*theElementVector)[0] -> increaseCountUse();
+  
+  if (fState == kStateUndefined)
+    {
+     if (fDensity > kGasThreshold) fState = kStateSolid;
+     else                          fState = kStateGas;
+    }
+
+  ComputeDerivedQuantities();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// Constructor to create a material from a List of constituents
+// (elements and/or materials)  added with AddElement or AddMaterial
+
+G4Material::G4Material(const G4String& name, G4double density,
+                       G4int nComponents,
+                       G4State state, G4double temp, G4double pressure)
+  : fName(name)		       
+{
+  InitializePointers();
+    
+  if (density < universe_mean_density)
+    {G4cerr << "--- Warning from G4Material::G4Material()"
+            << " define a material with density=0 is not allowed. \n"
+            << " The material " << name << " will be constructed with the"
+            << " default minimal density: " << universe_mean_density/(g/cm3) 
+            << "g/cm3" << G4endl;
+     density = universe_mean_density;
+    }
+        
+  fDensity  = density;
+  fState    = state;
+  fTemp     = temp;
+  fPressure = pressure;
+  fChemicalFormula = " ";
+    
+  maxNbComponents     = nComponents;
+  fNumberOfComponents = fNumberOfElements = 0;
+  fImplicitElement    = false;
+  theElementVector    = new G4ElementVector();
+  theElementVector->reserve(maxNbComponents);  
+    
+  if (fState == kStateUndefined) 
+    {
+      if (fDensity > kGasThreshold) fState = kStateSolid;
+      else                          fState = kStateGas;
+    }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// Fake default constructor - sets only member data and allocates memory
+//                            for usage restricted to object persistency
+
+G4Material::G4Material(__void__&)
+  : fNumberOfComponents(0), fNumberOfElements(0), theElementVector(0), 
+    fImplicitElement(false), fMassFractionVector(0), fAtomsVector(0), 
+    fMaterialPropertiesTable(0), fIndexInTable(0), 
+    VecNbOfAtomsPerVolume(0), fIonisation(0), fSandiaTable(0)
+{
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// AddElement -- composition by atom count
+
+void G4Material::AddElement(G4Element* element, G4int nAtoms)
+{   
+  // initialization
+  if ( fNumberOfElements == 0 ) {
+     fAtomsVector        = new G4int   [maxNbComponents];
+     fMassFractionVector = new G4double[maxNbComponents];
+  }
+
+  // filling ...
+  if ( G4int(fNumberOfElements) < maxNbComponents ) {
+     theElementVector->push_back(element);     
+     fAtomsVector       [fNumberOfElements] = nAtoms;
+     fNumberOfComponents = ++fNumberOfElements;
+     element->increaseCountUse();
+  }
+  else
+     G4Exception
+    ("ERROR!!! - Attempt to add more than the declared number of elements.");
+
+  // filled.
+  if ( G4int(fNumberOfElements) == maxNbComponents ) {     
+     // compute proportion by mass
+     size_t i=0;
+     G4double Zmol(0.), Amol(0.);
+     for (i=0;i<fNumberOfElements;i++) {
+       Zmol +=  fAtomsVector[i]*(*theElementVector)[i]->GetZ();
+       Amol +=  fAtomsVector[i]*(*theElementVector)[i]->GetA();
+     }
+     for (i=0;i<fNumberOfElements;i++) {
+       fMassFractionVector[i] = fAtomsVector[i]
+	                       *(*theElementVector)[i]->GetA()/Amol;
+     }
+
+     ComputeDerivedQuantities();
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// AddElement -- composition by fraction of mass
+
+void G4Material::AddElement(G4Element* element, G4double fraction)
+{
+  // initialization
+  if (fNumberOfComponents == 0) {
+    fMassFractionVector = new G4double[50];
+    fAtomsVector        = new G4int   [50];
+  }
+
+  // filling ...
+  if (G4int(fNumberOfComponents) < maxNbComponents) {
+      size_t el = 0;
+      while ((el<fNumberOfElements)&&(element!=(*theElementVector)[el])) el++;
+      if (el<fNumberOfElements) fMassFractionVector[el] += fraction;
+      else {
+	theElementVector->push_back(element); 
+        fMassFractionVector[el] = fraction;
+        fNumberOfElements++;
+	element->increaseCountUse();
+      }
+      fNumberOfComponents++;  
+  }
+  else
+     G4Exception
+    ("ERROR!!! - Attempt to add more than the declared number of components.");
+    
+  // filled.
+  if (G4int(fNumberOfComponents) == maxNbComponents) {
+
+     size_t i=0;
+     G4double Zmol(0.), Amol(0.);
+     // check sum of weights -- OK?
+     G4double wtSum(0.0);
+     for (i=0;i<fNumberOfElements;i++) {
+       wtSum += fMassFractionVector[i];
+       Zmol +=  fMassFractionVector[i]*(*theElementVector)[i]->GetZ();
+       Amol +=  fMassFractionVector[i]*(*theElementVector)[i]->GetA();
+     }
+     if (std::abs(1.-wtSum) > perThousand) {
+       G4cerr << "WARNING !! for " << fName << " sum of fractional masses "
+              <<  wtSum << " is not 1 - results may be wrong" 
+              << G4endl;
+     }
+     for (i=0;i<fNumberOfElements;i++) {
+       fAtomsVector[i] = 
+	 G4int(fMassFractionVector[i]*Amol/(*theElementVector)[i]->GetA()+0.5);
+     }
+     
+     ComputeDerivedQuantities();
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// AddMaterial -- composition by fraction of mass
+
+void G4Material::AddMaterial(G4Material* material, G4double fraction)
+{
+  // initialization
+  if (fNumberOfComponents == 0) {
+    fMassFractionVector = new G4double[50];
+    fAtomsVector        = new G4int   [50];
+  }
+
+  // filling ...
+  if (G4int(fNumberOfComponents) < maxNbComponents) {
+     for (size_t elm=0; elm < material->GetNumberOfElements(); elm++)
+       {
+        G4Element* element = (*(material->GetElementVector()))[elm];
+        size_t el = 0;
+        while ((el<fNumberOfElements)&&(element!=(*theElementVector)[el])) el++;
+        if (el < fNumberOfElements) fMassFractionVector[el] += fraction
+                                          *(material->GetFractionVector())[elm];
+        else {
+	  theElementVector->push_back(element); 
+          fMassFractionVector[el] = fraction
+	                                  *(material->GetFractionVector())[elm];
+          fNumberOfElements++;
+	  element->increaseCountUse();
+        }
+       } 
+      fNumberOfComponents++;  
+  }
+  else
+     G4Exception
+    ("ERROR!!! - Attempt to add more than the declared number of components.");
+    
+  // filled.
+  if (G4int(fNumberOfComponents) == maxNbComponents) {
+     size_t i=0;
+     G4double Zmol(0.), Amol(0.);
+     // check sum of weights -- OK?
+     G4double wtSum(0.0);
+     for (i=0;i<fNumberOfElements;i++) {
+       wtSum += fMassFractionVector[i];
+       Zmol +=  fMassFractionVector[i]*(*theElementVector)[i]->GetZ();
+       Amol +=  fMassFractionVector[i]*(*theElementVector)[i]->GetA();
+     }
+     if (std::abs(1.-wtSum) > perThousand) {
+       G4cerr << "WARNING !! for " << fName << " sum of fractional masses "
+              <<  wtSum << " is not 1 - results may be wrong" 
+              << G4endl;
+     }
+     for (i=0;i<fNumberOfElements;i++) {
+       fAtomsVector[i] = 
+	 G4int(fMassFractionVector[i]*Amol/(*theElementVector)[i]->GetA()+0.5);
+     }
+     
+     ComputeDerivedQuantities();
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4Material::ComputeDerivedQuantities()
+{
+  // Header routine to compute various properties of material.
+  // 
+
+  // Number of atoms per volume (per element), total nb of electrons per volume
+  G4double Zi, Ai;
+  TotNbOfAtomsPerVolume = 0.;
+  if (VecNbOfAtomsPerVolume) delete [] VecNbOfAtomsPerVolume;
+  VecNbOfAtomsPerVolume = new G4double[fNumberOfElements];
+  TotNbOfElectPerVolume = 0.;
+  for (size_t i=0;i<fNumberOfElements;i++) {
+     Zi = (*theElementVector)[i]->GetZ();
+     Ai = (*theElementVector)[i]->GetA();
+     VecNbOfAtomsPerVolume[i] = Avogadro*fDensity*fMassFractionVector[i]/Ai;
+     TotNbOfAtomsPerVolume += VecNbOfAtomsPerVolume[i];
+     TotNbOfElectPerVolume += VecNbOfAtomsPerVolume[i]*Zi;
+  }
+        
+  ComputeRadiationLength();
+  ComputeNuclearInterLength();
+
+  if (fIonisation) delete fIonisation;
+  fIonisation  = new G4IonisParamMat(this);
+  if (fSandiaTable) delete fSandiaTable;
+  fSandiaTable = new G4SandiaTable(this);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4Material::ComputeRadiationLength()
+{
+  G4double radinv = 0.0 ;
+  for (size_t i=0;i<fNumberOfElements;i++) {
+     radinv += VecNbOfAtomsPerVolume[i]*((*theElementVector)[i]->GetfRadTsai());
+   }
+  fRadlen = (radinv <= 0.0 ? DBL_MAX : 1./radinv);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4Material::ComputeNuclearInterLength()
+{
+  const G4double lambda0 = 35*g/cm2;
+  G4double NILinv = 0.0;
+  for (size_t i=0;i<fNumberOfElements;i++) {
+     NILinv +=
+     VecNbOfAtomsPerVolume[i]*std::pow(((*theElementVector)[i]->GetN()),0.6666667); 
+   }
+  NILinv *= amu/lambda0; 
+  fNuclInterLen = (NILinv <= 0.0 ? DBL_MAX : 1./NILinv);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4Material::InitializePointers()
+{
+  theElementVector         = 0;
+  fMassFractionVector      = 0;
+  fAtomsVector             = 0;
+  fMaterialPropertiesTable = 0;
+    
+  VecNbOfAtomsPerVolume    = 0;
+  fIonisation              = 0;
+  fSandiaTable             = 0;
+
+  // Store in the static Table of Materials
+  theMaterialTable.push_back(this);
+  fIndexInTable = theMaterialTable.size() - 1;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+const G4MaterialTable* G4Material::GetMaterialTable()
+{
+  return &theMaterialTable;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+size_t G4Material::GetNumberOfMaterials()
+{
+  return theMaterialTable.size();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4Material* G4Material::GetMaterial(G4String materialName, G4bool warning)
+{  
+  // search the material by its name 
+  for (size_t J=0 ; J<theMaterialTable.size() ; J++)
+   {
+    if (theMaterialTable[J]->GetName() == materialName)
+       return theMaterialTable[J];
+   }
+   
+  // the material does not exist in the table
+  if (warning) {
+  G4cout << "\n---> warning from G4Material::GetMaterial(). The material: "
+         << materialName << " does not exist in the table. Return NULL pointer."
+	 << G4endl;
+  }	 
+  return 0;          
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4Material::G4Material(const G4Material& right)
+{
+  InitializePointers();
+  *this = right;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4Material::~G4Material()
+{
+  //  G4cout << "### Destruction of material " << fName << " started" <<G4endl;
+  if (theElementVector)       delete    theElementVector;
+  if (fMassFractionVector)    delete [] fMassFractionVector;
+  if (fAtomsVector)           delete [] fAtomsVector;
+  if (VecNbOfAtomsPerVolume)  delete [] VecNbOfAtomsPerVolume;
+  if (fIonisation)            delete    fIonisation;
+  if (fSandiaTable)           delete    fSandiaTable;
+  
+  // Remove this material from theMaterialTable.
+  //
+  theMaterialTable[fIndexInTable] = 0;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+const G4Material& G4Material::operator=(const G4Material& right)
+{
+  if (this != &right)
+    {
+      fName                    = right.fName;
+      fChemicalFormula         = right.fChemicalFormula;
+      fDensity                 = right.fDensity;
+      fState                   = right.fState;
+      fTemp                    = right.fTemp;
+      fPressure                = right.fPressure;
+           
+      if (fImplicitElement)    delete    ((*theElementVector)[0]);      
+      if (theElementVector)    delete    theElementVector;
+      if (fMassFractionVector) delete [] fMassFractionVector;
+      if (fAtomsVector)        delete [] fAtomsVector;
+      
+      maxNbComponents          = right.maxNbComponents;
+      fNumberOfComponents      = right.fNumberOfComponents;
+      fNumberOfElements        = right.fNumberOfElements;     
+      fImplicitElement         = right.fImplicitElement;
+      
+      if (fImplicitElement) {
+        G4double z = (*right.theElementVector)[0]->GetZ();
+	G4double a = (*right.theElementVector)[0]->GetA();
+        theElementVector          = new G4ElementVector(1,(G4Element*)0);
+	(*theElementVector)[0]    = new G4Element(fName," ",z,a);
+	fMassFractionVector       = new G4double[1];
+	fMassFractionVector[0]    = 1.;
+      } else {		
+        theElementVector       = new G4ElementVector(fNumberOfElements,0);
+        fMassFractionVector    = new G4double[fNumberOfElements];     
+        for (size_t i=0; i<fNumberOfElements; i++) {
+           (*theElementVector)[i]= (*right.theElementVector)[i];
+           fMassFractionVector[i]= right.fMassFractionVector[i];
+        }
+      }
+      
+      if (right.fAtomsVector) { 
+        fAtomsVector       = new G4int[fNumberOfElements];
+        for (size_t i=0; i<fNumberOfElements; i++)              
+           fAtomsVector[i] = right.fAtomsVector[i];
+      }
+      	   
+      fMaterialPropertiesTable = right.fMaterialPropertiesTable;
+      
+      ComputeDerivedQuantities();      
+    } 
+  return *this;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4int G4Material::operator==(const G4Material& right) const
+{
+  return (this == (G4Material *) &right);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4int G4Material::operator!=(const G4Material& right) const
+{
+  return (this != (G4Material *) &right);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+
+std::ostream& operator<<(std::ostream& flux, G4Material* material)
+{
+  std::ios::fmtflags mode = flux.flags();
+  flux.setf(std::ios::fixed,std::ios::floatfield);
+  G4long prec = flux.precision(3);
+  
+  flux
+    << " Material: "      << std::setw(8) <<  material->fName
+    << " " << material->fChemicalFormula << " "
+    << "  density: "     << std::setw(6) << std::setprecision(3)  
+    << G4BestUnit(material->fDensity,"Volumic Mass") 
+    << "  RadL: "        << std::setw(7)  << std::setprecision(3)  
+    << G4BestUnit(material->fRadlen,"Length")
+    << "  Imean: "       << std::setw(7)  << std::setprecision(3)  
+    << G4BestUnit(material->GetIonisation()->GetMeanExcitationEnergy(),"Energy");
+  if(material->fState == kStateGas)
+    flux
+      << "  temperature: " << std::setw(6) << std::setprecision(2)  
+      << (material->fTemp)/kelvin << " K"
+      << "  pressure: "    << std::setw(6) << std::setprecision(2)   
+      << (material->fPressure)/atmosphere << " atm";
+
+  for (size_t i=0; i<material->fNumberOfElements; i++)
+    flux 
+      << "\n   ---> " << (*(material->theElementVector))[i] 
+      << "  ElmMassFraction: " << std::setw(6)<< std::setprecision(2) 
+      << (material->fMassFractionVector[i])/perCent << " %" 
+      << "  ElmAbundance "     << std::setw(6)<< std::setprecision(2) 
+      << 100*(material->VecNbOfAtomsPerVolume[i])/(material->TotNbOfAtomsPerVolume)
+      << " %";
+
+  flux.precision(prec);    
+  flux.setf(mode,std::ios::floatfield);
+            
+  return flux;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+ std::ostream& operator<<(std::ostream& flux, G4Material& material)
+{
+  flux << &material;        
+  return flux;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+     
+std::ostream& operator<<(std::ostream& flux, G4MaterialTable MaterialTable)
+{
+ //Dump info for all known materials
+   flux << "\n***** Table : Nb of materials = " << MaterialTable.size() 
+        << " *****\n" << G4endl;
+        
+   for (size_t i=0; i<MaterialTable.size(); i++) flux << MaterialTable[i] 
+                                                       << G4endl << G4endl;
+
+   return flux;
+}      
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Index: trunk/source/materials/src/G4MaterialPropertiesTable.cc
===================================================================
--- trunk/source/materials/src/G4MaterialPropertiesTable.cc	(revision 822)
+++ trunk/source/materials/src/G4MaterialPropertiesTable.cc	(revision 822)
@@ -0,0 +1,287 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4MaterialPropertiesTable.cc,v 1.19 2007/04/25 15:46:55 gum Exp $
+// GEANT4 tag $Name:  $
+//
+// 
+////////////////////////////////////////////////////////////////////////
+// G4MaterialPropertiesTable Implementation
+////////////////////////////////////////////////////////////////////////
+//
+// File: G4MaterialPropertiesTable.cc 
+// Version:     1.0
+// Created:     1996-02-08
+// Author:      Juliet Armstrong
+// Updated:     2005-05-12 add SetGROUPVEL(), courtesy of
+//              Horton-Smith (bug report #741), by P. Gumplinger
+//              2002-11-05 add named material constants by P. Gumplinger
+//              1999-11-05 Migration from G4RWTPtrHashDictionary to STL
+//                         by John Allison
+//              1997-03-26 by Peter Gumplinger
+//              > cosmetics (only)
+// mail:        gum@triumf.ca
+//
+////////////////////////////////////////////////////////////////////////
+
+#include "globals.hh"
+#include "G4MaterialPropertiesTable.hh"
+
+        /////////////////
+        // Constructors
+        /////////////////
+
+G4MaterialPropertiesTable::G4MaterialPropertiesTable() {}
+
+        ////////////////
+        // Destructors
+        ////////////////
+
+G4MaterialPropertiesTable::~G4MaterialPropertiesTable()
+{
+        MPTiterator i;
+        for (i = MPT.begin(); i != MPT.end(); ++i) {
+            delete (*i).second;
+        }
+        MPT.clear();
+        MPTC.clear();
+}
+
+        ////////////
+        // Methods
+        ////////////
+
+void G4MaterialPropertiesTable::AddConstProperty(const char     *key,
+                                                 G4double PropertyValue)
+{
+//      Provides a way of adding a constant property to the Mataerial Properties
+//      Table given a key
+
+        MPTC [G4String(key)] = PropertyValue;
+
+}
+
+void G4MaterialPropertiesTable::AddProperty(const char     *key,
+					    G4double *PhotonMomenta,
+					    G4double *PropertyValues,
+					    G4int     NumEntries)
+{
+//      Privides a way of adding a property to the Material Properties
+//      Table given a pair of numbers and a key
+
+	G4MaterialPropertyVector *mpv = 
+			new G4MaterialPropertyVector(PhotonMomenta, 
+					  	     PropertyValues, 
+						     NumEntries);
+	MPT [G4String(key)] = mpv;
+}
+
+void G4MaterialPropertiesTable::AddProperty(const char *key,
+					    G4MaterialPropertyVector *mpv)
+{
+//	Provides a way of adding a property to the Material Properties
+//	Table given an G4MaterialPropertyVector Reference and a key 
+
+	MPT [G4String(key)] = mpv;
+} 
+
+void G4MaterialPropertiesTable::RemoveConstProperty(const char *key)
+{
+        MPTC.erase(G4String(key));
+}
+
+void G4MaterialPropertiesTable::RemoveProperty(const char *key)
+{
+	MPT.erase(G4String(key));
+}
+
+G4double G4MaterialPropertiesTable::GetConstProperty(const char *key)
+{
+//      Returns the constant material property corresponding to a key
+
+        MPTCiterator j;
+        j = MPTC.find(G4String(key));
+        if ( j != MPTC.end() ) {
+           return j->second;
+        } 
+        else {
+           G4Exception("G4MaterialPropertiesTable::GetConstProperty ==> "
+                       "Constant Material Property not found.");
+           return G4double(0.0);
+        }
+}
+
+G4bool G4MaterialPropertiesTable::ConstPropertyExists(const char *key)
+{
+//      Return true if a const property 'key' exists
+
+        MPTCiterator j;
+        j = MPTC.find(G4String(key));
+        if ( j != MPTC.end() ) {
+           return true;
+        } 
+        else {
+           return false;
+        }
+}
+
+G4MaterialPropertyVector* G4MaterialPropertiesTable::GetProperty(const char *key)
+{
+//      Returns a Material Property Vector corresponding to a key
+
+        if(MPT[G4String(key)] != 0) {
+          return MPT[G4String(key)];
+        }else{
+          if(G4String(key) == "GROUPVEL") {
+            return SetGROUPVEL();
+          }else{
+            return MPT[G4String(key)];
+          }
+        }
+}
+
+void G4MaterialPropertiesTable::AddEntry(const char     *key,
+					 G4double  aPhotonMomentum,
+					 G4double  aPropertyValue)
+
+//      Allows to add an entry pair directly to the Material Property Vector
+//      given a key
+
+{
+	G4MaterialPropertyVector *targetVector=MPT [G4String(key)];
+	if (targetVector != 0) {
+		targetVector->AddElement(aPhotonMomentum, aPropertyValue);
+	}
+	else {
+		G4Exception("G4MaterialPropertiesTable::AddEntry ==> "
+			    "Material Property Vector not found.");
+	}
+}
+
+void G4MaterialPropertiesTable::RemoveEntry(const char *key,  
+					    G4double  aPhotonMomentum)
+{
+//      Allows to remove an entry pair directly from the Material Property Vector
+//      given a key
+
+        G4MaterialPropertyVector *targetVector=MPT [G4String(key)];
+	if (targetVector) {
+		targetVector->RemoveElement(aPhotonMomentum);
+ 	}
+        else {
+                G4Exception("G4MaterialPropertiesTable::RemoveEntry ==> "
+			    "Material Property Vector not found.");
+        }
+}
+void G4MaterialPropertiesTable::DumpTable()
+{
+  MPTiterator i;
+  for (i = MPT.begin(); i != MPT.end(); ++i) {
+		G4cout << (*i).first << G4endl;
+                if ( (*i).second != 0 ) {
+		  (*i).second->DumpVector();
+                }
+                else {
+                  G4cout << "NULL Material Property Vector Pointer." << G4endl;
+                }
+  }
+  MPTCiterator j;
+  for (j = MPTC.begin(); j != MPTC.end(); ++j) {
+                 G4cout << j->first << G4endl;
+                 if ( j->second != 0 ) {
+                   G4cout << j->second << G4endl;
+                 }
+                 else {
+                   G4cout << "No Material Constant Property." << G4endl;
+                 }
+  }
+
+}
+G4MaterialPropertyVector* G4MaterialPropertiesTable::SetGROUPVEL()
+{
+  // fetch RINDEX data, give up if unavailable
+  G4MaterialPropertyVector *rindex = this->GetProperty("RINDEX");
+  if (rindex==0) return NULL;
+                                                                                
+  rindex->ResetIterator();
+  // RINDEX exists but has no entries, give up
+  if ( (++*rindex) == false ) return NULL;
+
+  // add GROUPVEL vector
+  G4MaterialPropertyVector* groupvel = new G4MaterialPropertyVector();
+
+  this->AddProperty( "GROUPVEL", groupvel );
+                                                                                
+  // fill GROUPVEL vector using RINDEX values
+  // rindex built-in "iterator" was advanced to first entry above
+  G4double E0 = rindex->GetPhotonMomentum();
+  G4double n0 = rindex->GetProperty();
+
+  if (E0 <= 0. ) G4Exception("G4MaterialPropertiesTable::SetGROUPVEL ==> "
+                       "Optical Photon Energy <= 0");
+                                                                                
+  if ( ++*rindex ) {
+    // good, we have at least two entries in RINDEX
+    // get next energy/value pair
+    G4double E1 = rindex->GetPhotonMomentum();
+    G4double n1 = rindex->GetProperty();
+
+    if (E1 <= 0. ) G4Exception("G4MaterialPropertiesTable::SetGROUPVEL ==> "
+                         "Optical Photon Energy <= 0");
+    G4double vg;
+    // add entry at first photon energy
+    vg = c_light/(n0+(n1-n0)/std::log(E1/E0));
+    // allow only for 'normal dispersion' -> dn/d(logE) > 0
+    if(vg<0 || vg>c_light/n0)vg = c_light/n0;
+    groupvel->AddElement( E0, vg );
+    // add entries at midpoints between remaining photon energies
+    while(1) {
+      vg = c_light/( 0.5*(n0+n1)+(n1-n0)/std::log(E1/E0));
+      // allow only for 'normal dispersion' -> dn/d(logE) > 0
+      if(vg<0 || vg>c_light/(0.5*(n0+n1)))vg = c_light/(0.5*(n0+n1));
+      groupvel->AddElement( 0.5*(E0+E1), vg );
+      // get next energy/value pair, or exit loop
+      if (!(++*rindex)) break;
+      E0 = E1;
+      n0 = n1;
+      E1 = rindex->GetPhotonMomentum();
+      n1 = rindex->GetProperty();
+
+      if (E1 <= 0. ) G4Exception("G4MaterialPropertiesTable::SetGROUPVEL ==> "
+                           "Optical Photon Energy <= 0");
+    }
+    // add entry at last photon energy
+    vg = c_light/(n1+(n1-n0)/std::log(E1/E0));
+    // allow only for 'normal dispersion' -> dn/d(logE) > 0
+    if(vg<0 || vg>c_light/n1)vg = c_light/n1;
+    groupvel->AddElement( E1, vg );
+  }else{
+    // only one entry in RINDEX -- weird!
+    groupvel->AddElement( E0, c_light/n0 );
+  }
+                                                                                
+  return groupvel;
+}
Index: trunk/source/materials/src/G4MaterialPropertyVector.cc
===================================================================
--- trunk/source/materials/src/G4MaterialPropertyVector.cc	(revision 822)
+++ trunk/source/materials/src/G4MaterialPropertyVector.cc	(revision 822)
@@ -0,0 +1,417 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4MaterialPropertyVector.cc,v 1.15 2006/06/29 19:12:56 gunter Exp $
+// GEANT4 tag $Name:  $
+//
+// 
+////////////////////////////////////////////////////////////////////////
+// G4MaterialPropertyVector Class Implementation
+////////////////////////////////////////////////////////////////////////
+//
+// File:        G4MaterialPropertyVector.cc
+// Version:     1.0
+// Created:     1996-02-08
+// Author:      Juliet Armstrong
+// Updated:     1997-03-25 by Peter Gumplinger
+//              > cosmetics (only)
+// mail:        gum@triumf.ca
+//
+////////////////////////////////////////////////////////////////////////
+
+#include "G4MaterialPropertyVector.hh"
+
+/////////////////////////
+// Class Implementation  
+/////////////////////////
+
+        //////////////
+        // Operators
+        //////////////
+
+// ++ operator
+// -----------
+//
+G4bool G4MaterialPropertyVector::operator ++()
+{
+	CurrentEntry++;
+	if (CurrentEntry < NumEntries) {
+		return true;
+	}
+	else {
+		return false; 
+	}
+}
+
+// = operator
+// ----------
+//
+G4MaterialPropertyVector&
+G4MaterialPropertyVector::operator =(const G4MaterialPropertyVector& right)
+{
+        if (this == &right) return *this;
+	
+        // clear the vector of current contents
+
+	MPV.clear();
+
+        // create an actual copy (instead of the shallow copy that the
+        // assignment operator defaults to for G4RWTPtrSortedVector)
+
+        NumEntries = 0;
+        CurrentEntry = -1;
+
+        for (G4int i = 0 ; i < right.NumEntries; i++) {
+                G4MPVEntry *newElement = new G4MPVEntry(right.GetEntry(i));
+                MPV.push_back(newElement);
+                NumEntries++;
+        }
+
+        return *this;
+}
+
+        /////////////////
+        // Constructors
+        /////////////////
+
+G4MaterialPropertyVector::G4MaterialPropertyVector(G4double *PhotonMomenta,
+ 						   G4double *PropertyValues,
+						   G4int     NumElements)
+{
+	NumEntries = 0;
+	CurrentEntry = -1;
+
+	// create a vector filling it with the values
+	// from PhotonMomenta[] and PropertyValues[] 
+
+	for(G4int i = 0; i < NumElements; i++) {
+		AddElement(PhotonMomenta[i], PropertyValues[i]);
+        }
+}
+
+G4MaterialPropertyVector::G4MaterialPropertyVector
+			  (const G4MaterialPropertyVector &right)
+{
+	// create an actual copy (instead of the shallow copy that the
+	// assignment operator defaults to for G4RWTPtrSortedVector)
+
+        NumEntries = 0;
+        CurrentEntry = -1;
+
+        for (G4int i = 0 ; i < right.NumEntries; i++) {
+        	G4MPVEntry *newElement = new G4MPVEntry(right.GetEntry(i));
+                MPV.push_back(newElement);
+                NumEntries++;
+        }
+}
+
+	////////////////
+        // Destructors
+        ////////////////
+
+G4MaterialPropertyVector::~G4MaterialPropertyVector()
+{
+	MPV.clear();
+}
+
+        ////////////
+        // Methods
+        ////////////
+void G4MaterialPropertyVector::AddElement(G4double aPhotonMomentum,
+					  G4double aPropertyValue) 
+{
+	G4MPVEntry *newElement;
+	
+	newElement = new G4MPVEntry(aPhotonMomentum, aPropertyValue);
+	MPV.push_back(newElement);
+	std::sort(MPV.begin(), MPV.end(), MPVEntry_less());
+	NumEntries++; 
+}
+
+void G4MaterialPropertyVector::RemoveElement(G4double aPhotonMomentum)
+{
+	G4MPVEntry *newElement;
+	G4MPVEntry *success=0;
+
+	newElement = new G4MPVEntry(aPhotonMomentum, DBL_MAX);
+
+	std::vector<G4MPVEntry*>::iterator i;
+	for (i = MPV.begin(); i != MPV.end(); i++)
+	  if (**i == *newElement) {success = *i; break;}
+	//	success = MPV.remove(newElement);
+
+	if(success == 0)
+	{
+	G4Exception("G4MaterialPropertyVector::RemoveElement==>"
+					       "element not found");
+	return;
+	}
+	else
+	{
+	  MPV.erase(i); // remove done here.
+	}
+
+	NumEntries--;
+}
+
+G4double 
+G4MaterialPropertyVector::GetProperty(G4double aPhotonMomentum) const
+{
+	G4MPVEntry *target, *temp; 
+	G4int left, right;
+	G4double ratio1, ratio2, pmright, pmleft, InterpolatedValue;
+ 
+	/////////////////////////
+	// Establish table range 
+	/////////////////////////
+
+	G4double PMmin   = MPV.front()->GetPhotonMomentum(); 
+	G4double minProp = MPV.front()->GetProperty(); 
+	G4double PMmax   = MPV.back() ->GetPhotonMomentum();
+	G4double maxProp = MPV.back() ->GetProperty();
+
+	///////////////////////////////////////////
+	// Does value fall outside range of table?
+	///////////////////////////////////////////
+
+	if (aPhotonMomentum < PMmin) 
+	{
+		G4cout << "\nWarning: G4MaterialPropertyVector::GetProperty";
+		G4cout << "\n==> attempt to Retrieve Property below range" 
+		<< G4endl;
+		return minProp; 
+	} 
+
+        if (aPhotonMomentum > PMmax)
+	{
+		G4cout << "\nWarning: G4MaterialPropertyVector::GetProperty";
+		G4cout << "\n==> attempt to Retrieve Property above range" 
+		<< G4endl;
+		return maxProp;
+	} 
+	
+	target = new G4MPVEntry(aPhotonMomentum, 0.0);
+
+	temp = 0;
+	//temp = MPV.find(target);
+	std::vector<G4MPVEntry*>::const_iterator i;
+	for (i = MPV.begin(); i != MPV.end(); i++)
+	  if (**i == *target) {temp = *i; break;}
+	if (temp != 0) {
+
+		////////////////////////
+		// Return actual value
+		////////////////////////
+
+                G4double retval = temp->GetProperty();
+                delete target;
+                return retval;
+	}
+	else {
+		//////////////////////////////
+		// Return interpolated value 
+		//////////////////////////////
+
+		GetAdjacentBins(aPhotonMomentum, &left, &right);
+
+                pmleft = MPV[left]->GetPhotonMomentum();
+                pmright = MPV[right]->GetPhotonMomentum();
+                ratio1 = (aPhotonMomentum-pmleft)/(pmright-pmleft);
+                ratio2 = 1 - ratio1;
+		InterpolatedValue = MPV[left]->GetProperty()*ratio2 + 
+				    MPV[right]->GetProperty()*ratio1;
+		
+		delete target;
+		return InterpolatedValue;
+	}	
+}
+
+G4double G4MaterialPropertyVector::GetProperty() const
+{
+// 	For use with G4MaterialPropertyVector iterator
+
+	if(CurrentEntry == -1 || CurrentEntry >= NumEntries) {
+		G4Exception("G4MaterialPropertyVector::GetProperty ==>"
+		"Iterator attempted to Retrieve Property out of range");
+                return DBL_MAX;
+	}
+	else { 
+		return MPV[CurrentEntry]->GetProperty();
+	}
+}
+
+G4double G4MaterialPropertyVector::GetPhotonMomentum() const
+{
+// 	For use with G4MaterialPropertyVector iterator
+
+	if(CurrentEntry == -1 || CurrentEntry >= NumEntries) {
+		G4Exception("G4MaterialPropertyVector::GetPhotonMomentum ==>"
+		"Iterator attempted to Retrieve Photon Momentum out of range");
+                return DBL_MAX;
+	}
+	else { 
+		return MPV[CurrentEntry]->GetPhotonMomentum();
+	}
+}
+
+G4double 
+G4MaterialPropertyVector::GetPhotonMomentum(G4double aProperty) const
+{
+// 				***NB*** 
+// Assumes that the property is an increasing function of photon momentum (e.g.
+// refraction index)
+// 				***NB*** 
+//
+// Returns the photon momentum corresponding to the property value passed in.
+// If several photon momentum values correspond to the value passed in, the
+// function returns the first photon momentum in the vector that corresponds
+// to that value. 
+
+	G4int left, right, mid;
+	G4double ratio1, ratio2, pright, pleft, InterpolatedValue;
+
+        //////////////////////////
+	// Establish Table range
+	//////////////////////////
+
+	G4double PropMin = MPV.front()->GetProperty();
+	G4double PMmin   = MPV.front()->GetPhotonMomentum();
+	G4double PropMax = MPV.back() ->GetProperty();
+	G4double PMmax   = MPV.back() ->GetPhotonMomentum();
+
+	///////////////////////////////////////////
+	// Does value fall outside range of table?
+	///////////////////////////////////////////
+
+	if (aProperty < PropMin) 
+	{
+	  G4cout << "\nWarning: G4MaterialPropertyVector::GetPhotonMomentum";
+	  G4cout << "\n==> attempt to Retrieve Photon Momentum out of range" 
+	       << G4endl; 
+	  return PMmin;
+	}
+
+	if (aProperty > PropMax) {
+          G4cout << "\nWarning: G4MaterialPropertyVector::GetPhotonMomentum";
+	  G4cout << "\n==> attempt to Retrieve Photon Momentum out of range" 
+	       << G4endl;
+	  return PMmax;
+	}
+
+	//////////////////////////////
+	// Return interpolated value
+	//////////////////////////////
+
+	left = 0;
+        right = MPV.size(); // was .entries()
+
+        // find values in bins on either side of aProperty 
+	
+        do {
+		mid = (left + right)/2;
+		if (MPV[mid]->GetProperty() == aProperty) { 
+
+			// Get first photon momentum value in vector that 
+			// corresponds to property value  
+
+			while (mid-1 >= 0 && 
+			       MPV[mid-1]->GetProperty() == aProperty) {
+				  mid--;
+			}
+
+			InterpolatedValue = MPV[mid]->GetPhotonMomentum();
+			goto end_GetPhotonMomentum;	
+		}
+		if (MPV[mid]->GetProperty() < aProperty)
+			left = mid;
+		else
+			right = mid;
+
+	} while ((right - left) > 1);
+
+	pleft = MPV[left]->GetProperty();
+	pright = MPV[right]->GetProperty();
+	ratio1 = (aProperty - pleft) / (pright - pleft);
+	ratio2 = 1 - ratio1;
+	InterpolatedValue = MPV[left]->GetPhotonMomentum()*ratio2 +
+			    MPV[right]->GetPhotonMomentum()*ratio1;
+
+end_GetPhotonMomentum:
+
+	return InterpolatedValue;
+}
+
+void G4MaterialPropertyVector::ResetIterator()
+{
+	CurrentEntry = -1;
+} 
+
+void G4MaterialPropertyVector::DumpVector()
+{
+ 	if (MPV.empty())  {
+ 		G4cerr << "nothing to dump" << G4endl;
+		G4Exception("G4MaterialPropertyVector::DumpVector ==>"
+			    "Nothing to dump!  Vector is empty");
+ 	}
+
+	for (G4int i = 0; i < NumEntries; i++) {
+		G4cout << "MPV["<< i << "]: ";
+		MPV[i]->DumpEntry();
+	}
+        G4cout << " Done DumpVector of " << NumEntries << " entries " << G4endl;
+
+} 
+
+G4MPVEntry G4MaterialPropertyVector::GetEntry(G4int i) const
+{
+        return *MPV[i];
+}
+
+void 
+G4MaterialPropertyVector::GetAdjacentBins(G4double aPhotonMomentum,
+                                          G4int *left,
+					  G4int *right) const
+{
+        G4int mid;
+
+        *left = 0;
+        *right = (MPV.size() - 1); // was .entries()
+
+        // find values in bins on either side of aPhotonMomentum
+
+	do {
+        	mid = (*left + *right)/2;
+
+                if (MPV[mid]->GetPhotonMomentum() < aPhotonMomentum) 
+		{
+                	*left = mid;
+		}
+                else
+		{
+                	*right = mid;
+		}
+        } while ((*right - *left) > 1);
+}
Index: trunk/source/materials/src/G4NistElementBuilder.cc
===================================================================
--- trunk/source/materials/src/G4NistElementBuilder.cc	(revision 822)
+++ trunk/source/materials/src/G4NistElementBuilder.cc	(revision 822)
@@ -0,0 +1,2462 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: G4NistElementBuilder.cc,v 1.16 2007/07/28 15:58:03 vnivanch Exp $
+// GEANT4 tag $Name:  $
+//
+// -------------------------------------------------------------------
+//
+// GEANT4 Class file
+//
+// File name:     G4NistElementBuilder
+//
+// Author:        Vladimir Ivanchenko
+//
+// Creation date: 23.12.2004
+//
+// Modifications:
+// 02.05.2006 Subtract mass of atomic electrons from NIST mass (VI) 
+// 11.05.2006 Do not subtract mass of atomic electrons from NIST mass (VI) 
+// 17.10.2006 Add natiral abandances flag to element and 
+//            use G4 units for isotope mass vector (VI) 
+// 10.05.2007 Add protection agains Z>101 (VI)
+// 26.07.2007 Create one and only one Nist element with given Z and
+//            allow users to create there own elements with the same Z (VI)
+//
+// -------------------------------------------------------------------
+//
+// Class Description:
+//
+// Element data from the NIST DB on Atomic Weights and Isotope Compositions
+// http://physics.nist.gov/PhysRefData/Compositions/index.html
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "G4NistElementBuilder.hh"
+#include "G4Element.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4NistElementBuilder::G4NistElementBuilder(G4int vb):
+  verbose(vb), first(true)
+{
+  Initialise();
+  // Atomic shells are defined only for 101 elements
+  limitNumElements = 101;
+  for(G4int i=0; i<maxNumElements; i++) {elmIndex[i] = -1;}
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4NistElementBuilder::~G4NistElementBuilder()
+{}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4Element* G4NistElementBuilder::FindOrBuildElement(const G4String& symb,
+                                                          G4bool buildIsotopes)
+{
+  if(first) {
+    if(verbose > 0) {
+      G4cout << "### NIST DataBase for Elements is used" << G4endl;
+    }
+    first = false;
+  }
+  G4int Z = 0;
+  G4Element* elm = 0;
+  do {Z++;} while (Z<limitNumElements && !(symb == elmSymbol[Z]));
+  if(Z<maxNumElements) elm = FindOrBuildElement(Z, buildIsotopes);
+  return elm;
+}
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4Element* G4NistElementBuilder::FindOrBuildElement(G4int Z,
+                                                    G4bool buildIsotopes)
+{
+  G4Element* anElement = 0;
+
+  // Nist element does exist
+  if(elmIndex[Z] >= 0) {
+    const G4ElementTable* theElementTable = G4Element::GetElementTable();
+    anElement = (*theElementTable)[elmIndex[Z]];
+
+    // build new element
+  } else {
+    anElement = BuildElement(Z, buildIsotopes);
+    if(anElement) elmIndex[Z] = anElement->GetIndex();
+  }  
+  return anElement;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4Element* G4NistElementBuilder::BuildElement(G4int Z, G4bool buildIsotopes)
+{
+  G4Element* theElement = 0;
+  if(Z<1 || Z>=limitNumElements) return theElement;
+  G4double Zeff = (G4double)Z;
+  G4double Aeff = atomicMass[Z];
+  if (verbose > 1) {
+    G4cout << "G4NistElementBuilder: Build Element <" << elmSymbol[Z]
+           << ">  Z= " << Zeff
+	   << "  A= " << Aeff;
+    if(buildIsotopes) G4cout << "  with natural isotope composition" << G4endl; 
+    else              G4cout << "  isotopes are not built" << G4endl;
+  }
+  
+  //build Element with its Isotopes
+  //
+  if (buildIsotopes) {
+    G4int nc  = nIsotopes[Z];
+    G4int n0  = nFirstIsotope[Z];
+    G4int idx = idxIsotopes[Z];
+    std::vector<G4Isotope*> iso;
+    G4Isotope* ist;
+    for (G4int i=0; i<nc; i++) {
+       if (relAbundance[idx + i] > 0.0) {
+         ist = new G4Isotope(elmSymbol[Z],Z, n0 + i,
+	                     massIsotopes[idx + i]*gram/mole);
+	 iso.push_back(ist);
+       }
+    }
+    G4int ni = iso.size();
+    G4double w;
+    theElement = new G4Element(elmSymbol[Z],elmSymbol[Z],ni);
+    for(G4int j=0; j<ni; j++) {
+      w = relAbundance[idx + (iso[j])->GetN() - n0];
+      ist = iso[j];
+      theElement->AddIsotope(ist, w);
+    }
+  }
+  
+  //build Element without Isotopes
+  //  
+  else {
+    theElement = new G4Element(elmSymbol[Z],elmSymbol[Z],Zeff,Aeff*gram/mole);
+  }
+  theElement->SetNaturalAbandancesFlag(buildIsotopes);
+  
+  return theElement;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+
+void G4NistElementBuilder::PrintElement(G4int Z)
+{
+  G4int imin = Z;
+  G4int imax = Z+1;
+  if (Z == 0) {
+    imin = 1;
+    imax = maxNumElements;
+  }
+  if(imax > maxNumElements) imax = maxNumElements;
+
+  for(G4int i=imin; i<imax; i++) {
+    G4int nc = nIsotopes[i];
+    G4cout << "Nist Element: <" << elmSymbol[i]
+           << ">  Z= " << i
+	   << "  Aeff(amu)= " << atomicMass[i] << "  "
+	   << nc << " isotopes:"
+           << G4endl;
+    if(verbose > 1) {
+      G4int j;
+      G4int idx = idxIsotopes[i];
+      G4int n0  = nFirstIsotope[i];
+      G4cout << "             N: ";
+      for(j=0; j<nc; j++) {G4cout << n0 + j << "  ";}
+      G4cout << G4endl;
+      G4cout << "          mass(amu): ";
+      for(j=0; j<nc; j++) {G4cout << massIsotopes[idx + j] << " ";}
+      G4cout << G4endl;
+      G4cout << "     abanbance: ";
+      for(j=0; j<nc; j++) {G4cout << relAbundance[idx + j] << " ";}
+      G4cout << G4endl;
+    }
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistElementBuilder::AddElement(const G4String& name, G4int Z, G4int nc,
+				      const G4int& N, const G4double& A,
+				      const G4double& sA, const G4double& W)
+{
+  if (verbose > 1) 
+  G4cout << "AddElement " << name << " Z= " << Z << " nc= " << nc << G4endl;
+  
+  if (Z >= maxNumElements) {
+    G4cout << "G4NistElementBuilder::AddElement: Warning! Z= " << Z 
+           << " is too big" << G4endl;
+    return;
+  }
+  
+  if (index >= maxAbundance) {
+    G4cout << "G4NistElementBuilder::AddElement: Warning! index= " << index 
+           << " is too big" << G4endl;
+    return;
+  }
+
+  elmSymbol[Z]   = name;
+  atomicMass[Z]  = 0.0;
+  idxIsotopes[Z] = index;
+  nIsotopes[Z]   = nc;
+
+  nFirstIsotope[Z] = (&N)[0];
+  G4double ww = 0.0;
+  G4double www;
+  size_t nm = nc;
+  //  G4double delm = G4double(Z)*electron_mass_c2/amu_c2;
+
+  for(size_t i=0; i<nm; i++) {
+    www = 0.01*(&W)[i];
+    massIsotopes[index] = (&A)[i]; // - delm;
+    sigMass[index]      = (&sA)[i];
+    relAbundance[index] = www;
+
+    atomicMass[Z] += www*(&A)[i];
+    ww += www;
+    index++;
+  }
+
+  if(ww != 1.0) {
+    G4int idx = idxIsotopes[Z];
+    atomicMass[Z] /= ww;
+    for(G4int j=0; j<nc; j++) {relAbundance[idx + j] /= ww;}
+  }
+
+  if (verbose > 0) PrintElement(Z);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistElementBuilder::Initialise()
+{
+  index    = 0;
+   
+  // Z = 1 ---------------------------------------------------------------------
+  int HN[6] = 
+  {1, 2, 3, 4, 5, 6};
+  
+  double HA[6] = 
+  {1.00783, 2.0141, 3.01605, 4.02783, 5.03954, 6.04494};
+  
+  double HS[6] = 
+  {4, 4, 11, 12, 102, 28};
+  
+  double HW[6] = 
+  {99.9885, 0.0115, 0, 0, 0, 0};
+  
+  AddElement("H", 1, 6, *HN , *HA , *HS , *HW);
+   
+  // Z = 2 ---------------------------------------------------------------------
+  int HeN[8] = 
+  {3, 4, 5, 6, 7, 8, 9, 10};
+  
+  double HeA[8] = 
+  {3.01603, 4.0026, 5.01222, 6.01889, 7.02803, 8.03392, 9.04382, 10.0524};
+  
+  double HeS[8] = 
+  {9, 10, 50, 11, 30, 8, 70, 80};
+  
+  double HeW[8] = 
+  {0.000137, 99.9999, 0, 0, 0, 0, 0, 0};
+  
+  AddElement("He", 2, 8, *HeN , *HeA , *HeS , *HeW);
+   
+  // Z = 3 ---------------------------------------------------------------------
+  int LiN[9] = 
+  {4, 5, 6, 7, 8, 9, 10, 11, 12};
+  double LiA[9] = 
+  {4.02718, 5.01254, 6.01512, 7.016, 8.02249, 9.02679, 10.0355, 11.0438,
+   12.0538};
+   
+  double LiS[9] = 
+  {23, 50, 5, 5, 5, 21, 16, 29, 107};
+  
+  double LiW[9] =
+  {0, 0, 7.59, 92.41, 0, 0, 0, 0, 0};
+  
+  AddElement("Li", 3, 9, *LiN , *LiA , *LiS , *LiW);
+   
+  // Z = 4 ---------------------------------------------------------------------
+  int BeN[10] = 
+  {5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
+  
+  double BeA[10] = 
+  {5.04079, 6.01973, 7.01693, 8.00531, 9.01218, 10.0135, 11.0217, 12.0269,
+   13.0361, 14.0428};
+   
+  double BeS[10] = 
+  {429, 6, 5, 4, 4, 4, 7, 16, 54, 12};
+  
+  double BeW[10] = 
+  {0, 0, 0, 0, 100, 0, 0, 0, 0, 0};
+  
+  AddElement("Be", 4, 10, *BeN , *BeA , *BeS , *BeW);
+   
+  // Z = 5 ---------------------------------------------------------------------
+  int BN[13] = 
+  {7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
+  
+  double BA[13] = 
+  {7.02992, 8.02461, 9.01333, 10.0129, 11.0093, 12.0144, 13.0178, 14.0254,
+   15.0311, 16.0398, 17.0469, 18.0562, 19.0637};
+   
+  double BS[13] = 
+  {80, 12, 11, 4, 5, 15, 12, 23, 24, 60, 15, 86, 43};
+  
+  double BW[13] =
+  {0, 0, 0, 19.9, 80.1, 0, 0, 0, 0, 0, 0, 0, 0};
+  
+  AddElement("B", 5, 13, *BN , *BA , *BS , *BW); 
+   
+  // Z = 6 ---------------------------------------------------------------------
+  int CN[15] = 
+  {8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22};
+  
+  double CA[15] = 
+  {8.03768, 9.03104, 10.0169, 11.0114, 12.    , 13.0034, 14.0032, 15.0106,
+   16.0147, 17.0226, 18.0268, 19.0353, 20.0403, 21.0493, 22.0565};
+   
+  double CS[15] = 
+  {25, 23, 4, 10, 0, 10, 4, 9, 4, 19, 30, 12, 22, 54, 97};
+  
+  double CW[15] = 
+  {0, 0, 0, 0, 98.93, 1.07, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  
+  AddElement("C", 6, 15, *CN , *CA , *CS , *CW);
+   
+  // Z = 7 ---------------------------------------------------------------------
+  int NN[15] = 
+  {10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24};
+  
+  double NA[15] = 
+  {10.0426, 11.0268, 12.0186, 13.0057, 14.0031, 15.0001, 16.0061, 17.0084,
+   18.0141, 19.017 , 20.0234, 21.0271, 22.0344, 23.0405, 24.0505};
+   
+  double NS[15] = 
+  {43, 19, 11, 29, 9, 9, 28, 16, 21, 18, 60, 10, 21, 76, 54};
+  
+  double NW[15] = 
+  {0, 0, 0, 0, 99.632, 0.368, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  
+  AddElement("N", 7, 15, *NN , *NA , *NS , *NW); 
+   
+  // Z = 8 ---------------------------------------------------------------------
+  int ON[15] = 
+  {12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
+  
+  double OA[15] = 
+  {12.0344, 13.0248, 14.0086, 15.0031, 15.9949, 16.9991, 17.9992, 19.0036,
+   20.0041, 21.0087, 22.01  , 23.0157, 24.0204, 25.0291, 26.0377};
+   
+  double Os[15] = 
+  {20, 10, 8, 5, 15, 22, 9, 3, 13, 13, 60, 11, 33, 40, 46};
+  
+  double OW[15] = 
+  {0, 0, 0, 0, 99.757, 0.038, 0.205, 0, 0, 0, 0, 0, 0, 0, 0};
+  
+  AddElement("O", 8, 15, *ON , *OA , *Os , *OW);
+   
+  // Z = 9 ---------------------------------------------------------------------
+  int FN[16] = 
+  {14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29};
+  
+  double FA[16] = 
+  {14.0361, 15.018 , 16.0115, 17.0021, 18.0009, 18.9984, 20     , 20.9999,
+   22.003 , 23.0036, 24.0081, 25.0121, 26.0196, 27.0269, 28.0357, 29.0433};
+   
+  double FS[16] = 
+  {43, 14, 9, 27, 6, 7, 9, 19, 13, 90, 70, 80, 13, 45, 55, 62};
+  
+  double FW[16] = 
+  {0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  
+  AddElement("F", 9, 16, *FN , *FA , *FS , *FW); 
+   
+  // Z = 10 --------------------------------------------------------------------
+  int NeN[17] = 
+  {16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32};
+  
+  double NeA[17] = 
+  {16.0258, 17.0177, 18.0057, 19.0019, 19.9924, 20.9938, 21.9914, 22.9945,
+   23.9936, 24.9978, 26.0005, 27.0076, 28.0121, 29.0193, 30.0239, 31.0331, 
+   32.0399};
+   
+  double NeS[17] = 
+  {22, 50, 16, 6, 20, 4, 23, 26, 11, 50, 60, 10, 12, 32, 88, 97, 94};
+  
+  double NeW[17] = 
+  {0, 0, 0, 0, 90.48, 0.27, 9.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  
+  AddElement("Ne", 10, 17, *NeN , *NeA , *NeS , *NeW); 
+   
+  // Z = 11 --------------------------------------------------------------------
+  int NaN[18] = 
+  {18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35};
+  
+  double NaA[18] = 
+  {18.0272, 19.0139, 20.0073, 20.9977, 21.9944, 22.9898, 23.991 , 24.99  ,
+   25.9926, 26.994 , 27.9989, 29.0028, 30.0092, 31.0136, 32.0196, 33.0274, 
+   34.0349, 35.0442};
+   
+  double NaS[18] = 
+  {43, 13, 7, 8, 5, 23, 23, 13, 15, 40, 80, 10, 10, 18, 52, 160, 113, 166};
+  
+  double NaW[18] = 
+  {0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  
+  AddElement("Na", 11, 18, *NaN , *NaA , *NaS , *NaW); 
+   
+  // Z = 12 --------------------------------------------------------------------
+  int MgN[18] = 
+  {20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37};
+  
+  double MgA[18] = 
+  {20.0189, 21.0117, 21.9996, 22.9941, 23.985 , 24.9858, 25.9826, 26.9843,
+   27.9839, 28.9886, 29.9905, 30.9965, 31.9992, 33.0056, 34.0091, 35.0175, 
+   36.0224, 37.0312};
+   
+  double MgS[18] = 
+  {29, 18, 15, 13, 20, 20, 21, 21, 22, 30, 70, 80, 10, 16, 28, 47, 97, 97};
+  
+  double MgW[18] = 
+  {0, 0, 0, 0, 78.99, 10, 11.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  
+  AddElement("Mg", 12, 18, *MgN , *MgA , *MgS , *MgW);
+   
+  // Z = 13 --------------------------------------------------------------------
+  int AlN[19] = 
+  {21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39};
+  
+  double AlA[19] = 
+  {21.028 , 22.0195, 23.0073, 23.9999, 24.9904, 25.9869, 26.9815, 27.9819,
+   28.9804, 29.983 , 30.9839, 31.9881, 32.9909, 33.9969, 34.9999, 36.0063, 
+   37.0103, 38.0169, 39.0219};
+   
+  double AlS[19] = 
+  {32, 10, 27, 4, 7, 21, 14, 15, 13, 15, 22, 90, 70, 10, 15, 29, 58, 60, 64};
+  
+  double AlW[19] = 
+  {0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  
+  AddElement("Al", 13, 19, *AlN , *AlA , *AlS , *AlW); 
+   
+  // Z = 14 --------------------------------------------------------------------
+  int SiN[21] = 
+  {22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+   41, 42};
+   
+  double SiA[21] = 
+  {22.0345, 23.0255, 24.0115, 25.0041, 25.9923, 26.9867, 27.9769, 28.9765,
+   29.9738, 30.9754, 31.9741, 32.978 , 33.9786, 34.9846, 35.9867, 36.993 , 
+   37.996 , 39.0023, 40.0058, 41.0127, 42.0161};
+   
+  double SiS[21] = 
+  {22, 21, 21, 11, 3, 17, 20, 3, 5, 7, 23, 17, 15, 40, 11, 13, 29, 43, 54, 64,
+   75};
+   
+  double SiW[21] = 
+  {0, 0, 0, 0, 0, 0, 92.2297, 4.6832, 3.0872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+   0};
+   
+  AddElement("Si", 14, 21, *SiN , *SiA , *SiS , *SiW); 
+   
+  // Z = 15 --------------------------------------------------------------------
+  int PN[23] = 
+  {24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+   43, 44, 45, 46};
+   
+  double PA[23] = 
+  {24.0343, 25.0203, 26.0118, 26.9992, 27.9923, 28.9818, 29.9783, 30.9738,
+   31.9739, 32.9717, 33.9736, 34.9733, 35.9783, 36.9796, 37.9845, 38.9864,
+   39.9911, 40.9948, 42.0001, 43.0033, 44.0099, 45.0151, 46.0238};
+   
+  double PS[23] = 
+  {54, 21, 21, 40, 4, 8, 4, 20, 20, 12, 5, 20, 14, 40, 15, 16, 21, 50, 54, 54,
+   75, 86, 97};
+   
+  double PW[23] = 
+  {0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  
+  AddElement("P", 15, 23, *PN , *PA , *PS , *PW); 
+   
+  // Z = 16 --------------------------------------------------------------------
+  int SN[24] = 
+  {26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+   45, 46, 47, 48, 49};
+   
+  double SA[24] = 
+  {26.0279, 27.0188, 28.0044, 28.9966, 29.9849, 30.9796, 31.9721, 32.9715,
+   33.9679, 34.969 , 35.9671, 36.9711, 37.9712, 38.9751, 39.9755, 40.98  , 
+   41.9815, 42.9866, 43.9883, 44.9948, 45.9996, 47.0076, 48.013 , 49.022 };
+   
+  double SS[24] = 
+  {32, 22, 17, 50,  3, 16, 12, 12, 11, 10, 25, 27,  8, 50, 25, 23, 35, 90, 54,
+   64, 75, 86, 97, 107};
+   
+  double SW[24] = 
+  {0, 0, 0, 0, 0, 0, 94.93, 0.76, 4.29, 0, 0.02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+   0, 0, 0};
+   
+  AddElement("S", 16, 24, *SN , *SA , *SS , *SW);
+   
+  // Z = 17 --------------------------------------------------------------------
+  int ClN[24] = 
+  {28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+   47, 48, 49, 50, 51};
+   
+  double ClA[24] = 
+  {28.0285, 29.0141, 30.0048, 30.9924, 31.9857, 32.9775, 33.9738, 34.9689,
+   35.9683, 36.9659, 37.968 , 38.968 , 39.9704, 40.9706, 41.9732, 42.9742, 
+   43.9785, 44.9797, 45.9841, 46.9879, 47.9948, 48.9999, 50.0077, 51.0135};
+   
+  double ClS[24] = 
+  {54, 21, 21, 50, 7, 6, 13, 4, 8, 5, 12, 19, 30, 70, 12, 17, 24, 70, 54,
+   64, 75, 86, 97, 107};
+   
+  double ClW[24] = 
+  {0, 0, 0, 0, 0, 0, 0, 75.78, 0, 24.22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+   0};
+   
+  AddElement("Cl", 17, 24, *ClN , *ClA , *ClS , *ClW); 
+   
+  // Z = 18 --------------------------------------------------------------------
+  int ArN[24] = 
+  {30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+   49, 50, 51, 52, 53};
+   
+  double ArA[24] = 
+  {30.0216, 31.0121, 31.9977, 32.9899, 33.9803, 34.9753, 35.9675, 36.9668,
+   37.9627, 38.9643, 39.9624, 40.9645, 41.9631, 42.9657, 43.9654, 44.9681, 
+   45.9681, 46.9722, 47.9751, 48.9822, 49.9859, 50.9932, 51.9982, 53.0062};
+   
+  double ArS[24] = 
+  {32, 22, 50, 30, 3, 8, 27, 3, 5, 5, 3, 7, 40, 80, 22, 60, 40, 11, 32, 54, 75,
+   75, 97, 107};
+   
+  double ArW[24] = 
+  {0, 0, 0, 0, 0, 0, 0.3365, 0, 0.0632, 0, 99.6003, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+   0, 0, 0, 0};
+   
+  AddElement("Ar", 18, 24, *ArN , *ArA , *ArS , *ArW); 
+   
+  // Z = 19 --------------------------------------------------------------------
+  int KN[24] = 
+  {32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+   51, 52, 53, 54, 55};
+   
+  double KA[24] = 
+  {32.0219, 33.0073, 33.9984, 34.988 , 35.9813, 36.9734, 37.9691, 38.9637,
+   39.964 , 40.9618, 41.9624, 42.9607, 43.9616, 44.9607, 45.962 , 46.9617, 
+   47.9655, 48.9674, 49.9728, 50.9764, 51.9826, 52.9871, 53.994 , 54.9994};
+   
+  double KS[24] = 
+  {54, 21, 32, 21, 8, 29, 8, 3, 29, 28, 3, 10, 40, 11, 17, 9, 26, 80, 30, 54,
+   75, 75, 97, 107};
+   
+  double KW[24] = 
+  {0, 0, 0, 0, 0, 0, 0, 93.2581, 0.0117, 6.7302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+   0, 0, 0, 0};
+   
+  AddElement("K", 19, 24, *KN , *KA , *KS , *KW); 
+   
+  // Z = 20 --------------------------------------------------------------------
+  int CaN[24] = 
+  {34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+   53, 54, 55, 56, 57};
+   
+  double CaA[24] = 
+  {34.0141, 35.0048, 35.9931, 36.9859, 37.9763, 38.9707, 39.9626, 40.9623,
+   41.9586, 42.9588, 43.9555, 44.9562, 45.9537, 46.9545, 47.9525, 48.9557, 
+   49.9575, 50.9615, 51.9651, 52.9701, 53.9747, 54.9806, 55.9858, 56.9924};
+   
+  double CaS[24] = 
+  {32, 70, 40, 24, 5, 19, 3, 4, 4, 5, 9, 10, 25, 25, 4, 4, 10, 10, 50, 54, 75,
+   75, 97, 107};
+   
+  double CaW[24] = 
+  {0, 0, 0, 0, 0, 0, 96.941, 0, 0.647, 0.135, 2.086, 0, 0.004, 0, 0.187, 0, 0,
+   0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Ca", 20, 24, *CaN , *CaA , *CaS , *CaW);
+  
+  // Z = 21 --------------------------------------------------------------------
+  int ScN[24] = 
+  {36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+   55, 56, 57, 58, 59};
+   
+  double ScA[24] = 
+  {36.0149, 37.0031, 37.9947, 38.9848, 39.978, 40.9693, 41.9655, 42.9612,
+   43.9594, 44.9559, 45.9552, 46.9524, 47.9522, 48.95 , 49.9522, 50.9536, 
+   51.9567, 52.9592, 53.963 , 54.9674, 55.9727, 56.977, 57.9831, 58.988 };
+   
+  double ScS[24] = 
+  {54, 32, 32, 26, 4, 3, 4, 20, 19, 12, 12, 22, 6, 4, 17, 22, 25, 32, 50, 110,
+   75, 75, 86, 97};
+   
+  double ScW[24] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  
+  AddElement("Sc", 21, 24, *ScN , *ScA , *ScS , *ScW); 
+  
+  // Z = 22 --------------------------------------------------------------------
+  int TiN[24] = 
+  {38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+   57, 58, 59, 60, 61};
+   
+  double TiA[24] = 
+  {38.0098, 39.0013, 39.9905, 40.9831, 41.973 , 42.9685, 43.9597, 44.9581,
+   45.9526, 46.9518, 47.9479, 48.9479, 49.9448, 50.9466, 51.9469, 52.9497, 
+   53.9509, 54.9551, 55.958 , 56.9629, 57.9661, 58.972 , 59.9756, 60.982 };
+   
+  double TiS[24] = 
+  {27, 11, 17, 40, 6, 7, 8, 13, 12, 10, 10, 10, 11, 14, 8, 11, 25, 26, 30, 100,
+   75, 75, 86, 97};
+   
+  double TiW[24] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 8.25, 7.44, 73.72, 5.41, 5.18, 0, 0, 0, 0, 0, 0, 0,
+   0, 0, 0, 0};
+   
+  AddElement("Ti", 22, 24, *TiN , *TiA , *TiS , *TiW); 
+  
+  // Z = 23 --------------------------------------------------------------------
+  int VN[24] = 
+  {40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+   59, 60, 61, 62, 63};
+   
+  double VA[24] = 
+  {40.0111, 40.9997, 41.9912, 42.9806, 43.9744, 44.9658, 45.9602, 46.9549, 
+   47.9523, 48.9485, 49.9472, 50.944 , 51.9448, 52.9443, 53.9464, 54.9472, 
+   55.9504, 56.9524, 57.9567, 58.9593, 59.9645, 60.9674, 61.9731, 62.9768};
+   
+  double VS[24] = 
+  {54, 27, 21, 25, 90, 18, 16, 12, 28, 14, 14, 14, 14, 4, 16, 11, 26, 27, 28,
+   35, 60, 75, 75, 97};
+   
+  double VW[24] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.25, 99.75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+   0};
+   
+  AddElement("V", 23, 24, *VN , *VA , *VS , *VW); 
+  
+  // Z = 24 --------------------------------------------------------------------
+  int CrN[24] = 
+  {42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+   61, 62, 63, 64, 65};
+   
+  double CrA[24] = 
+  {42.0064, 42.9977, 43.9855, 44.9792, 45.9684, 46.9629, 47.954 , 48.9513,
+   49.946 , 50.9448, 51.9405, 52.9407, 53.9389, 54.9408, 55.9406, 56.9438, 
+   57.9442, 58.9486, 59.9497, 60.9541, 61.9558, 62.9619, 63.9642, 64.9704};
+   
+  double CrS[24] = 
+  {32, 90, 14, 11, 22, 15, 8, 28, 14, 14, 15, 15, 15, 16, 10, 10, 26, 27, 28,
+   30, 40, 75, 75, 97};
+   
+  double CrW[24] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 4.345, 0, 83.789, 9.501, 2.365, 0, 0, 0, 0, 0, 0, 0,
+   0, 0, 0, 0};
+   
+  AddElement("Cr", 24, 24, *CrN , *CrA , *CrS , *CrW);
+  
+  // Z = 25 --------------------------------------------------------------------
+  int MnN[24] = 
+  {44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+   63, 64, 65, 66, 67};
+   
+  double MnA[24] = 
+  {44.0069, 44.9945, 45.9867, 46.9761, 47.9689, 48.9596, 49.9542, 50.9482,
+   51.9456, 52.9413, 53.9404, 54.938 , 55.9389, 56.9383, 57.94  , 58.9404, 
+   59.9432, 60.9445, 61.948 , 62.9498, 63.9537, 64.9561, 65.9608, 66.9638};
+   
+  double MnS[24] = 
+  {54, 32, 12, 17, 80, 26, 15, 14, 25, 15, 18, 14, 15, 4, 30, 30, 29, 28, 28,
+   30, 35, 60, 75, 86};
+   
+  double MnW[24] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  
+  AddElement("Mn", 25, 24, *MnN , *MnA , *MnS , *MnW); 
+  
+  // Z = 26 --------------------------------------------------------------------
+  int FeN[25] = 
+  {45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+   64, 65, 66, 67, 68, 69};
+   
+  double FeA[25] = 
+  {45.0146, 46.0008, 46.9929, 47.9806, 48.9736, 49.963 , 50.9568, 51.9481,
+   52.9453, 53.9396, 54.9383, 55.9349, 56.9354, 57.9333, 58.9349, 59.9341, 
+   60.9367, 61.9368, 62.9401, 63.9409, 64.9449, 65.946 , 66.95  , 67.9525, 
+   68.9577};
+   
+  double FeS[25] = 
+  {43, 38, 28, 11, 17, 60, 16, 11, 23, 14, 14, 15, 15, 15, 15, 4, 22, 16, 20,
+   30, 30, 35, 50, 75, 86};
+   
+  double FeW[25] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 5.845, 0, 91.754, 2.119, 0.282, 0, 0, 0, 0, 0, 0,
+   0, 0, 0, 0, 0};
+   
+  AddElement("Fe", 26, 25, *FeN , *FeA , *FeS , *FeW); 
+  
+  // Z = 27 --------------------------------------------------------------------
+  int CoN[25] = 
+  {48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+   67, 68, 69, 70, 71, 72};
+   
+  double CoA[25] = 
+  {48.0018, 48.9897, 49.9815, 50.9707, 51.9636, 52.9542, 53.9485, 54.942,
+   55.9398, 56.9363, 57.9358, 58.9332, 59.9338, 60.9325, 61.9341, 62.9336, 
+   63.9358, 64.9365, 65.9398, 66.9406, 67.9444, 68.9452, 69.9498, 70.9517, 
+   71.9564};
+   
+  double CoS[25] = 
+  {43, 28, 18, 16, 70, 19, 14, 15, 26, 15, 19, 15, 15, 17, 22, 22, 22, 14, 29,
+   30, 35, 40, 75, 86, 86};
+   
+  double CoW[25] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  
+  AddElement("Co", 27, 25, *CoN , *CoA , *CoS , *CoW);
+  
+  // Z = 28 --------------------------------------------------------------------
+  int NiN[29] = 
+  {50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+   69, 70, 71, 72, 73, 74, 75, 76, 77, 78};
+   
+  double NiA[29] = 
+  {49.9959, 50.9877, 51.9757, 52.9685, 53.9579, 54.9513, 55.9421, 56.9398,
+   57.9353, 58.9344, 59.9308, 60.9311, 61.9283, 62.9297, 63.928 , 64.9301, 
+   65.9291, 66.9316, 67.9318, 68.9352, 69.9361, 70.94  , 71.9413, 72.9461, 
+   73.9479, 74.953 , 75.9553, 76.9608, 77.9638};
+   
+  double NiS[29] = 
+  {28, 28, 90, 17, 50, 12, 12, 3, 15, 15, 15, 15, 15, 15, 16, 16, 17, 20, 18,
+   15, 35, 40, 50, 64, 75, 86, 97, 107, 118};
+   
+  double NiW[29] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 68.0769, 0, 26.2231, 1.1399, 3.6345, 0, 0.9256, 0,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Ni", 28, 29, *NiN , *NiA , *NiS , *NiW); 
+  
+  // Z = 29 --------------------------------------------------------------------
+  int CuN[29] = 
+  {52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+   71, 72, 73, 74, 75, 76, 77, 78, 79, 80};
+   
+  double CuA[29] = 
+  {51.9972, 52.9856, 53.9767, 54.9661, 55.9586, 56.9492, 57.9445, 58.9395,
+   59.9374, 60.9335, 61.9326, 62.9296, 63.9298, 64.9278, 65.9289, 66.9278, 
+   67.9296, 68.9294, 69.9324, 70.9326, 71.9355, 72.9365, 73.9402, 74.9417, 
+   75.946 , 76.948 , 77.9528, 78.9553, 79.9619};
+   
+  double CuS[29] = 
+  {28, 28, 23, 32, 15, 17, 27, 18, 27, 19, 4, 15, 15, 19, 19, 9, 50, 9, 16, 40,
+   21, 32, 43, 54, 64, 75, 86, 97, 97};
+   
+  double CuW[29] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69.17, 0, 30.83, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+   0, 0, 0, 0, 0, 0};
+   
+  AddElement("Cu", 29, 29, *CuN , *CuA , *CuS , *CuW); 
+  
+  // Z = 30 --------------------------------------------------------------------
+  int ZnN[29] = 
+  {54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+   73, 74, 75, 76, 77, 78, 79, 80, 81, 82};
+   
+  double ZnA[29] = 
+  {53.993 , 54.984 , 55.9724, 56.9649, 57.9546, 58.9493, 59.9418, 60.9395,
+   61.9343, 62.9332, 63.9291, 64.9292, 65.926 , 66.9271, 67.9248, 68.9266, 
+   69.9253, 70.9277, 71.9269, 72.9298, 73.9295, 74.9329, 75.9334, 76.9371, 
+   77.9386, 78.9427, 79.9444, 80.9505, 81.9548};
+   
+  double ZnS[29] = 
+  {43, 27, 28, 15, 50, 40, 11, 18, 11, 23, 18, 18, 16, 17, 17, 18, 4, 11, 7,
+   40, 50, 80, 13, 14, 17, 29, 18, 43, 43};
+   
+  double ZnW[29] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48.63, 0, 27.9, 4.1, 18.75, 0, 0.62, 0, 0, 0,
+   0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Zn", 30, 29, *ZnN , *ZnA , *ZnS , *ZnW); 
+  
+  // Z = 31 --------------------------------------------------------------------
+  int GaN[29] = 
+  {56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+   75, 76, 77, 78, 79, 80, 81, 82, 83, 84};
+   
+  double GaA[29] = 
+  {55.9949, 56.9829, 57.9742, 58.9634, 59.9571, 60.9492, 61.9442, 62.9391,
+   63.9368, 64.9327, 65.9316, 66.9282, 67.928 , 68.9256, 69.926 , 70.9247, 
+   71.9264, 72.9252, 73.9269, 74.9265, 75.9289, 76.9293, 77.9317, 78.9329, 
+   79.9366, 80.9377, 81.9432, 82.9469, 83.9523};
+   
+  double GaS[29] = 
+  {28, 28, 23, 18, 12, 21, 30, 11, 4, 19, 4, 19, 22, 3, 3, 19, 22, 7, 80, 7, 10,
+   60, 90, 13, 13, 21, 32, 54, 64};
+   
+  double GaW[29] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60.108, 0, 39.892, 0, 0, 0, 0, 0, 0,
+   0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Ga", 31, 29, *GaN , *GaA , *GaS , *GaW);
+  
+  // Z = 32 --------------------------------------------------------------------
+  int GeN[29] = 
+  {58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+   77, 78, 79, 80, 81, 82, 83, 84, 85, 86};
+   
+  double GeA[29] = 
+  {57.991 , 58.9817, 59.9702, 60.9638, 61.9547, 62.9496, 63.9416, 64.9394,
+   65.9339, 66.9327, 67.9281, 68.928 , 69.9243, 70.925 , 71.9221, 72.9235, 
+   73.9212, 74.9229, 75.9214, 76.9235, 77.9229, 78.9254, 79.9254, 80.9288, 
+   81.9296, 82.9345, 83.9373, 84.9427, 85.9463};
+   
+  double GeS[29] = 
+  {34, 30, 25, 32, 15, 21, 27, 11, 30, 5, 7, 3, 19, 19, 16, 16, 16, 16, 16, 20,
+    4, 10, 25, 13, 26, 32, 43, 54, 64};
+    
+  double GeW[29] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20.84, 0, 27.54, 7.73, 36.28, 0, 7.61,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Ge", 32, 29, *GeN , *GeA , *GeS , *GeW); 
+  
+  // Z = 33 --------------------------------------------------------------------
+  int AsN[30] = 
+  {60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+   79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89};
+   
+  double AsA[30] = 
+  {59.9931, 60.9806, 61.9732, 62.9637, 63.9576, 64.9495, 65.9444, 66.9392,
+   67.9368, 68.9323, 69.9309, 70.9271, 71.9268, 72.9238, 73.9239, 74.9216, 
+   75.9224, 76.9206, 77.9218, 78.9209, 79.9226, 80.9221, 81.9245, 82.925 , 
+   83.9291, 84.9318, 85.9362, 86.9396, 87.9446, 88.9492};
+   
+  double AsS[30] = 
+  {64, 64, 32, 54, 38, 42, 22, 11, 11, 30, 50, 5, 5, 4, 24, 18, 18, 23, 11, 6,
+   23, 6, 21, 24, 32, 32, 43, 54, 64, 64};
+   
+  double AsW[30] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0,
+   0, 0, 0, 0, 0, 0};
+   
+  AddElement("As", 33, 30, *AsN , *AsA , *AsS , *AsW); 
+  
+  // Z = 34 --------------------------------------------------------------------
+  int SeN[28] = 
+  {65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+   84, 85, 86, 87, 88, 89, 90, 91, 92};
+   
+  double SeA[28] = 
+  {64.9647, 65.9552, 66.9501, 67.9419, 68.9396, 69.9335, 70.9323, 71.9271,
+   72.9268, 73.9225, 74.9225, 75.9192, 76.9199, 77.9173, 78.9185, 79.9165,
+   80.918 , 81.9167, 82.9191, 83.9185, 84.9222, 85.9243, 86.9285, 87.9314, 
+   88.936 , 89.9394, 90.9454, 91.9493};
+   
+  double SeS[28] = 
+  {64, 32, 21, 32, 40, 22, 22, 13, 12, 16, 16, 16, 16, 16, 16, 20, 21, 22, 4,
+   16, 30, 17, 40, 50, 32, 43, 54, 64};
+   
+  double SeW[28] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.89, 0, 9.37, 7.63, 23.77, 0, 49.61, 0, 8.73,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Se", 34, 28, *SeN , *SeA , *SeS , *SeW);
+  
+  // Z = 35 --------------------------------------------------------------------
+  int BrN[28] = 
+  {67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+   86, 87, 88, 89, 90, 91, 92, 93, 94};
+   
+  double BrA[28] = 
+  {66.9648, 67.9583, 68.9502, 69.9446, 70.9393, 71.9365, 72.9318, 73.9299,
+   74.9258, 75.9245, 76.9214, 77.9211, 78.9183, 79.9185, 80.9163, 81.9168, 
+   82.9152, 83.9165, 84.9156, 85.9188, 86.9207, 87.9241, 88.9264, 89.9306, 
+   90.934 , 91.9393, 92.9431, 93.9487};
+   
+  double BrS[28] = 
+  {54, 58, 34, 39, 32, 28, 14, 16, 15, 10, 3, 4, 20, 20, 3, 3, 5, 27, 21, 12,
+   19, 40, 60, 80, 80, 50, 32, 43};
+   
+  double BrW[28] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50.69, 0, 49.31, 0, 0, 0, 0, 0, 0, 0,
+   0, 0, 0, 0, 0, 0};
+   
+  AddElement("Br", 35, 28, *BrN , *BrA , *BrS , *BrW);
+  
+  // Z = 36 --------------------------------------------------------------------
+  int KrN[29] = 
+  {69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+   88, 89, 90, 91, 92, 93, 94, 95, 96, 97};
+   
+  double KrA[29] = 
+  {68.9653, 69.956 , 70.9505, 71.9419, 72.9389, 73.9333, 74.931 , 75.9259,
+   76.9247, 77.9204, 78.9201, 79.9164, 80.9166, 81.9135, 82.9141, 83.9115, 
+   84.9125, 85.9106, 86.9134, 87.9144, 88.9176, 89.9195, 90.9234, 91.9262, 
+   92.9313, 93.9344, 94.9398, 95.9431, 96.9486};
+   
+  double KrS[29] = 
+  {54, 43, 32, 29, 15, 60, 17, 11, 9, 7, 4, 4, 3, 28, 3, 3, 3, 12, 14, 14, 60,
+   20, 60, 13, 11, 32, 43, 54, 54};
+   
+  double KrW[29] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.35, 0, 2.28, 0, 11.58, 11.49, 57, 0, 17.3, 0,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Kr", 36, 29, *KrN , *KrA , *KrS , *KrW); 
+  
+  // Z = 37 --------------------------------------------------------------------
+  int RbN[32] = 
+  {71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+   90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102};
+   
+  double RbA[32] = 
+  {70.9653, 71.9591, 72.9504, 73.9445, 74.9386, 75.9351, 76.9304, 77.9281,
+   78.924 , 79.9225, 80.919 , 81.9182, 82.9151, 83.9144, 84.9118, 85.9112, 
+   86.9092, 87.9113, 88.9123, 89.9148, 90.9165, 91.9197, 92.922 , 93.9264, 
+   94.9293, 95.9343, 96.9373, 97.9417, 98.9454, 99.9499, 100.953, 101.959};
+   
+  double RbS[32] = 
+  {54, 54, 52, 77, 8, 8, 8, 8, 7, 8, 7, 8, 7, 3, 25, 25, 27, 5, 6, 9, 9, 7, 8,
+    9, 21, 27, 30, 40, 16, 32, 18, 54};
+    
+  double RbW[32] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72.17, 0, 27.83, 0, 0, 0, 0, 0,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Rb", 37, 32, *RbN , *RbA , *RbS , *RbW);
+  
+  // Z = 38 --------------------------------------------------------------------
+  int SrN[32] = 
+  {73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+   92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104};
+   
+  double SrA[32] = 
+  {72.966 , 73.9563, 74.9499, 75.9416, 76.9378, 77.9322, 78.9297, 79.9245,
+   80.9232, 81.9184, 82.9176, 83.9134, 84.9129, 85.9093, 86.9089, 87.9056, 
+   88.9075, 89.9077, 90.9102, 91.911 , 92.914 , 93.9154, 94.9194, 95.9217, 
+   96.9261, 97.9285, 98.9333, 99.9353, 100.941, 101.943, 102.949, 103.952};
+   
+  double SrS[32] = 
+  {64, 54, 32, 32, 16, 8, 9, 8, 8, 6, 9, 4, 4, 24, 24, 24, 24, 29, 6, 7, 8, 8,
+   8, 26, 20, 27, 15, 14, 13, 12, 54, 75};
+   
+  double SrW[32] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.56, 0, 9.86, 7, 82.58, 0, 0, 0, 0, 0,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Sr", 38, 32, *SrN , *SrA , *SrS , *SrW); 
+  
+  // Z = 39 --------------------------------------------------------------------
+  int YN[30] = 
+  {77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+   96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106};
+   
+  double YA[30] = 
+  {76.9496, 77.9435, 78.9373, 79.9343, 80.9291, 81.9268, 82.9223, 83.9204,
+   84.9164, 85.9149, 86.9109, 87.9095, 88.9058, 89.9072, 90.9073, 91.9089, 
+   92.9096, 93.9116, 94.9128, 95.9159, 96.9181, 97.9222, 98.9246, 99.9278, 
+   100.93 , 101.934, 102.937, 103.941, 104.945, 105.95};
+   
+  double YS[30] = 
+  {32, 43, 48, 43, 70, 11, 50, 10, 27, 15, 28, 29, 25, 25, 3, 10, 11, 8, 8, 23,
+   13, 26, 26, 80, 10, 90, 32, 43, 54, 75};
+   
+  double YW[30] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+   0, 0, 0, 0, 0};
+   
+  AddElement("Y", 39, 30, *YN , *YA , *YS , *YW);
+  
+  // Z = 40 --------------------------------------------------------------------
+  int ZrN[30] = 
+  {79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+   98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108};
+   
+  double ZrA[30] = 
+  {78.9492, 79.9406, 80.9368, 81.9311, 82.9287, 83.9232, 84.9215, 85.9165,
+   86.9148, 87.9102, 88.9089, 89.9047, 90.9056, 91.905 , 92.9065, 93.9063, 
+   94.908 , 95.9083, 96.911 , 97.9127, 98.9165, 99.9178, 100.921, 101.923, 
+   102.927, 103.929, 104.933, 105.936, 106.941, 107.944};
+   
+  double ZrS[30] = 
+  {43, 32, 32, 55, 10, 21, 11, 30, 9, 11, 4, 23, 23, 23, 23, 25, 25, 3, 3, 21, 
+   21, 40, 30, 50, 12, 43, 43, 54, 64, 75};
+   
+  double ZrW[30] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51.45, 11.22, 17.15, 0, 17.38, 0, 2.8, 0,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Zr", 40, 30, *ZrN , *ZrA , *ZrS , *ZrW); 
+  
+  // Z = 41 --------------------------------------------------------------------
+  int NbN[30] = 
+  {81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+   100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110};
+   
+  double NbA[30] = 
+  {80.949 , 81.9431, 82.9367, 83.9336, 84.9279, 85.925 , 86.9204, 87.918 ,
+   88.9135, 89.9113, 90.907 , 91.9072, 92.9064, 93.9073, 94.9068, 95.9081, 
+   96.9081, 97.9103, 98.9116, 99.9142, 100.915, 101.918, 102.919, 103.922, 
+   104.924, 105.928, 106.93 , 107.935, 108.938, 109.943};
+   
+  double NbS[30] = 
+  {43, 32, 34, 32, 24, 90, 70, 22, 40, 5, 3, 29, 24, 24, 20, 4, 28, 6, 14, 28,
+   20, 40, 70, 12, 11, 32, 43, 54, 54, 64};
+   
+  double NbW[30] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+   0, 0, 0, 0, 0};
+   
+  AddElement("Nb", 41, 30, *NbN , *NbA , *NbS , *NbW); 
+  
+  // Z = 42 --------------------------------------------------------------------
+  int MoN[31] = 
+  {83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+   102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113};
+   
+  double MoA[31] = 
+  {82.9487, 83.9401, 84.9366, 85.9307, 86.9273, 87.922 , 88.9195, 89.9139,
+   90.9118, 91.9068, 92.9068, 93.9051, 94.9058, 95.9047, 96.906 , 97.9054, 
+   98.9077, 99.9075, 100.91 , 101.91 , 102.913, 103.914, 104.917, 105.918, 
+   106.922, 107.924, 108.928, 109.93 , 110.935, 111.937, 112.942};
+   
+  double MoS[31] = 
+  {54, 43, 43, 47, 24, 22, 17, 7, 12, 4, 4, 20, 20, 20, 20, 20, 20, 6, 6, 22,
+   70, 70, 80, 23, 17, 21, 32, 43, 54, 64, 64};
+   
+  double MoW[31] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 14.84, 0, 9.25, 15.92, 16.68, 9.55, 24.13, 0,
+   9.63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Mo", 42, 31, *MoN , *MoA , *MoS , *MoW); 
+  
+  // Z = 43 --------------------------------------------------------------------
+  int TcN[31] = 
+  {85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+   103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115};
+   
+  double TcA[31] = 
+  {84.9489, 85.9429, 86.9365, 87.9328, 88.9275, 89.9236, 90.9184, 91.9153,
+   92.9102, 93.9097, 94.9077, 95.9079, 96.9064, 97.9072, 98.9063, 99.9077, 
+   100.907, 101.909, 102.909, 103.911, 104.912, 105.914, 106.915, 107.918, 
+   108.92 , 109.923, 110.925, 111.929, 112.931, 113.936, 114.938};
+   
+  double TcS[31] = 
+  {54, 32, 32, 32, 23, 26, 22, 28, 4, 5, 6, 6, 5, 4, 21, 23, 26, 10, 11, 50,
+   60, 15, 16, 14, 23, 43, 43, 54, 64, 64, 75};
+   
+  double TcW[31] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+   0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Tc", 43, 31, *TcN , *TcA , *TcS , *TcW); 
+  
+  // Z = 44 --------------------------------------------------------------------
+  int RuN[32] = 
+  {87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118};
+   
+  double RuA[32] = 
+  {86.9492, 87.9404, 88.9361, 89.9298, 90.9264, 91.9201, 92.9171, 93.9114,
+   94.9104, 95.9076, 96.9076, 97.9053, 98.9059, 99.9042, 100.906, 101.904,
+   102.906, 103.905, 104.908, 105.907, 106.91 , 107.91 , 108.913, 109.914, 
+   110.918, 111.919, 112.923, 113.924, 114.928, 115.93 , 116.935, 117.937};
+   
+  double RuS[32] = 
+  {64, 54, 54, 43, 54, 32, 90, 14, 13, 8, 9, 7, 21, 22, 22, 22, 22, 4, 4, 8,
+   13, 13, 70, 25, 32, 58, 54, 39, 64, 75, 86, 97};
+   
+  double RuW[32] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 5.54, 0, 1.87, 12.76, 12.6, 17.06, 31.55, 0,
+   18.62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Ru", 44, 32, *RuN , *RuA , *RuS , *RuW); 
+  
+  // Z = 45 --------------------------------------------------------------------
+  int RhN[33] = 
+  {89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+   106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 
+   121};
+   
+  double RhA[33] = 
+  {88.9494, 89.9429, 90.9365, 91.932 , 92.9257, 93.9217, 94.9159, 95.9145,
+   96.9113, 97.9107, 98.9081, 99.9081, 100.906, 101.907, 102.906, 103.907, 
+   104.906, 105.907, 106.907, 107.909, 108.909, 109.911, 110.912, 111.915, 
+   112.915, 113.919, 114.92 , 115.924, 116.925, 117.929, 118.931, 119.936, 
+   120.938};
+   
+  double RhS[33] = 
+  {54, 54, 43, 43, 43, 48, 16, 14, 40, 13, 8, 22, 19, 5, 3, 3, 5, 8, 13, 11,
+   13, 24, 22, 54, 43, 32, 54, 54, 64, 75, 86, 86, 97};
+  double RhW[33] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+   0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Rh", 45, 33, *RhN , *RhA , *RhS , *RhW); 
+  
+  // Z = 46 --------------------------------------------------------------------
+  int PdN[33] = 
+  {91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+   108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 
+   123};
+   
+  double PdA[33] = 
+  {90.9495, 91.9404, 92.9359, 93.9288, 94.9247, 95.9182, 96.9165, 97.9127,
+   98.9118, 99.9085, 100.908, 101.906, 102.906, 103.904, 104.905, 105.903, 
+   106.905, 107.904, 108.906, 109.905, 110.908, 111.907, 112.91 , 113.91 , 
+   114.914, 115.914, 116.918, 117.919, 118.923, 119.924, 120.928, 121.93 , 
+   122.934};
+   
+  double PdS[33] = 
+  {64, 54, 43, 43, 43, 16, 32, 23, 16, 12, 19, 3, 3, 5, 5, 5, 7, 4, 4, 12, 40,
+   19, 40, 26, 70, 60, 32, 23, 32, 43, 54, 54, 64};
+   
+  double PdW[33] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.02, 0, 11.14, 22.33, 27.33, 0, 26.46, 0,
+   11.72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Pd", 46, 33, *PdN , *PdA , *PdS , *PdW);
+  
+  // Z = 47 --------------------------------------------------------------------
+  int AgN[34] = 
+  {94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+   110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 
+   125, 126, 127};
+   
+  double AgA[34] = 
+  {93.9428, 94.9355, 95.9307, 96.924 , 97.9218, 98.9176, 99.9161, 100.913,
+   101.912, 102.909, 103.909, 104.907, 105.907, 106.905, 107.906, 108.905, 
+   109.906, 110.905, 111.907, 112.907, 113.909, 114.909, 115.911, 116.912, 
+   117.915, 118.916, 119.919, 120.92 , 121.923, 122.925, 123.929, 124.931, 
+   125.934, 126.937};
+   
+  double AgS[34] = 
+  {54, 43, 43, 43, 16, 16, 80, 11, 80, 18, 7, 12, 6, 6, 6, 3, 3, 4, 18, 18, 28,
+   40, 50, 50, 70, 10, 80, 16, 22, 32, 43, 43, 43, 54};
+   
+  double AgW[34] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51.839, 0, 48.161, 0, 0, 0, 0, 0, 0,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Ag", 47, 34, *AgN , *AgA , *AgS , *AgW); 
+  
+  // Z = 48 --------------------------------------------------------------------
+  int CdN[35] = 
+  {96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+   112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 
+   127, 128, 129, 130};
+   
+  double CdA[35] = 
+  {95.9398, 96.9349, 97.9276, 98.925 , 99.9202, 100.919, 101.915, 102.913,
+   103.91 , 104.909, 105.906, 106.907, 107.904, 108.905, 109.903, 110.904, 
+   111.903, 112.904, 113.903, 114.905, 115.905, 116.907, 117.907, 118.91 , 
+   119.91 , 120.913, 121.913, 122.917, 123.918, 124.921, 125.922, 126.926, 
+   127.928, 128.932, 129.934};
+   
+  double CdS[35] = 
+  {54, 43, 22, 22, 10, 16, 80, 17, 10, 12, 6, 7, 6, 4, 3, 3, 30, 30, 30, 3, 3,
+    4, 22, 90, 20, 90, 22, 40, 70, 70, 60, 80, 32, 43, 43};
+    
+  double CdW[35] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.25, 0, 0.89, 0, 12.49, 12.8, 24.13, 12.22,
+   28.73, 0, 7.49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Cd", 48, 35, *CdN , *CdA , *CdS , *CdW); 
+  
+  // Z = 49 --------------------------------------------------------------------
+  int InN[37] = 
+  {98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+   113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+   128, 129, 130, 131, 132, 133, 134};
+   
+  double InA[37] = 
+  {97.9422, 98.9346, 99.9312, 100.927, 101.925, 102.92 , 103.918, 104.915,
+   105.913, 106.91 , 107.91 , 108.907, 109.907, 110.905, 111.906, 112.904, 
+   113.905, 114.904, 115.905, 116.905, 117.906, 118.906, 119.908, 120.908, 
+   121.91 , 122.91 , 123.913, 124.914, 125.916, 126.917, 127.92 , 128.922, 
+   129.925, 130.927, 131.933, 132.938, 133.945};
+   
+  double InS[37] = 
+  {54, 54, 41, 32, 41, 27, 15, 19, 15, 14, 40, 6, 13, 6, 6, 4, 3, 5, 5, 6, 9,
+    8, 40, 29, 50, 26, 50, 30, 40, 40, 50, 14, 50, 80, 70, 43, 54};
+    
+  double InW[37] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.29, 0, 95.71, 0, 0, 0, 0, 0,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("In", 49, 37, *InN , *InA , *InS , *InW); 
+  
+  // Z = 50 --------------------------------------------------------------------
+  int SnN[38] = 
+  {100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+   115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 
+   130, 131, 132, 133, 134, 135, 136, 137};
+   
+  double SnA[38] = 
+  {99.939 , 100.936, 101.93 , 102.928, 103.923, 104.921, 105.917, 106.916,
+   107.912, 108.911, 109.908, 110.908, 111.905, 112.905, 113.903, 114.903, 
+   115.902, 116.903, 117.902, 118.903, 119.902, 120.904, 121.903, 122.906, 
+   123.905, 124.908, 125.908, 126.91 , 127.911, 128.913, 129.914, 130.917, 
+   131.918, 132.924, 133.928, 134.935, 135.939, 136.946};
+   
+  double SnS[38] = 
+  {46, 54, 43, 32, 16, 10, 50, 90, 50, 11, 17, 8, 5, 4, 3, 3, 3, 3, 3, 3, 27,
+   27, 29, 29, 15, 16, 11, 27, 29, 13, 30, 80, 28, 90, 11, 43, 54, 64};
+   
+  double SnW[38] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.97, 0, 0.66, 0.34, 14.54, 7.68, 24.22,
+   8.59, 32.58, 0, 4.63, 0, 5.79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Sn", 50, 38, *SnN , *SnA , *SnS , *SnW);
+  
+  // Z = 51 --------------------------------------------------------------------
+  int SbN[37] = 
+  {103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+   118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 
+   133, 134, 135, 136, 137, 138, 139};
+   
+  double SbA[37] = 
+  {102.94 , 103.936, 104.932, 105.929, 106.924, 107.922, 108.918, 109.917,
+   110.913, 111.912, 112.909, 113.909, 114.907, 115.907, 116.905, 117.906, 
+   118.904, 119.905, 120.904, 121.905, 122.904, 123.906, 124.905, 125.907, 
+   126.907, 127.909, 128.909, 129.912, 130.912, 131.914, 132.915, 133.921, 
+   134.925, 135.931, 136.935, 137.941, 138.946};
+   
+  double SbS[37] = 
+  {54, 39, 17, 34, 32, 22, 20, 22, 22, 25, 24, 22, 22, 6, 10, 4, 9, 8, 24, 24,
+   22, 22, 3, 30, 6, 27, 23, 27, 80, 25, 80, 60, 11, 32, 43, 54, 64};
+   
+  double SbW[37] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57.21, 0, 42.79, 0, 0,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Sb", 51, 37, *SbN , *SbA , *SbS , *SbW); 
+  
+  // Z = 52 --------------------------------------------------------------------
+  int TeN[37] = 
+  {106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+   121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 
+   136, 137, 138, 139, 140, 141, 142};
+   
+  double TeA[37] = 
+  {105.938, 106.935, 107.929, 108.927, 109.922, 110.921, 111.917, 112.916,
+   113.912, 114.912, 115.908, 116.909, 117.906, 118.906, 119.904, 120.905, 
+   121.903, 122.904, 123.903, 124.904, 125.903, 126.905, 127.904, 128.907, 
+   129.906, 130.909, 131.909, 132.911, 133.912, 134.916, 135.92 , 136.925, 
+   137.929, 138.935, 139.939, 140.944, 141.948};
+   
+  double TeS[37] = 
+  {43, 32, 16, 80, 60, 80, 18, 22, 22, 11, 10, 20, 17, 9, 11, 27, 20, 19, 16,
+   20, 20, 4, 19, 3, 21, 22, 12, 80, 40, 10, 50, 13, 22, 43, 54, 54, 64};
+   
+  double TeW[37] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.09, 0, 2.55, 0.89, 4.74, 7.07,
+   18.84, 0, 31.74, 0, 34.08, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Te", 52, 37, *TeN , *TeA , *TeS , *TeW); 
+  
+  // Z = 53 --------------------------------------------------------------------
+  int IN[37] = 
+  {108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+   123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 
+   138, 139, 140, 141, 142, 143, 144};
+   
+  double IA[37] = 
+  {107.943, 108.938, 109.935, 110.93 , 111.928, 112.924, 113.922, 114.918,
+   115.917, 116.914, 117.913, 118.91 , 119.91 , 120.907, 121.908, 122.906, 
+   123.906, 124.905, 125.906, 126.904, 127.906, 128.905, 129.907, 130.906, 
+   131.908, 132.908, 133.91 , 134.91 , 135.915, 136.918, 137.922, 138.926, 
+   139.931, 140.935, 141.94, 142.944, 143.95};
+   
+  double IS[37] = 
+  {39, 16, 33, 32, 23, 60, 32, 50, 15, 80, 80, 70, 20, 12, 6, 4, 26, 20, 4, 4,
+   4, 4, 4, 12, 11, 28, 16, 25, 50, 30, 90, 30, 23, 32, 43, 43, 54};
+   
+  double IW[37] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("I", 53, 37, *IN , *IA , *IS , *IW); 
+  
+  // Z = 54 --------------------------------------------------------------------
+  int XeN[38] = 
+  {110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+   125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 
+   140, 141, 142, 143, 144, 145, 146, 147};
+   
+  double XeA[38] = 
+  {109.944, 110.942, 111.936, 112.933, 113.928, 114.927, 115.922, 116.921,
+   117.917, 118.916, 119.912, 120.911, 121.909, 122.908, 123.906, 124.906, 
+   125.904, 126.905, 127.904, 128.905, 129.904, 130.905, 131.904, 132.906, 
+   133.905, 134.907, 135.907, 136.912, 137.914, 138.919, 139.922, 140.927, 
+   141.93 , 142.935, 143.938, 144.944, 145.947, 146.953};
+   
+  double XeS[38] = 
+  {43, 33, 16, 10, 22, 26, 26, 19, 107, 13, 50, 26, 90, 17, 21, 21, 7, 4, 15,
+    9, 10, 10, 12, 4, 9, 11, 8, 8, 40, 23, 70, 10, 11, 24, 34, 43, 43, 54};
+    
+  double XeW[38] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.09, 0, 0.09, 0, 1.92, 26.44,
+   4.08, 21.18, 26.89, 0, 10.44, 0, 8.87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Xe", 54, 38, *XeN , *XeA , *XeS , *XeW);
+  
+  // Z = 55 --------------------------------------------------------------------
+  int CsN[40] = 
+  {112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+   127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
+   142, 143, 144, 145, 146, 147, 148, 149, 150, 151};
+   
+  double CsA[40] = 
+  {111.95 , 112.945, 113.941, 114.936, 115.933, 116.929, 117.927, 118.922,
+   119.921, 120.917, 121.916, 122.913, 123.912, 124.91 , 125.909, 126.907, 
+   127.908, 128.906, 129.907, 130.905, 131.906, 132.905, 133.907, 134.906, 
+   135.907, 136.907, 137.911, 138.913, 139.917, 140.92 , 141.924, 142.927, 
+   143.932, 144.935, 145.94 , 146.944, 147.949, 148.953, 149.958, 150.962};
+   
+  double CsS[40] = 
+  {33, 16, 33, 46, 38, 60, 14, 15, 11, 15, 18, 13, 13, 8, 13, 9, 6, 5, 9, 6, 4,
+    3, 3, 3, 4, 3, 10, 5, 9, 11, 11, 24, 30, 50, 90, 16, 63, 32, 54, 75};
+    
+  double CsW[40] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Cs", 55, 40, *CsN , *CsA , *CsS , *CsW); 
+  
+  // Z = 56 --------------------------------------------------------------------
+  int BaN[40] = 
+  {114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+   129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+    144, 145, 146, 147, 148, 149, 150, 151, 152, 153};
+    
+  double BaA[40] = 
+  {113.951, 114.948, 115.942, 116.939, 117.933, 118.931, 119.926, 120.924,
+   121.92 , 122.919, 123.915, 124.915, 125.911, 126.911, 127.908, 128.909, 
+   129.906, 130.907, 131.905, 132.906, 133.905, 134.906, 135.905, 136.906, 
+   137.905, 138.909, 139.911, 140.914, 141.916, 142.921, 143.923, 144.927, 
+   145.93 , 146.934, 147.938, 148.942, 149.946, 150.951, 151.954, 152.96};
+   
+  double BaS[40] = 
+  {48, 64, 54, 70, 54, 109, 32, 33, 32, 32, 15, 27, 15, 11, 12, 12, 7, 7, 3, 3,
+    3, 3, 3, 3, 3, 3, 9, 9, 7, 14, 15, 60, 80, 10, 15, 43, 54, 64, 75, 97};
+    
+  double BaW[40] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.106, 0, 0.101, 0, 2.417,
+   6.592, 7.854, 11.232, 71.698, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Ba", 56, 40, *BaN , *BaA , *BaS , *BaW); 
+  
+  // Z = 57 --------------------------------------------------------------------
+  int LaN[39] = 
+  {117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+   132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+    147, 148, 149, 150, 151, 152, 153, 154, 155};
+    
+  double LaA[39] = 
+  {116.95 , 117.947, 118.941, 119.938, 120.933, 121.931, 122.926, 123.925,
+   124.921, 125.919, 126.916, 127.915, 128.913, 129.912, 130.91 , 131.91 ,
+   132.908, 133.908, 134.907, 135.908, 136.906, 137.907, 138.906, 139.909, 
+   140.911, 141.914, 142.916, 143.92 , 144.922, 145.926, 146.928, 147.932, 
+   148.934, 149.939, 150.942, 151.946, 152.949, 153.954, 154.958};
+   
+  double LaS[39] = 
+  {96, 86, 75, 64, 54, 54, 43, 32, 32, 32, 24, 43, 60, 22, 11, 50, 21, 28, 11,
+   80, 50, 4, 3, 3, 5, 6, 16, 60, 70, 80, 80, 14, 32, 43, 54, 64, 75, 86, 97};
+   
+  double LaW[39] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.09, 99.91,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("La", 57, 39, *LaN , *LaA , *LaS , *LaW); 
+  
+  // Z = 58 --------------------------------------------------------------------
+  int CeN[39] = 
+  {119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+   134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
+   149, 150, 151, 152, 153, 154, 155, 156, 157};
+   
+  double CeA[39] = 
+  {118.953, 119.947, 120.944, 121.938, 122.936, 123.931, 124.929, 125.924,
+   126.923, 127.919, 128.918, 129.915, 130.914, 131.911, 132.912, 133.909, 
+   134.909, 135.907, 136.908, 137.906, 138.907, 139.905, 140.908, 141.909, 
+   142.912, 143.914, 144.917, 145.919, 146.923, 147.924, 148.928, 149.93 , 
+   150.934, 151.936, 152.941, 153.943, 154.948, 155.951, 156.956};
+   
+  double CeS[39] = 
+  {97, 86, 75, 64, 54, 54, 43, 43, 32, 32, 22, 66, 44, 21, 21, 22, 12, 50, 50,
+   11, 8, 3, 3, 4, 4, 4, 40, 70, 60, 13, 80, 13, 32, 43, 54, 64, 75, 86, 97};
+   
+  double CeW[39] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.185, 0, 0.251, 0,
+   88.45, 0, 11.114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Ce", 58, 39, *CeN , *CeA , *CeS , *CeW);
+  
+  // Z = 59 --------------------------------------------------------------------
+  int PrN[39] = 
+  {121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+   136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+   151, 152, 153, 154, 155, 156, 157, 158, 159};
+   
+  double PrA[39] = 
+  {120.955, 121.952, 122.946, 123.943, 124.938, 125.935, 126.931, 127.929,
+   128.925, 129.923, 130.92 , 131.919, 132.916, 133.916, 134.913, 135.913, 
+   136.911, 137.911, 138.909, 139.909, 140.908, 141.91 , 142.911, 143.913, 
+   144.915, 145.918, 146.919, 147.922, 148.924, 149.927, 150.928, 151.932, 
+   152.934, 153.937, 154.94 , 155.944, 156.947, 157.952, 158.955};
+   
+  double PrS[39] = 
+  {86, 86, 75, 64, 54, 54, 43, 43, 32, 32, 47, 21, 21, 32, 16, 50, 50, 16, 9,
+    7, 3, 3, 3, 4, 8, 60, 40, 10, 11, 90, 40, 32, 32, 43, 54, 64, 75, 86, 97};
+    
+  double PrW[39] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Pr", 59, 39, *PrN , *PrA , *PrS , *PrW); 
+  
+  // Z = 60 --------------------------------------------------------------------
+  int NdN[36] = 
+  {126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+   141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 
+   156, 157, 158, 159, 160, 161};
+   
+  double NdA[36] = 
+  {125.943, 126.941, 127.935, 128.933, 129.929, 130.927, 131.923, 132.922,
+   133.919, 134.918, 135.915, 136.915, 137.912, 138.912, 139.909, 140.91 , 
+   141.908, 142.91 , 143.91 , 144.913, 145.913, 146.916, 147.917, 148.92 , 
+   149.921, 150.924, 151.925, 152.928, 153.929, 154.933, 155.935, 156.939, 
+   157.942, 158.946, 159.949, 160.954};
+   
+  double NdS[36] = 
+  {75, 64, 64, 39, 54, 50, 32, 32, 36, 22, 60, 80, 22, 50, 21, 4, 3, 3, 3, 3,
+    3, 3, 3, 3, 4, 4, 30, 29, 12, 16, 43, 54, 64, 75, 86, 97};
+    
+  double NdW[36] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27.2, 12.2, 23.8, 8.3, 17.2,
+   0, 5.7, 0, 5.6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Nd", 60, 36, *NdN , *NdA , *NdS , *NdW); 
+   
+  // Z = 61 --------------------------------------------------------------------
+  int PmN[36] = 
+  {128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+   143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 
+   158, 159, 160, 161, 162, 163};
+   
+  double PmA[36] = 
+  {127.948, 128.943, 129.94 , 130.936, 131.934, 132.93 , 133.928, 134.925,
+   135.923, 136.921, 137.919, 138.917, 139.916, 140.914, 141.913, 142.911, 
+   143.913, 144.913, 145.915, 146.915, 147.917, 148.918, 149.921, 150.921, 
+   151.923, 152.924, 153.927, 154.928, 155.931, 156.933, 157.937, 158.939, 
+   159.943, 160.946, 161.95 , 162.954};
+   
+  double PmS[36] = 
+  {97, 86, 75, 64, 54, 54, 42, 35, 22, 15, 34, 60, 30, 29, 50, 4, 4, 4, 5, 3,
+    7, 5, 22, 6, 80, 12, 80, 30, 40, 32, 43, 54, 64, 75, 86, 97};
+    
+  double PmW[36] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Pm", 61, 36, *PmN , *PmA , *PmS , *PmW);
+  
+  // Z = 62 --------------------------------------------------------------------
+  int SmN[36] = 
+  {130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+   145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+    160, 161, 162, 163, 164, 165};
+    
+  double SmA[36] = 
+  {129.949, 130.946, 131.941, 132.939, 133.934, 134.932, 135.928, 136.927,
+   137.924, 138.922, 139.919, 140.918, 141.915, 142.915, 143.912, 144.913,
+   145.913, 146.915, 147.915, 148.917, 149.917, 150.92 , 151.92 , 152.922, 
+   153.922, 154.925, 155.926, 156.928, 157.93 , 158.933, 159.935, 160.939, 
+   161.941, 162.945, 163.948, 164.953};
+   
+  double SmS[36] = 
+  {97, 97, 75, 64, 54, 54, 43, 12, 32, 16, 16, 13, 11, 4, 4, 4, 4, 3, 3, 3, 3,
+    3, 3, 3, 3, 3, 10, 50, 80, 32, 43, 54, 64, 75, 86, 97};
+    
+  double SmW[36] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.07, 0, 0, 14.99, 11.24, 13.82,
+   7.38, 0, 26.75, 0, 22.75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Sm", 62, 36, *SmN , *SmA , *SmS , *SmW);
+  
+  // Z = 63 --------------------------------------------------------------------
+  int EuN[36] = 
+  {132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+   147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 
+   162, 163, 164, 165, 166, 167};
+   
+  double EuA[36] = 
+  {131.954, 132.949, 133.946, 134.942, 135.94 , 136.935, 137.933, 138.93 ,
+   139.928, 140.925, 141.923, 142.92 , 143.919, 144.916, 145.917, 146.917,
+   147.918, 148.918, 149.92 , 150.92 , 151.922, 152.921, 153.923, 154.923, 
+   155.925, 156.925, 157.928, 158.929, 159.932, 160.934, 161.937, 162.939, 
+   163.943, 164.946, 165.95 , 166.953};
+   
+  double EuS[36] = 
+  {97, 97, 75, 64, 54, 54, 43, 16, 60, 30, 30, 14, 19, 5, 8, 4, 19, 5, 8, 3,
+    3, 3, 3, 3, 6, 7, 80, 9, 22, 32, 43, 54, 64, 75, 86, 97};
+    
+  double EuW[36] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47.81, 0, 52.19,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Eu", 63, 36, *EuN , *EuA , *EuS , *EuW);
+  
+  // Z = 64 --------------------------------------------------------------------
+  int GdN[34] = 
+  {136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+   151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 
+   166, 167, 168, 169};
+   
+  double GdA[34] = 
+  {135.947, 136.945, 137.94 , 138.938, 139.934, 140.932, 141.928, 142.927,
+   143.923, 144.922, 145.918, 146.919, 147.918, 148.919, 149.919, 150.92 , 
+   151.92 , 152.922, 153.921, 154.923, 155.922, 156.924, 157.924, 158.926, 
+   159.927, 160.93 , 161.931, 162.934, 163.936, 164.939, 165.942, 166.946, 
+   167.948, 168.953};
+   
+  double GdS[34] = 
+  {75, 64, 54, 54, 43, 32, 32, 22, 22, 40, 6, 4, 4, 5, 7, 4, 3, 3, 3, 3, 3, 3,
+    3, 3, 3, 3, 5, 32, 43, 54, 64, 64, 75, 86};
+    
+  double GdW[34] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2, 0, 2.18, 14.8, 20.47,
+   15.65, 24.84, 0, 21.86, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Gd", 64, 34, *GdN , *GdA , *GdS , *GdW);
+  
+  // Z = 65 --------------------------------------------------------------------
+  int TbN[34] = 
+  {138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+   153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 
+   168, 169, 170, 171};
+   
+  double TbA[34] = 
+  {137.953, 138.948, 139.946, 140.941, 141.939, 142.935, 143.933, 144.929,
+   145.927, 146.924, 147.924, 148.923, 149.924, 150.923, 151.924, 152.923, 
+   153.925, 154.923, 155.925, 156.924, 157.925, 158.925, 159.927, 160.928, 
+   161.929, 162.931, 163.933, 164.935, 165.938, 166.94 , 167.944, 168.946, 
+   169.95 , 170.953};
+   
+  double TbS[34] = 
+  {86, 75, 96, 64, 82, 43, 32, 24, 50, 13, 30, 5, 9, 5, 40, 5, 50, 13, 5, 3,
+    3, 3, 3, 3, 40, 5, 11, 21, 32, 43, 54, 64, 75, 86};
+    
+  double TbW[34] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Tb", 65, 34, *TbN , *TbA , *TbS , *TbW);
+  
+  // Z = 66 --------------------------------------------------------------------
+  int DyN[34] = 
+  {140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+   155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 
+   170, 171, 172, 173};
+   
+  double DyA[34] = 
+  {139.954, 140.951, 141.946, 142.944, 143.939, 144.937, 145.933, 146.931,
+   147.927, 148.927, 149.926, 150.926, 151.925, 152.926, 153.924, 154.926, 
+   155.924, 156.925, 157.924, 158.926, 159.925, 160.927, 161.927, 162.929, 
+   163.929, 164.932, 165.933, 166.936, 167.937, 168.94 , 169.943, 170.946, 
+   171.949, 172.953};
+   
+  double DyS[34] = 
+  {97, 75, 85, 54, 43, 32, 12, 60, 30, 12, 6, 5, 6, 5, 9, 13, 7, 7, 4, 3, 3, 3,
+    3, 3, 3, 3, 3, 60, 32, 32, 43, 54, 64, 75};
+    
+  double DyW[34] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06, 0, 0.1, 0, 2.34,
+   18.91, 25.51, 24.9, 28.18, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Dy", 66, 34, *DyN , *DyA , *DyS , *DyW);
+  
+  // Z = 67 --------------------------------------------------------------------
+  int HoN[34] = 
+  {142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+   157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 
+   172, 173, 174, 175};
+   
+  double HoA[34] = 
+  {141.96 , 142.955, 143.952, 144.947, 145.944, 146.94 , 147.937, 148.934,
+   149.933, 150.932, 151.932, 152.93 , 153.931, 154.929, 155.93 , 156.928, 
+   157.929, 158.928, 159.929, 160.928, 161.929, 162.929, 163.93 , 164.93 , 
+   165.932, 166.933, 167.935, 168.937, 169.94 , 170.941, 171.945, 172.947, 
+   173.951, 174.954};
+   
+  double HoS[34] = 
+  {107, 75, 64, 64, 54, 43, 29, 23, 11, 13, 30, 6, 10, 25, 22, 50, 30, 4, 16,
+     4, 5, 3, 3, 3, 3, 6, 30, 22, 50, 64, 43, 43, 54, 64};
+     
+  double HoW[34] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Ho", 67, 34, *HoN , *HoA , *HoS , *HoW); 
+  
+  // Z = 68 --------------------------------------------------------------------
+  int ErN[34] = 
+  {144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+   159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 
+   174, 175, 176, 177};
+   
+  double ErA[34] = 
+  {143.961, 144.957, 145.952, 146.949, 147.944, 148.942, 149.938, 150.937,
+   151.935, 152.935, 153.933, 154.933, 155.931, 156.932, 157.93 , 158.931, 
+   159.929, 160.93 , 161.929, 162.93 , 163.929, 164.931, 165.93 , 166.932, 
+   167.932, 168.935, 169.935, 170.938, 171.939, 172.942, 173.944, 174.948, 
+   175.95 , 176.954};
+   
+  double ErS[34] = 
+  {86, 75, 64, 54, 43, 51, 11, 32, 30, 12, 6, 50, 80, 90, 11, 5, 50, 10, 4, 6,
+    4, 4, 3, 3, 3, 3, 3, 3, 5, 21, 32, 43, 43, 64};
+    
+  double ErW[34] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.14, 0, 1.61, 0,
+   33.61, 22.93, 26.78, 0, 14.93, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Er", 68, 34, *ErN , *ErA , *ErS , *ErW); 
+  
+  // Z = 69 --------------------------------------------------------------------
+  int TmN[34] = 
+  {146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+   161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 
+   176, 177, 178, 179};
+   
+  double TmA[34] = 
+  {145.966, 146.961, 147.958, 148.953, 149.95 , 150.945, 151.944, 152.942,
+   153.941, 154.939, 155.939, 156.937, 157.937, 158.935, 159.935, 160.933, 
+   161.934, 162.933, 163.933, 164.932, 165.934, 166.933, 167.934, 168.934, 
+   169.936, 170.936, 171.938, 172.94 , 173.942, 174.944, 175.947, 176.949, 
+   177.953, 178.955};
+   
+  double TmS[34] = 
+  {75, 64, 75, 64, 54, 15, 32, 23, 12, 14, 60, 11, 13, 70, 33, 10, 30, 7, 20,
+    4, 12, 3, 4, 3, 3, 3, 7, 6, 50, 50, 11, 32, 43, 54};
+    
+  double TmW[34] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Tm", 69, 34, *TmN , *TmA , *TmS , *TmW); 
+  
+  // Z = 70 --------------------------------------------------------------------
+  int YbN[34] = 
+  {148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+   163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 
+   178, 179, 180, 181};
+   
+  double YbA[34] = 
+  {147.967, 148.963, 149.958, 150.955, 151.95 , 152.949, 153.946, 154.946,
+   155.943, 156.943, 157.94 , 158.94 , 159.938, 160.938, 161.936, 162.936, 
+   163.935, 164.935, 165.934, 166.935, 167.934, 168.935, 169.935, 170.936, 
+   171.936, 172.938, 173.939, 174.941, 175.943, 176.945, 177.947, 178.95, 
+   179.952, 180.956};
+   
+  double YbS[34] = 
+  {86, 75, 64, 34, 38, 32, 11, 32, 40, 60, 11, 10, 22, 24, 22, 11, 11, 22, 9,
+    5, 5, 5, 3, 3, 30, 30, 30, 30, 3, 3, 11, 32, 43, 43};
+    
+  double YbW[34] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.13, 0, 3.04,
+   14.28, 21.83, 16.13, 31.83, 0, 12.76, 0, 0, 0, 0, 0};
+   
+  AddElement("Yb", 70, 34, *YbN , *YbA , *YbS , *YbW); 
+  
+  // Z = 71 --------------------------------------------------------------------
+  int LuN[35] = 
+  {150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 
+   180, 181, 182, 183, 184};
+   
+  double LuA[35] = 
+  {149.973, 150.967, 151.964, 152.959, 153.957, 154.954, 155.953, 156.95 ,
+   157.949, 158.947, 159.946, 160.944, 161.943, 162.941, 163.941, 164.94 , 
+   165.94 , 166.938, 167.939, 168.938, 169.938, 170.938, 171.939, 172.939, 
+   173.94 , 174.941, 175.943, 176.944, 177.946, 178.947, 179.95 , 180.952, 
+   181.955, 182.958, 183.961};
+   
+  double LuS[35] = 
+  {75, 65, 75, 64, 54, 14, 32, 23, 13, 50, 25, 26, 24, 24, 13, 90, 17, 11, 90,
+    6, 20, 3, 4, 3, 30, 28, 28, 28, 3, 6, 80, 32, 32, 32, 43};
+    
+  double LuW[35] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+   97.41, 2.59, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Lu", 71, 35, *LuN , *LuA , *LuS , *LuW);
+  
+  // Z = 72 --------------------------------------------------------------------
+  int HfN[33] = 
+  {154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+   169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 
+   184, 185, 186};
+   
+  double HfA[33] = 
+  {153.964, 154.963, 155.959, 156.958, 157.955, 158.954, 159.951, 160.95 ,
+   161.947, 162.947, 163.944, 164.945, 165.942, 166.943, 167.941, 168.941, 
+   169.94 , 170.94 , 171.939, 172.941, 173.94 , 174.942, 175.941, 176.943, 
+   177.944, 178.946, 179.947, 180.949, 181.951, 182.954, 183.955, 184.959, 
+   185.961};
+   
+  double HfS[33] = 
+  {75, 64, 38, 32, 11, 32, 40, 80, 12, 34, 21, 40, 32, 22, 11, 90, 21, 21, 50,
+   11, 3, 3, 29, 27, 27, 27, 27, 28, 7, 30, 40, 32, 32};
+   
+  double HfW[33] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.16, 0, 5.26,
+   18.6, 27.28, 13.62, 35.08, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Hf", 72, 33, *HfN , *HfA , *HfS , *HfW);
+  
+  // Z = 73 --------------------------------------------------------------------
+  int TaN[33] = 
+  {156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+   171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 
+   186, 187, 188};
+   
+  double TaA[33] = 
+  {155.972, 156.968, 157.966, 158.963, 159.961, 160.958, 161.957, 162.954,
+   163.954, 164.951, 165.95 , 166.948, 167.948, 168.946, 169.946, 170.944, 
+   171.945, 172.944, 173.944, 174.944, 175.945, 176.944, 177.946, 178.946, 
+   179.947, 180.948, 181.95 , 182.951, 183.954, 184.956, 185.959, 186.96 , 
+   187.964};
+   
+  double TaS[33] = 
+  {64, 64, 54, 13, 33, 60, 14, 80, 43, 24, 32, 46, 39, 22, 21, 22, 20, 24, 90,
+   11, 11, 4, 11, 6, 3, 3, 3, 3, 28, 15, 60, 32, 32};
+   
+  double TaW[33] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+   0.012, 99.988, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Ta", 73, 33, *TaN , *TaA , *TaS , *TaW); 
+  
+  // Z = 74 --------------------------------------------------------------------
+  int WN[33] = 
+  {158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+   173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 
+   188, 189, 190};
+   
+  double WA[33] = 
+  {157.974, 158.972, 159.968, 160.967, 161.963, 162.963, 163.959, 164.958,
+   165.955, 166.955, 167.952, 168.952, 169.949, 170.949, 171.947, 172.948, 
+   173.946, 174.947, 175.946, 176.947, 177.946, 178.947, 179.947, 180.948, 
+   181.948, 182.95 , 183.951, 184.953, 185.954, 186.957, 187.958, 188.962, 
+   189.963};
+   
+  double WS[33] = 
+  {75, 64, 38, 33, 11, 33, 40, 90, 13, 33, 21, 34, 51, 30, 29, 40, 32, 21, 21,
+   32, 11, 17, 5, 6, 3, 29, 29, 30, 3, 3, 4, 21, 24};
+   
+  double WW[33] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.12, 0,
+   26.5, 14.31, 30.64, 0, 28.43, 0, 0, 0, 0};
+   
+  AddElement("W", 74, 33, *WN , *WA , *WS , *WW);
+  
+  // Z = 75 --------------------------------------------------------------------
+  int ReN[33] = 
+  {160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+   175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 
+   190, 191, 192};
+   
+  double ReA[33] = 
+  {159.981, 160.978, 161.976, 162.972, 163.97 , 164.967, 165.966, 166.963,
+   167.962, 168.959, 169.958, 170.956, 171.955, 172.953, 173.953, 174.951, 
+   175.952, 176.95 , 177.951, 178.95 , 179.951, 180.95 , 181.951, 182.951, 
+   183.953, 184.953, 185.955, 186.956, 187.958, 188.959, 189.962, 190.963,
+   191.966};
+    
+  double ReS[33] = 
+  {64, 64, 55, 12, 33, 80, 15, 14, 43, 22, 43, 37, 33, 48, 44, 48, 21, 21, 22,
+   60, 40, 15, 11, 9, 6, 30, 3, 30, 30, 9, 23, 11, 21};
+   
+  double ReW[33] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+   37.4, 0, 62.6, 0, 0, 0, 0, 0};
+   
+  AddElement("Re", 75, 33, *ReN , *ReA , *ReS , *ReW); 
+
+  // Z = 76 --------------------------------------------------------------------
+  int OsN[35] = 
+  {162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 
+   177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 
+   192, 193, 194, 195, 196};
+		    
+  double OsA[35] = 
+  {161.984, 162.982, 163.978, 164.976, 165.973, 166.972, 167.968, 168.967,
+   169.964, 170.963, 171.96 , 172.96 , 173.957, 174.957, 175.955, 176.955, 
+   177.953, 178.954, 179.952, 180.953, 181.952, 182.953, 183.952, 184.954, 
+   185.954, 186.956, 187.956, 188.958, 189.958, 190.961, 191.961, 192.964, 
+   193.965, 194.968, 195.97};
+   
+  double OsS[35] = 
+  {75, 64, 38, 33, 11, 33, 40, 90, 14, 33, 21, 33, 50, 32, 22, 30, 22, 25, 20, 
+   22, 27, 11,  3,  3,  3, 30, 30, 30,  3,  3,  4,  4,  4, 54, 40};
+   
+  double OsW[35] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.02, 0,
+   1.59, 1.96, 13.24, 16.15, 26.26, 0, 40.78, 0, 0, 0, 0};
+   
+  AddElement("Os", 76, 35, *OsN , *OsA , *OsS , *OsW);
+   
+  // Z = 77 --------------------------------------------------------------------
+  int IrN[35] = 
+  {165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+   195, 196, 197, 198, 199};
+   
+  double IrA[35] = 
+  {164.988, 165.986, 166.982, 167.98 , 168.976, 169.975, 170.972, 171.971,
+   172.968, 173.967, 174.964, 175.964, 176.961, 177.961, 178.959, 179.959,
+   180.958, 181.958, 182.957, 183.957, 184.957, 185.958, 186.957, 187.959,
+   188.959, 189.961, 190.961, 191.963, 192.963, 193.965, 194.966, 195.968, 
+   196.97 , 197.972, 198.974};
+   
+  double IrS[35] = 
+  {43, 55, 11, 35, 10, 16, 14, 43, 25, 43, 37, 33, 48, 39, 43, 21, 23, 15, 15,
+   29, 21, 22,  7,  8, 14, 21,  3,  3,  3,  3,  3, 40, 22, 21, 40};
+   
+  double IrW[35] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+   37.3, 0, 62.7, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Ir", 77, 35, *IrN , *IrA , *IrS , *IrW);
+  
+  // Z = 78 --------------------------------------------------------------------
+  int PtN[35] = 
+  {168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 
+   183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 
+   198, 199, 200, 201, 202};
+   
+  double PtA[35] = 
+  {167.988, 168.986, 169.982, 170.981, 171.977, 172.976, 173.973, 174.972, 
+   175.969, 176.968, 177.966, 178.965, 179.963, 180.963, 181.961, 182.962, 
+   183.96 , 184.961, 185.959, 186.961, 187.959, 188.961, 189.96 , 190.962, 
+   191.961, 192.963, 193.963, 194.965, 195.965, 196.967, 197.968, 198.971, 
+   199.971, 200.975, 201.976};
+   
+  double PtS[35] = 
+  {38, 34, 11, 34, 40, 11, 14, 33, 21, 33, 50, 32, 22, 30, 22, 25, 20, 22, 30,
+   20,  6, 12,  7,  5,  4,  3,  3,  3,  3,  3,  4,  5, 22, 50, 32};
+   
+  double PtW[35] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.014, 0,
+   0.782, 0, 32.967, 33.832, 25.242, 0, 7.163, 0, 0, 0, 0};
+   
+  AddElement("Pt", 78, 35, *PtN , *PtA , *PtS , *PtW);
+  
+  // Z = 79 --------------------------------------------------------------------
+  int AuN[35] = 
+  {171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+   186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 
+   201, 202, 203, 204, 205};
+   
+  double AuA[35] = 
+  {170.992, 171.99 , 172.986, 173.985, 174.982, 175.98 , 176.977, 177.976, 
+   178.973, 179.972, 180.97 , 181.97 , 182.968, 183.967, 184.966, 185.966, 
+   186.965, 187.965, 188.964, 189.965, 190.964, 191.965, 192.964, 193.965, 
+   194.965, 195.967, 196.967, 197.968, 198.969, 199.971, 200.972, 201.974, 
+   202.975, 203.978, 204.98 };
+   
+  double AuS[35] = 
+  {27, 36, 11, 16, 26, 43, 25, 43, 37, 32, 48, 39, 43, 21, 23, 15, 16, 11, 22,
+   17, 50, 17, 10, 12,  3,  4,  3,  3,  3, 60,  5, 18,  5, 22, 32};
+   
+  double AuW[35] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+   100, 0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Au", 79, 35, *AuN , *AuA , *AuS , *AuW);
+   
+  // Z = 80 --------------------------------------------------------------------
+  int HgN[34] = 
+  {175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 
+   190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 
+   205, 206, 207, 208};
+   
+  double HgA[34] = 
+  {174.991, 175.987, 176.986, 177.982, 178.982, 179.978, 180.978, 181.975,
+   182.975, 183.972, 184.972, 185.969, 186.97 , 187.968, 188.968, 189.966, 
+   190.967, 191.966, 192.967, 193.965, 194.967, 195.966, 196.967, 197.967, 
+   198.968, 199.968, 200.97 , 201.971, 202.973, 203.973, 204.976, 205.977, 
+   206.983, 207.986};
+   
+  double HgS[34] = 
+  {34, 40, 12, 16, 33, 21, 33, 50, 32, 22, 30, 22, 26, 19, 30, 16, 90, 30, 21,
+   25, 50,  4,  5,  3,  3,  3,  3,  3,  3,  3,  5, 22, 16, 32};
+   
+  double HgW[34] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.15, 0, 9.97,
+   16.87, 23.1, 13.18, 29.86, 0, 6.87, 0, 0, 0, 0};
+   
+  AddElement("Hg", 80, 34, *HgN , *HgA , *HgS , *HgW); 
+   
+  // Z = 81 --------------------------------------------------------------------
+  int TlN[34] = 
+  {177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+   192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 
+   207, 208, 209, 210};
+   
+  double TlA[34] = 
+  {176.997, 177.995, 178.991, 179.99 , 180.987, 181.986, 182.983, 183.982,
+   184.979, 185.979, 186.976, 187.976, 188.974, 189.974, 190.972, 191.972, 
+   192.971, 193.971, 194.97 , 195.971, 196.97 , 197.97 , 198.97 , 199.971, 
+   200.971, 201.972, 202.972, 203.974, 204.974, 205.976, 206.977, 207.982, 
+   208.985, 209.99 };
+   
+  double TlS[34] = 
+  {24, 23, 15, 48, 41, 43, 42, 32, 43, 39, 43, 24, 37, 46, 23, 22, 27, 22, 14,
+   15, 30, 90, 11,  7, 16, 16,  3,  3,  3,  3,  6,  3, 10, 12};
+   
+  double TlW[34] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+   29.524, 0, 70.476, 0, 0, 0, 0, 0};
+   
+  AddElement("Tl", 81, 34, *TlN , *TlA , *TlS , *TlW); 
+   
+  // Z = 82 --------------------------------------------------------------------
+  int PbN[34] = 
+  {181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 
+   196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 
+   211, 212, 213, 214};
+   
+  double PbA[34] = 
+  {180.997, 181.993, 182.992, 183.988, 184.988, 185.984, 186.984, 187.981,
+   188.981, 189.978, 190.978, 191.976, 192.976, 193.974, 194.974, 195.973, 
+   196.973, 197.972, 198.973, 199.972, 200.973, 201.972, 202.973, 203.973, 
+   204.974, 205.974, 206.976, 207.977, 208.981, 209.984, 210.989, 211.992, 
+   212.996, 214};
+   
+  double PbS[34] = 
+  {17, 18, 33, 21, 33, 50, 32, 22, 29, 22, 23, 19, 20, 16, 44, 15, 11, 10, 70,
+   14, 30, 11,  7,  3,  3,  3,  3,  3,  3,  3,  3, 29, 11, 27};
+   
+  double PbW[34] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.4, 0,
+   24.1, 22.1, 52.4, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Pb", 82, 34, *PbN , *PbA , *PbS , *PbW); 
+   
+  // Z = 83 --------------------------------------------------------------------
+  int BiN[32] = 
+  {185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+   200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 
+   215, 216};
+   
+  double BiA[32] = 
+  {184.998, 185.996, 186.993, 187.992, 188.99 , 189.989, 190.986, 191.985,
+   192.983, 193.983, 194.981, 195.981, 196.979, 197.979, 198.978, 199.978, 
+   200.977, 201.978, 202.977, 203.978, 204.977, 205.978, 206.978, 207.98 , 
+   208.98 , 209.984, 210.987, 211.991, 212.994, 213.999, 215.002, 216.006};
+   
+  double BiS[32] = 
+  {24, 48, 41, 32, 43, 39, 43, 24, 37, 46, 23, 22, 26, 19, 13, 10, 30, 60, 23,
+   28,  8,  9,  4,  4,  3,  3,  6,  3,  8, 12, 10, 11};
+   
+  double BiW[32] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100,
+   0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Bi", 83, 32, *BiN , *BiA , *BiS , *BiW);
+   
+  // Z = 84 --------------------------------------------------------------------
+  int PoN[29] = 
+  {190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+   205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218};
+   
+  double PoA[29] = 
+  {189.995, 190.995, 191.992, 192.991, 193.988, 194.988, 195.986, 196.986,
+   197.983, 198.984, 199.982, 200.982, 201.981, 202.981, 203.98 , 204.981, 
+   205.98 , 206.982, 207.981, 208.982, 209.983, 210.987, 211.989, 212.993, 
+   213.995, 214.999, 216.002, 217.006, 218.009};
+   
+  double PoS[29] = 
+  {51, 32, 22, 30, 22, 24, 19, 21, 16, 44, 15, 11, 10, 70, 14, 30, 11, 8, 3, 3,
+    3,  3,  3,  4,  3,  3, 29, 11, 27};
+    
+  double PoW[29] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0,
+   0, 0, 0, 0};
+   
+  AddElement("Po", 84, 29, *PoN , *PoA , *PoS , *PoW);
+   
+  // Z = 85 --------------------------------------------------------------------
+  int AtN[31] = 
+  {193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+   208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 
+   223};
+   
+  double AtA[31] = 
+  {193.000, 193.999, 194.997, 195.996, 196.993, 197.993, 198.991, 199.99,
+   200.988, 201.988, 202.987, 203.987, 204.986, 205.987, 206.986, 207.987, 
+   208.986, 209.987, 210.987, 211.991, 212.993, 213.996, 214.999, 216.002, 
+   217.005, 218.009, 219.011, 220.015, 221.018, 222.022, 223.025};
+   
+  double AtS[31] = 
+  {43, 43, 43, 25, 38, 46, 24, 22, 26, 19, 13, 10, 30, 60, 23, 28, 9, 9, 4, 4,
+    6,  5,  8,  5,  8, 13, 90, 12, 32, 32, 43};
+    
+  double AtW[31] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0,
+   0, 0, 0, 0, 0, 0};
+   
+  AddElement("At", 85, 31, *AtN , *AtA , *AtS , *AtW); 
+   
+  // Z = 86 --------------------------------------------------------------------
+  int RnN[33] = 
+  {196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+   211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 
+   226, 227, 228};
+   
+  double RnA[33] = 
+  {196.002, 197.002, 197.999, 198.998, 199.996, 200.996, 201.993, 202.993,
+   203.991, 204.992, 205.99 , 206.991, 207.99 , 208.99 , 209.99 , 210.991, 
+   211.991, 212.994, 213.995, 214.999, 216.000, 217.004, 218.006, 219.009, 
+   220.011, 221.015, 222.018, 223.022, 224.024, 225.028, 226.031, 227.035, 
+   228.038};
+   
+  double RnS[33] = 
+  {22, 30, 22, 24, 19, 21, 16, 44, 15, 12, 10, 70, 14, 30, 11, 8, 4, 8, 10, 9,
+    8,  5,  4,  3, 29, 11, 27, 32, 32, 32, 43, 45, 50};
+    
+  double RnW[33] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+   100, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Rn", 86, 33, *RnN , *RnA , *RnS , *RnW); 
+   
+  // Z = 87 --------------------------------------------------------------------
+  int FrN[33] = 
+  {200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+   215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 
+   230, 231, 232};
+   
+  double FrA[33] = 
+  {200.006, 201.004, 202.003, 203.001, 204.001, 204.999, 205.998, 206.997,
+   207.997, 208.996, 209.996, 210.996, 211.996, 212.996, 213.999, 215.000, 
+   216.003, 217.005, 218.008, 219.009, 220.012, 221.014, 222.018, 223.02 , 
+   224.023, 225.026, 226.029, 227.032, 228.036, 229.038, 230.043, 231.045, 
+   232.05 };
+   
+  double FrS[33] = 
+  {25, 38, 46, 25, 22, 25, 19, 12, 80, 30, 23, 22, 28, 9, 10, 8, 14, 8, 6, 8, 5,
+    8, 23, 29, 50, 11, 10, 10, 22, 39, 48, 56, 69};
+    
+  double FrW[33] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0,
+   0, 0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Fr", 87, 33, *FrN , *FrA , *FrS , *FrW); 
+   
+  // Z = 88 --------------------------------------------------------------------
+  int RaN[32] = 
+  {203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+   218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 
+   233, 234};
+   
+  double RaA[32] = 
+  {203.009, 204.006, 205.006, 206.004, 207.004, 208.002, 209.002, 210    ,
+   211.001, 212    , 213    , 214    , 215.003, 216.004, 217.006, 218.007, 
+   219.01 , 220.011, 221.014, 222.015, 223.018, 224.02 , 225.024, 226.025, 
+   227.029, 228.031, 229.035, 230.037, 231.041, 232.044, 233.048, 234.051};
+   
+  double RaS[32] = 
+  {25, 19, 22, 16, 45, 15, 13, 10, 70, 15, 30, 12, 9, 10, 10, 12, 9, 11, 8, 5,
+    3, 29,  3, 27, 27, 27, 70, 40, 32, 39, 50, 58};
+    
+  double RaW[32] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0,
+   0, 0, 0, 0, 0, 0, 0};
+   
+  AddElement("Ra", 88, 32, *RaN , *RaA , *RaS , *RaW); 
+   
+  // Z = 89 --------------------------------------------------------------------
+  int AcN[30] = 
+  {207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
+   222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236};
+   
+  double AcA[30] = 
+  {207.012, 208.011, 209.01 , 210.009, 211.008, 212.008, 213.007, 214.007,
+   215.006, 216.009, 217.009, 218.012, 219.012, 220.015, 221.016, 222.018, 
+   223.019, 224.022, 225.023, 226.026, 227.028, 228.031, 229.033, 230.036, 
+   231.039, 232.042, 233.045, 234.048, 235.051, 236.055};
+   
+  double AcS[30] = 
+  {25, 22, 26, 20, 14, 10, 60, 60, 60, 29, 14, 50, 50, 60, 50, 6, 8, 5, 8, 4,
+   29, 28, 50, 11, 11, 11, 32, 43, 45, 54};
+   
+  double AcW[30] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0,
+   0, 0, 0, 0, 0};
+   
+  AddElement("Ac", 89, 30, *AcN , *AcA , *AcS , *AcW); 
+   
+  // Z = 90 --------------------------------------------------------------------
+  int ThN[29] = 
+  {210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238};
+   
+  double ThA[29] = 
+  {210.015, 211.015, 212.013, 213.013, 214.011, 215.012, 216.011, 217.013,
+   218.013, 219.016, 220.016, 221.018, 222.018, 223.021, 224.021, 225.024,
+   226.025, 227.028, 228.029, 229.032, 230.033, 231.036, 232.038, 233.042, 
+   234.044, 235.048, 236.05 , 237.054, 238.056};
+   
+  double ThS[29] = 
+  {17, 45, 15, 14, 10, 70, 17, 30, 15, 50, 24, 11, 14, 10, 13, 8, 5, 3, 29, 3,
+   22, 22, 22, 22,  4, 50, 32, 39, 39};
+   
+  double ThW[29] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0,
+   0, 0, 0, 0};
+   
+  AddElement("Th", 90, 29, *ThN , *ThA , *ThS , *ThW); 
+   
+  // Z = 91 --------------------------------------------------------------------
+  int PaN[28] = 
+  {213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+   228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240};
+   
+  double PaA[28] = 
+  {213.021, 214.021, 215.019, 216.019, 217.018, 218.02 , 219.02 , 220.022,
+   221.022, 222.024, 223.024, 224.026, 225.026, 226.028, 227.029, 228.031, 
+   229.032, 230.035, 231.036, 232.039, 233.04 , 234.043, 235.045, 236.049, 
+   237.051, 238.054, 239.057, 240.061};
+   
+  double PaS[28] = 
+  {27, 21, 15, 11, 80, 80, 80, 60, 60, 80, 80, 60, 80, 13, 8, 5, 10, 4, 28, 8,
+   24,  5, 50, 21, 11, 60, 32, 32};
+   
+  double PaW[28] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0,
+   0, 0, 0};
+   
+  AddElement("Pa", 91, 28, *PaN , *PaA , *PaS , *PaW); 
+   
+  // Z = 92 --------------------------------------------------------------------
+  int UN[25] = 
+  {218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+   233, 234, 235, 236, 237, 238, 239, 240, 241, 242};
+   
+  double UA[25] = 
+  {218.023, 219.025, 220.025, 221.026, 222.026, 223.028, 224.028, 225.029,
+   226.029, 227.031, 228.031, 229.033, 230.034, 231.036, 232.037, 233.04 , 
+   234.041, 235.044, 236.046, 237.049, 238.051, 239.054, 240.057, 241.06 , 
+   242.063};
+   
+  double US[25] = 
+  {10, 90, 22, 11, 11, 80, 27, 50, 20, 18, 17, 9, 5, 4, 29, 3, 21, 21, 21, 21,
+   21, 21,  6, 32, 22};
+   
+  double UW[25] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0055, 0.72, 0, 0, 99.2745,
+   0, 0, 0, 0};
+   
+  AddElement("U", 92, 25, *UN , *UA , *US , *UW); 
+   
+  // Z = 93 --------------------------------------------------------------------
+  int NpN[20] = 
+  {225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+   240, 241, 242, 243, 244};
+   
+  double NpA[20] = 
+  {225.034, 226.035, 227.035, 228.036, 229.036, 230.038, 231.038, 232.04 ,
+   233.041, 234.043, 235.044, 236.047, 237.048, 238.051, 239.053, 240.056, 
+   241.058, 242.062, 243.064, 244.068};
+   
+  double NpS[20] = 
+  {80, 10, 80, 21, 90, 60, 50, 11, 60, 9, 23, 50, 21, 21, 23, 16, 80, 22, 30,
+   32};
+   
+  double NpW[20] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0};
+  
+  AddElement("Np", 93, 20, *NpN , *NpA , *NpS , *NpW); 
+   
+  // Z = 94 --------------------------------------------------------------------
+  int PuN[20] = 
+  {228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+   243, 244, 245, 246, 247};
+   
+  double PuA[20] = 
+  {228.039, 229.04 , 230.04 , 231.041, 232.041, 233.043, 234.043, 235.045,
+   236.046, 237.048, 238.05 , 239.052, 240.054, 241.057, 242.059, 243.062,
+   244.064, 245.068, 246.07 , 247.074};
+   
+  double PuS[20] = 
+  {30, 80, 26, 11, 20, 50, 8, 22, 29, 25, 21, 21, 21, 21, 21, 3, 5, 15, 16, 32};
+  
+  double PuW[20] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0};
+  
+  AddElement("Pu", 94, 20, *PuN , *PuA , *PuS , *PuW); 
+   
+  // Z = 95 --------------------------------------------------------------------
+  int AmN[19] = 
+  {231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+   246, 247, 248, 249};
+   
+  double AmA[19] = 
+  {231.046, 232.047, 233.046, 234.048, 235.048, 236.05 , 237.05 , 238.052,
+   239.053, 240.055, 241.057, 242.06 , 243.061, 244.064, 245.066, 246.07 , 
+   247.072, 248.076, 249.078};
+   
+  double AmS[19] = 
+  {32, 32, 23, 22, 22, 11, 60, 50, 3, 15, 21, 21, 23, 23, 4, 20, 11, 22, 32};
+  
+  double AmW[19] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0};
+  
+  AddElement("Am", 95, 19, *AmN , *AmA , *AmS , *AmW); 
+   
+  // Z = 96 --------------------------------------------------------------------
+  int CmN[20] = 
+  {233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+   248, 249, 250, 251, 252};
+   
+  double CmA[20] = 
+  {233.051, 234.05 , 235.052, 236.051, 237.053, 238.053, 239.055, 240.056,
+   241.058, 242.059, 243.061, 244.063, 245.065, 246.067, 247.07 , 248.072, 
+   249.076, 250.078, 251.082, 252.085};
+   
+  double CmS[20] = 
+  {43, 32, 24, 22, 22, 40, 11, 29, 24, 21, 24, 21, 29, 24, 5, 5, 5, 12, 24, 32};
+  
+  double CmW[20] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0};
+  
+  AddElement("Cm", 96, 20, *CmN , *CmA , *CmS , *CmW);
+   
+  // Z = 97 --------------------------------------------------------------------
+  int BkN[20] = 
+  {235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
+   250, 251, 252, 253, 254};
+   
+  double BkA[20] = 
+  {235.057, 236.057, 237.057, 238.058, 239.058, 240.06 , 241.06 , 242.062,
+   243.063, 244.065, 245.066, 246.069, 247.07 , 248.073, 249.075, 250.078, 
+   251.081, 252.084, 253.087, 254.091};
+   
+  double BkS[20] = 
+  {43, 43, 32, 31, 31, 16, 22, 22, 5, 16, 26, 60, 6, 80, 3, 4, 12, 22, 39, 32};
+  
+  double BkW[20] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0};
+  
+  AddElement("Bk", 97, 20, *BkN , *BkA , *BkS , *BkW); 
+   
+  // Z = 98 --------------------------------------------------------------------
+  int CfN[20] = 
+  {237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
+   252, 253, 254, 255, 256};
+   
+  double CfA[20] = 
+  {237.062, 238.061, 239.063, 240.062, 241.064, 242.064, 243.065, 244.066,
+   245.068, 246.069, 247.071, 248.072, 249.075, 250.076, 251.08 , 252.082, 
+   253.085, 254.087, 255.091, 256.093};
+   
+  double CfS[20] = 
+  {54, 43, 25, 22, 27, 40, 15, 4, 11, 24, 9, 6, 3, 24, 5, 5, 7, 13, 22, 32};
+  
+  double CfW[20] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0};
+  
+  AddElement("Cf", 98, 20, *CfN , *CfA , *CfS , *CfW);
+   
+  // Z = 99 --------------------------------------------------------------------
+  int EsN[18] = 
+  {240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+   255, 256, 257};
+   
+  double EsA[18] = 
+  {240.069, 241.069, 242.07 , 243.07 , 244.071, 245.071, 246.073, 247.074,
+   248.075, 249.076, 250.079, 251.08 , 252.083, 253.085, 254.088, 255.09 , 
+   256.094, 257.096};
+   
+  double EsS[18] = 
+  {43, 32, 35, 31, 20, 22, 24, 30, 60, 30, 11, 7, 50, 3, 5, 12, 11, 44};
+  
+  double EsW[18] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0};
+  
+  AddElement("Es", 99, 18, *EsN , *EsA , *EsS , *EsW); 
+   
+  // Z = 100 -------------------------------------------------------------------
+  int FmN[18] = 
+  {242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+   257, 258, 259};
+   
+  double FmA[18] = 
+  {242.073, 243.075, 244.074, 245.075, 246.075, 247.077, 248.077, 249.079,
+   250.08 , 251.082, 252.082, 253.085, 254.087, 255.09 , 256.092, 257.095, 
+   258.097, 259.101};
+   
+  double FmS[18] = 
+  {43, 25, 31, 30, 40, 16, 13, 15, 13, 9, 6, 5, 3, 5, 8, 7, 22, 30};
+  
+  double FmW[18] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0};
+  
+  AddElement("Fm", 100, 18, *FmN , *FmA , *FmS , *FmW); 
+   
+  // Z = 101 -------------------------------------------------------------------
+  int MdN[16] = 
+  {245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+   260};
+   
+  double MdA[16] = 
+  {245.081, 246.082, 247.082, 248.083, 249.083, 250.084, 251.085, 252.087,
+   253.087, 254.09 , 255.091, 256.094, 257.096, 258.098, 259.101, 260.104};
+   
+  double MdS[16] = 
+  {40, 41, 39, 26, 24, 32, 22, 21, 22, 11, 8, 60, 4, 5, 22, 34};
+  
+  double MdW[16] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0};
+  
+  AddElement("Md", 101, 16, *MdN , *MdA , *MdS , *MdW); 
+   
+  // Z = 102 -------------------------------------------------------------------
+  int NoN[14] = 
+  {249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262};
+  
+  double NoA[14] = 
+  {249.088, 250.087, 251.089, 252.089, 253.091, 254.091, 255.093, 256.094,
+   257.097, 258.098, 259.101, 260.103, 261.106, 262.108};
+   
+  double NoS[14] = 
+  {37, 22, 19, 14, 26, 19, 13, 9, 30, 22, 11, 22, 32, 58};
+  
+  double NoW[14] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0};
+  
+  AddElement("No", 102, 14, *NoN , *NoA , *NoS , *NoW); 
+   
+  // Z = 103 -------------------------------------------------------------------
+  int LrN[13] = 
+  {251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263};
+  
+  double LrA[13] = 
+  {251.094, 252.095, 253.095, 254.097, 255.097, 256.099, 257.1  , 258.102,
+   259.103, 260.106, 261.107, 262.11 , 263.111};
+   
+  double LrS[13] = 
+  {32, 32, 24, 36, 22, 24, 22, 11, 80, 12, 22, 32, 39};
+  
+  double LrW[13] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0};
+  
+  AddElement("Lr", 103, 13, *LrN , *LrA , *LrS , *LrW);
+   
+  // Z = 104 -------------------------------------------------------------------
+  int RfN[12] = 
+  {253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264};
+  
+  double RfA[12] = 
+  {253.101, 254.1  , 255.101, 256.101, 257.103, 258.104, 259.106, 260.106,
+   261.109, 262.11 , 263.113, 264.114};
+   
+  double RfS[12] = 
+  {49, 31, 22, 29, 29, 22, 80, 22, 11, 30, 20, 48};
+  
+  double RfW[12] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0};
+  
+  AddElement("Rf", 104, 12, *RfN , *RfA , *RfS , *RfW); 
+   
+  // Z = 105 -------------------------------------------------------------------
+  int DbN[11] = 
+  {255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265};
+  
+  double DbA[11] = 
+  {255.107, 256.108, 257.108, 258.109, 259.11 , 260.111, 261.112, 262.114,
+   263.115, 264.117, 265.119};
+   
+  double DbS[11] = 
+  {45, 39, 25, 37, 31, 25, 25, 20, 18, 25, 30};
+  
+  double DbW[11] = 
+  {0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0};
+  
+  AddElement("Db", 105, 11, *DbN , *DbA , *DbS , *DbW); 
+   
+  // Z = 106 -------------------------------------------------------------------
+  int SgN[9] = 
+  {258, 259, 260, 261, 262, 263, 264, 265, 266};
+  
+  double SgA[9] = 
+  {258.113, 259.115, 260.114, 261.116, 262.116, 263.118, 264.119, 265.121,
+   266.122};
+   
+  double SgS[9] = 
+  {45, 23, 40, 30, 30, 13, 30, 15, 31};
+  
+  double SgW[9] = 
+  {0, 0, 0, 0, 0, 0, 0, 0, 100};
+  
+  AddElement("Sg", 106, 9, *SgN , *SgA , *SgS , *SgW); 
+   
+  // Z = 107 -------------------------------------------------------------------
+  int BhN[8] = 
+  {260, 261, 262, 263, 264, 265, 266, 267};
+  
+  double BhA[8] = 
+  {260.122, 261.122, 262.123, 263.123, 264.125, 265.125, 266.127, 267.128};
+  
+  double BhS[8] = 
+  {66, 26, 40, 45, 30, 41, 38, 37};
+  
+  double BhW[8] = 
+  {0, 0, 0, 0, 100, 0, 0, 0};
+  
+  AddElement("Bh", 107, 8, *BhN , *BhA , *BhS , *BhW);
+
+  for(G4int i=0; i<maxNumElements; i++) {elmNames.push_back(elmSymbol[i]);}
+  
+  if(0<verbose) {
+    G4cout << "G4NistElementBuilder: " << maxNumElements-1 << " Elements  "
+           << index << " Isotopes"
+	   << G4endl;
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Index: trunk/source/materials/src/G4NistManager.cc
===================================================================
--- trunk/source/materials/src/G4NistManager.cc	(revision 822)
+++ trunk/source/materials/src/G4NistManager.cc	(revision 822)
@@ -0,0 +1,199 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: G4NistManager.cc,v 1.15 2007/12/11 13:32:08 gcosmo Exp $
+// GEANT4 tag $Name: geant4-09-01-patch-02 $
+//
+// -------------------------------------------------------------------
+//
+// GEANT4 Class file
+//
+//
+// File name:     G4NistManager
+//
+// Author:        Vladimir Ivanchenko
+//
+// Creation date: 23.12.2004
+//
+// Modifications:
+// 27.02.06 V.Ivanchneko add ConstructNewGasMaterial
+// 18.04.06 V.Ivanchneko add combined creation of materials (NIST + user)
+// 11.05.06 V.Ivanchneko add warning flag to FindMaterial method
+// 26.07.07 V.Ivanchneko modify destructor to provide complete destruction
+//                       of all elements and materials
+// 27-07-07, improve destructor (V.Ivanchenko) 
+// 28.07.07 V.Ivanchneko make simple methods inline
+// 28.07.07 V.Ivanchneko simplify Print methods
+//
+// -------------------------------------------------------------------
+//
+// Class Description:
+//
+// Element data from the NIST DB on Atomic Weights and Isotope Compositions
+// http://physics.nist.gov/PhysRefData/Compositions/index.html
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "G4NistManager.hh"
+#include "G4NistMessenger.hh"
+#include "G4Isotope.hh"
+
+G4NistManager* G4NistManager::instance = 0;
+G4double G4NistManager::POWERZ13[256] = {0};
+G4double G4NistManager::LOGA[256] = {0};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
+
+G4NistManager* G4NistManager::Instance()
+{
+  if (instance == 0) {
+    static G4NistManager manager;
+    instance = &manager;
+  }
+  return instance;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4NistManager::G4NistManager()
+{
+  nElements  = 0;
+  nMaterials = 0;
+  verbose    = 0;
+
+  elmBuilder = new G4NistElementBuilder(verbose);
+  matBuilder = new G4NistMaterialBuilder(elmBuilder,verbose);
+  
+  messenger  = new G4NistMessenger(this);  
+  for(G4int i=1; i<256; i++) {
+    G4double x = G4double(i);
+    POWERZ13[i] = std::pow(x,1.0/3.0);
+    LOGA[i] = std::log(x);
+  }
+  POWERZ13[0] = 1.0;
+  LOGA[0]     = 0.0;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4NistManager::~G4NistManager()
+{
+  //  G4cout << "NistManager: start material destruction" << G4endl;
+  const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable();
+  size_t nmat = theMaterialTable->size();
+  size_t i;
+  for(i=0; i<nmat; i++) {
+    if((*theMaterialTable)[i]) delete (*theMaterialTable)[i];
+  }
+  //  G4cout << "NistManager: start element destruction" << G4endl;
+  const G4ElementTable* theElementTable = G4Element::GetElementTable();
+  size_t nelm = theElementTable->size();
+  for(i=0; i<nelm; i++) {
+    if((*theElementTable)[i]) delete (*theElementTable)[i];
+  }
+  //  G4cout << "NistManager: start isotope destruction" << G4endl;
+  const G4IsotopeTable* theIsotopeTable = G4Isotope::GetIsotopeTable();
+  size_t niso = theIsotopeTable->size();
+  for(i=0; i<niso; i++) {
+    if((*theIsotopeTable)[i]) delete (*theIsotopeTable)[i];
+  }
+  //  G4cout << "NistManager: end isotope destruction" << G4endl;
+  delete messenger;
+  delete matBuilder;
+  delete elmBuilder;  
+  // G4cout << "NistManager: end destruction" << G4endl;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistManager::PrintElement(const G4String& symbol)
+{
+  if (symbol == "all") elmBuilder->PrintElement(0);
+  else                 elmBuilder->PrintElement(elmBuilder->GetZ(symbol));
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistManager::PrintG4Element(const G4String& name)
+{
+  const G4ElementTable* theElementTable = G4Element::GetElementTable();
+  size_t nelm = theElementTable->size();
+  for(size_t i=0; i<nelm; i++) {
+    G4Element* elm = (*theElementTable)[i];
+    if ( name == elm->GetName() || "all" == name) {
+      G4cout << *elm << G4endl;
+      return;
+    }
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistManager::PrintG4Material(const G4String& name)
+{
+  const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable();
+  size_t nmat = theMaterialTable->size();
+  for(size_t i=0; i<nmat; i++) {
+    G4Material* mat = (*theMaterialTable)[i];
+    if ( name == mat->GetName() || "all" == name) {
+      G4cout << *mat << G4endl;
+      return;
+    }
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistManager::SetVerbose(G4int val)
+{
+  verbose = val;
+  elmBuilder->SetVerbose(val);
+  matBuilder->SetVerbose(val);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4double G4NistManager::GetZ13(G4double Z)
+{
+  G4int iz = G4int(Z);
+  G4double x = (Z - G4double(iz))/(3.0*Z);
+  if(iz > 255) iz = 255;
+  else if(iz < 0) iz = 0;
+  return POWERZ13[iz]*(1.0 + x);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4double G4NistManager::GetLOGA(G4double A)
+{
+  G4int ia = G4int(A);
+  G4double x = (A - G4double(ia))/A;
+  if(ia > 255) ia = 255;
+  else if(ia < 0) ia = 0;
+  return LOGA[ia] + x;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Index: trunk/source/materials/src/G4NistMaterialBuilder.cc
===================================================================
--- trunk/source/materials/src/G4NistMaterialBuilder.cc	(revision 822)
+++ trunk/source/materials/src/G4NistMaterialBuilder.cc	(revision 822)
@@ -0,0 +1,1721 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: G4NistMaterialBuilder.cc,v 1.17.2.3 2008/04/28 08:39:03 gcosmo Exp $
+// GEANT4 tag $Name: geant4-09-01-patch-02 $
+//
+//
+// -------------------------------------------------------------------
+//
+// GEANT4 Class file
+//
+// File name:     G4NistMaterialBuilder
+//
+// Author:        Vladimir Ivanchenko
+//
+// Creation date: 23.12.2004
+//
+// Modifications:
+// 31-10-05 Add chemical effect and gas properties (V.Ivanchenko)
+// 27.02.06 V.Ivanchneko add ConstructNewGasMaterial
+// 11.05.06 V.Ivanchneko add warning flag to FindMaterial method
+// 27.06.06 V.Ivanchneko fix graphite description
+// 27.07.07 V.Ivanchneko remove dependence on NistManager
+//
+// -------------------------------------------------------------------
+//
+// Class Description:
+//
+// Element data from the NIST DB on Atomic Weights and Isotope Compositions
+// http://physics.nist.gov/PhysRefData/Compositions/index.html
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "G4NistMaterialBuilder.hh"
+#include "G4NistElementBuilder.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4NistMaterialBuilder::G4NistMaterialBuilder(G4NistElementBuilder* eb, G4int vb)
+: elmBuilder(eb),
+  verbose(vb),
+  nMaterials(0),
+  nComponents(0),
+  nCurrent(0),
+  first(true)
+{
+  Initialise();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4NistMaterialBuilder::~G4NistMaterialBuilder()
+{}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4Material* G4NistMaterialBuilder::FindOrBuildMaterial(const G4String& name,
+                                                       G4bool isotopes,
+						       G4bool warning)
+{
+  if(first) {
+    if(verbose > 0) {
+      G4cout << "### NIST DataBase for Materials is used" << G4endl;
+    }
+    first = false;
+  }
+
+  if (verbose > 1)
+    G4cout << "G4NistMaterialBuilder::FindOrBuildMaterial " << name << G4endl;
+
+  const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable();
+  G4int nmat = theMaterialTable->size();
+
+  // Check if name inside NIST DB?
+  G4Material* mat = 0;
+
+  for (G4int i=0; i<nMaterials; i++) {
+
+    // Is inside NIST DB?
+    if (name == names[i]) {
+
+      // Build new Nist material 
+      if(matIndex[i] == -1) mat = BuildMaterial(i, isotopes);
+      // Nist material was already built
+      else                  mat = (*theMaterialTable)[matIndex[i]];
+
+      return mat;
+
+    }
+  }
+
+  // Check the list of all materials
+  if (nmat > 0) {
+    for (G4int i=0; i<nmat; i++) {
+      if(name == ((*theMaterialTable)[i])->GetName()) {
+        mat = (*theMaterialTable)[i];
+	return mat;
+      }
+    }
+  }
+
+  if( (verbose == 1 && warning) || verbose > 1) 
+    G4cout << "G4NistMaterialBuilder::FindOrBuildMaterial WARNING:"
+	   << " material <" << name
+	   << "> is not found out" << G4endl;
+
+  return mat;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4Material* G4NistMaterialBuilder::BuildMaterial(const G4String& name,
+                                                 G4bool isotopes)
+
+{
+  if (verbose > 1) G4cout << "G4NistMaterialBuilder: BuildMaterial " << name
+                          << G4endl;
+
+  G4Material* mat = 0;
+  if (nMaterials == 0)  return mat;
+
+  for (G4int i=0; i<nMaterials; i++) {
+    if (name == names[i]) {
+      mat = BuildMaterial(i, isotopes);
+      break;
+    }
+  }
+  return mat;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4Material* G4NistMaterialBuilder::BuildMaterial(G4int i,
+                                                 G4bool isotopes)
+
+{
+  if (verbose > 1) G4cout << "G4NistMaterialBuilder: BuildMaterial #" << i
+                          << G4endl;
+
+  G4Material* mat = 0;
+  if (nMaterials == 0)  return mat;
+
+  G4int nc = components[i];
+  mat = new G4Material(names[i],densities[i],nc,
+		       states[i],temperatures[i], presures[i]);
+
+  if (verbose>1) G4cout << "New material nComponents= " << nc << G4endl;
+  if (nc > 0) {
+    G4int idx = indexes[i];
+    for (G4int j=0; j<nc; j++) {
+      G4int Z = elements[idx+j];
+      G4Element* elm = elmBuilder->FindOrBuildElement(Z, isotopes);
+      mat->AddElement(elm,fractions[idx+j]);
+    }
+  }
+
+  if (chFormulas[i] != "") {
+    mat->SetChemicalFormula(chFormulas[i]);
+    G4double exc = 
+      mat->GetIonisation()->FindMeanExcitationEnergy(chFormulas[i]);
+    mat->GetIonisation()->SetMeanExcitationEnergy(exc);
+  }
+
+  if (ionPotentials[i] != 0.0)
+    mat->GetIonisation()->SetMeanExcitationEnergy(ionPotentials[i]);
+
+  matIndex[i] = mat->GetIndex();
+
+  return mat;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4Material* G4NistMaterialBuilder::ConstructNewMaterial(
+                                      const G4String& name,
+                                      const std::vector<G4String>& elm,
+                                      const std::vector<G4int>& nbAtoms,
+				      G4double dens, 
+				      G4bool isotopes,
+				      G4State state,     
+				      G4double temp,  
+				      G4double pressure)
+{
+  G4int nm = elm.size();
+  if(nm == 0) { 
+    G4cout << "G4NistMaterialBuilder::ConstructNewMaterial:"
+           << "  WARNING: empty list of elements for " << name
+	   << G4endl;
+    return 0;
+  } 
+  AddMaterial(name,dens*cm3/g,0,0.,nm,state,temp,pressure);
+  for (G4int i=0; i<nm; i++) {
+    G4int Z = G4int((elmBuilder->FindOrBuildElement(elm[i]))->GetZ());
+    AddElementByAtomCount(Z, nbAtoms[i]);
+  }
+
+  return BuildMaterial(name, isotopes);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4Material* G4NistMaterialBuilder::ConstructNewMaterial(
+                                      const G4String& name,
+                                      const std::vector<G4String>& elm,
+                                      const std::vector<G4double>& w,
+				      G4double dens, 
+				      G4bool isotopes,
+				      G4State state,     
+				      G4double temp,  
+				      G4double pressure)
+{
+  G4int nm = elm.size();
+  if(nm == 0) { 
+    G4cout << "G4NistMaterialBuilder::ConstructNewMaterial:"
+           << "  WARNING: empty list of elements for " << name
+	   << G4endl;
+    return 0;
+  } 
+  AddMaterial(name,dens*cm3/g,0,0.,nm,state,temp,pressure);
+  for (G4int i=0; i<nm; i++) {
+    G4int Z = G4int((elmBuilder->FindOrBuildElement(elm[i]))->GetZ());
+    AddElementByWeightFraction(Z, w[i]);
+  }
+  
+  return BuildMaterial(name, isotopes);    
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4Material* G4NistMaterialBuilder::ConstructNewGasMaterial(
+				      const G4String& name,
+				      const G4String& nameNist,
+				      G4double temp, 
+				      G4double pres, 
+				      G4bool isotopes)
+{
+  G4int idx = -1;
+  for (G4int i=0; i<nMaterials; i++) {
+    if (name == names[i]) {
+      G4cout << "G4NistMaterialBuilder::ConstructNewMaterial:"
+	     << "  WARNING: the Name <" << name 
+	     << "> is already in the DB idx= " << i
+	     << " no new gas will be constructed"
+	     << G4endl;
+      return 0;
+    } else {
+      if (nameNist == names[i]) {
+        if(states[i] != kStateGas) {
+	  G4cout << "G4NistMaterialBuilder::ConstructNewMaterial:"
+		 << "  WARNING:  <" << nameNist 
+		 << "> is not gas -  no new gas will be constructed"
+		 << G4endl;
+          return 0;
+	}
+	idx = i;
+      }
+    }
+  } 
+
+  if(idx == -1) { 
+    G4cout << "G4NistMaterialBuilder::ConstructNewMaterial:"
+           << "  WARNING: no material in the DB with the name <" << nameNist
+	   << "> - new gas is not constructed"
+	   << G4endl;
+    return 0;
+  } 
+
+  G4int nc = components[idx];
+  G4double dens = densities[idx]*pres*STP_Temperature/(temp*STP_Pressure);
+  G4Material* mat = new G4Material(name,dens,nc,kStateGas,temp, pres);
+
+  if (verbose>1) G4cout << "New material <" << name 
+			<< " density(g/cm3)= " << dens*cm3/g
+			<< " T(K)= " << temp/kelvin
+			<< " P(atm)= " << pres/atmosphere
+                        << ">   nComponents= " << nc << G4endl;
+			
+  if (nc > 0) {
+    G4int k = indexes[idx];
+    for (G4int j=0; j<nc; j++) {
+      G4int Z = elements[k+j];
+      G4Element* elm = elmBuilder->FindOrBuildElement(Z, isotopes);
+      mat->AddElement(elm,fractions[k+j]);
+    }
+  }
+
+  if (chFormulas[idx] != "") {
+    mat->SetChemicalFormula(chFormulas[idx]);
+    G4double exc = 
+      mat->GetIonisation()->FindMeanExcitationEnergy(chFormulas[idx]);
+    mat->GetIonisation()->SetMeanExcitationEnergy(exc);
+  }
+
+  if (ionPotentials[idx] != 0.0)
+    mat->GetIonisation()->SetMeanExcitationEnergy(ionPotentials[idx]);
+
+  matIndex[idx] = mat->GetIndex();
+
+  return mat;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistMaterialBuilder::SetVerbose(G4int val)
+{
+  verbose = val;
+  elmBuilder->SetVerbose(verbose);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistMaterialBuilder::ListMaterials(const G4String& list)
+{
+  if (list == "simple")   ListNistSimpleMaterials();
+  if (list == "compound") ListNistCompoundMaterials();
+  if (list == "hep")      ListHepMaterials();
+
+  if (list == "all") {
+    ListNistSimpleMaterials();
+    ListNistCompoundMaterials();
+    ListHepMaterials();
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistMaterialBuilder::ListNistSimpleMaterials()
+{
+  G4cout << "=======================================================" << G4endl;
+  G4cout << "###   Simple Materials from the NIST Data Base   ###" << G4endl;
+  G4cout << "=======================================================" << G4endl;
+  G4cout << " Z Name  ChFormula        density(g/cm^3)  I(eV)       " << G4endl;
+  G4cout << "=======================================================" << G4endl;
+  for (G4int i=0; i<nElementary; i++) {DumpElm(i);}
+  G4cout << "=======================================================" << G4endl;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistMaterialBuilder::ListNistCompoundMaterials()
+{
+  G4cout << "###    Compound Materials from the NIST Data Base    ##" << G4endl;
+  G4cout << "=======================================================" << G4endl;
+  G4cout << " Ncomp Name  ChFormula        density(g/cm^3)  I(eV)   " << G4endl;
+  G4cout << "=======================================================" << G4endl;
+  for (G4int i=nElementary; i<nNIST; i++) {DumpMix(i);}
+  G4cout << "=======================================================" << G4endl;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistMaterialBuilder::ListHepMaterials()
+{
+  G4cout << "=======================================================" << G4endl;
+  G4cout << "###           HEP & Nuclear Materials                ##" << G4endl;
+  G4cout << "=======================================================" << G4endl;
+  G4cout << " Ncomp Name  ChFormula        density(g/cm^3)  I(eV)   " << G4endl;
+  G4cout << "=======================================================" << G4endl;
+  for (G4int i=nNIST; i<nMaterials; i++) {DumpMix(i);}
+  G4cout << "=======================================================" << G4endl;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistMaterialBuilder::DumpElm(G4int i)
+{
+  G4cout << i+1 << "  " << names[i] << "  " << chFormulas[i]
+         << densities[i]*cm3/g << "     " << ionPotentials[i]/eV
+	 << G4endl;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistMaterialBuilder::DumpMix(G4int i)
+{
+  G4int nc = components[i];
+  G4cout << nc << "  " << names[i] << "  " << chFormulas[i]
+         << densities[i]*cm3/g << "     " << ionPotentials[i]/eV
+	 << G4endl;
+  if (nc > 1) {
+    G4int imin = indexes[i];
+    G4int imax = imin + nc;
+    for (G4int j=imin; j<imax; j++) {
+      G4cout << "              " << elements[j] << "     " << fractions[j] 
+             << G4endl;
+    }
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistMaterialBuilder::AddMaterial(const G4String& nameMat, G4double dens,
+					G4int Z, G4double pot, 
+					G4int ncomp, G4State state, 
+					G4double temp, G4double pres)
+{
+  if (nCurrent != 0) {
+    G4cout << "WARNING: G4NistMaterialBuilder::AddMaterial problem: previous "
+	   << "mixture " << nMaterials << " " << names[nMaterials] 
+	   << " is not yet complete!"
+	   << G4endl;
+    G4cout << "         New material " << nameMat << " will not be added" 
+	   << G4endl;
+    return;
+  }
+
+  // density in g/cm3, mean ionisation potential in eV
+
+  names.push_back(nameMat);
+  chFormulas.push_back("");
+  densities.push_back(dens*g/cm3);
+  ionPotentials.push_back(pot*eV);
+  states.push_back(state);
+  components.push_back(ncomp);
+  indexes.push_back(nComponents);
+  temperatures.push_back(temp);
+  presures.push_back(pres);
+  matIndex.push_back(-1);
+
+  if (ncomp == 1) {
+    elements.push_back(Z);
+    fractions.push_back(1.0);
+    nComponents++;
+    nCurrent = 0;
+  } else {
+    nCurrent = ncomp;
+  }
+
+  nMaterials++;
+
+  if(verbose > 1) {
+    G4cout << "New material " << nameMat << " is prepeared; "
+           << " nMaterials= " << nMaterials
+           << " nComponents= " << nComponents
+           << " nCurrent= " << nCurrent
+           << G4endl;
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistMaterialBuilder::AddChemicalFormula(const G4String& nameMat,
+                                               const G4String& ch)
+{
+  if (nCurrent != 0) {
+    G4cout
+    << "WARNING: G4NistMaterialBuilder::AddChemicalFormula : previous mixture "
+    << nMaterials << " " << names[nMaterials] << " is not yet complete!"
+    << G4endl;
+  }
+
+  if(nameMat == names[nMaterials-1]) {
+    chFormulas[nMaterials-1] = ch;
+    return;
+  } else {
+    for(G4int i=0; i<nMaterials; i++) {
+      if(nameMat == names[i]) {
+        chFormulas[i] = ch;
+	return;
+      }
+    }
+  }
+  G4cout << "WARNING: G4NistMaterialBuilder::AddChemicalFormula : there is no "
+    << nameMat << " in the list of materials; ch=" << ch
+    << G4endl;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistMaterialBuilder::AddGas(const G4String& nameMat, G4double t,
+                                                            G4double p)
+{
+  if (nCurrent != 0) {
+    G4cout
+    << "WARNING: G4NistMaterialBuilder::AddGas problem: previous mixture "
+    << nMaterials << " " << names[nMaterials] << " is not yet complete!"
+    << G4endl;
+  }
+
+  if(nameMat == names[nMaterials-1]) {
+    temperatures[nMaterials-1] = t;
+    presures[nMaterials-1] = p;
+    return;
+  } else {
+    for(G4int i=0; i<nMaterials; i++) {
+      if(nameMat == names[i]) {
+        temperatures[i] = t;
+        presures[i] = p;
+	return;
+      }
+    }
+  }
+  G4cout << "WARNING: G4NistMaterialBuilder::AddGas problem: there is no "
+	 << nameMat << " in the list of materials;"
+	 << G4endl;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistMaterialBuilder::AddElementByWeightFraction(G4int Z, G4double w)
+{
+  elements.push_back(Z);
+  fractions.push_back(w);
+  nCurrent--;
+  nComponents++;
+  if (nCurrent == 0) {
+    G4int n = nMaterials - 1;
+    G4double sum = 0.0;
+    G4int imin = indexes[n];
+    G4int imax = imin + components[n];
+
+    for(G4int i=imin; i<imax; i++) {sum += fractions[i];}
+    if (sum > 0.0) for (G4int i=imin; i<imax; i++) {fractions[i] /= sum;}
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistMaterialBuilder::AddElementByWeightFraction(const G4String& name,
+                                                       G4double w)
+{
+  G4int Z = elmBuilder->GetZ(name);
+  AddElementByWeightFraction(Z, w);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistMaterialBuilder::AddElementByAtomCount(G4int Z, G4int nb)
+{
+  G4double w = nb*elmBuilder->GetA(Z);
+  AddElementByWeightFraction(Z, w);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistMaterialBuilder::AddElementByAtomCount(const G4String& name,
+                                                     G4int nb)
+{
+  G4int Z = elmBuilder->GetZ(name);
+  G4double w = nb*elmBuilder->GetA(Z);
+  AddElementByWeightFraction(Z, w);
+}
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistMaterialBuilder::Initialise()
+{
+  if (verbose > 0)
+    G4cout << "### G4NistMaterialBuilder::Initialise()" << G4endl;
+
+  NistSimpleMaterials();
+  NistCompoundMaterials();
+  HepAndNuclearMaterials();
+
+  if (verbose > 1) ListMaterials("all");
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistMaterialBuilder::NistSimpleMaterials()
+{
+  // density in g/cm3, mean ionisation potential in eV
+
+  AddMaterial("G4_H" ,  8.37480e-5,  1,  19.2, 1, kStateGas);
+  AddMaterial("G4_He",  1.66322e-4,  2,  41.8, 1, kStateGas);
+  AddMaterial("G4_Li",  0.534     ,  3,  40. );
+  AddMaterial("G4_Be",  1.848     ,  4,  63.7);
+  AddMaterial("G4_B" ,  2.37      ,  5,  76. );
+  AddMaterial("G4_C" ,  2.        ,  6,  81. );
+  AddMaterial("G4_N" ,  1.16520e-3,  7,  82. , 1, kStateGas);
+  AddMaterial("G4_O" ,  1.33151e-3,  8,  95. , 1, kStateGas);
+  AddMaterial("G4_F" ,  1.58029e-3,  9, 115. , 1, kStateGas);
+  AddMaterial("G4_Ne",  8.38505e-4, 10, 137. , 1, kStateGas);
+  AddMaterial("G4_Na",  0.971     , 11, 149. );
+  AddMaterial("G4_Mg",  1.74      , 12, 156. );
+  AddMaterial("G4_Al",  2.699     , 13, 166. );
+  AddMaterial("G4_Si",  2.33      , 14, 173. );
+  AddMaterial("G4_P" ,  2.2       , 15, 173. );
+  AddMaterial("G4_S" ,  2.0       , 16, 180. );
+  AddMaterial("G4_Cl",  2.99473e-3, 17, 174. , 1, kStateGas);
+  AddMaterial("G4_Ar",  1.66201e-3, 18, 188.0, 1, kStateGas);
+  AddMaterial("G4_K" ,  0.862     , 19, 190. );
+  AddMaterial("G4_Ca",  1.55      , 20, 191. );
+  AddMaterial("G4_Sc",  2.989     , 21, 216. );
+  AddMaterial("G4_Ti",  4.54      , 22, 233. );
+  AddMaterial("G4_V" ,  6.11      , 23, 245. );
+  AddMaterial("G4_Cr",  7.18      , 24, 257. );
+  AddMaterial("G4_Mn",  7.44      , 25, 272. );
+  AddMaterial("G4_Fe",  7.874     , 26, 286. );
+  AddMaterial("G4_Co",  8.9       , 27, 297. );
+  AddMaterial("G4_Ni",  8.902     , 28, 311. );
+  AddMaterial("G4_Cu",  8.96      , 29, 322. );
+  AddMaterial("G4_Zn",  7.133     , 30, 330. );
+  AddMaterial("G4_Ga",  5.904     , 31, 334. );
+  AddMaterial("G4_Ge",  5.323     , 32, 350. );
+  AddMaterial("G4_As",  5.73      , 33, 347. );
+  AddMaterial("G4_Se",  4.5       , 34, 348. );
+  AddMaterial("G4_Br",  7.07210e-3, 35, 343. , 1, kStateGas);
+  AddMaterial("G4_Kr",  3.47832e-3, 36, 352. , 1, kStateGas);
+  AddMaterial("G4_Rb",  1.532     , 37, 363. );
+  AddMaterial("G4_Sr",  2.54      , 38, 366. );
+  AddMaterial("G4_Y" ,  4.469     , 39, 379. );
+  AddMaterial("G4_Zr",  6.506     , 40, 393. );
+  AddMaterial("G4_Nb",  8.57      , 41, 417. );
+  AddMaterial("G4_Mo", 10.22      , 42, 424. );
+  AddMaterial("G4_Tc", 11.50      , 43, 428. );
+  AddMaterial("G4_Ru", 12.41      , 44, 441. );
+  AddMaterial("G4_Rh", 12.41      , 45, 449. );
+  AddMaterial("G4_Pd", 12.02      , 46, 470. );
+  AddMaterial("G4_Ag", 10.5       , 47, 470. );
+  AddMaterial("G4_Cd",  8.65      , 48, 469. );
+  AddMaterial("G4_In",  7.31      , 49, 488. );
+  AddMaterial("G4_Sn",  7.31      , 50, 488. );
+  AddMaterial("G4_Sb",  6.691     , 51, 487. );
+  AddMaterial("G4_Te",  6.24      , 52, 485. );
+  AddMaterial("G4_I" ,  4.93      , 53, 491. );
+  AddMaterial("G4_Xe",  5.48536e-3, 54, 482. , 1, kStateGas);
+  AddMaterial("G4_Cs",  1.873     , 55, 488. );
+  AddMaterial("G4_Ba",  3.5       , 56, 491. );
+  AddMaterial("G4_La",  6.154     , 57, 501. );
+  AddMaterial("G4_Ce",  6.657     , 58, 523. );
+  AddMaterial("G4_Pr",  6.71      , 59, 535. );
+  AddMaterial("G4_Nd",  6.9       , 60, 546. );
+  AddMaterial("G4_Pm",  7.22      , 61, 560. );
+  AddMaterial("G4_Sm",  7.46      , 62, 574. );
+  AddMaterial("G4_Eu",  5.243     , 63, 580. );
+  AddMaterial("G4_Gd",  7.9004    , 64, 591. );
+  AddMaterial("G4_Tb",  8.229     , 65, 614. );
+  AddMaterial("G4_Dy",  8.55      , 66, 628. );
+  AddMaterial("G4_Ho",  8.795     , 67, 650. );
+  AddMaterial("G4_Er",  9.066     , 68, 658. );
+  AddMaterial("G4_Tm",  9.321     , 69, 674. );
+  AddMaterial("G4_Yb",  6.73      , 70, 684. );
+  AddMaterial("G4_Lu",  9.84      , 71, 694. );
+  AddMaterial("G4_Hf", 13.31      , 72, 705. );
+  AddMaterial("G4_Ta", 16.654     , 73, 718. );
+  AddMaterial("G4_W" , 19.30      , 74, 727. );
+  AddMaterial("G4_Re", 21.02      , 75, 736. );
+  AddMaterial("G4_Os", 22.57      , 76, 746. );
+  AddMaterial("G4_Ir", 22.42      , 77, 757. );
+  AddMaterial("G4_Pt", 21.45      , 78, 790. );
+  AddMaterial("G4_Au", 19.32      , 79, 790. );
+  AddMaterial("G4_Hg", 13.546     , 80, 800. );
+  AddMaterial("G4_Tl", 11.72      , 81, 810. );
+  AddMaterial("G4_Pb", 11.35      , 82, 823. );
+  AddMaterial("G4_Bi",  9.747     , 83, 823. );
+  AddMaterial("G4_Po",  9.32      , 84, 830. );
+  AddMaterial("G4_At",  9.32      , 85, 825. );
+  AddMaterial("G4_Rn",  9.00662e-3, 86, 794. , 1, kStateGas);
+  AddMaterial("G4_Fr",  1.00      , 87, 827. );
+  AddMaterial("G4_Ra",  5.00      , 88, 826. );
+  AddMaterial("G4_Ac", 10.07      , 89, 841. );
+  AddMaterial("G4_Th", 11.72      , 90, 847. );
+  AddMaterial("G4_Pa", 15.37      , 91, 878. );
+  AddMaterial("G4_U" , 18.95      , 92, 890. );
+  AddMaterial("G4_Np", 20.25      , 93, 902. );
+  AddMaterial("G4_Pu", 19.84      , 94, 921. );
+  AddMaterial("G4_Am", 13.67      , 95, 934. );
+  AddMaterial("G4_Cm", 13.51      , 96, 939. );
+  AddMaterial("G4_Bk", 14.00      , 97, 952. );
+  AddMaterial("G4_Cf", 10.00      , 98, 966. );
+
+  nElementary = nMaterials;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistMaterialBuilder::NistCompoundMaterials()
+{
+  AddMaterial("G4_A-150_TISSUE", 1.127, 0, 65.1, 6);
+  AddElementByWeightFraction( 1, 0.101327);
+  AddElementByWeightFraction( 6, 0.775501);
+  AddElementByWeightFraction( 7, 0.035057);
+  AddElementByWeightFraction( 8, 0.052316);
+  AddElementByWeightFraction( 9, 0.017422);
+  AddElementByWeightFraction(20, 0.018378);
+
+  AddMaterial("G4_ACETONE", 0.7899, 0, 64.2, 3);
+  AddElementByWeightFraction( 1, 0.104122);
+  AddElementByWeightFraction( 6, 0.620405);
+  AddElementByWeightFraction( 8, 0.275473);
+
+  AddMaterial("G4_ACETYLENE", 0.0010967, 0, 58.2, 2, kStateGas);
+  AddElementByWeightFraction( 1, 0.077418);
+  AddElementByWeightFraction( 6, 0.922582);
+
+  AddMaterial("G4_ADENINE", 1.35, 0, 71.4, 3);
+  AddElementByWeightFraction( 1, 0.037294);
+  AddElementByWeightFraction( 6, 0.44443 );
+  AddElementByWeightFraction( 7, 0.518275);
+
+  AddMaterial("G4_ADIPOSE_TISSUE_ICRP", 0.92, 0, 63.2, 13);
+  AddElementByWeightFraction( 1, 0.119477);
+  AddElementByWeightFraction( 6, 0.63724 );
+  AddElementByWeightFraction( 7, 0.00797 );
+  AddElementByWeightFraction( 8, 0.232333);
+  AddElementByWeightFraction(11, 0.0005  );
+  AddElementByWeightFraction(12, 2e-05   );
+  AddElementByWeightFraction(15, 0.00016 );
+  AddElementByWeightFraction(16, 0.00073 );
+  AddElementByWeightFraction(17, 0.00119 );
+  AddElementByWeightFraction(19, 0.00032 );
+  AddElementByWeightFraction(20, 2e-05   );
+  AddElementByWeightFraction(26, 2e-05   );
+  AddElementByWeightFraction(30, 2e-05   );
+
+  AddMaterial("G4_AIR", 0.00120479, 0, 85.7, 4, kStateGas);
+  AddElementByWeightFraction( 6, 0.000124);
+  AddElementByWeightFraction( 7, 0.755267);
+  AddElementByWeightFraction( 8, 0.231781);
+  AddElementByWeightFraction(18, 0.012827);
+
+  AddMaterial("G4_ALANINE", 1.42, 0, 71.9, 4);
+  AddElementByWeightFraction( 1, 0.07919 );
+  AddElementByWeightFraction( 6, 0.404439);
+  AddElementByWeightFraction( 7, 0.157213);
+  AddElementByWeightFraction( 8, 0.359159);
+
+  AddMaterial("G4_ALUMINUM_OXIDE", 3.97, 0, 145.2, 2);
+  AddElementByWeightFraction( 8, 0.470749);
+  AddElementByWeightFraction(13, 0.529251);
+  AddChemicalFormula("G4_ALUMINUM_OXIDE","Al_2O_3");
+
+  AddMaterial("G4_AMBER", 1.1, 0, 63.2, 3);
+  AddElementByWeightFraction( 1, 0.10593 );
+  AddElementByWeightFraction( 6, 0.788973);
+  AddElementByWeightFraction( 8, 0.105096);
+
+  AddMaterial("G4_AMMONIA", 0.000826019, 0, 53.7, 2, kStateGas);
+  AddElementByWeightFraction( 1, 0.177547);
+  AddElementByWeightFraction( 7, 0.822453);
+
+  AddMaterial("G4_ANILINE", 1.0235, 0, 66.2, 3);
+  AddElementByWeightFraction( 1, 0.075759);
+  AddElementByWeightFraction( 6, 0.773838);
+  AddElementByWeightFraction( 7, 0.150403);
+
+  AddMaterial("G4_ANTHRACENE", 1.283, 0, 69.5, 2);
+  AddElementByWeightFraction( 1, 0.05655);
+  AddElementByWeightFraction( 6, 0.94345);
+
+  AddMaterial("G4_B-100_BONE", 1.45, 0, 85.9, 6);
+  AddElementByWeightFraction( 1, 0.065471);
+  AddElementByWeightFraction( 6, 0.536945);
+  AddElementByWeightFraction( 7, 0.0215  );
+  AddElementByWeightFraction( 8, 0.032085);
+  AddElementByWeightFraction( 9, 0.167411);
+  AddElementByWeightFraction(20, 0.176589);
+
+  AddMaterial("G4_BAKELITE", 1.25, 0, 72.4, 3);
+  AddElementByWeightFraction( 1, 0.057441);
+  AddElementByWeightFraction( 6, 0.774591);
+  AddElementByWeightFraction( 8, 0.167968);
+
+  AddMaterial("G4_BARIUM_FLUORIDE", 4.89 ,0, 375.9, 2);
+  AddElementByWeightFraction( 9, 0.21672);
+  AddElementByWeightFraction(56, 0.78328);
+
+  AddMaterial("G4_BARIUM_SULFATE", 4.5, 0, 285.7, 3);
+  AddElementByWeightFraction( 8,0.274212);
+  AddElementByWeightFraction(16,0.137368);
+  AddElementByWeightFraction(56,0.58842 );
+
+  AddMaterial("G4_BENZENE", 0.87865, 0, 63.4, 2);
+  AddElementByWeightFraction( 1, 0.077418);
+  AddElementByWeightFraction( 6, 0.922582);
+
+  AddMaterial("G4_BERYLLIUM_OXIDE", 3.01, 0, 93.2, 2);
+  AddElementByWeightFraction( 4, 0.36032);
+  AddElementByWeightFraction( 8, 0.63968);
+
+  AddMaterial("G4_BGO", 7.13, 0, 534.1, 3);
+  AddElementByWeightFraction( 8, 0.154126);
+  AddElementByWeightFraction(32, 0.17482 );
+  AddElementByWeightFraction(83, 0.671054);
+
+  AddMaterial("G4_BLOOD_ICRP", 1.06, 0, 75.2, 14);
+  AddElementByWeightFraction( 1, 0.101866);
+  AddElementByWeightFraction( 6, 0.10002 );
+  AddElementByWeightFraction( 7, 0.02964 );
+  AddElementByWeightFraction( 8, 0.759414);
+  AddElementByWeightFraction(11, 0.00185 );
+  AddElementByWeightFraction(12, 4e-05   );
+  AddElementByWeightFraction(14, 3e-05   );
+  AddElementByWeightFraction(15, 0.00035 );
+  AddElementByWeightFraction(16, 0.00185 );
+  AddElementByWeightFraction(17, 0.00278 );
+  AddElementByWeightFraction(19, 0.00163 );
+  AddElementByWeightFraction(20, 6e-05   );
+  AddElementByWeightFraction(26, 0.00046 );
+  AddElementByWeightFraction(30, 1e-05   );
+
+  AddMaterial("G4_BONE_COMPACT_ICRU", 1.85, 0, 91.9, 8);
+  AddElementByWeightFraction( 1, 0.063984);
+  AddElementByWeightFraction( 6, 0.278   );
+  AddElementByWeightFraction( 7, 0.027   );
+  AddElementByWeightFraction( 8, 0.410016);
+  AddElementByWeightFraction(12, 0.002   );
+  AddElementByWeightFraction(15, 0.07    );
+  AddElementByWeightFraction(16, 0.002   );
+  AddElementByWeightFraction(20, 0.147   );
+
+  AddMaterial("G4_BONE_CORTICAL_ICRP", 1.85, 0, 106.4, 9);
+  AddElementByWeightFraction( 1, 0.047234);
+  AddElementByWeightFraction( 6, 0.14433 );
+  AddElementByWeightFraction( 7, 0.04199 );
+  AddElementByWeightFraction( 8, 0.446096);
+  AddElementByWeightFraction(12, 0.0022  );
+  AddElementByWeightFraction(15, 0.10497 );
+  AddElementByWeightFraction(16, 0.00315 );
+  AddElementByWeightFraction(20, 0.20993 );
+  AddElementByWeightFraction(30, 0.0001  );
+
+  AddMaterial("G4_BORON_CARBIDE", 2.52, 0, 84.7, 2);
+  AddElementByWeightFraction( 5, 0.78261);
+  AddElementByWeightFraction( 6, 0.21739);
+
+  AddMaterial("G4_BORON_OXIDE", 1.812, 0, 99.6, 2);
+  AddElementByWeightFraction( 5, 0.310551);
+  AddElementByWeightFraction( 8, 0.689449);
+
+  AddMaterial("G4_BRAIN_ICRP", 1.03, 0, 73.3, 13);
+  AddElementByWeightFraction( 1, 0.110667);
+  AddElementByWeightFraction( 6, 0.12542 );
+  AddElementByWeightFraction( 7, 0.01328 );
+  AddElementByWeightFraction( 8, 0.737723);
+  AddElementByWeightFraction(11, 0.00184 );
+  AddElementByWeightFraction(12, 0.00015 );
+  AddElementByWeightFraction(15, 0.00354 );
+  AddElementByWeightFraction(16, 0.00177 );
+  AddElementByWeightFraction(17, 0.00236 );
+  AddElementByWeightFraction(19, 0.0031  );
+  AddElementByWeightFraction(20, 9e-05   );
+  AddElementByWeightFraction(26, 5e-05   );
+  AddElementByWeightFraction(30, 1e-05   );
+
+  AddMaterial("G4_BUTANE", 0.00249343, 0, 48.3, 2, kStateGas);
+  AddElementByWeightFraction( 1, 0.173408);
+  AddElementByWeightFraction( 6, 0.826592);
+
+  AddMaterial("G4_N-BUTYL_ALCOHOL", 0.8098, 0, 59.9, 3);
+  AddElementByWeightFraction( 1, 0.135978);
+  AddElementByWeightFraction( 6, 0.648171);
+  AddElementByWeightFraction( 8, 0.215851);
+
+  AddMaterial("G4_C-552", 1.76, 0, 86.8, 5);
+  AddElementByWeightFraction( 1, 0.02468 );
+  AddElementByWeightFraction( 6, 0.50161 );
+  AddElementByWeightFraction( 8, 0.004527);
+  AddElementByWeightFraction( 9, 0.465209);
+  AddElementByWeightFraction(14, 0.003973);
+
+  AddMaterial("G4_CADMIUM_TELLURIDE", 6.2, 0, 539.3, 2);
+  AddElementByWeightFraction(48, 0.468355);
+  AddElementByWeightFraction(52, 0.531645);
+
+  AddMaterial("G4_CADMIUM_TUNGSTATE", 7.9, 0, 468.3, 3);
+  AddElementByWeightFraction( 8, 0.177644);
+  AddElementByWeightFraction(48, 0.312027);
+  AddElementByWeightFraction(74, 0.510329);
+
+  AddMaterial("G4_CALCIUM_CARBONATE", 2.8, 0, 136.4, 3);
+  AddElementByWeightFraction( 6, 0.120003);
+  AddElementByWeightFraction( 8, 0.479554);
+  AddElementByWeightFraction(20, 0.400443);
+
+  AddMaterial("G4_CALCIUM_FLUORIDE", 3.18, 0, 166., 2);
+  AddElementByWeightFraction( 9, 0.486659);
+  AddElementByWeightFraction(20, 0.513341);
+
+  AddMaterial("G4_CALCIUM_OXIDE", 3.3, 0, 176.1, 2);
+  AddElementByWeightFraction( 8, 0.285299);
+  AddElementByWeightFraction(20, 0.714701);
+
+  AddMaterial("G4_CALCIUM_SULFATE", 2.96, 0, 152.3, 3);
+  AddElementByWeightFraction( 8, 0.470095);
+  AddElementByWeightFraction(16, 0.235497);
+  AddElementByWeightFraction(20, 0.294408);
+
+  AddMaterial("G4_CALCIUM_TUNGSTATE", 6.062, 0, 395., 3);
+  AddElementByWeightFraction( 8, 0.22227 );
+  AddElementByWeightFraction(20, 0.139202);
+  AddElementByWeightFraction(74, 0.638529);
+
+  AddMaterial("G4_CARBON_DIOXIDE", 0.00184212, 0, 85., 2, kStateGas);
+  AddElementByWeightFraction( 6, 0.272916);
+  AddElementByWeightFraction( 8, 0.727084);
+  AddChemicalFormula("G4_CARBON_DIOXIDE","CO_2");
+
+  AddMaterial("G4_CARBON_TETRACHLORIDE", 1.594, 0, 166.3, 2);
+  AddElementByWeightFraction( 6, 0.078083);
+  AddElementByWeightFraction(17, 0.921917);
+
+  AddMaterial("G4_CELLULOSE_CELLOPHANE", 1.42, 0, 77.6, 3);
+  AddElementByWeightFraction( 1, 0.062162);
+  AddElementByWeightFraction( 6, 0.444462);
+  AddElementByWeightFraction( 8, 0.493376);
+
+  AddMaterial("G4_CELLULOSE_BUTYRATE", 1.2, 0, 74.6, 3);
+  AddElementByWeightFraction( 1, 0.067125);
+  AddElementByWeightFraction( 6, 0.545403);
+  AddElementByWeightFraction( 8, 0.387472);
+
+  AddMaterial("G4_CELLULOSE_NITRATE", 1.49, 0, 87., 4);
+  AddElementByWeightFraction( 1, 0.029216);
+  AddElementByWeightFraction( 6, 0.271296);
+  AddElementByWeightFraction( 7, 0.121276);
+  AddElementByWeightFraction( 8, 0.578212);
+
+  AddMaterial("G4_CERIC_SULFATE", 1.03, 0, 76.7, 5);
+  AddElementByWeightFraction( 1, 0.107596);
+  AddElementByWeightFraction( 7, 0.0008  );
+  AddElementByWeightFraction( 8, 0.874976);
+  AddElementByWeightFraction(16, 0.014627);
+  AddElementByWeightFraction(58, 0.002001);
+
+  AddMaterial("G4_CESIUM_FLUORIDE", 4.115, 0, 440.7, 2);
+  AddElementByWeightFraction( 9, 0.125069);
+  AddElementByWeightFraction(55, 0.874931);
+
+  AddMaterial("G4_CESIUM_IODIDE", 4.51, 0, 553.1, 2);
+  AddElementByWeightFraction(53, 0.488451);
+  AddElementByWeightFraction(55, 0.511549);
+
+  AddMaterial("G4_CHLOROBENZENE", 1.1058, 0, 89.1, 3);
+  AddElementByWeightFraction( 1, 0.044772);
+  AddElementByWeightFraction( 6, 0.640254);
+  AddElementByWeightFraction(17, 0.314974);
+
+  AddMaterial("G4_CHLOROFORM", 1.4832, 0, 156., 3);
+  AddElementByWeightFraction( 1, 0.008443);
+  AddElementByWeightFraction( 6, 0.100613);
+  AddElementByWeightFraction(17, 0.890944);
+
+  AddMaterial("G4_CONCRETE", 2.3, 0, 135.2, 10);
+  AddElementByWeightFraction( 1, 0.01    );
+  AddElementByWeightFraction( 6, 0.001   );
+  AddElementByWeightFraction( 8, 0.529107);
+  AddElementByWeightFraction(11, 0.016   );
+  AddElementByWeightFraction(12, 0.002   );
+  AddElementByWeightFraction(13, 0.033872);
+  AddElementByWeightFraction(14, 0.337021);
+  AddElementByWeightFraction(19, 0.013   );
+  AddElementByWeightFraction(20, 0.044   );
+  AddElementByWeightFraction(26, 0.014   );
+
+  AddMaterial("G4_CYCLOHEXANE", 0.779, 0, 56.4, 2);
+  AddElementByWeightFraction( 1, 0.143711);
+  AddElementByWeightFraction( 6, 0.856289);
+
+  AddMaterial("G4_1,2-DICHLOROBENZENE", 1.3048, 0, 106.5, 3);
+  AddElementByWeightFraction( 1, 0.027425);
+  AddElementByWeightFraction( 6, 0.490233);
+  AddElementByWeightFraction(17, 0.482342);
+
+  AddMaterial("G4_DICHLORODIETHYL_ETHER", 1.2199, 0, 103.3, 4);
+  AddElementByWeightFraction( 1, 0.056381);
+  AddElementByWeightFraction( 6, 0.335942);
+  AddElementByWeightFraction( 8, 0.111874);
+  AddElementByWeightFraction(17, 0.495802);
+
+  AddMaterial("G4_1,2-DICHLOROETHANE", 1.2351, 0, 111.9, 3);
+  AddElementByWeightFraction( 1, 0.04074 );
+  AddElementByWeightFraction( 6, 0.242746);
+  AddElementByWeightFraction(17, 0.716515);
+
+  AddMaterial("G4_DIETHYL_ETHER", 0.71378, 0, 60., 3);
+  AddElementByWeightFraction( 1, 0.135978);
+  AddElementByWeightFraction( 6, 0.648171);
+  AddElementByWeightFraction( 8, 0.215851);
+
+  AddMaterial("G4_N,N-DIMETHYL_FORMAMIDE", 0.9487, 0, 66.6, 4);
+  AddElementByWeightFraction( 1, 0.096523);
+  AddElementByWeightFraction( 6, 0.492965);
+  AddElementByWeightFraction( 7, 0.191625);
+  AddElementByWeightFraction( 8, 0.218887);
+
+  AddMaterial("G4_DIMETHYL_SULFOXIDE", 1.1014, 0, 98.6, 4);
+  AddElementByWeightFraction( 1, 0.077403);
+  AddElementByWeightFraction( 6, 0.307467);
+  AddElementByWeightFraction( 8, 0.204782);
+  AddElementByWeightFraction(16, 0.410348);
+
+  AddMaterial("G4_ETHANE", 0.00125324, 0, 45.4, 2, kStateGas);
+  AddElementByWeightFraction( 1, 0.201115);
+  AddElementByWeightFraction( 6, 0.798885);
+
+  AddMaterial("G4_ETHYL_ALCOHOL", 0.7893, 0, 62.9, 3);
+  AddElementByWeightFraction( 1, 0.131269);
+  AddElementByWeightFraction( 6, 0.521438);
+  AddElementByWeightFraction( 8, 0.347294);
+
+  AddMaterial("G4_ETHYL_CELLULOSE", 1.13, 0, 69.3, 3);
+  AddElementByWeightFraction( 1, 0.090027);
+  AddElementByWeightFraction( 6, 0.585182);
+  AddElementByWeightFraction( 8, 0.324791);
+
+  AddMaterial("G4_ETHYLENE", 0.00117497, 0, 50.7, 2, kStateGas);
+  AddElementByWeightFraction( 1, 0.143711);
+  AddElementByWeightFraction( 6, 0.856289);
+
+  AddMaterial("G4_EYE_LENS_ICRP", 1.1, 0, 73.3, 4);
+  AddElementByWeightFraction( 1, 0.099269);
+  AddElementByWeightFraction( 6, 0.19371 );
+  AddElementByWeightFraction( 7, 0.05327 );
+  AddElementByWeightFraction( 8, 0.653751);
+
+  AddMaterial("G4_FERRIC_OXIDE", 5.2, 0, 227.3, 2);
+  AddElementByWeightFraction( 8, 0.300567);
+  AddElementByWeightFraction(26, 0.699433);
+
+  AddMaterial("G4_FERROBORIDE", 7.15, 0, 261., 2);
+  AddElementByWeightFraction( 5, 0.162174);
+  AddElementByWeightFraction(26, 0.837826);
+
+  AddMaterial("G4_FERROUS_OXIDE", 5.7, 0, 248.6, 2);
+  AddElementByWeightFraction( 8, 0.222689);
+  AddElementByWeightFraction(26, 0.777311);
+
+  AddMaterial("G4_FERROUS_SULFATE", 1.024, 0, 76.4, 7);
+  AddElementByWeightFraction( 1, 0.108259);
+  AddElementByWeightFraction( 7, 2.7e-05 );
+  AddElementByWeightFraction( 8, 0.878636);
+  AddElementByWeightFraction(11, 2.2e-05 );
+  AddElementByWeightFraction(16, 0.012968);
+  AddElementByWeightFraction(17, 3.4e-05 );
+  AddElementByWeightFraction(26, 5.4e-05 );
+
+  AddMaterial("G4_FREON-12", 1.12, 0, 143., 3);
+  AddElementByWeightFraction( 6, 0.099335);
+  AddElementByWeightFraction( 9, 0.314247);
+  AddElementByWeightFraction(17, 0.586418);
+
+  AddMaterial("G4_FREON-12B2", 1.8, 0, 284.9, 3);
+  AddElementByWeightFraction( 6, 0.057245);
+  AddElementByWeightFraction( 9, 0.181096);
+  AddElementByWeightFraction(35, 0.761659);
+
+  AddMaterial("G4_FREON-13", 0.95, 0, 126.6, 3);
+  AddElementByWeightFraction( 6, 0.114983);
+  AddElementByWeightFraction( 9, 0.545622);
+  AddElementByWeightFraction(17, 0.339396);
+
+  AddMaterial("G4_FREON-13B1", 1.5, 0, 210.5, 3);
+  AddElementByWeightFraction( 6, 0.080659);
+  AddElementByWeightFraction( 9, 0.382749);
+  AddElementByWeightFraction(35, 0.536592);
+
+  AddMaterial("G4_FREON-13I1", 1.8, 0, 293.5, 3);
+  AddElementByWeightFraction( 6, 0.061309);
+  AddElementByWeightFraction( 9, 0.290924);
+  AddElementByWeightFraction(53, 0.647767);
+
+  AddMaterial("G4_GADOLINIUM_OXYSULFIDE", 7.44, 0, 493.3, 3);
+  AddElementByWeightFraction( 8, 0.084528);
+  AddElementByWeightFraction(16, 0.08469 );
+  AddElementByWeightFraction(64, 0.830782);
+
+  AddMaterial("G4_GALLIUM_ARSENIDE", 5.31, 0, 384.9, 2);
+  AddElementByWeightFraction(31, 0.482019);
+  AddElementByWeightFraction(33, 0.517981);
+
+  AddMaterial("G4_GEL_PHOTO_EMULSION", 1.2914, 0, 74.8, 5);
+  AddElementByWeightFraction( 1, 0.08118);
+  AddElementByWeightFraction( 6, 0.41606);
+  AddElementByWeightFraction( 7, 0.11124);
+  AddElementByWeightFraction( 8, 0.38064);
+  AddElementByWeightFraction(16, 0.01088);
+
+  AddMaterial("G4_Pyrex_Glass", 2.23, 0, 134., 6);
+  AddElementByWeightFraction( 5, 0.040064);
+  AddElementByWeightFraction( 8, 0.539562);
+  AddElementByWeightFraction(11, 0.028191);
+  AddElementByWeightFraction(13, 0.011644);
+  AddElementByWeightFraction(14, 0.37722 );
+  AddElementByWeightFraction(19, 0.003321);
+
+  AddMaterial("G4_GLASS_LEAD", 6.22, 0, 526.4, 5);
+  AddElementByWeightFraction( 8, 0.156453);
+  AddElementByWeightFraction(14, 0.080866);
+  AddElementByWeightFraction(22, 0.008092);
+  AddElementByWeightFraction(33, 0.002651);
+  AddElementByWeightFraction(82, 0.751938);
+
+  AddMaterial("G4_GLASS_PLATE", 2.4, 0, 145.4, 4);
+  AddElementByWeightFraction( 8, 0.4598  );
+  AddElementByWeightFraction(11, 0.096441);
+  AddElementByWeightFraction(14, 0.336553);
+  AddElementByWeightFraction(20, 0.107205);
+
+  AddMaterial("G4_GLUCOSE", 1.54, 0, 77.2, 3);
+  AddElementByWeightFraction( 1, 0.071204);
+  AddElementByWeightFraction( 6, 0.363652);
+  AddElementByWeightFraction( 8, 0.565144);
+
+  AddMaterial("G4_GLUTAMINE", 1.46, 0, 73.3, 4);
+  AddElementByWeightFraction( 1, 0.068965);
+  AddElementByWeightFraction( 6, 0.410926);
+  AddElementByWeightFraction( 7, 0.191681);
+  AddElementByWeightFraction( 8, 0.328427);
+
+  AddMaterial("G4_GLYCEROL", 1.2613, 0, 72.6, 3);
+  AddElementByWeightFraction( 1, 0.087554);
+  AddElementByWeightFraction( 6, 0.391262);
+  AddElementByWeightFraction( 8, 0.521185);
+
+  AddMaterial("G4_GUANINE", 1.58, 0, 75. ,4);
+  AddElementByWeightFraction( 1, 0.033346);
+  AddElementByWeightFraction( 6, 0.39738 );
+  AddElementByWeightFraction( 7, 0.463407);
+  AddElementByWeightFraction( 8, 0.105867);
+
+  AddMaterial("G4_GYPSUM", 2.32, 0, 129.7, 4);
+  AddElementByWeightFraction( 1, 0.023416);
+  AddElementByWeightFraction( 8, 0.557572);
+  AddElementByWeightFraction(16, 0.186215);
+  AddElementByWeightFraction(20, 0.232797);
+
+  AddMaterial("G4_N-HEPTANE", 0.68376, 0, 54.4, 2);
+  AddElementByWeightFraction( 1, 0.160937);
+  AddElementByWeightFraction( 6, 0.839063);
+
+  AddMaterial("G4_N-HEXANE", 0.6603, 0, 54., 2);
+  AddElementByWeightFraction( 1, 0.163741);
+  AddElementByWeightFraction( 6, 0.836259);
+
+  AddMaterial("G4_KAPTON", 1.42, 0, 79.6, 4);
+  AddElementByWeightFraction( 1, 0.026362);
+  AddElementByWeightFraction( 6, 0.691133);
+  AddElementByWeightFraction( 7, 0.07327 );
+  AddElementByWeightFraction( 8, 0.209235);
+
+  AddMaterial("G4_LANTHANUM_OXYBROMIDE", 6.28, 0, 439.7, 3);
+  AddElementByWeightFraction( 8, 0.068138);
+  AddElementByWeightFraction(35, 0.340294);
+  AddElementByWeightFraction(57, 0.591568);
+
+  AddMaterial("G4_LANTHANUM_OXYSULFIDE", 5.86, 0, 421.2, 3);
+  AddElementByWeightFraction( 8, 0.0936  );
+  AddElementByWeightFraction(16, 0.093778);
+  AddElementByWeightFraction(57, 0.812622);
+
+  AddMaterial("G4_LEAD_OXIDE", 9.53, 0, 766.7, 2);
+  AddElementByWeightFraction( 8, 0.071682);
+  AddElementByWeightFraction(82, 0.928318);
+
+  AddMaterial("G4_LITHIUM_AMIDE", 1.178, 0, 55.5, 3);
+  AddElementByWeightFraction( 1, 0.087783);
+  AddElementByWeightFraction( 3, 0.302262);
+  AddElementByWeightFraction( 7, 0.609955);
+
+  AddMaterial("G4_LITHIUM_CARBONATE", 2.11, 0, 87.9, 3);
+  AddElementByWeightFraction( 3, 0.187871);
+  AddElementByWeightFraction( 6, 0.16255 );
+  AddElementByWeightFraction( 8, 0.649579);
+
+  AddMaterial("G4_LITHIUM_FLUORIDE", 2.635, 0, 94., 2);
+  AddElementByWeightFraction( 3, 0.267585);
+  AddElementByWeightFraction( 9, 0.732415);
+
+  AddMaterial("G4_LITHIUM_HYDRIDE", 0.82, 0, 36.5, 2);
+  AddElementByWeightFraction( 1, 0.126797);
+  AddElementByWeightFraction( 3, 0.873203);
+
+  AddMaterial("G4_LITHIUM_IODIDE", 3.494, 0, 485.1, 2);
+  AddElementByWeightFraction( 3, 0.051858);
+  AddElementByWeightFraction(53, 0.948142);
+
+  AddMaterial("G4_LITHIUM_OXIDE", 2.013, 0, 73.6, 2);
+  AddElementByWeightFraction( 3, 0.46457);
+  AddElementByWeightFraction( 8, 0.53543);
+
+  AddMaterial("G4_LITHIUM_TETRABORATE", 2.44, 0, 94.6, 3);
+  AddElementByWeightFraction( 3, 0.082085);
+  AddElementByWeightFraction( 5, 0.25568 );
+  AddElementByWeightFraction( 8, 0.662235);
+
+  AddMaterial("G4_LUNG_ICRP", 1.05, 0, 75.3, 13);
+  AddElementByWeightFraction( 1, 0.101278);
+  AddElementByWeightFraction( 6, 0.10231 );
+  AddElementByWeightFraction( 7, 0.02865 );
+  AddElementByWeightFraction( 8, 0.757072);
+  AddElementByWeightFraction(11, 0.00184 );
+  AddElementByWeightFraction(12, 0.00073 );
+  AddElementByWeightFraction(15, 0.0008  );
+  AddElementByWeightFraction(16, 0.00225 );
+  AddElementByWeightFraction(17, 0.00266 );
+  AddElementByWeightFraction(19, 0.00194 );
+  AddElementByWeightFraction(20, 9e-05   );
+  AddElementByWeightFraction(26, 0.00037 );
+  AddElementByWeightFraction(30, 1e-05   );
+
+  AddMaterial("G4_M3_WAX", 1.05, 0, 67.9, 5);
+  AddElementByWeightFraction( 1, 0.114318);
+  AddElementByWeightFraction( 6, 0.655823);
+  AddElementByWeightFraction( 8, 0.092183);
+  AddElementByWeightFraction(12, 0.134792);
+  AddElementByWeightFraction(20, 0.002883);
+
+  AddMaterial("G4_MAGNESIUM_CARBONATE", 2.958, 0, 118., 3);
+  AddElementByWeightFraction( 6, 0.142455);
+  AddElementByWeightFraction( 8, 0.569278);
+  AddElementByWeightFraction(12, 0.288267);
+
+  AddMaterial("G4_MAGNESIUM_FLUORIDE", 3.0, 0, 134.3, 2);
+  AddElementByWeightFraction( 9, 0.609883);
+  AddElementByWeightFraction(12, 0.390117);
+
+  AddMaterial("G4_MAGNESIUM_OXIDE", 3.58, 0, 143.8, 2);
+  AddElementByWeightFraction( 8, 0.396964);
+  AddElementByWeightFraction(12, 0.603036);
+
+  AddMaterial("G4_MAGNESIUM_TETRABORATE", 2.53, 0, 108.3, 3);
+  AddElementByWeightFraction( 5, 0.240837);
+  AddElementByWeightFraction( 8, 0.62379);
+  AddElementByWeightFraction(12, 0.135373);
+
+  AddMaterial("G4_MERCURIC_IODIDE", 6.36, 0, 684.5, 2);
+  AddElementByWeightFraction(53, 0.55856);
+  AddElementByWeightFraction(80, 0.44144);
+
+  AddMaterial("G4_METHANE", 0.000667151, 0, 41.7, 2, kStateGas);
+  AddElementByWeightFraction( 1, 0.251306);
+  AddElementByWeightFraction( 6, 0.748694);
+
+  AddMaterial("G4_METHANOL", 0.7914, 0, 67.6, 3);
+  AddElementByWeightFraction( 1, 0.125822);
+  AddElementByWeightFraction( 6, 0.374852);
+  AddElementByWeightFraction( 8, 0.499326);
+
+  AddMaterial("G4_MIX_D_WAX", 0.99, 0, 60.9, 5);
+  AddElementByWeightFraction( 1, 0.13404 );
+  AddElementByWeightFraction( 6, 0.77796 );
+  AddElementByWeightFraction( 8, 0.03502 );
+  AddElementByWeightFraction(12, 0.038594);
+  AddElementByWeightFraction(22, 0.014386);
+
+  AddMaterial("G4_MS20_TISSUE", 1.0, 0, 75.1, 6);
+  AddElementByWeightFraction( 1, 0.081192);
+  AddElementByWeightFraction( 6, 0.583442);
+  AddElementByWeightFraction( 7, 0.017798);
+  AddElementByWeightFraction( 8, 0.186381);
+  AddElementByWeightFraction(12, 0.130287);
+  AddElementByWeightFraction(17, 0.0009  );
+
+  AddMaterial("G4_MUSCLE_SKELETAL_ICRP", 1.04, 0, 75.3, 13);
+  AddElementByWeightFraction( 1, 0.100637);
+  AddElementByWeightFraction( 6, 0.10783 );
+  AddElementByWeightFraction( 7, 0.02768 );
+  AddElementByWeightFraction( 8, 0.754773);
+  AddElementByWeightFraction(11, 0.00075 );
+  AddElementByWeightFraction(12, 0.00019 );
+  AddElementByWeightFraction(15, 0.0018  );
+  AddElementByWeightFraction(16, 0.00241 );
+  AddElementByWeightFraction(17, 0.00079 );
+  AddElementByWeightFraction(19, 0.00302 );
+  AddElementByWeightFraction(20, 3e-05   );
+  AddElementByWeightFraction(26, 4e-05   );
+  AddElementByWeightFraction(30, 5e-05   );
+
+  AddMaterial("G4_MUSCLE_STRIATED_ICRU", 1.04, 0, 74.7, 9);
+  AddElementByWeightFraction( 1, 0.101997);
+  AddElementByWeightFraction( 6, 0.123   );
+  AddElementByWeightFraction( 7, 0.035   );
+  AddElementByWeightFraction( 8, 0.729003);
+  AddElementByWeightFraction(11, 0.0008  );
+  AddElementByWeightFraction(12, 0.0002  );
+  AddElementByWeightFraction(15, 0.002   );
+  AddElementByWeightFraction(16, 0.005   );
+  AddElementByWeightFraction(19, 0.003   );
+
+  AddMaterial("G4_MUSCLE_WITH_SUCROSE", 1.11, 0, 74.3, 4);
+  AddElementByWeightFraction( 1, 0.098234);
+  AddElementByWeightFraction( 6, 0.156214);
+  AddElementByWeightFraction( 7, 0.035451);
+  AddElementByWeightFraction( 8, 0.7101  );
+
+  AddMaterial("G4_MUSCLE_WITHOUT_SUCROSE", 1.07, 0, 74.2, 4);
+  AddElementByWeightFraction( 1, 0.101969);
+  AddElementByWeightFraction( 6, 0.120058);
+  AddElementByWeightFraction( 7, 0.035451);
+  AddElementByWeightFraction( 8, 0.742522);
+
+  AddMaterial("G4_NAPHTHALENE", 1.145, 0, 68.4, 2);
+  AddElementByWeightFraction( 1, 0.062909);
+  AddElementByWeightFraction( 6, 0.937091);
+
+  AddMaterial("G4_NITROBENZENE", 1.19867, 0, 75.8, 4);
+  AddElementByWeightFraction( 1, 0.040935);
+  AddElementByWeightFraction( 6, 0.585374);
+  AddElementByWeightFraction( 7, 0.113773);
+  AddElementByWeightFraction( 8, 0.259918);
+
+  AddMaterial("G4_NITROUS_OXIDE", 0.00183094, 0, 84.9, 2, kStateGas);
+  AddElementByWeightFraction( 7, 0.636483);
+  AddElementByWeightFraction( 8, 0.363517);
+
+  AddMaterial("G4_NYLON-8062", 1.08, 0, 64.3, 4);
+  AddElementByWeightFraction( 1, 0.103509);
+  AddElementByWeightFraction( 6, 0.648415);
+  AddElementByWeightFraction( 7, 0.099536);
+  AddElementByWeightFraction( 8, 0.148539);
+
+  AddMaterial("G4_NYLON-6/6", 1.14, 0, 63.9, 4);
+  AddElementByWeightFraction( 1, 0.097976);
+  AddElementByWeightFraction( 6, 0.636856);
+  AddElementByWeightFraction( 7, 0.123779);
+  AddElementByWeightFraction( 8, 0.141389);
+
+  AddMaterial("G4_NYLON-6/10", 1.14, 0, 63.2, 4);
+  AddElementByWeightFraction( 1, 0.107062);
+  AddElementByWeightFraction( 6, 0.680449);
+  AddElementByWeightFraction( 7, 0.099189);
+  AddElementByWeightFraction( 8, 0.1133  );
+
+  AddMaterial("G4_NYLON-11_RILSAN", 1.425, 0, 61.6, 4);
+  AddElementByWeightFraction( 1, 0.115476);
+  AddElementByWeightFraction( 6, 0.720819);
+  AddElementByWeightFraction( 7, 0.076417);
+  AddElementByWeightFraction( 8, 0.087289);
+
+  AddMaterial("G4_OCTANE", 0.7026, 0, 54.7, 2);
+  AddElementByWeightFraction( 1, 0.158821);
+  AddElementByWeightFraction( 6, 0.841179);
+
+  AddMaterial("G4_PARAFFIN", 0.93, 0, 55.9, 2);
+  AddElementByWeightFraction( 1, 0.148605);
+  AddElementByWeightFraction( 6, 0.851395);
+
+  AddMaterial("G4_N-PENTANE", 0.6262, 0, 53.6, 2);
+  AddElementByWeightFraction( 1, 0.167635);
+  AddElementByWeightFraction (6, 0.832365);
+
+  AddMaterial("G4_PHOTO_EMULSION", 3.815, 0, 331., 8);
+  AddElementByWeightFraction( 1, 0.0141  );
+  AddElementByWeightFraction( 6, 0.072261);
+  AddElementByWeightFraction( 7, 0.01932 );
+  AddElementByWeightFraction( 8, 0.066101);
+  AddElementByWeightFraction(16, 0.00189 );
+  AddElementByWeightFraction(35, 0.349103);
+  AddElementByWeightFraction(47, 0.474105);
+  AddElementByWeightFraction(53, 0.00312 );
+
+  AddMaterial("G4_PLASTIC_SC_VINYLTOLUENE", 1.032, 0, 64.7, 2);
+  AddElementByWeightFraction( 1, 0.085);
+  AddElementByWeightFraction( 6, 0.915);
+
+  AddMaterial("G4_PLUTONIUM_DIOXIDE", 11.46, 0, 746.5, 2);
+  AddElementByWeightFraction( 8, 0.118055);
+  AddElementByWeightFraction(94, 0.881945);
+
+  AddMaterial("G4_POLYACRYLONITRILE", 1.17, 0, 69.6, 3);
+  AddElementByWeightFraction( 1, 0.056983);
+  AddElementByWeightFraction( 6, 0.679056);
+  AddElementByWeightFraction( 7, 0.263962);
+
+  AddMaterial("G4_POLYCARBONATE", 1.2, 0, 73.1, 3);
+  AddElementByWeightFraction( 1, 0.055491);
+  AddElementByWeightFraction( 6, 0.755751);
+  AddElementByWeightFraction( 8, 0.188758);
+
+  AddMaterial("G4_POLYCHLOROSTYRENE", 1.3, 0, 81.7, 3);
+  AddElementByWeightFraction( 1, 0.061869);
+  AddElementByWeightFraction( 6, 0.696325);
+  AddElementByWeightFraction(17, 0.241806);
+
+  AddMaterial("G4_POLYETHYLENE", 0.94, 0, 57.4, 2);
+  AddElementByWeightFraction( 1, 0.143711);
+  AddElementByWeightFraction( 6, 0.856289);
+  AddChemicalFormula("G4_POLYETHYLENE","(C_2H_4)_N-Polyethylene");
+
+  AddMaterial("G4_MYLAR", 1.4, 0, 78.7, 3);
+  AddElementByWeightFraction( 1, 0.041959);
+  AddElementByWeightFraction( 6, 0.625017);
+  AddElementByWeightFraction( 8, 0.333025);
+
+  AddMaterial("G4_PLEXIGLASS", 1.19, 0, 74., 3);
+  AddElementByWeightFraction( 1, 0.080538);
+  AddElementByWeightFraction( 6, 0.599848);
+  AddElementByWeightFraction( 8, 0.319614);
+
+  AddMaterial("G4_POLYOXYMETHYLENE", 1.425 ,0, 77.4, 3);
+  AddElementByWeightFraction( 1, 0.067135);
+  AddElementByWeightFraction( 6, 0.400017);
+  AddElementByWeightFraction( 8, 0.532848);
+
+  AddMaterial("G4_POLYPROPYLENE", 0.9, 0, 56.5, 2);
+  AddElementByWeightFraction( 1, 0.143711);
+  AddElementByWeightFraction( 6, 0.856289);
+  AddChemicalFormula("G4_POLYPROPYLENE","(C_2H_4)_N-Polypropylene");
+
+  AddMaterial("G4_POLYSTYRENE", 1.06, 0, 68.7, 2);
+  AddElementByWeightFraction( 1, 0.077418);
+  AddElementByWeightFraction( 6, 0.922582);
+
+  AddMaterial("G4_TEFLON", 2.2, 0, 99.1, 2);
+  AddElementByWeightFraction( 6, 0.240183);
+  AddElementByWeightFraction( 9, 0.759817);
+
+  AddMaterial("G4_POLYTRIFLUOROCHLOROETHYLENE", 2.1, 0, 120.7, 3);
+  AddElementByWeightFraction( 6, 0.20625 );
+  AddElementByWeightFraction( 9, 0.489354);
+  AddElementByWeightFraction(17, 0.304395);
+
+  AddMaterial("G4_POLYVINYL_ACETATE", 1.19, 0, 73.7, 3);
+  AddElementByWeightFraction( 1, 0.070245);
+  AddElementByWeightFraction( 6, 0.558066);
+  AddElementByWeightFraction( 8, 0.371689);
+
+  AddMaterial("G4_POLYVINYL_ALCOHOL", 1.3, 0, 69.7, 3);
+  AddElementByWeightFraction( 1, 0.091517);
+  AddElementByWeightFraction( 6, 0.545298);
+  AddElementByWeightFraction( 8, 0.363185);
+
+  AddMaterial("G4_POLYVINYL_BUTYRAL", 1.12, 0, 67.2, 3);
+  AddElementByWeightFraction( 1, 0.092802);
+  AddElementByWeightFraction( 6, 0.680561);
+  AddElementByWeightFraction( 8, 0.226637);
+
+  AddMaterial("G4_POLYVINYL_CHLORIDE", 1.3, 0, 108.2, 3);
+  AddElementByWeightFraction( 1, 0.04838);
+  AddElementByWeightFraction( 6, 0.38436);
+  AddElementByWeightFraction(17, 0.56726);
+
+  AddMaterial("G4_POLYVINYLIDENE_CHLORIDE", 1.7, 0, 134.3, 3);
+  AddElementByWeightFraction( 1, 0.020793);
+  AddElementByWeightFraction( 6, 0.247793);
+  AddElementByWeightFraction(17, 0.731413);
+
+  AddMaterial("G4_POLYVINYLIDENE_FLUORIDE", 1.76, 0, 88.8, 3);
+  AddElementByWeightFraction( 1, 0.03148 );
+  AddElementByWeightFraction( 6, 0.375141);
+  AddElementByWeightFraction( 9, 0.593379);
+
+  AddMaterial("G4_POLYVINYL_PYRROLIDONE", 1.25, 0, 67.7, 4);
+  AddElementByWeightFraction( 1, 0.081616);
+  AddElementByWeightFraction( 6, 0.648407);
+  AddElementByWeightFraction( 7, 0.126024);
+  AddElementByWeightFraction( 8, 0.143953);
+
+  AddMaterial("G4_POTASSIUM_IODIDE", 3.13, 0, 431.9, 2);
+  AddElementByWeightFraction(19, 0.235528);
+  AddElementByWeightFraction(53, 0.764472);
+
+  AddMaterial("G4_POTASSIUM_OXIDE", 2.32, 0, 189.9, 2);
+  AddElementByWeightFraction( 8, 0.169852);
+  AddElementByWeightFraction(19, 0.830148);
+
+  AddMaterial("G4_PROPANE", 0.00187939, 0, 47.1, 2, kStateGas);
+  AddElementByWeightFraction( 1, 0.182855);
+  AddElementByWeightFraction( 6, 0.817145);
+
+  AddMaterial("G4_lPROPANE", 0.43, 0, 52., 2);
+  AddElementByWeightFraction( 1, 0.182855);
+  AddElementByWeightFraction( 6, 0.817145);
+
+  AddMaterial("G4_N-PROPYL_ALCOHOL", 0.8035, 0, 61.1, 3);
+  AddElementByWeightFraction( 1, 0.134173);
+  AddElementByWeightFraction( 6, 0.599595);
+  AddElementByWeightFraction( 8, 0.266232);
+
+  AddMaterial("G4_PYRIDINE", 0.9819, 0, 66.2, 3);
+  AddElementByWeightFraction( 1, 0.06371 );
+  AddElementByWeightFraction( 6, 0.759217);
+  AddElementByWeightFraction( 7, 0.177073);
+
+  AddMaterial("G4_RUBBER_BUTYL", 0.92, 0, 56.5, 2);
+  AddElementByWeightFraction( 1, 0.143711);
+  AddElementByWeightFraction( 6, 0.856289);
+
+  AddMaterial("G4_RUBBER_NATURAL", 0.92, 0, 59.8, 2);
+  AddElementByWeightFraction( 1, 0.118371);
+  AddElementByWeightFraction( 6, 0.881629);
+
+  AddMaterial("G4_RUBBER_NEOPRENE", 1.23, 0, 93., 3);
+  AddElementByWeightFraction( 1, 0.05692 );
+  AddElementByWeightFraction( 6, 0.542646);
+  AddElementByWeightFraction(17, 0.400434);
+
+  AddMaterial("G4_SILICON_DIOXIDE", 2.32, 0, 139.2, 2);
+  AddElementByWeightFraction( 8, 0.532565);
+  AddElementByWeightFraction(14, 0.467435);
+  AddChemicalFormula("G4_SILICON_DIOXIDE","SiO_2");
+
+  AddMaterial("G4_SILVER_BROMIDE", 6.473, 0, 486.6, 2);
+  AddElementByWeightFraction(35, 0.425537);
+  AddElementByWeightFraction(47, 0.574463);
+
+  AddMaterial("G4_SILVER_CHLORIDE", 5.56, 0, 398.4, 2);
+  AddElementByWeightFraction(17, 0.247368);
+  AddElementByWeightFraction(47, 0.752632);
+
+  AddMaterial("G4_SILVER_HALIDES", 6.47, 0, 487.1, 3);
+  AddElementByWeightFraction(35, 0.422895);
+  AddElementByWeightFraction(47, 0.573748);
+  AddElementByWeightFraction(53, 0.003357);
+
+  AddMaterial("G4_SILVER_IODIDE", 6.01, 0, 543.5, 2);
+  AddElementByWeightFraction(47, 0.459458);
+  AddElementByWeightFraction(53, 0.540542);
+
+  AddMaterial("G4_SKIN_ICRP", 1.1, 0, 72.7, 13);
+  AddElementByWeightFraction( 1, 0.100588);
+  AddElementByWeightFraction( 6, 0.22825 );
+  AddElementByWeightFraction( 7, 0.04642 );
+  AddElementByWeightFraction( 8, 0.619002);
+  AddElementByWeightFraction(11, 7e-05   );
+  AddElementByWeightFraction(12, 6e-05   );
+  AddElementByWeightFraction(15, 0.00033 );
+  AddElementByWeightFraction(16, 0.00159 );
+  AddElementByWeightFraction(17, 0.00267 );
+  AddElementByWeightFraction(19, 0.00085 );
+  AddElementByWeightFraction(20, 0.00015 );
+  AddElementByWeightFraction(26, 1e-05   );
+  AddElementByWeightFraction(30, 1e-05   );
+
+  AddMaterial("G4_SODIUM_CARBONATE", 2.532, 0, 125., 3);
+  AddElementByWeightFraction( 6, 0.113323);
+  AddElementByWeightFraction( 8, 0.452861);
+  AddElementByWeightFraction(11, 0.433815);
+
+  AddMaterial("G4_SODIUM_IODIDE", 3.667, 0, 452., 2);
+  AddElementByWeightFraction(11, 0.153373);
+  AddElementByWeightFraction(53, 0.846627);
+
+  AddMaterial("G4_SODIUM_MONOXIDE", 2.27, 0, 148.8, 2);
+  AddElementByWeightFraction( 8, 0.258143);
+  AddElementByWeightFraction(11, 0.741857);
+
+  AddMaterial("G4_SODIUM_NITRATE", 2.261, 0, 114.6, 3);
+  AddElementByWeightFraction( 7, 0.164795);
+  AddElementByWeightFraction( 8, 0.56472 );
+  AddElementByWeightFraction(11, 0.270485);
+
+  AddMaterial("G4_STILBENE", 0.9707, 0, 67.7, 2);
+  AddElementByWeightFraction( 1, 0.067101);
+  AddElementByWeightFraction( 6, 0.932899);
+
+  AddMaterial("G4_SUCROSE", 1.5805, 0, 77.5, 3);
+  AddElementByWeightFraction( 1, 0.064779);
+  AddElementByWeightFraction( 6, 0.42107);
+  AddElementByWeightFraction( 8, 0.514151);
+
+  AddMaterial("G4_TERPHENYL", 1.234, 0, 71.7, 2);
+  AddElementByWeightFraction( 1, 0.044543);
+  AddElementByWeightFraction( 6, 0.955457);
+
+  AddMaterial("G4_TESTES_ICRP", 1.04, 0, 75., 13);
+  AddElementByWeightFraction( 1, 0.104166);
+  AddElementByWeightFraction( 6, 0.09227 );
+  AddElementByWeightFraction( 7, 0.01994 );
+  AddElementByWeightFraction( 8, 0.773884);
+  AddElementByWeightFraction(11, 0.00226 );
+  AddElementByWeightFraction(12, 0.00011 );
+  AddElementByWeightFraction(15, 0.00125 );
+  AddElementByWeightFraction(16, 0.00146 );
+  AddElementByWeightFraction(17, 0.00244 );
+  AddElementByWeightFraction(19, 0.00208 );
+  AddElementByWeightFraction(20, 0.0001  );
+  AddElementByWeightFraction(26, 2e-05   );
+  AddElementByWeightFraction(30, 2e-05   );
+
+  AddMaterial("G4_TETRACHLOROETHYLENE", 1.625, 0, 159.2, 2);
+  AddElementByWeightFraction( 6, 0.144856);
+  AddElementByWeightFraction(17, 0.855144);
+
+  AddMaterial("G4_THALLIUM_CHLORIDE", 7.004, 0, 690.3, 2);
+  AddElementByWeightFraction(17, 0.147822);
+  AddElementByWeightFraction(81, 0.852178);
+
+  AddMaterial("G4_TISSUE_SOFT_ICRP", 1.0, 0, 72.3, 13);
+  AddElementByWeightFraction( 1, 0.104472);
+  AddElementByWeightFraction( 6, 0.23219 );
+  AddElementByWeightFraction( 7, 0.02488 );
+  AddElementByWeightFraction( 8, 0.630238);
+  AddElementByWeightFraction(11, 0.00113 );
+  AddElementByWeightFraction(12, 0.00013 );
+  AddElementByWeightFraction(15, 0.00133 );
+  AddElementByWeightFraction(16, 0.00199 );
+  AddElementByWeightFraction(17, 0.00134 );
+  AddElementByWeightFraction(19, 0.00199 );
+  AddElementByWeightFraction(20, 0.00023 );
+  AddElementByWeightFraction(26, 5e-05   );
+  AddElementByWeightFraction(30, 3e-05   );
+
+  AddMaterial("G4_TISSUE_SOFT_ICRU-4", 1.0, 0, 74.9, 4);
+  AddElementByWeightFraction( 1, 0.101172);
+  AddElementByWeightFraction( 6, 0.111   );
+  AddElementByWeightFraction( 7, 0.026   );
+  AddElementByWeightFraction( 8, 0.761828);
+
+  AddMaterial("G4_TISSUE-METHANE", 0.00106409, 0, 61.2, 4, kStateGas);
+  AddElementByWeightFraction( 1, 0.101869);
+  AddElementByWeightFraction( 6, 0.456179);
+  AddElementByWeightFraction( 7, 0.035172);
+  AddElementByWeightFraction( 8, 0.40678 );
+
+  AddMaterial("G4_TISSUE-PROPANE", 0.00182628, 0, 59.5, 4, kStateGas);
+  AddElementByWeightFraction( 1, 0.102672);
+  AddElementByWeightFraction( 6, 0.56894 );
+  AddElementByWeightFraction( 7, 0.035022);
+  AddElementByWeightFraction( 8, 0.293366);
+
+  AddMaterial("G4_TITANIUM_DIOXIDE", 4.26, 0, 179.5, 2);
+  AddElementByWeightFraction( 8, 0.400592);
+  AddElementByWeightFraction(22, 0.599408);
+
+  AddMaterial("G4_TOLUENE", 0.8669, 0, 62.5, 2);
+  AddElementByWeightFraction( 1, 0.08751);
+  AddElementByWeightFraction( 6, 0.91249);
+
+  AddMaterial("G4_TRICHLOROETHYLENE", 1.46, 0, 148.1, 3);
+  AddElementByWeightFraction( 1, 0.007671);
+  AddElementByWeightFraction( 6, 0.182831);
+  AddElementByWeightFraction(17, 0.809498);
+
+  AddMaterial("G4_TRIETHYL_PHOSPHATE", 1.07, 0, 81.2, 4);
+  AddElementByWeightFraction( 1, 0.082998);
+  AddElementByWeightFraction( 6, 0.395628);
+  AddElementByWeightFraction( 8, 0.351334);
+  AddElementByWeightFraction(15, 0.17004 );
+
+  AddMaterial("G4_TUNGSTEN_HEXAFLUORIDE", 2.4, 0, 354.4, 2);
+  AddElementByWeightFraction( 9, 0.382723);
+  AddElementByWeightFraction(74, 0.617277);
+
+  AddMaterial("G4_URANIUM_DICARBIDE", 11.28, 0, 752., 2);
+  AddElementByWeightFraction( 6, 0.091669);
+  AddElementByWeightFraction(92, 0.908331);
+
+  AddMaterial("G4_URANIUM_MONOCARBIDE", 13.63, 0, 862., 2);
+  AddElementByWeightFraction( 6, 0.048036);
+  AddElementByWeightFraction(92, 0.951964);
+
+  AddMaterial("G4_URANIUM_OXIDE", 10.96, 0, 720.6, 2);
+  AddElementByWeightFraction( 8, 0.118502);
+  AddElementByWeightFraction(92, 0.881498);
+
+  AddMaterial("G4_UREA", 1.323, 0, 72.8, 4);
+  AddElementByWeightFraction( 1, 0.067131);
+  AddElementByWeightFraction( 6, 0.199999);
+  AddElementByWeightFraction( 7, 0.466459);
+  AddElementByWeightFraction( 8, 0.266411);
+
+  AddMaterial("G4_VALINE", 1.23, 0, 67.7, 4);
+  AddElementByWeightFraction( 1, 0.094641);
+  AddElementByWeightFraction( 6, 0.512645);
+  AddElementByWeightFraction( 7, 0.119565);
+  AddElementByWeightFraction( 8, 0.27315 );
+
+  AddMaterial("G4_VITON", 1.8, 0, 98.6, 3);
+  AddElementByWeightFraction( 1, 0.009417);
+  AddElementByWeightFraction( 6, 0.280555);
+  AddElementByWeightFraction( 9, 0.710028);
+
+  AddMaterial("G4_WATER", 1.0,0, 75., 2);
+  AddElementByWeightFraction( 1, 0.111894);
+  AddElementByWeightFraction( 8, 0.888106);
+  AddChemicalFormula("G4_WATER","H_2O");
+
+  AddMaterial("G4_WATER_VAPOR", 0.000756182, 0, 71.6, 2, kStateGas);
+  AddElementByWeightFraction( 1, 0.111894);
+  AddElementByWeightFraction( 8, 0.888106);
+  AddChemicalFormula("G4_WATER_VAPOR","H_2O-Gas");
+
+  AddMaterial("G4_XYLENE", 0.87, 0, 61.8, 2);
+  AddElementByWeightFraction( 1, 0.094935);
+  AddElementByWeightFraction( 6, 0.905065);
+
+  AddMaterial("G4_GRAPHITE", 1.7, 6, 78.);
+  nNIST = nMaterials;
+  AddChemicalFormula("G4_GRAPHITE","Graphite");
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistMaterialBuilder::HepAndNuclearMaterials()
+{
+  AddMaterial("G4_lH2", 0.0708,  1,  21.8, 1, kStateLiquid);
+  AddMaterial("G4_lN2", 0.807,   7,  82.,  1, kStateLiquid);
+  AddMaterial("G4_lO2", 1.141,   8,  95.,  1, kStateLiquid);
+  AddMaterial("G4_lAr", 1.396 , 18, 188. , 1, kStateLiquid);
+  AddMaterial("G4_lKr", 2.418 , 36, 352. , 1, kStateLiquid);
+  AddMaterial("G4_lXe", 2.953 , 54, 482. , 1, kStateLiquid);
+
+  AddMaterial("G4_PbWO4", 8.28, 0, 0.0, 3);
+  AddElementByAtomCount("O" , 4);
+  AddElementByAtomCount("Pb", 1);
+  AddElementByAtomCount("W" , 1);
+
+  G4double density = universe_mean_density*cm3/g;
+  AddMaterial("G4_Galactic", density, 1, 21.8, 1, kStateGas);
+  AddGas("G4_Galactic",2.73*kelvin, 3.e-18*pascal);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
Index: trunk/source/materials/src/G4NistMessenger.cc
===================================================================
--- trunk/source/materials/src/G4NistMessenger.cc	(revision 822)
+++ trunk/source/materials/src/G4NistMessenger.cc	(revision 822)
@@ -0,0 +1,140 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4NistMessenger.cc,v 1.4 2007/05/02 10:48:52 vnivanch Exp $
+// GEANT4 tag $Name:  $
+//
+//
+// File name:     G4NistMessenger
+//
+// Author:        Vladimir Ivanchenko
+//
+// Creation date: 23.12.2004
+//
+// Modifications:
+//
+//
+// -------------------------------------------------------------------
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+
+#include "G4NistMessenger.hh"
+
+#include "G4NistManager.hh"
+
+#include "G4UIdirectory.hh"
+#include "G4UIcmdWithAnInteger.hh"
+#include "G4UIcmdWithAString.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+
+G4NistMessenger::G4NistMessenger(G4NistManager* man)
+:manager(man)
+{
+  matDir = new G4UIdirectory("/material/");
+  matDir->SetGuidance("Commands for materials");
+
+  verCmd = new G4UIcmdWithAnInteger("/material/verbose",this);
+  verCmd->SetGuidance("Set verbose level.");
+  
+  nistDir = new G4UIdirectory("/material/nist/");
+  nistDir->SetGuidance("Commands for the nist dataBase");
+    
+  prtElmCmd = new G4UIcmdWithAString("/material/nist/printElement",this);
+  prtElmCmd->SetGuidance("print element(s) in dataBase.");
+  prtElmCmd->SetGuidance("symbol = element.");
+  prtElmCmd->SetGuidance("all    = all elements.");
+  prtElmCmd->SetGuidance("verbose>1 : list associated isotopes.");  
+  prtElmCmd->SetParameterName("symbol", true);
+  prtElmCmd->SetDefaultValue("all");
+  
+  przElmCmd = new G4UIcmdWithAnInteger("/material/nist/printElementZ",this);
+  przElmCmd->SetGuidance("print element Z in dataBase.");
+  przElmCmd->SetGuidance("verbose>1 : list associated isotopes.");
+   
+  lisMatCmd = new G4UIcmdWithAString("/material/nist/listMaterials",this);
+  lisMatCmd->SetGuidance("list materials in dataBase.");
+  lisMatCmd->SetGuidance("simple = simple nist materials.");
+  lisMatCmd->SetGuidance("compound = compound nist materials.");
+  lisMatCmd->SetGuidance("hep = hep materials.");
+  lisMatCmd->SetGuidance("all = all materials.");
+  lisMatCmd->SetParameterName("list", true);
+  lisMatCmd->SetCandidates("simple compound hep all");
+  lisMatCmd->SetDefaultValue("all");
+  
+  g4Dir = new G4UIdirectory("/material/g4/");
+  g4Dir->SetGuidance("Commands for G4MaterialTable");
+  
+  g4ElmCmd = new G4UIcmdWithAString("/material/g4/printElement",this);
+  g4ElmCmd->SetGuidance("print Element in G4ElementTable.");
+    
+  g4MatCmd = new G4UIcmdWithAString("/material/g4/printMaterial",this);
+  g4MatCmd->SetGuidance("print Material in G4MaterialTable.");
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+
+G4NistMessenger::~G4NistMessenger()
+{
+  delete verCmd;  
+  delete prtElmCmd;
+  delete przElmCmd;
+  delete lisMatCmd;
+  delete nistDir;
+  
+  delete g4ElmCmd;   
+  delete g4MatCmd;
+  delete g4Dir;
+  delete matDir;  
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void G4NistMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
+{
+  if (command == verCmd) 
+   { manager->SetVerbose(verCmd->GetNewIntValue(newValue));}
+    
+  if (command == prtElmCmd)
+   { manager->PrintElement(newValue);}
+    
+  if (command == przElmCmd)
+   { manager->PrintElement(przElmCmd->GetNewIntValue(newValue));}
+   
+  if (command == lisMatCmd) 
+   { manager->ListMaterials(newValue);}
+
+  if (command == g4ElmCmd)
+   { manager->PrintG4Element(newValue);}
+   
+  if (command == g4MatCmd)
+   { manager->PrintG4Material(newValue);}
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
Index: trunk/source/materials/src/G4OpticalSurface.cc
===================================================================
--- trunk/source/materials/src/G4OpticalSurface.cc	(revision 822)
+++ trunk/source/materials/src/G4OpticalSurface.cc	(revision 822)
@@ -0,0 +1,142 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4OpticalSurface.cc,v 1.10 2006/06/29 19:13:08 gunter Exp $
+// GEANT4 tag $Name:  $
+//
+// 
+////////////////////////////////////////////////////////////////////////
+// Optical Surface Class Implementation
+////////////////////////////////////////////////////////////////////////
+//
+// File:        G4OpticalSurface.cc
+// Description: An optical surface class for use in G4OpBoundaryProcess
+// Version:     2.0
+// Created:     1997-06-26
+// Author:      Peter Gumplinger
+// mail:        gum@triumf.ca
+//
+////////////////////////////////////////////////////////////////////////
+
+#include "G4ios.hh"
+#include "globals.hh"
+#include "G4OpticalSurface.hh"
+
+/////////////////////////
+// Class Implementation
+/////////////////////////
+
+        //////////////
+        // Operators
+        //////////////
+
+const G4OpticalSurface& 
+      G4OpticalSurface::operator=(const G4OpticalSurface& right)
+{
+  if (this != &right)
+    {
+      theName                    = right.GetName();
+      theModel                   = right.theModel;
+      theFinish                  = right.theFinish;
+      theType                    = right.GetType();
+      sigma_alpha                = right.sigma_alpha;
+      polish                     = right.polish;
+      theMaterialPropertiesTable = right.theMaterialPropertiesTable;
+     } 
+  return *this;
+}
+
+        /////////////////
+        // Constructors
+        /////////////////
+
+G4OpticalSurface::G4OpticalSurface(const G4String& name,
+				   G4OpticalSurfaceModel model,
+				   G4OpticalSurfaceFinish finish,
+				   G4SurfaceType type,
+				   G4double value)
+                                   : G4SurfaceProperty(name,type),
+				     theModel(model),
+				     theFinish(finish),
+				     theMaterialPropertiesTable(0)
+{
+	if (model == glisur ){
+		polish = value;
+		sigma_alpha = 0.0;
+	}
+	else if ( model == unified ) {
+		sigma_alpha = value;
+		polish = 0.0;
+	}
+	else {
+		G4Exception("G4OpticalSurface::G4OpticalSurface ==> " 
+			    "Constructor called with INVALID model.");
+	}
+}
+
+G4OpticalSurface::G4OpticalSurface(const G4OpticalSurface &right)
+  : G4SurfaceProperty(right.GetName())
+{
+	*this = right;
+}
+
+G4OpticalSurface::~G4OpticalSurface(){}
+
+G4int G4OpticalSurface::operator==(const G4OpticalSurface &right) const
+{
+	return (this == (G4OpticalSurface *) &right);
+}
+
+G4int G4OpticalSurface::operator!=(const G4OpticalSurface &right) const
+{
+	return (this != (G4OpticalSurface *) &right);
+}
+        ////////////
+        // Methods
+        ////////////
+
+void G4OpticalSurface::DumpInfo() const 
+{
+
+	// Dump info for surface
+
+	G4cout << 
+        "  Surface type   = " << G4int(theType)   << G4endl <<
+	"  Surface finish = " << G4int(theFinish) << G4endl <<
+	"  Surface model  = " << G4int(theModel)  << G4endl;
+
+	G4cout << G4endl;
+
+	G4cout << "  Surface parameter " << G4endl;
+	G4cout << "  ----------------- " << G4endl;
+	if (theModel == glisur ){
+		G4cout << polish      << G4endl;
+	}
+	else {
+		G4cout << sigma_alpha << G4endl;
+	}
+	G4cout << G4endl;
+}
Index: trunk/source/materials/src/G4SandiaTable.cc
===================================================================
--- trunk/source/materials/src/G4SandiaTable.cc	(revision 822)
+++ trunk/source/materials/src/G4SandiaTable.cc	(revision 822)
@@ -0,0 +1,846 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4SandiaTable.cc,v 1.34 2007/10/02 10:13:33 vnivanch Exp $
+// GEANT4 tag $Name:  $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+//
+// 10.06.97 created. V. Grichine
+// 18.11.98 simplified public interface; new methods for materials.  mma
+// 31.01.01 redesign of ComputeMatSandiaMatrix().  mma
+// 16.02.01 adapted for STL.  mma
+// 22.02.01 GetsandiaCofForMaterial(energy) return 0 below lowest interval  mma  
+// 03.04.01 fnulcof returned if energy < emin
+// 10.07.01 Migration to STL. M. Verderi.
+// 03.02.04 Update distructor V.Ivanchenko
+// 05.03.04 New methods for old sorting algorithm for PAI model. V.Grichine
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+
+#include "G4SandiaTable.hh"
+#include "G4StaticSandiaData.hh"
+#include "G4Material.hh"
+#include "G4MaterialTable.hh"
+
+G4int    G4SandiaTable::fCumulInterval[101];
+G4double G4SandiaTable::fSandiaCofPerAtom[4];
+G4double const G4SandiaTable::funitc[4] = {cm2*keV/g,     
+					   cm2*keV*keV/g,     
+					   cm2*keV*keV*keV/g,     
+					   cm2*keV*keV*keV*keV/g};
+ 
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4SandiaTable::G4SandiaTable(G4Material* material)
+  : fMaterial(material)
+{
+  fMatSandiaMatrix    = 0; 
+  fMatSandiaMatrixPAI = 0;
+  fPhotoAbsorptionCof = 0;
+
+  //build the CumulInterval array
+  fCumulInterval[0] = 1;
+  for (G4int Z=1; Z<101; Z++) {
+    fCumulInterval[Z] = fCumulInterval[Z-1] + fNbOfIntervals[Z];
+  }
+  //compute macroscopic Sandia coefs for a material   
+  ComputeMatSandiaMatrix();
+  
+  //initialisation of fnulcof
+  fnulcof[0] = fnulcof[1] = fnulcof[2] = fnulcof[3] = 0.;   
+}
+							
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+// Fake default constructor - sets only member data and allocates memory
+//                            for usage restricted to object persistency
+
+G4SandiaTable::G4SandiaTable(__void__&)
+  : fMaterial(0), fMatSandiaMatrix(0), fPhotoAbsorptionCof(0)
+{
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4SandiaTable::~G4SandiaTable()
+{ 
+  if(fMatSandiaMatrix) {
+    fMatSandiaMatrix->clearAndDestroy();
+    delete fMatSandiaMatrix;
+  }
+  if(fMatSandiaMatrixPAI) {
+    fMatSandiaMatrixPAI->clearAndDestroy();
+    delete fMatSandiaMatrixPAI;
+  }
+  if(fPhotoAbsorptionCof)
+  {
+    delete [] fPhotoAbsorptionCof ;
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4double G4SandiaTable::GetZtoA(G4int Z)
+{
+  return fZtoAratio[Z];
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4double*
+G4SandiaTable::GetSandiaCofPerAtom(G4int Z, G4double energy)
+{
+  assert (Z > 0 && Z < 101);
+   
+  G4double Emin  = fSandiaTable[fCumulInterval[Z-1]][0]*keV;
+  G4double Iopot = fIonizationPotentials[Z]*eV;
+  if (Iopot > Emin) Emin = Iopot;
+   
+  G4int interval = fNbOfIntervals[Z] - 1;
+  G4int row = fCumulInterval[Z-1] + interval;
+  while ((interval>0) && (energy<fSandiaTable[row][0]*keV)) {
+    --interval;
+    row = fCumulInterval[Z-1] + interval;
+  }
+  if (energy >= Emin)
+    {        
+      G4double AoverAvo = Z*amu/fZtoAratio[Z];
+         
+      fSandiaCofPerAtom[0]=AoverAvo*funitc[0]*fSandiaTable[row][1];     
+      fSandiaCofPerAtom[1]=AoverAvo*funitc[1]*fSandiaTable[row][2];     
+      fSandiaCofPerAtom[2]=AoverAvo*funitc[2]*fSandiaTable[row][3];     
+      fSandiaCofPerAtom[3]=AoverAvo*funitc[3]*fSandiaTable[row][4];
+    }
+  else 
+    {
+      fSandiaCofPerAtom[0] = fSandiaCofPerAtom[1] = fSandiaCofPerAtom[2] =
+	fSandiaCofPerAtom[3] = 0.;
+    }                
+  return fSandiaCofPerAtom;     
+}
+						 	
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+void G4SandiaTable::ComputeMatSandiaMatrix()
+{  
+  //get list of elements
+  const G4int NbElm = fMaterial->GetNumberOfElements();
+  const G4ElementVector* ElementVector = fMaterial->GetElementVector();
+  
+  G4int* Z = new G4int[NbElm];               //Atomic number
+
+  //   
+  //determine the maximum number of energy-intervals for this material
+  //
+  G4int MaxIntervals = 0;
+  G4int elm;    
+  for (elm=0; elm<NbElm; elm++) {
+    Z[elm] = (G4int)(*ElementVector)[elm]->GetZ();
+    MaxIntervals += fNbOfIntervals[Z[elm]];
+  }  
+     
+  //
+  //copy the Energy bins in a tmp1 array
+  //(take care of the Ionization Potential of each element)
+  //
+  G4double* tmp1 = new G4double[MaxIntervals]; 
+  G4double IonizationPot;
+  G4int interval1=0;
+  for (elm=0; elm<NbElm; elm++) {
+
+    IonizationPot = GetIonizationPot(Z[elm]);
+    for (G4int row=fCumulInterval[Z[elm]-1];row<fCumulInterval[Z[elm]];row++) {
+      tmp1[interval1++] = std::max(fSandiaTable[row][0]*keV,IonizationPot);
+    }
+  }   
+  //       
+  //sort the energies in strickly increasing values in a tmp2 array
+  //(eliminate redondances)
+  //
+  G4double* tmp2 = new G4double[MaxIntervals];
+  G4double Emin;
+  G4int interval2 = 0;
+  
+  do {
+    Emin = DBL_MAX;
+    for (G4int i1=0; i1<MaxIntervals; i1++) {
+      if (tmp1[i1] < Emin) Emin = tmp1[i1];          //find the minimum
+    }
+    if (Emin < DBL_MAX) tmp2[interval2++] = Emin;    //copy Emin in tmp2
+    for (G4int j1=0; j1<MaxIntervals; j1++) {
+      if (tmp1[j1] <= Emin) tmp1[j1] = DBL_MAX;      //eliminate from tmp1	    
+    }
+  } while (Emin < DBL_MAX);
+        	         	   
+  //	
+  //create the sandia matrix for this material
+  //  
+  fMatSandiaMatrix = new G4OrderedTable();
+  G4int interval;
+  for (interval=0; interval<interval2; interval++) {
+    fMatSandiaMatrix->push_back(new G4DataVector(5,0.));
+  }
+  //
+  //ready to compute the Sandia coefs for the material
+  //
+  const G4double* NbOfAtomsPerVolume = fMaterial->GetVecNbOfAtomsPerVolume();
+  
+  const G4double prec = 1.e-03*eV;
+  G4double coef, oldsum(0.), newsum(0.);
+  fMatNbOfIntervals = 0;
+         
+  for (interval=0; interval<interval2; interval++) {
+
+    Emin = (*(*fMatSandiaMatrix)[fMatNbOfIntervals])[0] = tmp2[interval];
+    for (G4int k=1; k<5; k++) {
+      (*(*fMatSandiaMatrix)[fMatNbOfIntervals])[k]=0.;      
+    }
+    newsum = 0.;
+      
+    for (elm=0; elm<NbElm; elm++) {
+        
+      GetSandiaCofPerAtom(Z[elm], Emin+prec);
+      for (G4int j=1; j<5; j++) {
+
+	coef = NbOfAtomsPerVolume[elm]*fSandiaCofPerAtom[j-1];
+	(*(*fMatSandiaMatrix)[fMatNbOfIntervals])[j] += coef;
+	newsum += std::abs(coef);
+      }						       
+    }	      
+			      			      	 
+    //check for null or redondant intervals	 
+    if (newsum != oldsum) { oldsum = newsum; fMatNbOfIntervals++;}
+  }
+  delete [] Z;
+  delete [] tmp1;
+  delete [] tmp2;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+void G4SandiaTable::ComputeMatSandiaMatrixPAI()
+{  
+  G4int MaxIntervals = 0;
+  G4int elm, c, i, j, jj, k, k1, k2, c1, n1;    
+
+  const G4int noElm = fMaterial->GetNumberOfElements();
+  const G4ElementVector* ElementVector = fMaterial->GetElementVector();  
+  G4int* Z = new G4int[noElm];               //Atomic number
+
+  for (elm = 0; elm<noElm; elm++)
+    { 
+      Z[elm] = (G4int)(*ElementVector)[elm]->GetZ();
+      MaxIntervals += fNbOfIntervals[Z[elm]];
+    }  
+  fMaxInterval = MaxIntervals + 2;
+
+  //  G4cout<<"fMaxInterval = "<<fMaxInterval<<G4endl ;
+ 
+  G4double* fPhotoAbsorptionCof0 = new G4double[fMaxInterval];
+  G4double* fPhotoAbsorptionCof1 = new G4double[fMaxInterval];
+  G4double* fPhotoAbsorptionCof2 = new G4double[fMaxInterval];
+  G4double* fPhotoAbsorptionCof3 = new G4double[fMaxInterval];
+  G4double* fPhotoAbsorptionCof4 = new G4double[fMaxInterval];
+
+  for(c = 0 ; c<fMaxInterval ; c++)   // just in case
+  {
+    fPhotoAbsorptionCof0[c] = 0. ;
+    fPhotoAbsorptionCof1[c] = 0. ;
+    fPhotoAbsorptionCof2[c] = 0. ;
+    fPhotoAbsorptionCof3[c] = 0. ;
+    fPhotoAbsorptionCof4[c] = 0. ;
+  }
+  c = 1 ;
+
+  for(i = 0 ; i < noElm ; i++)
+  {
+    G4double I1 = fIonizationPotentials[Z[i]]*keV ;  // First ionization
+    n1 = 1 ;                                     // potential in keV
+ 
+    for(j = 1 ; j < Z[i] ; j++)
+    {
+      n1 += fNbOfIntervals[j] ;
+    }
+    G4int n2 = n1 + fNbOfIntervals[Z[i]] ;
+    
+    for(k1 = n1 ; k1 < n2 ; k1++)
+    {
+      if(I1  > fSandiaTable[k1][0])
+      {
+	 continue ;    // no ionization for energies smaller than I1 (first
+      }		       // ionisation potential)		     
+      break ;
+    }
+    G4int flag = 0 ;
+    
+    for(c1 = 1 ; c1 < c ; c1++)
+    {
+      if(fPhotoAbsorptionCof0[c1] == I1) // this value already has existed
+      {
+	flag = 1 ;                      
+	break ;                         
+      }
+    }
+    if(flag == 0)
+    {
+      fPhotoAbsorptionCof0[c] = I1 ;
+      c++ ;
+    }
+    for(k2 = k1 ; k2 < n2 ; k2++)
+    {
+      flag = 0 ;
+
+      for(c1 = 1 ; c1 < c ; c1++)
+      {
+        if(fPhotoAbsorptionCof0[c1] == fSandiaTable[k2][0])
+        {
+	  flag = 1 ;
+ 	  break ;
+        }
+      }
+      if(flag == 0)
+      {
+        fPhotoAbsorptionCof0[c] = fSandiaTable[k2][0] ;
+	c++ ;
+      }
+    }       
+  }   // end for(i)
+
+  // sort out
+  for(i = 1; i < c ; i++ ) 
+    {
+      for(j = i + 1 ; j < c;  j++ )
+	{
+	  if(fPhotoAbsorptionCof0[i] > fPhotoAbsorptionCof0[j]) 
+	    {
+	      G4double tmp = fPhotoAbsorptionCof0[i];
+	      fPhotoAbsorptionCof0[i] = fPhotoAbsorptionCof0[j];
+	      fPhotoAbsorptionCof0[j] = tmp ;
+	    }
+	}
+    }
+  
+  fMaxInterval = c ;
+ 
+  const G4double* fractionW = fMaterial->GetFractionVector();
+   
+  for(i = 0 ; i < noElm; i++)
+    {
+      n1 = 1 ;
+      G4double I1 = fIonizationPotentials[Z[i]]*keV ;
+
+      for(j = 1 ; j < Z[i] ; j++)
+	{
+	  n1 += fNbOfIntervals[j] ;
+	}
+      G4int n2 = n1 + fNbOfIntervals[Z[i]] - 1 ;
+
+      for(k = n1 ; k < n2 ; k++)
+	{
+	  G4double B1 = fSandiaTable[k][0];
+	  G4double B2 = fSandiaTable[k+1][0];
+	  for(G4int c = 1 ; c < fMaxInterval-1 ; c++)
+	    {
+	      G4double E1 = fPhotoAbsorptionCof0[c];
+	      G4double E2 = fPhotoAbsorptionCof0[c+1];
+	      if(B1 > E1 || B2 < E2 || E1 < I1)
+		{
+		  continue ;
+		}
+	      fPhotoAbsorptionCof1[c] += fSandiaTable[k][1]*fractionW[i] ;
+	      fPhotoAbsorptionCof2[c] += fSandiaTable[k][2]*fractionW[i] ;
+	      fPhotoAbsorptionCof3[c] += fSandiaTable[k][3]*fractionW[i] ;
+	      fPhotoAbsorptionCof4[c] += fSandiaTable[k][4]*fractionW[i] ;
+	    }  
+	}   
+      // Last interval
+      fPhotoAbsorptionCof1[fMaxInterval-1] += fSandiaTable[k][1]*fractionW[i] ;
+      fPhotoAbsorptionCof2[fMaxInterval-1] += fSandiaTable[k][2]*fractionW[i] ;
+      fPhotoAbsorptionCof3[fMaxInterval-1] += fSandiaTable[k][3]*fractionW[i] ;
+      fPhotoAbsorptionCof4[fMaxInterval-1] += fSandiaTable[k][4]*fractionW[i] ;
+    }     // for(i)
+  
+  c = 0 ;     // Deleting of first intervals where all coefficients = 0
+
+  do                        
+    {
+      c++ ;
+
+      if( fPhotoAbsorptionCof1[c] != 0.0 ||
+	  fPhotoAbsorptionCof2[c] != 0.0 ||
+	  fPhotoAbsorptionCof3[c] != 0.0 || 
+	  fPhotoAbsorptionCof4[c] != 0.0     )  continue ;
+       
+      for(jj = 2 ; jj < fMaxInterval ; jj++)
+	{
+	  fPhotoAbsorptionCof0[jj-1] = fPhotoAbsorptionCof0[jj];
+	  fPhotoAbsorptionCof1[jj-1] = fPhotoAbsorptionCof1[jj];
+	  fPhotoAbsorptionCof2[jj-1] = fPhotoAbsorptionCof2[jj];
+	  fPhotoAbsorptionCof3[jj-1] = fPhotoAbsorptionCof3[jj];
+	  fPhotoAbsorptionCof4[jj-1] = fPhotoAbsorptionCof4[jj];
+	}
+      fMaxInterval-- ;
+      c-- ;
+    }
+  while(c < fMaxInterval - 1) ;
+  	
+  // create the sandia matrix for this material
+    
+  fMatSandiaMatrixPAI = new G4OrderedTable();
+  G4double density = fMaterial->GetDensity();
+ 
+  for (i = 0; i < fMaxInterval; i++)
+    {
+      fMatSandiaMatrixPAI->push_back(new G4DataVector(5,0.));
+    }	         	
+  for (i = 0; i < fMaxInterval; i++)
+    {
+      (*(*fMatSandiaMatrixPAI)[i])[0] = fPhotoAbsorptionCof0[i+1];
+      (*(*fMatSandiaMatrixPAI)[i])[1] = fPhotoAbsorptionCof1[i+1]*density;
+      (*(*fMatSandiaMatrixPAI)[i])[2] = fPhotoAbsorptionCof2[i+1]*density;
+      (*(*fMatSandiaMatrixPAI)[i])[3] = fPhotoAbsorptionCof3[i+1]*density;
+      (*(*fMatSandiaMatrixPAI)[i])[4] = fPhotoAbsorptionCof4[i+1]*density;
+
+    }	         	    
+  delete [] Z;
+  delete [] fPhotoAbsorptionCof0;
+  delete [] fPhotoAbsorptionCof1;
+  delete [] fPhotoAbsorptionCof2;
+  delete [] fPhotoAbsorptionCof3;
+  delete [] fPhotoAbsorptionCof4;
+  return;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////
+//
+// Methods for PAI model
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
+
+G4SandiaTable::G4SandiaTable(G4int matIndex)
+{ 
+  fMatSandiaMatrix = 0 ; 
+  fMatSandiaMatrixPAI = 0;
+  fPhotoAbsorptionCof = 0 ;
+
+  const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable();
+  size_t numberOfMat = G4Material::GetNumberOfMaterials();
+
+  if ( matIndex >= 0 && matIndex < G4int(numberOfMat) )
+  {
+    fMaterial = (*theMaterialTable)[matIndex];
+  }
+  else
+  {
+    G4Exception("G4SandiaTable::G4SandiaTable(G4int matIndex): wrong matIndex ");
+  }
+  ComputeMatTable();
+}
+
+///////////////////////////////////////////////////////////////////////
+//
+// Bubble sorting of left energy interval in SandiaTable in ascening order
+//
+
+void
+G4SandiaTable::SandiaSort(G4double** da ,
+ 			  G4int sz )
+{
+   for(G4int i = 1 ;i < sz ; i++ ) 
+   {
+     for(G4int j = i + 1 ;j < sz ; j++ )
+     {
+       if(da[i][0] > da[j][0]) 
+       {
+	  SandiaSwap(da,i,j) ;
+       }
+     }
+   }
+}
+
+////////////////////////////////////////////////////////////////////////////
+//
+//  SandiaIntervals 
+//
+
+G4int
+G4SandiaTable::SandiaIntervals(G4int Z[],
+			       G4int el )
+{
+  G4int c,i ;
+
+  fMaxInterval = 0 ;
+
+  for(i=0;i<el;i++)
+  {
+    fMaxInterval += fNbOfIntervals[Z[i]] ; 
+  }
+  fMaxInterval += 2 ;
+
+//  G4cout<<"fMaxInterval = "<<fMaxInterval<<G4endl ;
+
+  fPhotoAbsorptionCof = new G4double* [fMaxInterval] ;
+
+  for(i = 0 ; i < fMaxInterval ; i++)  
+  {
+     fPhotoAbsorptionCof[i] = new G4double[5] ;
+  }
+
+
+  //  for(c = 0 ; c < fIntervalLimit ; c++)   // just in case
+
+  for(c = 0 ; c < fMaxInterval ; c++)   // just in case
+  {
+     fPhotoAbsorptionCof[c][0] = 0. ;
+  }
+  c = 1 ;
+  for(i = 0 ; i < el ; i++)
+  {
+    G4double I1 = fIonizationPotentials[Z[i]]*keV ;  // First ionization
+    G4int n1 = 1 ;                                     // potential in keV
+    G4int j, c1, k1, k2 ;
+    for(j = 1 ; j < Z[i] ; j++)
+    {
+      n1 += fNbOfIntervals[j] ;
+    }
+    G4int n2 = n1 + fNbOfIntervals[Z[i]] ;
+    
+    for(k1 = n1 ; k1 < n2 ; k1++)
+    {
+      if(I1  > fSandiaTable[k1][0])
+      {
+	 continue ;    // no ionization for energies smaller than I1 (first
+      }		       // ionisation potential)		     
+      break ;
+    }
+    G4int flag = 0 ;
+    
+    for(c1 = 1 ; c1 < c ; c1++)
+    {
+      if(fPhotoAbsorptionCof[c1][0] == I1) // this value already has existed
+      {
+	flag = 1 ;                      
+	break ;                         
+      }
+    }
+    if(flag == 0)
+    {
+      fPhotoAbsorptionCof[c][0] = I1 ;
+      c++ ;
+    }
+    for(k2 = k1 ; k2 < n2 ; k2++)
+    {
+      flag = 0 ;
+      for(c1 = 1 ; c1 < c ; c1++)
+      {
+        if(fPhotoAbsorptionCof[c1][0] == fSandiaTable[k2][0])
+        {
+	  flag = 1 ;
+ 	  break ;
+        }
+      }
+      if(flag == 0)
+      {
+        fPhotoAbsorptionCof[c][0] = fSandiaTable[k2][0] ;
+	c++ ;
+      }
+    }       
+  }   // end for(i)
+  
+  SandiaSort(fPhotoAbsorptionCof,c) ;
+  fMaxInterval = c ;
+  return c ;
+}   
+
+///////////////////////////////////////////////////////////////////////
+//
+//  SandiaMixing
+//
+
+G4int
+G4SandiaTable::SandiaMixing(         G4int Z[],
+			       const G4double fractionW[],
+			             G4int el,
+			             G4int mi     )
+{
+   G4int i;
+   
+   for(i = 0 ; i < mi ; i++)
+   {
+      for(G4int j = 1 ; j < 5 ; j++) fPhotoAbsorptionCof[i][j] = 0. ;
+   }
+   for(i = 0 ; i < el ; i++)
+   {
+      G4int n1 = 1 ;
+      G4int j, k ;
+      G4double I1 = fIonizationPotentials[Z[i]]*keV ;
+      for(j = 1 ; j < Z[i] ; j++)
+      {
+         n1 += fNbOfIntervals[j] ;
+      }
+      G4int n2 = n1 + fNbOfIntervals[Z[i]] - 1 ;
+
+      for(k = n1 ; k < n2 ; k++)
+      {
+         G4double B1 = fSandiaTable[k][0] ;
+         G4double B2 = fSandiaTable[k+1][0] ;
+         for(G4int c = 1 ; c < mi-1 ; c++)
+         {
+            G4double E1 = fPhotoAbsorptionCof[c][0] ;
+            G4double E2 = fPhotoAbsorptionCof[c+1][0] ;
+            if(B1 > E1 || B2 < E2 || E1 < I1)
+	    {
+	       continue ;
+	    }
+	    for(j = 1 ; j < 5 ; j++)
+  	    {
+               fPhotoAbsorptionCof[c][j] += fSandiaTable[k][j]*fractionW[i] ;
+ 	    }
+	  }  
+       }   
+       for(j = 1 ; j < 5 ; j++)   // Last interval
+       {
+          fPhotoAbsorptionCof[mi-1][j] += fSandiaTable[k][j]*fractionW[i] ;
+       }
+    }     // for(i)
+    G4int c = 0 ;     // Deleting of first intervals where all coefficients = 0
+    do                        
+    {
+       c++ ;
+       if( fPhotoAbsorptionCof[c][1] != 0.0 ||
+	   fPhotoAbsorptionCof[c][2] != 0.0 ||
+	   fPhotoAbsorptionCof[c][3] != 0.0 || 
+	   fPhotoAbsorptionCof[c][4] != 0.0     )
+       {
+	  continue ;
+       }
+       for(G4int jj = 2 ; jj < mi ; jj++)
+       {
+	  for(G4int kk = 0 ; kk < 5 ; kk++)
+	  {
+	     fPhotoAbsorptionCof[jj-1][kk]= fPhotoAbsorptionCof[jj][kk] ;
+	  }
+       }
+       mi-- ;
+       c-- ;
+    }
+    while(c < mi - 1) ;
+    
+    return mi ;
+}  
+
+////////////////////////////////////////////////////////////////////////////
+//
+//  Sandia interval and mixing calculations for materialCutsCouple constructor 
+//
+
+void G4SandiaTable::ComputeMatTable()
+{
+  G4int MaxIntervals = 0;
+  G4int elm, c, i, j, jj, k, kk, k1, k2, c1, n1;    
+
+  const G4int noElm = fMaterial->GetNumberOfElements();
+  const G4ElementVector* ElementVector = fMaterial->GetElementVector();  
+  G4int* Z = new G4int[noElm];               //Atomic number
+
+  for (elm = 0; elm<noElm; elm++)
+  { 
+    Z[elm] = (G4int)(*ElementVector)[elm]->GetZ();
+    MaxIntervals += fNbOfIntervals[Z[elm]];
+  }  
+  fMaxInterval = 0 ;
+
+  for(i = 0; i < noElm; i++)  fMaxInterval += fNbOfIntervals[Z[i]] ; 
+  
+  fMaxInterval += 2 ;
+
+//  G4cout<<"fMaxInterval = "<<fMaxInterval<<G4endl ;
+
+  fPhotoAbsorptionCof = new G4double* [fMaxInterval] ;
+
+  for(i = 0 ; i < fMaxInterval ; i++)  
+  {
+     fPhotoAbsorptionCof[i] = new G4double[5] ;
+  }
+
+  //  for(c = 0 ; c < fIntervalLimit ; c++)   // just in case
+
+  for(c = 0 ; c < fMaxInterval ; c++)   // just in case
+  {
+     fPhotoAbsorptionCof[c][0] = 0. ;
+  }
+  c = 1 ;
+
+  for(i = 0 ; i < noElm ; i++)
+  {
+    G4double I1 = fIonizationPotentials[Z[i]]*keV ;  // First ionization
+    n1 = 1 ;                                     // potential in keV
+ 
+    for(j = 1 ; j < Z[i] ; j++)
+    {
+      n1 += fNbOfIntervals[j] ;
+    }
+    G4int n2 = n1 + fNbOfIntervals[Z[i]] ;
+    
+    for(k1 = n1 ; k1 < n2 ; k1++)
+    {
+      if(I1  > fSandiaTable[k1][0])
+      {
+	 continue ;    // no ionization for energies smaller than I1 (first
+      }		       // ionisation potential)		     
+      break ;
+    }
+    G4int flag = 0 ;
+    
+    for(c1 = 1 ; c1 < c ; c1++)
+    {
+      if(fPhotoAbsorptionCof[c1][0] == I1) // this value already has existed
+      {
+	flag = 1 ;                      
+	break ;                         
+      }
+    }
+    if(flag == 0)
+    {
+      fPhotoAbsorptionCof[c][0] = I1 ;
+      c++ ;
+    }
+    for(k2 = k1 ; k2 < n2 ; k2++)
+    {
+      flag = 0 ;
+
+      for(c1 = 1 ; c1 < c ; c1++)
+      {
+        if(fPhotoAbsorptionCof[c1][0] == fSandiaTable[k2][0])
+        {
+	  flag = 1 ;
+ 	  break ;
+        }
+      }
+      if(flag == 0)
+      {
+        fPhotoAbsorptionCof[c][0] = fSandiaTable[k2][0] ;
+	c++ ;
+      }
+    }       
+  }   // end for(i)
+  
+  SandiaSort(fPhotoAbsorptionCof,c) ;
+  fMaxInterval = c ;
+ 
+  const G4double* fractionW = fMaterial->GetFractionVector();
+   
+  for(i = 0 ; i < fMaxInterval ; i++)
+  {
+      for(j = 1 ; j < 5 ; j++) fPhotoAbsorptionCof[i][j] = 0.;
+  }
+  for(i = 0 ; i < noElm; i++)
+  {
+      n1 = 1 ;
+      G4double I1 = fIonizationPotentials[Z[i]]*keV ;
+
+      for(j = 1 ; j < Z[i] ; j++)
+      {
+         n1 += fNbOfIntervals[j] ;
+      }
+      G4int n2 = n1 + fNbOfIntervals[Z[i]] - 1 ;
+
+      for(k = n1 ; k < n2 ; k++)
+      {
+         G4double B1 = fSandiaTable[k][0] ;
+         G4double B2 = fSandiaTable[k+1][0] ;
+         for(G4int c = 1 ; c < fMaxInterval-1 ; c++)
+         {
+            G4double E1 = fPhotoAbsorptionCof[c][0] ;
+            G4double E2 = fPhotoAbsorptionCof[c+1][0] ;
+            if(B1 > E1 || B2 < E2 || E1 < I1)
+	    {
+	       continue ;
+	    }
+	    for(j = 1 ; j < 5 ; j++)
+  	    {
+               fPhotoAbsorptionCof[c][j] += fSandiaTable[k][j]*fractionW[i] ;
+ 	    }
+	  }  
+       }   
+       for(j = 1 ; j < 5 ; j++)   // Last interval
+       {
+          fPhotoAbsorptionCof[fMaxInterval-1][j] += fSandiaTable[k][j]*fractionW[i] ;
+       }
+  }     // for(i)
+
+  c = 0 ;     // Deleting of first intervals where all coefficients = 0
+
+  do                        
+  {
+    c++ ;
+
+    if( fPhotoAbsorptionCof[c][1] != 0.0 ||
+	fPhotoAbsorptionCof[c][2] != 0.0 ||
+	fPhotoAbsorptionCof[c][3] != 0.0 || 
+	fPhotoAbsorptionCof[c][4] != 0.0     )  continue ;
+       
+    for(jj = 2 ; jj < fMaxInterval ; jj++)
+    {
+      for(kk = 0 ; kk < 5 ; kk++)
+      {
+	     fPhotoAbsorptionCof[jj-1][kk]= fPhotoAbsorptionCof[jj][kk] ;
+      }
+    }
+    fMaxInterval-- ;
+    c-- ;
+  }
+  while(c < fMaxInterval - 1) ;
+  	
+  // create the sandia matrix for this material
+    
+  fMatSandiaMatrix = new G4OrderedTable();
+ 
+  for (i = 0; i < fMaxInterval; i++)
+  {
+     fMatSandiaMatrix->push_back(new G4DataVector(5,0.));
+  }	         	
+  for (i = 0; i < fMaxInterval; i++)
+  {
+    for(j = 0 ; j < 5 ; j++)
+    {
+      (*(*fMatSandiaMatrix)[i])[j] = fPhotoAbsorptionCof[i+1][j];
+    }     
+  }	         	    
+  delete [] Z;
+  return ;
+}  
+
+//     G4SandiaTable class -- end of implementation file
+//
+////////////////////////////////////////////////////////////////////////////
+
+
Index: trunk/source/materials/src/G4SurfaceProperty.cc
===================================================================
--- trunk/source/materials/src/G4SurfaceProperty.cc	(revision 822)
+++ trunk/source/materials/src/G4SurfaceProperty.cc	(revision 822)
@@ -0,0 +1,96 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+//
+// $Id: G4SurfaceProperty.cc,v 1.1 2007/04/25 16:19:26 gum Exp $
+// GEANT4 tag $Name:  $
+//
+// 
+////////////////////////////////////////////////////////////////////////
+// G4SurfaceProperty Implementation
+////////////////////////////////////////////////////////////////////////
+//
+// Class Description:
+//
+// A base class describing a surface property.
+// Derived classes are G4Opticalsurface, G4Firovsurface, etc.      
+//
+// File:        G4SurfaceProperty.cc
+// Version:     1.0
+// Created:     16-11-2006
+// Author:      Peter Gumplinger
+//
+////////////////////////////////////////////////////////////////////////
+
+#include "globals.hh"
+
+#include "G4SurfaceProperty.hh"
+
+G4SurfacePropertyTable G4SurfaceProperty::theSurfacePropertyTable;
+
+//
+// Methods
+//
+
+const G4SurfacePropertyTable* G4SurfaceProperty::GetSurfacePropertyTable()
+{
+  return &theSurfacePropertyTable;
+}
+
+size_t G4SurfaceProperty::GetNumberOfSurfaceProperties()
+{
+  return theSurfacePropertyTable.size();
+}
+
+// Dump info for known surface properties
+//
+void G4SurfaceProperty::DumpInfo()
+{
+  G4cout << "***** Surface Property Table : Nb of Surface Properties = "
+         << GetNumberOfSurfaceProperties() << " *****" << G4endl;
+
+  for (size_t i=0; i<theSurfacePropertyTable.size(); i++)
+  {
+    G4SurfaceProperty* pSurfaceProperty = theSurfacePropertyTable[i];
+    G4cout << pSurfaceProperty->GetName() << " : " << G4endl
+           << "  Surface Property type   = " 
+           << pSurfaceProperty->GetType()
+           << G4endl;
+  }
+  G4cout << G4endl;
+}
+
+void G4SurfaceProperty::CleanSurfacePropertyTable()
+{
+  DumpInfo();
+  G4SurfacePropertyTable::iterator pos;
+  for(pos=theSurfacePropertyTable.begin();
+      pos!=theSurfacePropertyTable.end(); pos++)
+  {
+    if (*pos) delete *pos;
+  }
+  theSurfacePropertyTable.clear();
+  DumpInfo();
+}
