Import Geant4 10.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-10 12:08:39 +02:00
parent 286caacf06
commit c9b32a6c0a
5770 changed files with 1050949 additions and 367105 deletions
+3 -3
View File
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4Element.hh 69704 2013-05-13 09:06:12Z gcosmo $
// $Id: G4Element.hh 80747 2014-05-09 12:53:43Z gcosmo $
//
//---------------------------------------------------------------------------
@@ -239,10 +239,10 @@ private:
G4int fNbOfAtomicShells; // number of atomic shells
G4double* fAtomicShells ; // Pointer to atomic shell binding energies
G4int* fNbOfShellElectrons; // pointer to the number of subshell electrons
G4int* fNbOfShellElectrons; // Pointer to the number of subshell electrons
// Isotope vector contains constituent isotopes of the element
size_t fNumberOfIsotopes; // Number of isotopes added to the element
G4int fNumberOfIsotopes; // Number of isotopes added to the element
G4IsotopeVector* theIsotopeVector;
G4double* fRelativeAbundanceVector; // Fraction nb of atomes per volume
// for each constituent
+6 -7
View File
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4IonisParamElm.hh 66811 2013-01-12 16:04:23Z gcosmo $
// $Id: G4IonisParamElm.hh 81374 2014-05-27 13:07:25Z gcosmo $
//
// class description
@@ -81,9 +81,7 @@ public: // with description
G4double* GetShellCorrectionVector() const {return fShellCorrectionVector;}
// shell correction coefficients
public: // without description
G4IonisParamElm(G4IonisParamElm&);
// operators
G4IonisParamElm& operator=(const G4IonisParamElm&);
G4int operator==(const G4IonisParamElm&) const;
G4int operator!=(const G4IonisParamElm&) const;
@@ -95,9 +93,10 @@ public: // without description
private:
//
// data members
//
G4IonisParamElm(G4IonisParamElm&);
//
// data members
//
G4double fZ; // effective Z
G4double fZ3; // std::pow (Z,1/3)
G4double fZZ3; // std::pow (Z(Z+1),1/3)
+3 -5
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4IonisParamMat.hh 68070 2013-03-13 15:03:06Z gcosmo $
// $Id: G4IonisParamMat.hh 81374 2014-05-27 13:07:25Z gcosmo $
//
// class description
@@ -111,9 +111,7 @@ public:
void SetMeanEnergyPerIonPair(G4double value) {fMeanEnergyPerIon = value;};
G4double GetMeanEnergyPerIonPair() const {return fMeanEnergyPerIon;};
public: // without description
G4IonisParamMat(const G4IonisParamMat&);
// operators
G4IonisParamMat& operator=(const G4IonisParamMat&);
G4int operator==(const G4IonisParamMat&) const;
G4int operator!=(const G4IonisParamMat&) const;
@@ -137,7 +135,7 @@ private:
// Compute parameters for ion parameterizations
void ComputeIonParameters();
private:
G4IonisParamMat(const G4IonisParamMat&);
//
// data members
+5 -6
View File
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4Material.hh 68070 2013-03-13 15:03:06Z gcosmo $
// $Id: G4Material.hh 81374 2014-05-27 13:07:25Z gcosmo $
//
//---------------------------------------------------------------------------
@@ -217,7 +217,7 @@ public: // with description
// Radiation length:
inline G4double GetRadlen() const {return fRadlen;}
// Nuclear interaction length:
// Nuclear interaction length
inline G4double GetNuclearInterLength() const {return fNuclInterLen;}
// ionisation parameters:
@@ -269,8 +269,7 @@ public: // with description
friend std::ostream& operator<<(std::ostream&, G4Material&);
friend std::ostream& operator<<(std::ostream&, G4MaterialTable);
public: // without description
// operators
G4int operator==(const G4Material&) const;
G4int operator!=(const G4Material&) const;
G4Material(__void__&);
@@ -315,9 +314,9 @@ private:
G4int maxNbComponents; // totalNbOfComponentsInTheMaterial
G4int fArrayLength; // the length of fAtomsVector
size_t fNumberOfComponents; // Nb of components declared so far
G4int fNumberOfComponents; // Nb of components declared so far
size_t fNumberOfElements; // Nb of Elements in the material
G4int 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
+1 -4
View File
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4OpticalSurface.hh 70822 2013-06-06 08:25:05Z gcosmo $
// $Id: G4OpticalSurface.hh 80747 2014-05-09 12:53:43Z gcosmo $
//
//
////////////////////////////////////////////////////////////////////////
@@ -218,9 +218,6 @@ private:
G4float* AngularDistribution;
// Open LUT with Material and Integer Angle
FILE* readLUTFileHandle;
G4Physics2DVector* DichroicVector;
};
+18 -11
View File
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4SandiaTable.hh 75603 2013-11-04 13:15:47Z gcosmo $
// $Id: G4SandiaTable.hh 79097 2014-02-14 16:08:35Z gcosmo $
// class description
//
@@ -61,7 +61,6 @@
#include <CLHEP/Units/PhysicalConstants.h>
class G4Material;
// class G4MaterialCutsCouple;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
@@ -74,18 +73,26 @@ public: // with description
~G4SandiaTable();
//main computation per atom:
void GetSandiaCofPerAtom(G4int Z, G4double energy, std::vector<G4double>& coeff);
void GetSandiaCofPerAtom(G4int Z, G4double energy,
std::vector<G4double>& coeff) const;
void GetSandiaCofWater(G4double energy,
std::vector<G4double>& coeff) const;
G4double GetWaterEnergyLimit() const;
G4double GetWaterCofForMaterial(G4int,G4int) const;
static G4double GetZtoA(G4int Z);
//per volume of a material:
G4int GetMatNbOfIntervals();
G4double GetSandiaCofForMaterial(G4int,G4int);
G4double GetSandiaMatTable(G4int,G4int);
const G4double* GetSandiaCofForMaterial(G4double energy);
G4int GetMatNbOfIntervals() const;
G4double GetSandiaCofForMaterial(G4int,G4int) const;
G4double GetSandiaMatTable(G4int,G4int) const;
const G4double* GetSandiaCofForMaterial(G4double energy) const;
G4double GetSandiaCofForMaterialPAI(G4int,G4int);
G4double GetSandiaMatTablePAI(G4int,G4int);
const G4double* GetSandiaCofForMaterialPAI(G4double energy);
G4double GetSandiaCofForMaterialPAI(G4int,G4int) const;
G4double GetSandiaMatTablePAI(G4int,G4int) const;
const G4double* GetSandiaCofForMaterialPAI(G4double energy) const;
G4OrderedTable* GetSandiaMatrixPAI();
inline void SetVerbose(G4int ver) { fVerbose = ver; };
@@ -105,7 +112,7 @@ private:
// methods per atom
G4int GetNbOfIntervals(G4int Z);
G4double GetSandiaPerAtom(G4int Z, G4int, G4int);
G4double GetIonizationPot(G4int Z);
G4double GetIonizationPot(G4int Z) const;
// static members of the class
static const G4int fNumberOfElements;
+183
View File
@@ -0,0 +1,183 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
//---------------------------------------------------------------------------
//
// ClassName: G4UCNMaterialPropertiesTable
//
// Class description:
//
// A derived class of G4MaterialPropertiesTable in order to save the look-up
// table for the microroughness probability. The derived class has four
// pointers to G4double-arrays:
// (1) integral prob. for reflection
// (2) maximum probability for reflection (needed for accept-reject method)
// (3) integral prob. for transmission
// (4) maximum probability for transmission
//
// 12-05-14, adopted from Stefan Heule (PSI) Thesis by P.Gumplinger
// http://ucn.web.psi.ch/papers/stefanheule_thesis2008.pdf
// reported in F. Atchison et al., Eur. Phys. J. A 44, 2329 (2010)
// Thanks to Geza Zsigmond
#ifndef G4UCNMATERIALPROPERTIESTABLE_HH
#define G4UCNMATERIALPROPERTIESTABLE_HH 1
#include "G4MaterialPropertiesTable.hh"
class G4UCNMaterialPropertiesTable : public G4MaterialPropertiesTable
{
public:
G4UCNMaterialPropertiesTable();
virtual ~G4UCNMaterialPropertiesTable();
// returns the pointer to the mr-reflection table
G4double* GetMicroRoughnessTable();
// returns the pointer to the mr-transmission table
G4double* GetMicroRoughnessTransTable();
// Assigns double-array to the table-pointers, currently not used
void LoadMicroRoughnessTables(G4double*, G4double*, G4double*, G4double*);
// Creates new double arrays and assigns them to the table pointers
void InitMicroRoughnessTables();
// Reads the MR-parameters from the corresponding fields and starts
// the computation of the mr-tables
void ComputeMicroRoughnessTables();
// returns the integral prob. value for a theta_i - E pair
G4double GetMRIntProbability (G4double, G4double);
// returns the maximum prob. value for a theta_i - E pair
G4double GetMRMaxProbability (G4double, G4double);
// sets the maximum prob. value for a theta_i - E pair
void SetMRMaxProbability (G4double, G4double, G4double);
// returns the mr-prob.
// arguments:
// 1) theta_i
// 2) Energy
// 3) V_F
// 4) theta_o
// 5) phi_o
G4double GetMRProbability (G4double, G4double, G4double, G4double, G4double);
// returns the integral transmission prob. value for a theta_i - E pair
G4double GetMRIntTransProbability (G4double, G4double);
// returns the maximum transmission prob. for a theta_i - E pair
G4double GetMRMaxTransProbability (G4double, G4double);
// sets the maximum prob. value for a theta_i - E pair
void SetMRMaxTransProbability (G4double, G4double, G4double);
// returns the mr-transmission-prob.
// arguments:
// 1) theta_i
// 2) E
// 3) V_F
// 4) theta_o
// 5) phi_o
G4double GetMRTransProbability (G4double, G4double,
G4double, G4double, G4double);
// Checks if the validity condition for the microroughness model are
// satisfied, cf. Steyerl-paper p. 175
G4bool ConditionsValid (G4double E, G4double VFermi, G4double theta_i);
// Checks if the validity conditions for the transmission of the
// microroughness model are satisfied
G4bool TransConditionsValid (G4double E, G4double VFermi, G4double theta_i);
// Adds the values for mr-related units to the MaterialPropertiesTable
// arguments:
// 1) w
// 2) b
// 3) number of angles theta_i in the look-up tables
// 4) number of energies in the look-up tables
// 5) minimum value of theta_i
// 6) maximum value of theta_i
// 7) minimum value of E
// 8) maximum value of E
// 9) number of angles theta_o in the look-up table calculation
// 10) number of angles phi_o in the look-up table calculation
// 11) angular cut
void SetMicroRoughnessParameters(G4double, G4double, G4int, G4int, G4double,
G4double, G4double, G4double, G4int, G4int,
G4double);
// returns b
G4double GetRMS() const;
// returns w
G4double GetCorrLen() const;
private:
// Pointer to the integral reflection probability table
G4double* theMicroRoughnessTable;
// Pointer to the maximum reflection probability table
G4double* maxMicroRoughnessTable;
// Pointer to the integral transmission probability table
G4double* theMicroRoughnessTransTable;
// Pointer to the maximum transmission probability table
G4double* maxMicroRoughnessTransTable;
G4double theta_i_min;
G4double theta_i_max;
G4double Emin;
G4double Emax;
G4int no_theta_i;
G4int noE;
G4double theta_i_step;
G4double E_step;
// RMS roughness and correlation length
G4double b, w;
G4double AngCut;
};
// ==========================================================================
// inline functions
// ==========================================================================
inline G4double G4UCNMaterialPropertiesTable::GetRMS() const {return b;}
inline G4double G4UCNMaterialPropertiesTable::GetCorrLen() const {return w;}
#endif
+184
View File
@@ -0,0 +1,184 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
//---------------------------------------------------------------------------
//
// ClassName: G4UCNMicroRoughnessHelper
//
// Class description:
//
// This file contains the headers of various functions all related to the
// calculation of microroughness.
// see A. Steyerl, Z. Physik 254 (1972) 169.
//
// Angular cut: for angles which are closer to the specular direction than a
// certain value (0.01°), the probability is set to 0 in order to avoid a
// hang-up at the generation of the polar angle due to a very sharp angular
// distribution
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
// 12-05-14, adopted from Stefan Heule (PSI) Thesis by P.Gumplinger
// http://ucn.web.psi.ch/papers/stefanheule_thesis2008.pdf
// reported in F. Atchison et al., Eur. Phys. J. A 44, 2329 (2010)
// Thanks to Geza Zsigmond
#ifndef G4MICROROUGHNESSHELPER_HH
#define G4MICROROUGHNESSHELPER_HH 1
#include "G4Types.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4UCNMicroRoughnessHelper
{
public: // with description
static G4UCNMicroRoughnessHelper* GetInstance();
protected:
G4UCNMicroRoughnessHelper();
~G4UCNMicroRoughnessHelper();
public: // with description
// Transmitted intensity with k-vector in vacuum
// arguments:
// 1) cos(theta)^2,
// 2) (k_l/k)^2
G4double S2(G4double, G4double);
// Transmitted intensity with k-vector within the medium
// arguments:
// 1) cos(theta')^2,
// 2) (k_l/k')^2
G4double SS2(G4double, G4double);
// Fourier-tranform of the autocorrelation function with k-vector in vacuum
// arguments:
// 1) k^2,
// 2) theta_i,
// 3) theta_o,
// 4) phi_o,
// 5) b^2,
// 6) w^2,
// 7) angular cut
G4double Fmu(G4double, G4double, G4double,
G4double, G4double, G4double, G4double);
// Fourier-tranform of the autocorrelation function with k-vector within
// the medium
// arguments:
// 1) k,
// 2) k',
// 3) theta_i,
// 4) theta'_o,
// 5) phi'_o,
// 6) b^2,
// 7) w^2,
// 8) angular cut
// 9) theta_refract
G4double FmuS(G4double, G4double, G4double, G4double,
G4double, G4double, G4double, G4double, G4double);
// Integral probability for non-specular reflection
// arguments:
// 1) E,
// 2) V_F,
// 3) theta_i,
// 4) number of angles theta_o for which the probability is calculated,
// 5) number of angles phi_o for which the probability is calculated,
// 6) b^2,
// 7) w^2,
// 8) pointer to G4double array with max values of the probability,
// 9) angular cut
G4double IntIplus(G4double, G4double, G4double, G4int, G4int,
G4double, G4double, G4double*, G4double);
// Probability of non-specular reflection with the microroughness model
// arguments:
// 1) E,
// 2) V_F,
// 3) theta_i,
// 4) theta_o,
// 5) phi_o,
// 6) b,
// 7) w,
// 8) angular cut
G4double ProbIplus (G4double, G4double, G4double, G4double,
G4double, G4double, G4double, G4double);
// Integral probability for non-specular transmission
// arguments:
// 1) E,
// 2) V_F,
// 3) theta_i,
// 4) number of angles theta_o for which the probability is calculated,
// 5) number of angles phi_o for which the probability is calculated,
// 6) b^2,
// 7) w^2,
// 8) pointer to G4double array with max values of the probability,
// 9) angular cut
G4double IntIminus(G4double, G4double, G4double, G4int, G4int,
G4double, G4double, G4double*, G4double);
// Probability of non-specular transmission with the microroughness model
// arguments:
// 1) E,
// 2) V_F,
// 3) theta_i,
// 4) theta'_o,
// 5) phi'_o,
// 6) b,
// 7) w,
// 8) angular cut
G4double ProbIminus (G4double, G4double, G4double, G4double,
G4double, G4double, G4double, G4double);
private:
static G4UCNMicroRoughnessHelper* fpInstance;
};
#endif // G4MICROROUGHNESSHELPER_HH