Import Geant4 3.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-08 16:03:00 +02:00
parent cfcb558cfe
commit 137e303ecc
2843 changed files with 37082 additions and 38426 deletions
+45 -29
View File
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4SandiaTable.hh,v 1.6 2000/06/15 17:35:25 gcosmo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: G4SandiaTable.hh,v 1.8 2001/04/03 12:32:54 maire Exp $
// GEANT4 tag $Name: geant4-03-01 $
// class description
//
@@ -17,6 +17,9 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
//
// 03.04.01 fnulcof[4] added; returned if energy < emin
// 30.01.01 major bug in the computation of AoverAvo and in the units (/g!)
// in GetSandiaCofPerAtom(). mma
// 18.11.98 simplified public interface; new methods for materials. mma
// 10.06.97 created. V. Grichine
//
@@ -54,12 +57,34 @@ public: // with description
G4double GetSandiaCofForMaterial(G4int,G4int);
G4double* GetSandiaCofForMaterial(G4double energy);
public: // without description
private:
void ComputeMatSandiaMatrix();
private:
static const G4double fSandiaTable[981][5];
static const G4int fNbOfIntervals[101];
static G4int fCumulInterval[101];
static const G4double fZtoAratio[101];
static const G4double fIonizationPotentials[101];
static G4double fSandiaCofPerAtom[4];
G4Material* fMaterial;
G4int fMatNbOfIntervals;
G4OrderedTable* fMatSandiaMatrix;
G4double fnulcof[4];
/////////////////////////////////////////////////////////////////////
//
// Methods for PAI model
public: // without description
inline void SandiaSwap( G4double** da,
G4int i,
G4int j );
@@ -81,28 +106,11 @@ public: // without description
private:
void ComputeMatSandiaMatrix();
private:
static const G4double fSandiaTable[981][5];
static const G4int fNbOfIntervals[101];
static G4int fCumulInterval[101];
static const G4double fZtoAratio[101];
static const G4double fIonizationPotentials[101];
static G4double fSandiaCofPerAtom[4];
G4Material* fMaterial;
G4int fMatNbOfIntervals;
G4OrderedTable* fMatSandiaMatrix;
//////////////////////////////////////////////////////////////////////////
//
// data members for PAI model
private:
static const G4int fNumberOfElements ;
static const G4int fIntervalLimit ;
static const G4int fNumberOfIntervals ;
@@ -114,6 +122,9 @@ private:
// G4OrderedTable*
G4int fMaxInterval ;
//
//
//////////////////////////////////////////////////////////////////////////
};
@@ -138,8 +149,8 @@ G4double G4SandiaTable::GetSandiaCofPerAtom(G4int Z, G4int interval, G4int j)
G4int row = fCumulInterval[Z-1] + interval;
if (j==0) return fSandiaTable[row][0]*keV;
G4double AoverAvo = Z/(fZtoAratio[Z]*Avogadro*mole);
return fSandiaTable[row][j]*AoverAvo*cm2*pow(keV,G4double(j));
G4double AoverAvo = Z*amu/fZtoAratio[Z];
return AoverAvo*(fSandiaTable[row][j]*cm2*pow(keV,G4double(j))/g);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
@@ -148,19 +159,24 @@ inline
G4double* G4SandiaTable::GetSandiaCofPerAtom(G4int Z, G4double energy)
{
assert (Z > 0);
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))
row = fCumulInterval[Z-1] + --interval;
if (energy >= fIonizationPotentials[Z]*eV)
if (energy >= Emin)
{
G4double AoverAvo = Z/(fZtoAratio[Z]*Avogadro*mole);
G4double AoverAvo = Z*amu/fZtoAratio[Z];
fSandiaCofPerAtom[0]=fSandiaTable[row][1]*AoverAvo*cm2*keV;
fSandiaCofPerAtom[1]=fSandiaTable[row][2]*AoverAvo*cm2*keV*keV;
fSandiaCofPerAtom[2]=fSandiaTable[row][3]*AoverAvo*cm2*keV*keV*keV;
fSandiaCofPerAtom[3]=fSandiaTable[row][4]*AoverAvo*cm2*keV*keV*keV*keV;
fSandiaCofPerAtom[0]=AoverAvo*(fSandiaTable[row][1]*cm2*keV/g);
fSandiaCofPerAtom[1]=AoverAvo*(fSandiaTable[row][2]*cm2*keV*keV/g);
fSandiaCofPerAtom[2]=AoverAvo*(fSandiaTable[row][3]*cm2*keV*keV*keV/g);
fSandiaCofPerAtom[3]=AoverAvo*(fSandiaTable[row][4]*cm2*keV*keV*keV*keV/g);
}
else
fSandiaCofPerAtom[0] = fSandiaCofPerAtom[1] = fSandiaCofPerAtom[2] =