Import Geant4 11.0.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2021-06-25 16:12:29 +02:00
parent c968e26a39
commit 6399a014b6
4200 changed files with 207479 additions and 237366 deletions
@@ -178,8 +178,6 @@ private:
G4int verbose = 0;
G4bool isMaster = false;
G4String currentParticleName = "";
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -50,51 +50,37 @@ class G4ErrorEnergyLoss : public G4VContinuousProcess
public:
explicit G4ErrorEnergyLoss(const G4String& processName = "G4ErrorEnergyLoss",
G4ProcessType type = fElectromagnetic);
virtual ~G4ErrorEnergyLoss();
G4ProcessType type = fElectromagnetic);
~G4ErrorEnergyLoss() override;
G4bool IsApplicable(const G4ParticleDefinition& aParticleType) override;
// Returns true -> 'is applicable', for all charged particles.
G4double GetContinuousStepLimit(const G4Track& aTrack,
G4double ,
G4double currentMinimumStep,
G4double, G4double currentMinimumStep,
G4double& ) override;
// Returns DBL_MAX as continuous step limit
G4VParticleChange* AlongStepDoIt(const G4Track& aTrack,
const G4Step& aStep) override;
// This is the method implementing the energy loss process.
// Get and Set methods
G4double GetStepLimit() const { return theStepLimit; }
void SetStepLimit( G4double val ) { theStepLimit = val; }
private:
void InstantiateEforExtrapolator();
// Create the G4EnergyLossForExtrapolator
inline G4double GetStepLimit() const { return theStepLimit; }
inline void SetStepLimit( G4double val ) { theStepLimit = val; }
// copy constructor and hide assignment operator
G4ErrorEnergyLoss(G4ErrorEnergyLoss &) = delete;
G4ErrorEnergyLoss & operator=(const G4ErrorEnergyLoss &right) = delete;
private:
void InstantiateEforExtrapolator();
G4EnergyLossForExtrapolator* theELossForExtrapolator;
G4double theStepLimit;
G4double theFractionLimit = 0.2;
};
////////////////////
// Inline methods
////////////////////
inline
G4bool G4ErrorEnergyLoss::IsApplicable(const G4ParticleDefinition& aParticleType)
{
return (aParticleType.GetPDGCharge() != 0);
}
#endif /* G4ErrorEnergyLoss_hh */
#endif
@@ -59,21 +59,21 @@ public:
explicit G4ModifiedMephi(const G4String& name = "");
virtual ~G4ModifiedMephi();
~G4ModifiedMephi() override;
virtual G4ThreeVector& SampleDirection(const G4DynamicParticle* dp,
G4double gEnergy, G4int Z,
const G4Material* mat = nullptr) final;
G4ThreeVector& SampleDirection(const G4DynamicParticle* dp,
G4double gEnergy, G4int Z,
const G4Material* mat = nullptr) final;
virtual void SamplePairDirections(const G4DynamicParticle* dp,
G4double elecKinEnergy,
G4double posiKinEnergy,
G4ThreeVector& dirElectron,
G4ThreeVector& dirPositron,
G4int Z = 0,
const G4Material* mat = nullptr) final;
void SamplePairDirections(const G4DynamicParticle* dp,
G4double elecKinEnergy,
G4double posiKinEnergy,
G4ThreeVector& dirElectron,
G4ThreeVector& dirPositron,
G4int Z = 0,
const G4Material* mat = nullptr) final;
virtual void PrintGeneratorInformation() const final;
void PrintGeneratorInformation() const override;
// hide assignment operator
G4ModifiedMephi & operator=(const G4ModifiedMephi &right) = delete;
@@ -75,65 +75,64 @@ public:
~G4MuBetheBlochModel() = default;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector&) override;
void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
virtual G4double MinEnergyCut(const G4ParticleDefinition*,
const G4MaterialCutsCouple*) override;
G4double MinEnergyCut(const G4ParticleDefinition*,
const G4MaterialCutsCouple*) override;
virtual G4double ComputeCrossSectionPerElectron(
G4double ComputeCrossSectionPerElectron(
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double cutEnergy,
G4double maxEnergy);
virtual G4double ComputeCrossSectionPerAtom(
G4double ComputeCrossSectionPerAtom(
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double Z, G4double A,
G4double cutEnergy,
G4double maxEnergy) override;
virtual G4double CrossSectionPerVolume(const G4Material*,
G4double CrossSectionPerVolume(const G4Material*,
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double cutEnergy,
G4double maxEnergy) override;
virtual G4double ComputeDEDXPerVolume(const G4Material*,
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double cutEnergy) override;
G4double ComputeDEDXPerVolume(const G4Material*,
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double cutEnergy) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy) override;
protected:
virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
G4double kinEnergy) override;
private:
inline void SetParticle(const G4ParticleDefinition* p);
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy) override;
// hide assignment operator
G4MuBetheBlochModel & operator=(const G4MuBetheBlochModel &right) = delete;
G4MuBetheBlochModel(const G4MuBetheBlochModel&) = delete;
const G4ParticleDefinition* particle;
G4ParticleDefinition* theElectron;
G4ParticleChangeForLoss* fParticleChange;
G4EmCorrections* corr;
protected:
G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
G4double kinEnergy) override;
private:
inline void SetParticle(const G4ParticleDefinition* p);
const G4ParticleDefinition* particle = nullptr;
G4ParticleDefinition* theElectron = nullptr;
G4ParticleChangeForLoss* fParticleChange = nullptr;
G4EmCorrections* corr = nullptr;
G4double limitKinEnergy;
G4double logLimitKinEnergy;
G4double mass;
G4double massSquare;
G4double ratio;
G4double mass = 1.0;
G4double massSquare = 1.0;
G4double ratio = 1.0;
G4double twoln10;
G4double alphaprime;
static G4double xgi[8],wgi[8];
@@ -143,7 +142,7 @@ private:
inline void G4MuBetheBlochModel::SetParticle(const G4ParticleDefinition* p)
{
if(!particle) {
if(nullptr == particle) {
particle = p;
mass = particle->GetPDGMass();
massSquare = mass*mass;
@@ -83,31 +83,26 @@ public:
~G4MuBremsstrahlung() = default;
virtual G4bool IsApplicable(const G4ParticleDefinition& p) override;
G4bool IsApplicable(const G4ParticleDefinition& p) override;
virtual G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
const G4Material*,
G4double cut) override;
virtual void PrintInfo() override;
G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
const G4Material*, G4double cut) override;
inline void SetLowestKineticEnergy(G4double e);
// print description in html
virtual void ProcessDescription(std::ostream&) const override;
void ProcessDescription(std::ostream&) const override;
G4MuBremsstrahlung & operator=(const G4MuBremsstrahlung &right) = delete;
G4MuBremsstrahlung(const G4MuBremsstrahlung&) = delete;
protected:
virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
const G4ParticleDefinition*) override;
protected:
void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
const G4ParticleDefinition*) override;
G4double lowestKinEnergy;
G4bool isInitialised;
G4bool isInitialised = false;
};
@@ -63,6 +63,7 @@
#include "G4VEmModel.hh"
#include "G4NistManager.hh"
#include "G4Threading.hh"
class G4Element;
class G4ParticleChangeForLoss;
@@ -73,42 +74,40 @@ class G4MuBremsstrahlungModel : public G4VEmModel
public:
explicit G4MuBremsstrahlungModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "MuBrem");
const G4String& nam = "MuBrem");
~G4MuBremsstrahlungModel() = default;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector&) override;
void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
virtual void InitialiseLocal(const G4ParticleDefinition*,
G4VEmModel* masterModel) override;
void InitialiseLocal(const G4ParticleDefinition*,
G4VEmModel* masterModel) override;
virtual G4double MinEnergyCut(const G4ParticleDefinition*,
const G4MaterialCutsCouple*) override;
G4double MinEnergyCut(const G4ParticleDefinition*,
const G4MaterialCutsCouple*) override;
virtual G4double ComputeCrossSectionPerAtom(
G4double ComputeCrossSectionPerAtom(
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double Z, G4double A,
G4double cutEnergy,
G4double maxEnergy) override;
virtual G4double ComputeDEDXPerVolume(const G4Material*,
G4double ComputeDEDXPerVolume(const G4Material*,
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double cutEnergy) override;
virtual 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 SetLowestKineticEnergy(G4double e);
virtual G4double MinPrimaryEnergy(const G4Material*,
const G4ParticleDefinition*,
G4double) override;
G4double MinPrimaryEnergy(const G4Material*, const G4ParticleDefinition*,
G4double) override;
// hide assignment operator
G4MuBremsstrahlungModel &
@@ -131,20 +130,20 @@ protected:
protected:
const G4ParticleDefinition* particle;
G4NistManager* nist;
G4double mass;
G4double rmass;
G4double cc;
G4double coeff;
G4double sqrte;
G4double bh;
G4double bh1;
G4double btf;
G4double btf1;
const G4ParticleDefinition* particle = nullptr;
G4ParticleDefinition* theGamma = nullptr;
G4ParticleChangeForLoss* fParticleChange = nullptr;
G4NistManager* nist = nullptr;
G4ParticleDefinition* theGamma;
G4ParticleChangeForLoss* fParticleChange;
G4double mass = 1.0;
G4double rmass = 1.0;
G4double cc = 1.0;
G4double coeff = 1.0;
G4double sqrte;
G4double bh = 202.4;
G4double bh1 = 446.;
G4double btf = 183.;
G4double btf1 = 1429.;
G4double lowestKinEnergy;
G4double minThreshold;
@@ -153,6 +152,10 @@ protected:
static const G4double wgi[6];
static G4double fDN[93];
#ifdef G4MULTITHREADED
static G4Mutex theMuBremMutex;
#endif
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -167,12 +170,12 @@ inline void G4MuBremsstrahlungModel::SetLowestKineticEnergy(G4double e)
inline
void G4MuBremsstrahlungModel::SetParticle(const G4ParticleDefinition* p)
{
if(!particle) {
if(nullptr == particle) {
particle = p;
mass = particle->GetPDGMass();
rmass=mass/CLHEP::electron_mass_c2 ;
cc=CLHEP::classic_electr_radius/rmass ;
coeff= 16.*CLHEP::fine_structure_const*cc*cc/3. ;
rmass = mass/CLHEP::electron_mass_c2 ;
cc = CLHEP::classic_electr_radius/rmass ;
coeff = 16.*CLHEP::fine_structure_const*cc*cc/3. ;
}
}
@@ -74,8 +74,6 @@
#define G4MuIonisation_h 1
#include "G4VEnergyLossProcess.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
#include "globals.hh"
#include "G4VEmModel.hh"
@@ -90,34 +88,33 @@ public:
~G4MuIonisation() = default;
virtual G4bool IsApplicable(const G4ParticleDefinition& p) override;
G4bool IsApplicable(const G4ParticleDefinition& p) override;
virtual G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
const G4Material*, G4double cut) override;
G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
const G4Material*, G4double cut) override;
// Print out of the class parameters
virtual void PrintInfo() override;
// print description in html
virtual void ProcessDescription(std::ostream&) const override;
protected:
virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
const G4ParticleDefinition*) override;
private:
void ProcessDescription(std::ostream&) const override;
// hide assignment operator
G4MuIonisation & operator=(const G4MuIonisation &right) = delete;
G4MuIonisation(const G4MuIonisation&) = delete;
G4double mass;
G4double ratio;
protected:
const G4ParticleDefinition* theParticle;
const G4ParticleDefinition* theBaseParticle;
G4bool isInitialised;
void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
const G4ParticleDefinition*) override;
private:
const G4ParticleDefinition* theParticle = nullptr;
const G4ParticleDefinition* theBaseParticle = nullptr;
G4double mass = 0.0;
G4double ratio = 0.0;
G4bool isInitialised = false;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -69,24 +69,24 @@ public: // with description
G4bool IsApplicable (const G4ParticleDefinition& p) override;
// print description in html
virtual void ProcessDescription(std::ostream&) const override;
protected:
// Print out of the class parameters
virtual void StreamProcessInfo(std::ostream& outFile) const override;
// This function initialise models
void InitialiseProcess(const G4ParticleDefinition*) override;
private: // data members
void ProcessDescription(std::ostream&) const override;
// hide assignment operator
G4MuMultipleScattering &
operator=(const G4MuMultipleScattering &right) = delete;
G4MuMultipleScattering(const G4MuMultipleScattering&) = delete;
G4bool isInitialized;
protected:
// Print out of the class parameters
void StreamProcessInfo(std::ostream& outFile) const override;
// This function initialise models
void InitialiseProcess(const G4ParticleDefinition*) override;
private:
G4bool isInitialized = false;
};
@@ -78,35 +78,32 @@ public:
~G4MuPairProduction() = default;
virtual G4bool IsApplicable(const G4ParticleDefinition& p) override;
G4bool IsApplicable(const G4ParticleDefinition& p) override;
virtual G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
const G4Material*, G4double cut) override;
G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
const G4Material*, G4double cut) override;
inline void SetLowestKineticEnergy(G4double e);
// print description in html
virtual void ProcessDescription(std::ostream&) const override;
protected:
// Print out of the class parameters
virtual void StreamProcessInfo(std::ostream& outFile) const override;
virtual void
InitialiseEnergyLossProcess(const G4ParticleDefinition*,
const G4ParticleDefinition*) override;
private:
void ProcessDescription(std::ostream&) const override;
G4MuPairProduction & operator=(const G4MuPairProduction &right) = delete;
G4MuPairProduction(const G4MuPairProduction&) = delete;
protected:
const G4ParticleDefinition* theParticle;
// Print out of the class parameters
void StreamProcessInfo(std::ostream& outFile) const override;
void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
const G4ParticleDefinition*) override;
private:
const G4ParticleDefinition* theParticle = nullptr;
G4double lowestKinEnergy;
G4bool isInitialised;
G4bool isInitialised = false;
};
@@ -75,35 +75,33 @@ public:
explicit G4MuPairProductionModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "muPairProd");
virtual ~G4MuPairProductionModel();
virtual ~G4MuPairProductionModel() override;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector&) override;
void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
virtual void InitialiseLocal(const G4ParticleDefinition*,
G4VEmModel* masterModel) override;
void InitialiseLocal(const G4ParticleDefinition*,
G4VEmModel* masterModel) override;
virtual G4double ComputeCrossSectionPerAtom(
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double Z, G4double A,
G4double cutEnergy,
G4double maxEnergy) override;
G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
G4double kineticEnergy,
G4double Z, G4double A,
G4double cutEnergy,
G4double maxEnergy) override;
virtual G4double ComputeDEDXPerVolume(const G4Material*,
G4double ComputeDEDXPerVolume(const G4Material*,
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double cutEnergy) override;
virtual 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;
virtual G4double MinPrimaryEnergy(const G4Material*,
const G4ParticleDefinition*,
G4double) override;
G4double MinPrimaryEnergy(const G4Material*,
const G4ParticleDefinition*,
G4double) override;
inline void SetLowestKineticEnergy(G4double e);
@@ -145,34 +143,34 @@ private:
protected:
const G4ParticleDefinition* particle;
G4NistManager* nist;
G4ParticleDefinition* theElectron = nullptr;
G4ParticleDefinition* thePositron = nullptr;
G4ParticleChangeForLoss* fParticleChange = nullptr;
const G4ParticleDefinition* particle = nullptr;
G4NistManager* nist = nullptr;
G4double factorForCross;
G4double sqrte;
G4double particleMass;
G4double z13;
G4double z23;
G4double lnZ;
G4int currentZ;
G4ParticleDefinition* theElectron;
G4ParticleDefinition* thePositron;
G4ParticleChangeForLoss* fParticleChange;
G4double particleMass = 0.0;
G4double z13 = 0.0;
G4double z23 = 0.0;
G4double lnZ = 0.0;
G4double minPairEnergy;
G4double lowestKinEnergy;
// gamma energy bins
G4int nYBinPerDecade;
size_t nbiny;
size_t nbine;
G4double ymin;
G4double dy;
G4double emin;
G4double emax;
G4double ymin = -5.0;
G4double dy = 0.005;
G4bool fTableToFile;
G4int currentZ = 0;
G4int nYBinPerDecade = 4;
size_t nbiny = 1000;
size_t nbine = 0;
G4bool fTableToFile = false;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -187,7 +185,7 @@ inline void G4MuPairProductionModel::SetLowestKineticEnergy(G4double e)
inline
void G4MuPairProductionModel::SetParticle(const G4ParticleDefinition* p)
{
if(!particle) {
if(nullptr == particle) {
particle = p;
particleMass = particle->GetPDGMass();
}
@@ -218,7 +216,7 @@ G4MuPairProductionModel::FindScaledEnergy(G4int Z, G4double rand,
{
G4double res = yymin;
G4Physics2DVector* pv = fElementData->GetElement2DData(Z);
if(!pv) {
if(nullptr == pv) {
DataCorrupted(Z, logTkin);
} else {
G4double pmin = pv->Value(yymin, logTkin);
@@ -72,6 +72,9 @@ public:
// print description in html
virtual void ProcessDescription(std::ostream&) const override;
G4ePairProduction & operator=(const G4ePairProduction &right) = delete;
G4ePairProduction(const G4ePairProduction&) = delete;
protected:
// Print out of the class parameters
@@ -80,16 +83,9 @@ protected:
virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
const G4ParticleDefinition*) override;
private:
G4ePairProduction & operator=(const G4ePairProduction &right) = delete;
G4ePairProduction(const G4ePairProduction&) = delete;
protected:
const G4ParticleDefinition* theParticle;
const G4ParticleDefinition* theParticle = nullptr;
G4double lowestKinEnergy;
G4bool isInitialised;
G4bool isInitialised = false;
};