Import Geant4 9.2.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 15:58:43 +02:00
parent 96c8bcd0af
commit b79225fb37
7544 changed files with 245407 additions and 91099 deletions
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmCorrections.hh,v 1.9 2007/05/18 18:39:54 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-01 $
// $Id: G4EmCorrections.hh,v 1.24 2008/09/12 14:44:48 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//
@@ -40,6 +40,8 @@
// Modifications:
// 28.04.2006 General cleanup, add finite size corrections (V.Ivanchenko)
// 13.05.2006 Add corrections for ion stopping (V.Ivanhcenko)
// 20.05.2008 Removed Finite Size correction (V.Ivanchenko)
// 12.09.2008 Added inlined interfaces to effective charge (V.Ivanchenko)
//
// Class Description:
//
@@ -57,11 +59,12 @@
#include "G4ionEffectiveCharge.hh"
#include "G4Material.hh"
#include "G4ParticleDefinition.hh"
#include "G4NistManager.hh"
class G4VEmModel;
class G4PhysicsVector;
class G4IonTable;
class G4NistManager;
class G4MaterialCutsCouple;
class G4EmCorrections
{
@@ -72,78 +75,101 @@ public:
virtual ~G4EmCorrections();
G4double HighOrderCorrections(const G4ParticleDefinition* p,
const G4Material* material,
G4double kineticEnergy);
G4double HighOrderCorrections(const G4ParticleDefinition*,
const G4Material*,
G4double kineticEnergy,
G4double cutEnergy);
G4double Bethe(const G4ParticleDefinition* p,
const G4Material* material,
G4double IonHighOrderCorrections(const G4ParticleDefinition*,
const G4MaterialCutsCouple*,
G4double kineticEnergy);
G4double ComputeIonCorrections(const G4ParticleDefinition*,
const G4Material*,
G4double kineticEnergy);
G4double IonBarkasCorrection(const G4ParticleDefinition*,
const G4Material*,
G4double kineticEnergy);
G4double Bethe(const G4ParticleDefinition*,
const G4Material*,
G4double kineticEnergy);
G4double SpinCorrection(const G4ParticleDefinition* p,
const G4Material* material,
G4double SpinCorrection(const G4ParticleDefinition*,
const G4Material*,
G4double kineticEnergy);
G4double KShellCorrection(const G4ParticleDefinition* p,
const G4Material* material,
G4double KShellCorrection(const G4ParticleDefinition*,
const G4Material*,
G4double kineticEnergy);
G4double LShellCorrection(const G4ParticleDefinition* p,
const G4Material* material,
G4double LShellCorrection(const G4ParticleDefinition*,
const G4Material*,
G4double kineticEnergy);
G4double ShellCorrection(const G4ParticleDefinition* p,
const G4Material* material,
G4double ShellCorrection(const G4ParticleDefinition*,
const G4Material*,
G4double kineticEnergy);
G4double ShellCorrectionSTD(const G4ParticleDefinition* p,
const G4Material* material,
G4double ShellCorrectionSTD(const G4ParticleDefinition*,
const G4Material*,
G4double kineticEnergy);
G4double DensityCorrection(const G4ParticleDefinition* p,
const G4Material* material,
G4double DensityCorrection(const G4ParticleDefinition*,
const G4Material*,
G4double kineticEnergy);
G4double BarkasCorrection(const G4ParticleDefinition* p,
const G4Material* material,
G4double BarkasCorrection(const G4ParticleDefinition*,
const G4Material*,
G4double kineticEnergy);
G4double BlochCorrection(const G4ParticleDefinition* p,
const G4Material* material,
G4double BlochCorrection(const G4ParticleDefinition*,
const G4Material*,
G4double kineticEnergy);
G4double MottCorrection(const G4ParticleDefinition* p,
const G4Material* material,
G4double MottCorrection(const G4ParticleDefinition*,
const G4Material*,
G4double kineticEnergy);
G4double FiniteSizeCorrection(const G4ParticleDefinition* p,
const G4Material* material,
G4double kineticEnergy);
G4double NuclearDEDX(const G4ParticleDefinition* p,
const G4Material* material,
G4double NuclearDEDX(const G4ParticleDefinition*,
const G4Material*,
G4double kineticEnergy,
G4bool fluct = true);
void AddStoppingData(G4int Z, G4int A, const G4String& materialName,
G4PhysicsVector& dVector);
G4PhysicsVector* dVector);
void InitialiseForNewRun();
// effective charge correction using stopping power data
G4double EffectiveChargeCorrection(const G4ParticleDefinition*,
const G4Material*,
G4double);
G4double kineticEnergy);
G4ionEffectiveCharge* GetIonEffectiveCharge(G4VEmModel* m = 0);
// effective charge of an ion
inline G4double GetParticleCharge(const G4ParticleDefinition*,
const G4Material*,
G4double kineticEnergy);
G4int GetNumberOfStoppingVectors();
inline
G4double EffectiveChargeSquareRatio(const G4ParticleDefinition*,
const G4Material*,
G4double kineticEnergy);
// ionisation models for ions
inline void SetIonisationModels(G4VEmModel* m1 = 0, G4VEmModel* m2 = 0);
inline G4int GetNumberOfStoppingVectors();
private:
void Initialise();
G4PhysicsVector* InitialiseMaterial(const G4Material* mat);
void BuildCorrectionVector();
void SetupKinematics(const G4ParticleDefinition* p,
const G4Material* material,
void SetupKinematics(const G4ParticleDefinition*,
const G4Material*,
G4double kineticEnergy);
G4double KShell(G4double theta, G4double eta);
@@ -204,6 +230,11 @@ private:
G4double HN[31];
G4double MSH[93];
G4double TAU[93];
G4double Z23[100];
std::vector<const G4Material*> currmat;
std::vector<G4double> thcorr[100];
size_t ncouples;
const G4ParticleDefinition* particle;
const G4ParticleDefinition* curParticle;
@@ -216,6 +247,8 @@ private:
G4double kinEnergy;
G4double mass;
G4double massFactor;
G4double formfact;
G4double eth;
G4double tau;
G4double gamma;
G4double bg2;
@@ -223,24 +256,30 @@ private:
G4double beta;
G4double ba2;
G4double tmax;
G4double tmax0;
G4double charge;
G4double q2;
G4double eCorrMin;
G4double eCorrMax;
G4int nbinCorr;
G4AtomicShells shells;
G4ionEffectiveCharge effCharge;
G4NistManager* nist;
const G4IonTable* ionTable;
G4VEmModel* ionModel;
G4VEmModel* ionLEModel;
G4VEmModel* ionHEModel;
// Ion stopping data
G4int nIons;
G4int idx;
G4int currentZ;
std::vector<G4int> Zion;
std::vector<G4int> Aion;
std::vector<G4String> materialName;
std::vector<const G4ParticleDefinition*> ionList;
std::vector<const G4Material*> materialList;
std::vector<G4PhysicsVector*> stopData;
G4PhysicsVector* curVector;
@@ -271,6 +310,34 @@ inline G4double G4EmCorrections::Value2(G4double xv, G4double yv,
/ ((x2-x1)*(y2-y1));
}
inline
void G4EmCorrections::SetIonisationModels(G4VEmModel* m1, G4VEmModel* m2)
{
if(m1) ionLEModel = m1;
if(m2) ionHEModel = m2;
}
inline G4int G4EmCorrections::GetNumberOfStoppingVectors()
{
return nIons;
}
inline G4double
G4EmCorrections::GetParticleCharge(const G4ParticleDefinition* p,
const G4Material* mat,
G4double kineticEnergy)
{
return effCharge.EffectiveCharge(p,mat,kineticEnergy);
}
inline G4double
G4EmCorrections::EffectiveChargeSquareRatio(const G4ParticleDefinition* p,
const G4Material* mat,
G4double kineticEnergy)
{
return effCharge.EffectiveChargeSquareRatio(p,mat,kineticEnergy);
}
inline void G4EmCorrections::SetupKinematics(const G4ParticleDefinition* p,
const G4Material* mat,
G4double kineticEnergy)
@@ -287,15 +354,12 @@ inline void G4EmCorrections::SetupKinematics(const G4ParticleDefinition* p,
ba2 = beta2/alpha2;
G4double ratio = electron_mass_c2/mass;
tmax = 2.0*electron_mass_c2*bg2 /(1. + 2.0*gamma*ratio + ratio*ratio);
tmax0 = tmax;
charge = p->GetPDGCharge()/eplus;
if(charge < 1.5) q2 = charge*charge;
if(charge < 1.5) {q2 = charge*charge;}
else {
q2 = effCharge.EffectiveChargeSquareRatio(p,mat,kinEnergy);
charge = std::sqrt(q2);
}
if(mass > 120.*MeV)
tmax = std::min(tmax,51200.*electron_mass_c2*std::pow(proton_mass_c2/mass,0.666667));
}
if(mat != material) {
material = mat;