Import Geant4 7.1.0 source tree
This commit is contained in:
@@ -21,8 +21,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4AtomicShells.hh,v 1.4 2001/07/11 10:01:24 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-01 $
|
||||
// $Id: G4AtomicShells.hh,v 1.5 2005/02/11 18:57:21 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
|
||||
// class description
|
||||
//
|
||||
@@ -42,6 +42,7 @@
|
||||
|
||||
// 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....
|
||||
|
||||
@@ -59,11 +60,13 @@ class G4AtomicShells
|
||||
public : //with description
|
||||
|
||||
static G4int GetNumberOfShells(G4int Z);
|
||||
static G4int GetNumberOfElectrons(G4int Z, G4int SubshellNb);
|
||||
static G4double GetBindingEnergy (G4int Z, G4int SubshellNb);
|
||||
|
||||
private :
|
||||
|
||||
static const G4int fNumberOfShells[101];
|
||||
static const G4int fNumberOfElectrons[1540];
|
||||
static const G4double fBindingEnergies[1540];
|
||||
|
||||
};
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4Element.hh,v 1.17 2003/06/16 16:56:13 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-01 $
|
||||
// $Id: G4Element.hh,v 1.18 2005/04/01 12:41:11 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
//
|
||||
|
||||
// class description
|
||||
@@ -65,6 +65,7 @@
|
||||
// 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
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -164,7 +165,11 @@ public: // with description
|
||||
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;};
|
||||
@@ -220,7 +225,8 @@ private:
|
||||
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;
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4ElementTable.hh,v 1.5 2003/06/16 16:56:14 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-01 $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
//
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4ElementVector.hh,v 1.5 2003/06/16 16:56:15 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-01 $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
//
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4IonisParamElm.hh,v 1.7 2004/12/07 08:50:01 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-03 $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
//
|
||||
|
||||
// class description
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4IonisParamMat.hh,v 1.7 2002/10/29 16:17:04 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-01 $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
//
|
||||
|
||||
// class description
|
||||
|
||||
@@ -21,17 +21,17 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4Isotope.hh,v 1.15 2003/06/16 16:56:16 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-01 $
|
||||
// $Id: G4Isotope.hh,v 1.16 2005/04/01 12:41:11 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
//
|
||||
//....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).
|
||||
// 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).
|
||||
@@ -41,6 +41,7 @@
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
// 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
|
||||
@@ -70,7 +71,7 @@ class G4Isotope
|
||||
G4Isotope(const G4String& name, //its name
|
||||
G4int z, //atomic number
|
||||
G4int n, //number of nucleons
|
||||
G4double a); //mass of mole
|
||||
G4double a = 0.); //mass of mole
|
||||
|
||||
virtual ~G4Isotope();
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4IsotopeVector.hh,v 1.5 2003/06/16 16:56:17 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-01 $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
//
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4MPVEntry.hh,v 1.5 2001/07/11 10:01:26 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-01 $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
//
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4Material.hh,v 1.22 2003/06/16 16:56:18 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-01 $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
//
|
||||
|
||||
// class description
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4MaterialPropertiesTable.hh,v 1.15 2004/05/17 13:42:06 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-01 $
|
||||
// $Id: G4MaterialPropertiesTable.hh,v 1.17 2005/06/27 15:28:54 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
//
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
@@ -36,7 +36,8 @@
|
||||
// Version: 1.0
|
||||
// Created: 1996-02-08
|
||||
// Author: Juliet Armstrong
|
||||
// Updated: 2002-11-05 add named material constants by P. Gumplinger
|
||||
// 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
|
||||
@@ -53,7 +54,7 @@
|
||||
// Includes
|
||||
/////////////
|
||||
|
||||
#include <math.h>
|
||||
#include <cmath>
|
||||
#include <map>
|
||||
#include "globals.hh"
|
||||
#include "G4MaterialPropertyVector.hh"
|
||||
@@ -144,6 +145,8 @@ private:
|
||||
typedef std::map< G4String, G4double,
|
||||
std::less<G4String> >::iterator MPTCiterator;
|
||||
|
||||
G4MaterialPropertyVector* SetGROUPVEL();
|
||||
|
||||
};
|
||||
|
||||
#endif /* G4MaterialPropertiesTable_h */
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4MaterialPropertyVector.hh,v 1.9 2003/06/16 16:56:20 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-01 $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
//
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4MaterialTable.hh,v 1.5 2003/06/16 16:56:21 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-01 $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
//
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
|
||||
@@ -0,0 +1,140 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4NistElementBuilder.hh,v 1.5 2005/05/12 17:29:08 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
|
||||
#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
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// 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 <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);
|
||||
|
||||
G4int GetMaxNumElements() {return maxNumElements-1;};
|
||||
|
||||
void SetVerbose (G4int vb) {verbose = vb;};
|
||||
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);
|
||||
|
||||
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];
|
||||
|
||||
G4double massIsotopes [maxAbundance];
|
||||
G4double sigMass [maxAbundance];
|
||||
G4double relAbundance [maxAbundance];
|
||||
|
||||
G4int index;
|
||||
G4int verbose;
|
||||
G4bool first;
|
||||
|
||||
};
|
||||
|
||||
//....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)
|
||||
{
|
||||
G4int i = N - nFirstIsotope[Z];
|
||||
if(i < 0) i = 0;
|
||||
else if(i >= nIsotopes[Z]) i = nIsotopes[Z] -1;
|
||||
i += idxIsotopes[Z];
|
||||
return massIsotopes[i];
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,216 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4NistManager.hh,v 1.3 2005/05/12 17:29:08 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class header file
|
||||
//
|
||||
// File name: G4NistManager
|
||||
//
|
||||
// Author: Vladimir Ivanchenko
|
||||
//
|
||||
// Creation date: 23.12.2004
|
||||
//
|
||||
// Modifications:
|
||||
//
|
||||
//
|
||||
// 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"
|
||||
|
||||
class G4NistMaterialBuilder;
|
||||
class G4NistMessenger;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class G4NistManager
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
static G4NistManager* Instance();
|
||||
~G4NistManager();
|
||||
|
||||
// Elements
|
||||
//
|
||||
void RegisterElement (G4Element*);
|
||||
void DeRegisterElement(G4Element*);
|
||||
|
||||
G4Element* GetElement(size_t index);
|
||||
|
||||
// Find or build G4Element by atomic number
|
||||
G4Element* FindOrBuildElement(G4int Z, G4bool isotopes=true);
|
||||
|
||||
// Find or build G4Element by symbol
|
||||
G4Element* FindOrBuildElement(const G4String& symb, G4bool isotopes=true);
|
||||
|
||||
size_t GetNumberOfElements() {return nElements;};
|
||||
G4int GetZ (const G4String& symb);
|
||||
G4double GetIsotopeMass (G4int Z, G4int N);
|
||||
|
||||
void PrintElement (const G4String&);
|
||||
void PrintElement (G4int Z);
|
||||
|
||||
void PrintG4Element (const G4String&);
|
||||
|
||||
|
||||
// Materials
|
||||
//
|
||||
void RegisterMaterial (G4Material*);
|
||||
void DeRegisterMaterial(G4Material*);
|
||||
|
||||
G4Material* GetMaterial(size_t index);
|
||||
|
||||
// Find or build a G4Material by name, from the dataBase
|
||||
//
|
||||
G4Material* FindOrBuildMaterial(const G4String& name, G4bool isotopes=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);
|
||||
|
||||
// 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);
|
||||
|
||||
size_t GetNumberOfMaterials() {return nMaterials;};
|
||||
|
||||
void SetVerbose(G4int);
|
||||
G4int GetVerbose();
|
||||
|
||||
void ListMaterials(const G4String&);
|
||||
void PrintG4Material(const G4String&);
|
||||
|
||||
private:
|
||||
|
||||
G4NistManager();
|
||||
static G4NistManager* instance;
|
||||
|
||||
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
|
||||
G4Element* G4NistManager::GetElement(size_t index)
|
||||
{
|
||||
G4Element* elm = 0;
|
||||
if(index < nElements) elm = elements[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
|
||||
G4int G4NistManager::GetZ(const G4String& symb)
|
||||
{
|
||||
return elmBuilder->GetZ(symb);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
inline
|
||||
G4double G4NistManager::GetIsotopeMass(G4int Z, G4int N)
|
||||
{
|
||||
return elmBuilder->GetIsotopeMass(Z, N);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
inline
|
||||
G4Material* G4NistManager::GetMaterial(size_t index)
|
||||
{
|
||||
G4Material* mat = 0;
|
||||
if(index < nMaterials) mat = materials[index];
|
||||
return mat;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
inline
|
||||
G4int G4NistManager::GetVerbose()
|
||||
{
|
||||
return verbose;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,142 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4NistMaterialBuilder.hh,v 1.3 2005/05/12 17:29:08 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
|
||||
#ifndef G4NistMaterialBuilder_h
|
||||
#define G4NistMaterialBuilder_h 1
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4NistMaterialBuilder
|
||||
//
|
||||
// Description: Utility class to hold and manipulate G4Materials
|
||||
//
|
||||
// Author: V.Ivanchenko 21-11-2004
|
||||
//
|
||||
// Modifications:
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// 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 G4NistManager;
|
||||
class G4NistElementBuilder;
|
||||
|
||||
class G4NistMaterialBuilder
|
||||
{
|
||||
public:
|
||||
|
||||
G4NistMaterialBuilder(G4NistManager* mm=0, G4NistElementBuilder* eb=0,
|
||||
G4int verb=0);
|
||||
|
||||
~G4NistMaterialBuilder();
|
||||
|
||||
// Find or build a G4Material by name, from dataBase
|
||||
//
|
||||
G4Material* FindOrBuildMaterial (const G4String& name, G4bool isotopes=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);
|
||||
|
||||
// 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);
|
||||
|
||||
void SetVerbose(G4int val);
|
||||
void ListMaterials(const G4String&);
|
||||
void ListNistSimpleMaterials();
|
||||
void ListNistCompoundMaterials();
|
||||
void ListHepMaterials();
|
||||
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
void DumpElm(G4int);
|
||||
void DumpMix(G4int);
|
||||
|
||||
private:
|
||||
|
||||
G4NistManager* matManager;
|
||||
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;
|
||||
|
||||
G4bool first;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,105 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4NistMessenger.hh,v 1.1 2005/02/22 10:11:09 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
//
|
||||
// File name: G4NistMessenger
|
||||
//
|
||||
// Author: Vladimir Ivanchenko
|
||||
//
|
||||
// Creation date: 23.12.2004
|
||||
//
|
||||
// Modifications:
|
||||
//
|
||||
//
|
||||
// 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* );
|
||||
~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
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4OpticalSurface.hh,v 1.7 2003/12/01 15:13:41 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-01 $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
//
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4SandiaTable.hh,v 1.12 2004/12/07 08:50:02 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-03 $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
|
||||
// class description
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4StaticSandiaData.hh,v 1.6 2002/04/15 16:50:36 grichine Exp $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-01 $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4SurfaceProperty.hh,v 1.2 2003/12/01 15:13:41 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-07-00-cand-01 $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
//
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Reference in New Issue
Block a user