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
@@ -59,7 +59,6 @@
#include "G4ionEffectiveCharge.hh"
#include "G4Material.hh"
#include "G4ParticleDefinition.hh"
#include "G4Threading.hh"
class G4VEmModel;
class G4PhysicsVector;
@@ -73,7 +72,7 @@ class G4EmCorrections
public:
explicit G4EmCorrections(G4int verb);
explicit G4EmCorrections(G4int verb, G4bool master);
~G4EmCorrections();
@@ -194,63 +193,60 @@ private:
const G4ParticleDefinition* particle = nullptr;
const G4ParticleDefinition* curParticle = nullptr;
const G4Material* material = nullptr;
const G4Material* curMaterial = nullptr;
const G4ElementVector* theElementVector = nullptr;
const G4double* atomDensity = nullptr;
const G4Material* material = nullptr;
const G4Material* curMaterial = nullptr;
const G4ElementVector* theElementVector = nullptr;
const G4double* atomDensity = nullptr;
G4PhysicsVector* curVector = nullptr;
G4PhysicsVector* curVector = nullptr;
G4VEmModel* ionLEModel = nullptr;
G4VEmModel* ionHEModel = nullptr;
G4VEmModel* ionLEModel = nullptr;
G4VEmModel* ionHEModel = nullptr;
G4double kinEnergy = 0.0;
G4double mass = 0.0;
G4double massFactor = 1.0;
G4double eth;
G4double tau = 0.0;
G4double gamma = 1.0;
G4double bg2 = 0.0;
G4double beta2 = 0.0;
G4double beta = 0.0;
G4double ba2 = 0.0;
G4double tmax = 0.0;
G4double charge = 0.0;
G4double q2 = 0.0;
G4double eCorrMin;
G4double eCorrMax;
G4double kinEnergy = 0.0;
G4double mass = 0.0;
G4double massFactor = 1.0;
G4double tau = 0.0;
G4double gamma = 1.0;
G4double bg2 = 0.0;
G4double beta2 = 0.0;
G4double beta = 0.0;
G4double ba2 = 0.0;
G4double tmax = 0.0;
G4double charge = 0.0;
G4double q2 = 0.0;
G4double eth;
G4double eCorrMin;
G4double eCorrMax;
G4bool isMaster = false;
size_t ncouples = 0;
G4int verbose;
G4int nK;
G4int nL;
G4int nEtaK;
G4int nEtaL;
G4int nbinCorr = 52;
G4int numberOfElements = 0;
std::size_t ncouples = 0;
G4int nK = 20;
G4int nL = 26;
G4int nEtaK = 29;
G4int nEtaL = 28;
G4int nbinCorr = 52;
G4int numberOfElements = 0;
// Ion stopping data
G4int nIons = 0;
G4int idx = 0;
G4int currentZ = 0;
G4int nIons = 0;
G4int idx = 0;
G4int currentZ = 0;
std::vector<G4int> Zion;
std::vector<G4int> Aion;
std::vector<G4String> materialName;
G4int verbose;
G4bool isMaster;
std::vector<G4int> Zion;
std::vector<G4int> Aion;
std::vector<G4String> materialName;
std::vector<const G4ParticleDefinition*> ionList;
std::map< G4int, std::vector<G4double> > thcorr;
std::vector<const G4Material*> currmat;
std::vector<const G4Material*> materialList;
std::vector<G4PhysicsVector*> stopData;
std::vector<G4PhysicsVector*> stopData;
G4ionEffectiveCharge effCharge;
G4ionEffectiveCharge effCharge;
static const G4double ZD[11];
static const G4double UK[20];
@@ -265,10 +261,6 @@ private:
static G4PhysicsFreeVector* sBarkasCorr;
static G4PhysicsFreeVector* sThetaK;
static G4PhysicsFreeVector* sThetaL;
#ifdef G4MULTITHREADED
static G4Mutex theCorrMutex;
#endif
};
inline G4int
@@ -385,6 +385,8 @@ public:
void DefineRegParamForEM(G4VEmProcess*) const;
void DefineRegParamForDeex(G4VAtomDeexcitation*) const;
const G4String& GetDirLEDATA() const;
G4EmParameters(G4EmParameters &) = delete;
G4EmParameters & operator=(const G4EmParameters &right) = delete;
@@ -463,6 +465,8 @@ private:
G4NuclearFormfactorType nucFormfactor;
G4eSingleScatteringType fSStype;
G4EmFluctuationType fFluct;
G4String fDirLEDATA;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -90,13 +90,13 @@ public:
//-------------------------------------------------
void PreparePhysicsTable(const G4ParticleDefinition* aParticle,
G4VEnergyLossProcess* p, G4bool theMaster);
G4VEnergyLossProcess* p);
void PreparePhysicsTable(const G4ParticleDefinition* aParticle,
G4VEmProcess* p, G4bool theMaster);
G4VEmProcess* p);
void PreparePhysicsTable(const G4ParticleDefinition* aParticle,
G4VMultipleScattering* p, G4bool theMaster);
G4VMultipleScattering* p);
void BuildPhysicsTable(const G4ParticleDefinition* aParticle);
@@ -255,49 +255,49 @@ private:
typedef const G4ParticleDefinition* PD;
std::map<PD,G4VEnergyLossProcess*,std::less<PD> > loss_map;
// cache
G4VEnergyLossProcess* currentLoss{nullptr};
PD currentParticle{nullptr};
PD theElectron;
PD theGenericIon{nullptr};
PD firstParticle{nullptr};
G4LossTableBuilder* tableBuilder;
G4EmCorrections* emCorrections;
G4EmConfigurator* emConfigurator{nullptr};
G4ElectronIonPair* emElectronIonPair{nullptr};
G4NIELCalculator* nielCalculator{nullptr};
G4VAtomDeexcitation* atomDeexcitation{nullptr};
G4VSubCutProducer* subcutProducer{nullptr};
G4EmParameters* theParameters;
G4VEmProcess* gGeneral{nullptr};
G4VEmProcess* eGeneral{nullptr};
G4VEmProcess* pGeneral{nullptr};
G4int verbose;
G4int n_loss{0};
G4int run{-1};
G4bool all_tables_are_built{false};
G4bool startInitialisation{false};
G4bool isMaster{true};
std::vector<G4VEnergyLossProcess*> loss_vector;
std::vector<PD> part_vector;
std::vector<PD> base_part_vector;
std::vector<G4bool> tables_are_built;
std::vector<G4bool> isActive;
std::vector<G4PhysicsTable*> dedx_vector;
std::vector<G4PhysicsTable*> range_vector;
std::vector<G4PhysicsTable*> inv_range_vector;
std::vector<G4bool> tables_are_built;
std::vector<G4bool> isActive;
std::vector<G4VMultipleScattering*> msc_vector;
std::vector<G4VEmProcess*> emp_vector;
std::vector<G4VEmModel*> mod_vector;
std::vector<G4VEmFluctuationModel*> fmod_vector;
std::vector<G4VProcess*> p_vector;
// cache
G4VEnergyLossProcess* currentLoss;
PD currentParticle;
PD theElectron;
PD theGenericIon;
PD firstParticle;
G4LossTableBuilder* tableBuilder;
G4EmCorrections* emCorrections;
G4EmConfigurator* emConfigurator;
G4ElectronIonPair* emElectronIonPair;
G4NIELCalculator* nielCalculator;
G4VAtomDeexcitation* atomDeexcitation;
G4VSubCutProducer* subcutProducer;
G4EmParameters* theParameters;
G4VEmProcess* gGeneral;
G4VEmProcess* eGeneral;
G4VEmProcess* pGeneral;
G4int verbose;
G4int n_loss;
G4int run;
G4bool all_tables_are_built;
G4bool startInitialisation;
G4bool isMaster;
std::map<PD,G4VEnergyLossProcess*,std::less<PD> > loss_map;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -317,6 +317,10 @@ public:
void SetCrossSectionTable(G4PhysicsTable*, G4bool isLocal);
G4bool LPMFlag() const;
void SetLPMFlag(G4bool val);
inline G4ElementData* GetElementData();
inline G4PhysicsTable* GetCrossSectionTable();
@@ -343,8 +347,6 @@ public:
inline G4double SecondaryThreshold() const;
inline G4bool LPMFlag() const;
inline G4bool DeexcitationFlag() const;
inline G4bool ForceBuildTableFlag() const;
@@ -367,8 +369,6 @@ public:
inline void SetSecondaryThreshold(G4double);
inline void SetLPMFlag(G4bool val);
inline void SetDeexcitationFlag(G4bool val);
inline void SetForceBuildTable(G4bool val);
@@ -447,7 +447,6 @@ protected:
private:
G4bool theLPMflag = false;
G4bool flagDeexcitation = false;
G4bool flagForceBuildTable = false;
G4bool isMaster = true;
@@ -673,13 +672,6 @@ inline G4double G4VEmModel::SecondaryThreshold() const
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4bool G4VEmModel::LPMFlag() const
{
return theLPMflag;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4bool G4VEmModel::DeexcitationFlag() const
{
return flagDeexcitation;
@@ -792,13 +784,6 @@ inline void G4VEmModel::SetSecondaryThreshold(G4double val)
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline void G4VEmModel::SetLPMFlag(G4bool val)
{
theLPMflag = val;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline void G4VEmModel::SetDeexcitationFlag(G4bool val)
{
flagDeexcitation = val;
@@ -505,7 +505,7 @@ private:
G4CrossSectionType fXSType = fEmOnePeak;
G4bool lossFluctuationFlag = true;
G4bool rndmStepFlag = false;
G4bool useCutAsFinalRange = false;
G4bool tablesAreBuilt = false;
G4bool spline = true;
G4bool isIon = false;
@@ -616,7 +616,8 @@ inline G4double G4VEnergyLossProcess::GetScaledRangeForScaledEnergy(G4double e)
coupleIdxRange = currentCoupleIndex;
fRangeEnergy = e;
fRange = reduceFactor*((*theRangeTableForLoss)[basedCoupleIndex])->Value(e, idxRange);
if(e < minKinEnergy) { fRange *= std::sqrt(e/minKinEnergy); }
if (fRange < 0.0) { fRange = 0.0; }
else if (e < minKinEnergy) { fRange *= std::sqrt(e/minKinEnergy); }
}
//G4cout << "G4VEnergyLossProcess::GetScaledRange: Idx= "
// << basedCoupleIndex << " E(MeV)= " << e
@@ -634,7 +635,8 @@ G4VEnergyLossProcess::GetScaledRangeForScaledEnergy(G4double e, G4double loge)
coupleIdxRange = currentCoupleIndex;
fRangeEnergy = e;
fRange = reduceFactor*((*theRangeTableForLoss)[basedCoupleIndex])->LogVectorValue(e, loge);
if(e < minKinEnergy) { fRange *= std::sqrt(e/minKinEnergy); }
if (fRange < 0.0) { fRange = 0.0; }
else if (e < minKinEnergy) { fRange *= std::sqrt(e/minKinEnergy); }
}
//G4cout << "G4VEnergyLossProcess::GetScaledRange: Idx= "
// << basedCoupleIndex << " E(MeV)= " << e
@@ -648,7 +650,8 @@ inline G4double
G4VEnergyLossProcess::GetLimitScaledRangeForScaledEnergy(G4double e)
{
G4double x = ((*theCSDARangeTable)[basedCoupleIndex])->Value(e, idxCSDA);
if(e < minKinEnergy) { x *= std::sqrt(e/minKinEnergy); }
if (x < 0.0) { x = 0.0; }
else if (e < minKinEnergy) { x *= std::sqrt(e/minKinEnergy); }
return x;
}
@@ -659,7 +662,8 @@ G4VEnergyLossProcess::GetLimitScaledRangeForScaledEnergy(G4double e,
G4double loge)
{
G4double x = ((*theCSDARangeTable)[basedCoupleIndex])->LogVectorValue(e, loge);
if(e < minKinEnergy) { x *= std::sqrt(e/minKinEnergy); }
if (x < 0.0) { x = 0.0; }
else if (e < minKinEnergy) { x *= std::sqrt(e/minKinEnergy); }
return x;
}