Import Geant4 10.3.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2016-06-30 14:12:05 +02:00
parent a654a7ab1f
commit 4ec577e5c4
2021 changed files with 100995 additions and 78277 deletions
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4DNAChampionElasticModel.hh 87137 2014-11-25 09:12:48Z gcosmo $
// $Id: G4DNAChampionElasticModel.hh 97520 2016-06-03 14:23:17Z gcosmo $
//
#ifndef G4DNAChampionElasticModel_h
@@ -48,7 +48,8 @@ public:
virtual ~G4DNAChampionElasticModel();
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector&);
virtual G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* p,
@@ -64,38 +65,46 @@ public:
void SetKillBelowThreshold(G4double threshold);
G4double GetKillBelowThreshold()
inline G4double GetKillBelowThreshold()
{
return killBelowEnergy;
G4ExceptionDescription errMsg;
errMsg << "The method G4DNAChampionElasticModel::"
"GetKillBelowThreshold is deprecated";
G4Exception("G4DNAChampionElasticModel::GetKillBelowThreshold",
"deprecated",
JustWarning,
errMsg);
return 0.;
}
protected:
G4ParticleChangeForGamma* fParticleChangeForGamma;
private:
// Cross section
typedef std::map<double, std::vector<double> > VecMap;
VecMap eVecm;
typedef std::map<double, std::map<double, double> > TriDimensionMap;
TriDimensionMap eDiffCrossSectionData;
std::vector<double> eTdummyVec;
// Water density table
const std::vector<G4double>* fpMolWaterDensity;
G4double killBelowEnergy;
G4double lowEnergyLimit;
G4double highEnergyLimit;
G4bool isInitialised;
G4int verboseLevel;
// Cross section
G4DNACrossSectionDataSet* fpData;
typedef std::map<G4String, G4String, std::less<G4String> > MapFile;
MapFile tableFile;
typedef std::map<G4String, G4DNACrossSectionDataSet*, std::less<G4String> > MapData;
MapData tableData;
protected:
G4ParticleChangeForGamma* fParticleChangeForGamma;
private:
G4int verboseLevel;
G4bool isInitialised;
// Final state
//G4double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double theta);
//G4double DifferentialCrossSection(G4ParticleDefinition* aParticle,
// G4double k, G4double theta);
G4double Theta(G4ParticleDefinition * aParticleDefinition,
G4double Theta(//G4ParticleDefinition * aParticleDefinition,
G4double k,
G4double integrDiff);
@@ -130,21 +139,12 @@ private:
G4double t,
G4double e);
typedef std::map<double, std::map<double, double> > TriDimensionMap;
TriDimensionMap eDiffCrossSectionData;
std::vector<double> eTdummyVec;
typedef std::map<double, std::vector<double> > VecMap;
VecMap eVecm;
G4double RandomizeCosTheta(G4double k);
//
G4DNAChampionElasticModel & operator=(const G4DNAChampionElasticModel &right);
G4DNAChampionElasticModel(const G4DNAChampionElasticModel&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4DNADingfelderChargeDecreaseModel.hh 92859 2015-09-18 07:58:30Z gcosmo $
// $Id: G4DNADingfelderChargeDecreaseModel.hh 96060 2016-03-11 12:58:04Z gcosmo $
//
#ifndef G4DNADingfelderChargeDecreaseModel_h
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4DNADingfelderChargeIncreaseModel.hh 92859 2015-09-18 07:58:30Z gcosmo $
// $Id: G4DNADingfelderChargeIncreaseModel.hh 96060 2016-03-11 12:58:04Z gcosmo $
//
#ifndef G4DNADingfelderChargeIncreaseModel_h
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4DNAMeltonAttachmentModel.hh 70171 2013-05-24 13:34:18Z gcosmo $
// $Id: G4DNAMeltonAttachmentModel.hh 96606 2016-04-25 13:33:42Z gcosmo $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -43,9 +43,7 @@
class G4DNAMeltonAttachmentModel : public G4VEmModel
{
public:
G4DNAMeltonAttachmentModel(const G4ParticleDefinition* p = 0,
const G4String& nam = "DNAMeltonAttachmentModel");
@@ -69,46 +67,34 @@ public:
inline G4bool GetDissociationFlag();
protected:
G4ParticleChangeForGamma* fParticleChangeForGamma;
private:
// Water density table
const std::vector<G4double>* fpWaterDensity;
G4double lowEnergyLimit;
G4double highEnergyLimit;
G4double lowEnergyLimitOfModel;
G4bool isInitialised;
G4int verboseLevel;
G4bool fDissociationFlag;
// Cross section
typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
MapFile tableFile;
typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
MapData tableData;
G4DNACrossSectionDataSet* fData;
//
G4DNAMeltonAttachmentModel & operator=(const G4DNAMeltonAttachmentModel &right);
G4DNAMeltonAttachmentModel(const G4DNAMeltonAttachmentModel&);
};
inline void G4DNAMeltonAttachmentModel::SetDissociationFlag(G4bool flag)
{
fDissociationFlag = flag;
fDissociationFlag = flag;
}
inline G4bool G4DNAMeltonAttachmentModel::GetDissociationFlag()
{
return fDissociationFlag;
return fDissociationFlag;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#endif
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4DNAOneStepThermalizationModel.hh 94218 2015-11-09 08:24:48Z gcosmo $
// $Id: G4DNAOneStepThermalizationModel.hh 96932 2016-05-18 09:07:51Z gcosmo $
//
// Author: Mathieu Karamitros, kara@cenbg.in2p3.fr
@@ -67,7 +67,7 @@ class G4DNAOneStepThermalizationModel : public G4VEmModel
public:
G4DNAOneStepThermalizationModel(const G4ParticleDefinition* p = 0,
const G4String& nam =
"DNASancheSolvatationModel");
"DNAOneStepThermalizationModel");
virtual ~G4DNAOneStepThermalizationModel();
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4DNARuddIonisationExtendedModel.hh 92859 2015-09-18 07:58:30Z gcosmo $
// $Id: G4DNARuddIonisationExtendedModel.hh 96060 2016-03-11 12:58:04Z gcosmo $
//
#ifndef G4DNARuddIonisationExtendedModel_h
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4DNARuddIonisationModel.hh 92859 2015-09-18 07:58:30Z gcosmo $
// $Id: G4DNARuddIonisationModel.hh 96060 2016-03-11 12:58:04Z gcosmo $
//
#ifndef G4DNARuddIonisationModel_h
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4DNASancheExcitationModel.hh 93616 2015-10-27 08:59:17Z gcosmo $
// $Id: G4DNASancheExcitationModel.hh 96606 2016-04-25 13:33:42Z gcosmo $
// GEANT4 tag $Name: $
//
@@ -44,15 +44,14 @@
class G4DNASancheExcitationModel : public G4VEmModel
{
public:
G4DNASancheExcitationModel(const G4ParticleDefinition* p = 0,
const G4String& nam = "DNASancheExcitationModel");
const G4String& nam = "DNASancheExcitationModel");
virtual ~G4DNASancheExcitationModel();
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector&);
virtual G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* p,
@@ -86,8 +85,6 @@ private:
// Water density table
const std::vector<G4double>* fpWaterDensity;
G4double lowEnergyLimit;
G4double highEnergyLimit;
G4bool isInitialised;
G4int verboseLevel;
@@ -120,11 +117,12 @@ private:
inline void G4DNASancheExcitationModel::ExtendLowEnergyLimit(G4double threshold)
{
lowEnergyLimit = threshold;
if(lowEnergyLimit < 2 * CLHEP::eV)
if(threshold < 2 * CLHEP::eV)
G4Exception("*** WARNING : the G4DNASancheExcitationModel class is not "
"validated below 2 eV !",
"", JustWarning, "");
SetLowEnergyLimit(threshold);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4DNAScreenedRutherfordElasticModel.hh 92074 2015-08-17 07:03:46Z gcosmo $
// $Id: G4DNAScreenedRutherfordElasticModel.hh 97520 2016-06-03 14:23:17Z gcosmo $
//
#ifndef G4DNAScreenedRutherfordElasticModel_h
@@ -38,9 +38,7 @@
class G4DNAScreenedRutherfordElasticModel : public G4VEmModel
{
public:
G4DNAScreenedRutherfordElasticModel(const G4ParticleDefinition* p = 0,
const G4String& nam = "DNAScreenedRutherfordElasticModel");
@@ -49,75 +47,77 @@ public:
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
virtual G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
inline void SetKillBelowThreshold (G4double threshold);
G4double GetKillBelowThreshold () { return killBelowEnergy; }
inline void SetKillBelowThreshold (G4double threshold);
inline void SelectFasterComputation(G4bool input);
protected:
G4ParticleChangeForGamma* fParticleChangeForGamma;
private:
G4bool fasterCode;
// Water density table
const std::vector<G4double>* fpWaterDensity;
G4double killBelowEnergy;
G4double lowEnergyLimit;
G4double lowEnergyLimit;
G4double intermediateEnergyLimit;
G4double highEnergyLimit;
G4bool isInitialised;
G4int verboseLevel;
G4double highEnergyLimit;
// Cross section
G4double RutherfordCrossSection(G4double energy, G4double z);
G4double ScreeningFactor(G4double energy, G4double z);
// Final state according to Brenner & Zaider
G4double BrennerZaiderRandomizeCosTheta(G4double k);
G4double CalculatePolynomial(G4double k, std::vector<G4double>& vec);
// -- Brenner & Zaider
std::vector<G4double> betaCoeff;
std::vector<G4double> deltaCoeff;
std::vector<G4double> gamma035_10Coeff;
std::vector<G4double> gamma10_100Coeff;
std::vector<G4double> gamma100_200Coeff;
// Final state according to Screened Rutherford
// -- Water density table
const std::vector<G4double>* fpWaterDensity;
G4int verboseLevel;
G4bool isInitialised;
G4bool fasterCode;
// -- Cross section
G4double RutherfordCrossSection(G4double energy, G4double z);
G4double ScreeningFactor(G4double energy, G4double z);
// -- Final state according to Brenner & Zaider
G4double BrennerZaiderRandomizeCosTheta(G4double k);
G4double CalculatePolynomial(G4double k, std::vector<G4double>& vec);
// -- Final state according to Screened Rutherford
G4double ScreenedRutherfordRandomizeCosTheta(G4double k, G4double z);
//
G4DNAScreenedRutherfordElasticModel & operator=(const G4DNAScreenedRutherfordElasticModel &right);
G4DNAScreenedRutherfordElasticModel(const G4DNAScreenedRutherfordElasticModel&);
G4DNAScreenedRutherfordElasticModel& operator=
(const G4DNAScreenedRutherfordElasticModel &right);
G4DNAScreenedRutherfordElasticModel(const G4DNAScreenedRutherfordElasticModel&);
};
inline void G4DNAScreenedRutherfordElasticModel::SetKillBelowThreshold (G4double threshold)
{
killBelowEnergy = threshold;
if (threshold < 9*CLHEP::eV)
G4Exception ("*** WARNING : the G4DNAScreenedRutherfordElasticModel class is not validated below 9 eV !","",JustWarning,"") ;
inline void
G4DNAScreenedRutherfordElasticModel::SetKillBelowThreshold (G4double)
{
G4ExceptionDescription errMsg;
errMsg << "The method G4DNAScreenedRutherfordElasticModel::"
"SetKillBelowThreshold is deprecated";
G4Exception("G4DNAScreenedRutherfordElasticModel::SetKillBelowThreshold",
"deprecated",
JustWarning,
errMsg);
}
inline void G4DNAScreenedRutherfordElasticModel::SelectFasterComputation (G4bool input)
inline void
G4DNAScreenedRutherfordElasticModel::SelectFasterComputation(G4bool input)
{
fasterCode = input;
}
@@ -65,6 +65,8 @@ double G4UniformRand()
#define G4endl std::endl
#endif
#include "G4Exp.hh"
class G4DNASmoluchowskiDiffusion
{
public:
@@ -121,14 +123,14 @@ public:
static double GetDifferential(double sTransform)
{
static double constant = -4./std::sqrt(3.141592653589793);
return sTransform*sTransform*std::exp(-sTransform*sTransform)*constant; // -4*sTransform*sTransform*exp(-sTransform*sTransform)/sqrt(3.141592653589793)
return sTransform*sTransform*G4Exp(-sTransform*sTransform)*constant; // -4*sTransform*sTransform*exp(-sTransform*sTransform)/sqrt(3.141592653589793)
}
static double GetDensityProbability(double r, double _time, double D)
{
static double my_pi = 3.141592653589793;
static double constant = 4.*my_pi/std::pow(4.*my_pi, 1.5);
return r*r/std::pow(D * _time,1.5)*std::exp(-r*r/(4. * D * _time))*constant;
return r*r/std::pow(D * _time,1.5)*G4Exp(-r*r/(4. * D * _time))*constant;
}
//====================================================
@@ -302,7 +304,7 @@ public:
static double GetCumulativeProbability(double sTransform)
{
static double constant = 2./std::sqrt(3.141592653589793);
return erfc(sTransform) + constant*sTransform*std::exp(-sTransform*sTransform);
return erfc(sTransform) + constant*sTransform*G4Exp(-sTransform*sTransform);
}
double GetInverseProbability(double proba) // returns sTransform
@@ -35,89 +35,129 @@
class G4DNAUeharaScreenedRutherfordElasticModel : public G4VEmModel
{
public:
G4DNAUeharaScreenedRutherfordElasticModel(const G4ParticleDefinition* p = 0,
const G4String& nam = "DNAUeharaScreenedRutherfordElasticModel");
const G4String& nam = "DNAUeharaScreenedRutherfordElasticModel");
virtual ~G4DNAUeharaScreenedRutherfordElasticModel();
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
virtual G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
inline void SetKillBelowThreshold (G4double threshold);
G4double GetKillBelowThreshold () { return killBelowEnergy; }
inline void SelectFasterComputation(G4bool input);
protected:
G4ParticleChangeForGamma* fParticleChangeForGamma;
inline void SelectFasterComputation(G4bool input);
//---
// kept for backward compatibility
inline void SetKillBelowThreshold (G4double threshold);
inline G4double GetKillBelowThreshold();
inline void SelectHighEnergyLimit(G4double threshold);
//---
private:
G4bool fasterCode;
// Water density table
const std::vector<G4double>* fpWaterDensity;
G4double killBelowEnergy;
G4double lowEnergyLimit;
G4double intermediateEnergyLimit;
G4double highEnergyLimit;
G4bool isInitialised;
G4int verboseLevel;
// Cross section
G4double RutherfordCrossSection(G4double energy, G4double z);
G4double ScreeningFactor(G4double energy, G4double z);
// Final state according to Brenner & Zaider
G4double BrennerZaiderRandomizeCosTheta(G4double k);
G4double CalculatePolynomial(G4double k, std::vector<G4double>& vec);
// -- Brenner & Zaider
std::vector<G4double> betaCoeff;
std::vector<G4double> deltaCoeff;
std::vector<G4double> gamma035_10Coeff;
std::vector<G4double> gamma10_100Coeff;
std::vector<G4double> gamma100_200Coeff;
// Final state according to Screened Rutherford
G4double ScreenedRutherfordRandomizeCosTheta(G4double k, G4double z);
// -- Water density table
const std::vector<G4double>* fpWaterDensity;
protected:
G4ParticleChangeForGamma* fParticleChangeForGamma;
private:
G4int verboseLevel;
G4bool fasterCode;
G4bool isInitialised;
// -- Cross section
G4double RutherfordCrossSection(G4double energy, G4double z);
G4double ScreeningFactor(G4double energy, G4double z);
// -- Final state according to Brenner & Zaider
G4double BrennerZaiderRandomizeCosTheta(G4double k);
G4double CalculatePolynomial(G4double k,
std::vector<G4double>& vec);
// -- Final state according to Screened Rutherford
G4double ScreenedRutherfordRandomizeCosTheta(G4double k,
G4double z);
//
G4DNAUeharaScreenedRutherfordElasticModel & operator=(const G4DNAUeharaScreenedRutherfordElasticModel &right);
G4DNAUeharaScreenedRutherfordElasticModel(const G4DNAUeharaScreenedRutherfordElasticModel&);
G4DNAUeharaScreenedRutherfordElasticModel&
operator=(const G4DNAUeharaScreenedRutherfordElasticModel &right);
G4DNAUeharaScreenedRutherfordElasticModel(
const G4DNAUeharaScreenedRutherfordElasticModel&);
};
inline void G4DNAUeharaScreenedRutherfordElasticModel::SetKillBelowThreshold (G4double threshold)
inline void G4DNAUeharaScreenedRutherfordElasticModel::
SelectFasterComputation(G4bool input)
{
killBelowEnergy = threshold;
if (threshold < 9*CLHEP::eV)
G4Exception ("*** WARNING : the G4DNAUeharaScreenedRutherfordElasticModel class is not validated below 9 eV !","",JustWarning,"") ;
}
fasterCode = input;
}
inline void G4DNAUeharaScreenedRutherfordElasticModel::SelectFasterComputation (G4bool input)
{
fasterCode = input;
}
//---
// kept for backward compatibility
inline void
G4DNAUeharaScreenedRutherfordElasticModel::SelectHighEnergyLimit(
G4double threshold)
{
if(threshold > 10. * CLHEP::keV)
{
G4Exception (
"*** WARNING : the G4DNAUeharaScreenedRutherfordElasticModel class is "
"used above 10 keV !",
"", JustWarning, "");
}
SetHighEnergyLimit(threshold);
}
inline void
G4DNAUeharaScreenedRutherfordElasticModel::SetKillBelowThreshold(G4double)
{
G4ExceptionDescription errMsg;
errMsg << "*** WARNING : "
<< "G4DNAUeharaScreenedRutherfordElasticModel::SetKillBelowThreshold"
<< "is deprecated, the kill threshold won't be taken into account";
G4Exception (
"G4DNAUeharaScreenedRutherfordElasticModel::SetKillBelowThreshold",
"DEPRECATED", JustWarning, errMsg);
}
inline G4double
G4DNAUeharaScreenedRutherfordElasticModel::GetKillBelowThreshold()
{
G4ExceptionDescription errMsg;
errMsg << "*** WARNING : "
<< "G4DNAUeharaScreenedRutherfordElasticModel::GetKillBelowThreshold"
<< "is deprecated, the returned value is nonsense";
G4Exception (
"G4DNAUeharaScreenedRutherfordElasticModel::GetKillBelowThreshold",
"DEPRECATED", JustWarning, errMsg);
return -1;
}
//---
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....