Import Geant4 11.2.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2023-06-30 09:09:57 +02:00
parent aef78ca386
commit dd1f179cda
3780 changed files with 212808 additions and 142780 deletions
@@ -49,7 +49,7 @@ public:
explicit G4LivermoreComptonModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "LivermoreCompton");
virtual ~G4LivermoreComptonModel();
~G4LivermoreComptonModel() override;
void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
@@ -75,7 +75,8 @@ public:
G4LivermoreComptonModel(const G4LivermoreComptonModel&) = delete;
private:
void ReadData(size_t Z, const char* path = 0);
void ReadData(const G4int ZZ);
const G4String& FindDirectoryPath();
G4double ComputeScatteringFunction(G4double x, G4int Z);
G4ParticleChangeForGamma* fParticleChange;
@@ -87,10 +88,11 @@ private:
static G4PhysicsFreeVector* data[101]; // 101 because Z range is 1-100
static const G4double ScatFuncFitParam[101][16];
static G4String gDataDirectory;
G4int verboseLevel;
G4int maxZ;
G4bool isInitialised;
G4int maxZ = 100;
G4bool isInitialised = false;
};
@@ -25,8 +25,8 @@
//
// Author: Zhuxin Li@CENBG
// 11 March 2020
// on the base of G4LivermoreGammaConversionModel
// derives from G4BetheHeitler5DModel
// on the base of G4LivermoreGammaConversionModel
// derives from G4BetheHeitler5DModel
// -------------------------------------------------------------------
#ifndef G4LivermoreGammaConversion5DModel_h
@@ -42,39 +42,35 @@ class G4PhysicsLogVector;
class G4LivermoreGammaConversion5DModel : public G4BetheHeitler5DModel
{
public:
explicit G4LivermoreGammaConversion5DModel(
const G4ParticleDefinition* p = nullptr,
const G4String& nam = "Livermore5DConversion");
virtual ~G4LivermoreGammaConversion5DModel();
explicit G4LivermoreGammaConversion5DModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "Livermore5DConversion");
~G4LivermoreGammaConversion5DModel() override;
void Initialise(const G4ParticleDefinition*,
const G4DataVector&) override;
void InitialiseForElement(const G4ParticleDefinition*,
G4int Z) override;
G4double ComputeCrossSectionPerAtom(
const G4ParticleDefinition*,
G4double kinEnergy,
G4double Z,
G4double A=0.0,
G4double cut=0.0,
G4double emax=DBL_MAX) override;
void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
void InitialiseForElement(const G4ParticleDefinition*, G4int Z) override;
G4LivermoreGammaConversion5DModel & operator=
(const G4LivermoreGammaConversion5DModel &right) = delete;
G4LivermoreGammaConversion5DModel(const G4LivermoreGammaConversion5DModel&) = delete;
G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*, G4double kinEnergy, G4double Z,
G4double A = 0.0, G4double cut = 0.0,
G4double emax = DBL_MAX) override;
G4LivermoreGammaConversion5DModel&
operator=(const G4LivermoreGammaConversion5DModel& right) = delete;
G4LivermoreGammaConversion5DModel(const G4LivermoreGammaConversion5DModel&) = delete;
private:
void ReadData(size_t Z, const char* path = nullptr);
const G4String& FindDirectoryPath();
void ReadData(const G4int ZZ);
G4ParticleChangeForGamma* fParticleChange;
static const G4int maxZ =101;
static G4PhysicsFreeVector* data[maxZ]; // 101 because Z range is 1-100
static G4PhysicsFreeVector* data[101]; // 101 because Z range is 1-100
static G4String gDataDirectory;
G4double lowEnergyLimit;
G4int verboseLevel;
static G4double lowEnergyLimit;
G4int maxZ = 100;
G4bool useSpline = false;
G4bool isInitialised = false;
};
#endif
@@ -50,7 +50,7 @@ public:
explicit G4LivermoreGammaConversionModel(
const G4ParticleDefinition* p = nullptr,
const G4String& nam = "LivermoreConversion");
virtual ~G4LivermoreGammaConversionModel();
~G4LivermoreGammaConversionModel() override;
void Initialise(const G4ParticleDefinition*,
const G4DataVector&) override;
@@ -68,13 +68,19 @@ public:
G4LivermoreGammaConversionModel(const G4LivermoreGammaConversionModel&) = delete;
private:
void ReadData(size_t Z, const char* path = nullptr);
static G4PhysicsFreeVector* data[101]; // 101 because Z range is 1-100
static G4double lowEnergyLimit;
void ReadData(const G4int ZZ);
const G4String& FindDirectoryPath();
G4int verboseLevel;
G4ParticleChangeForGamma* fParticleChange;
G4int maxZ;
static G4PhysicsFreeVector* data[101]; // 101 because Z range is 1-100
static G4String gDataDirectory;
G4double lowEnergyLimit;
G4int verboseLevel;
G4int maxZ = 100;
G4bool useSpline = false;
G4bool isInitialised = false;
};
@@ -34,13 +34,12 @@
// 22 Oct 2012 A & V Ivanchenko Migration data structure to G4PhysicsVector
// 1 June 2017 M Bandieramonte
#ifndef G4LivermorePhotoElectricModel_h
#define G4LivermorePhotoElectricModel_h 1
#include "G4VEmModel.hh"
#include "G4ElementData.hh"
#include "G4Threading.hh"
#include "G4VEmModel.hh"
#include <vector>
class G4ParticleChangeForGamma;
@@ -51,82 +50,64 @@ class G4LivermorePhotoElectricModel : public G4VEmModel
{
public:
explicit G4LivermorePhotoElectricModel(const G4String& nam = "LivermorePhElectric");
virtual ~G4LivermorePhotoElectricModel();
~G4LivermorePhotoElectricModel() override;
void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
G4double CrossSectionPerVolume(const G4Material*,
const G4ParticleDefinition*,
G4double energy,
G4double cutEnergy = 0.0,
G4double maxEnergy = DBL_MAX) override;
G4double ComputeCrossSectionPerAtom(
const G4ParticleDefinition*,
G4double energy,
G4double Z,
G4double A=0,
G4double cut=0,
G4double emax=DBL_MAX) override;
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy) override;
G4double CrossSectionPerVolume(const G4Material*, const G4ParticleDefinition*, G4double energy,
G4double cutEnergy = 0.0, G4double maxEnergy = DBL_MAX) override;
G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*, G4double energy, G4double Z,
G4double A = 0, G4double cut = 0,
G4double emax = DBL_MAX) override;
void SampleSecondaries(std::vector<G4DynamicParticle*>*, const G4MaterialCutsCouple*,
const G4DynamicParticle*, G4double tmin, G4double maxEnergy) override;
void InitialiseForElement(const G4ParticleDefinition*, G4int Z) override;
inline void SetLimitNumberOfShells(G4int);
G4double GetBindingEnergy (G4int Z, G4int shell);
G4LivermorePhotoElectricModel & operator=
(const G4LivermorePhotoElectricModel &right) = delete;
[[maybe_unused]] inline void SetLimitNumberOfShells(G4int);
G4double GetBindingEnergy(G4int Z, G4int shell);
G4LivermorePhotoElectricModel& operator=(const G4LivermorePhotoElectricModel& right) = delete;
G4LivermorePhotoElectricModel(const G4LivermorePhotoElectricModel&) = delete;
protected:
G4ParticleChangeForGamma* fParticleChange;
private:
void ReadData(G4int Z);
const G4String& FindDirectoryPath();
const G4ParticleDefinition* theGamma;
const G4ParticleDefinition* theElectron;
static G4PhysicsFreeVector* fCrossSection[101]; // 101 because Z range is 1-100
static G4PhysicsFreeVector* fCrossSectionLE[101];
static std::vector<G4double>* fParamHigh[101];
static std::vector<G4double>* fParamLow[101];
static G4int fNShells[101];
static G4int fNShellsUsed[101];
static G4ElementData* fShellCrossSection;
static G4Material* fWater;
static G4double fWaterEnergyLimit;
static G4String fDataDirectory;
#ifdef G4MULTITHREADED
static G4Mutex livPhotoeffMutex;
#endif
G4VAtomDeexcitation* fAtomDeexcitation;
std::vector<G4double> fSandiaCof;
protected:
G4ParticleChangeForGamma* fParticleChange = nullptr;
G4double fCurrSection;
G4int verboseLevel;
G4int maxZ;
G4int nShellLimit;
G4bool fDeexcitationActive;
G4bool isInitialised;
private:
void ReadData(const G4int Z);
const G4String& FindDirectoryPath();
const G4ParticleDefinition* theGamma;
const G4ParticleDefinition* theElectron;
static G4PhysicsFreeVector* fCrossSection[101]; // 101 because Z range is 1-100
static G4PhysicsFreeVector* fCrossSectionLE[101];
static std::vector<G4double>* fParamHigh[101];
static std::vector<G4double>* fParamLow[101];
static G4int fNShells[101];
static G4int fNShellsUsed[101];
static G4ElementData* fShellCrossSection;
static G4Material* fWater;
static G4double fWaterEnergyLimit;
static G4String fDataDirectory;
G4VAtomDeexcitation* fAtomDeexcitation = nullptr;
std::vector<G4double> fSandiaCof;
G4double fCurrSection = 0.0;
G4int verboseLevel;
G4int maxZ = 100;
G4int nShellLimit = 100;
G4bool fDeexcitationActive = false;
G4bool isInitialised = false;
};
inline
void G4LivermorePhotoElectricModel::SetLimitNumberOfShells(G4int n)
[[maybe_unused]] inline void G4LivermorePhotoElectricModel::SetLimitNumberOfShells(G4int n)
{
nShellLimit = n;
nShellLimit = n;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -31,55 +31,49 @@
#ifndef G4LivermoreRayleighModel_h
#define G4LivermoreRayleighModel_h 1
#include "G4VEmModel.hh"
#include "G4ParticleChangeForGamma.hh"
#include "G4PhysicsFreeVector.hh"
#include "G4ProductionCutsTable.hh"
#include "G4VEmModel.hh"
class G4LivermoreRayleighModel : public G4VEmModel
{
public:
explicit G4LivermoreRayleighModel();
~G4LivermoreRayleighModel();
~G4LivermoreRayleighModel() override;
void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
void InitialiseLocal(const G4ParticleDefinition*,
G4VEmModel* masterModel) override;
void InitialiseLocal(const G4ParticleDefinition*, G4VEmModel* masterModel) override;
void InitialiseForElement(const G4ParticleDefinition*, G4int Z) override;
G4double ComputeCrossSectionPerAtom(
const G4ParticleDefinition*,
G4double kinEnergy,
G4double Z,
G4double A=0,
G4double cut=0,
G4double emax=DBL_MAX) override;
G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*, G4double kinEnergy, G4double Z,
G4double A = 0, G4double cut = 0,
G4double emax = DBL_MAX) override;
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy) override;
void SampleSecondaries(std::vector<G4DynamicParticle*>*, const G4MaterialCutsCouple*,
const G4DynamicParticle*, G4double tmin, G4double maxEnergy) override;
inline void SetLowEnergyThreshold(G4double);
[[maybe_unused]] inline void SetLowEnergyThreshold(G4double);
G4LivermoreRayleighModel & operator=(const G4LivermoreRayleighModel &right) = delete;
G4LivermoreRayleighModel& operator=(const G4LivermoreRayleighModel& right) = delete;
G4LivermoreRayleighModel(const G4LivermoreRayleighModel&) = delete;
private:
void ReadData(size_t Z, const char* path = 0);
void ReadData(const G4int ZZ);
const G4String& FindDirectoryPath();
G4ParticleChangeForGamma* fParticleChange;
static G4PhysicsFreeVector* dataCS[101]; // 101 because Z range is 1-100
static G4PhysicsFreeVector* dataCS[101]; // 101 because Z range is 1-100
static G4String gDataDirectory;
G4double lowEnergyLimit;
G4double lowEnergyLimit;
G4int verboseLevel;
G4int maxZ;
G4bool isInitialised;
G4int maxZ = 100;
G4bool isInitialised = false;
};
inline void G4LivermoreRayleighModel::SetLowEnergyThreshold(G4double val)
[[maybe_unused]] inline void G4LivermoreRayleighModel::SetLowEnergyThreshold(G4double val)
{
lowEnergyLimit = val;
}
@@ -58,7 +58,7 @@ class G4LowEWentzelVIModel : public G4WentzelVIModel
{
public:
explicit G4LowEWentzelVIModel();
virtual ~G4LowEWentzelVIModel();
~G4LowEWentzelVIModel() override = default;
G4double ComputeTruePathLengthLimit(const G4Track& track,
G4double& currentMinimalStep) override;