Import Geant4 10.7.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2020-06-26 10:23:25 +02:00
parent c02c370437
commit 67ba86d073
1871 changed files with 174422 additions and 131884 deletions
@@ -56,6 +56,7 @@
class G4EmExtraParametersMessenger;
class G4VEnergyLossProcess;
class G4VEmProcess;
class G4ParticleDefinition;
class G4VAtomDeexcitation;
class G4EmExtraParameters
@@ -88,6 +89,16 @@ public:
G4double GetStepFunctionMuHadP1() const;
G4double GetStepFunctionMuHadP2() const;
void SetStepFunctionLightIons(G4double v1, G4double v2);
G4double GetStepFunctionLightIonsP1() const;
G4double GetStepFunctionLightIonsP2() const;
void SetStepFunctionIons(G4double v1, G4double v2);
G4double GetStepFunctionIonsP1() const;
G4double GetStepFunctionIonsP2() const;
void FillStepFunction(const G4ParticleDefinition*, G4VEnergyLossProcess*) const;
// parameters per region or per process
void AddPAIModel(const G4String& particle,
const G4String& region,
@@ -116,8 +127,7 @@ public:
G4double energyLimit);
// initialisation methods
void DefineRegParamForLoss(G4VEnergyLossProcess*,
G4bool isElectron) const;
void DefineRegParamForLoss(G4VEnergyLossProcess*) const;
void DefineRegParamForEM(G4VEmProcess*) const;
G4EmExtraParameters(G4EmExtraParameters &) = delete;
@@ -139,6 +149,10 @@ private:
G4double finalRange;
G4double dRoverRangeMuHad;
G4double finalRangeMuHad;
G4double dRoverRangeLIons;
G4double finalRangeLIons;
G4double dRoverRangeIons;
G4double finalRangeIons;
G4double directionalSplittingRadius;
G4ThreeVector directionalSplittingTarget;
@@ -88,6 +88,8 @@ private:
G4UIcommand* bsCmd;
G4UIcommand* StepFuncCmd;
G4UIcommand* StepFuncCmd1;
G4UIcommand* StepFuncCmd2;
G4UIcommand* StepFuncCmd3;
G4UIcmdWith3VectorAndUnit* dirSplitTargetCmd;
};
@@ -101,6 +101,9 @@ public:
void SetPIXEElectronCrossSectionModel(const G4String&);
const G4String& PIXEElectronCrossSectionModel();
void SetLivermoreDataDir(const G4String&);
const G4String& LivermoreDataDir();
// parameters per region or per process
void AddMicroElec(const G4String& region);
const std::vector<G4String>& RegionsMicroElec() const;
@@ -141,6 +144,7 @@ private:
G4String namePIXE;
G4String nameElectronPIXE;
G4String livDataDir;
std::vector<G4String> m_regnamesME;
@@ -86,6 +86,7 @@ private:
G4UIcmdWithAString* pixeXsCmd;
G4UIcmdWithAString* pixeeXsCmd;
G4UIcmdWithAString* livCmd;
G4UIcmdWithAString* dnaSolCmd;
G4UIcmdWithAString* meCmd;
@@ -132,9 +132,6 @@ public:
void SetMuHadLateralDisplacement(G4bool val);
G4bool MuHadLateralDisplacement() const;
void SetLatDisplacementBeyondSafety(G4bool val);
G4bool LatDisplacementBeyondSafety() const;
void ActivateAngularGeneratorForIonisation(G4bool val);
G4bool UseAngularGeneratorForIonisation() const;
@@ -251,8 +248,10 @@ public:
G4double MaxEnergyFor5DMuPair() const;
void SetStepFunction(G4double v1, G4double v2);
void SetStepFunctionMuHad(G4double v1, G4double v2);
void SetStepFunctionLightIons(G4double v1, G4double v2);
void SetStepFunctionIons(G4double v1, G4double v2);
void FillStepFunction(const G4ParticleDefinition*, G4VEnergyLossProcess*) const;
void SetDirectionalSplittingRadius(G4double r);
G4double GetDirectionalSplittingRadius();
@@ -296,6 +295,9 @@ public:
void SetPIXEElectronCrossSectionModel(const G4String&);
const G4String& PIXEElectronCrossSectionModel();
void SetLivermoreDataDir(const G4String&);
const G4String& LivermoreDataDir();
// parameters per region or per process
void AddPAIModel(const G4String& particle,
const G4String& region,
@@ -337,8 +339,7 @@ public:
G4EmSaturation* GetEmSaturation();
// initialisation methods
void DefineRegParamForLoss(G4VEnergyLossProcess*,
G4bool isElectron) const;
void DefineRegParamForLoss(G4VEnergyLossProcess*) const;
void DefineRegParamForEM(G4VEmProcess*) const;
void DefineRegParamForDeex(G4VAtomDeexcitation*) const;
@@ -372,7 +373,6 @@ private:
G4bool lateralDisplacement;
G4bool lateralDisplacementAlg96;
G4bool muhadLateralDisplacement;
G4bool latDisplacementBeyondSafety;
G4bool useAngGeneratorForIonisation;
G4bool useMottCorrection;
G4bool integral;
@@ -90,7 +90,6 @@ private:
G4UIcmdWithABool* latCmd;
G4UIcmdWithABool* lat96Cmd;
G4UIcmdWithABool* mulatCmd;
G4UIcmdWithABool* catCmd;
G4UIcmdWithABool* delCmd;
G4UIcmdWithABool* IntegCmd;
G4UIcmdWithABool* mottCmd;
@@ -181,6 +181,8 @@ public:
void SetVerbose(G4int val);
void ResetParameters();
void SetAtomDeexcitation(G4VAtomDeexcitation*);
void SetSubCutProducer(G4VSubCutProducer*);
@@ -235,8 +237,6 @@ private:
void Clear();
void ResetParameters();
G4VEnergyLossProcess* BuildTables(const G4ParticleDefinition* aParticle);
void CopyTables(const G4ParticleDefinition* aParticle,
@@ -152,7 +152,8 @@ public:
// It returns the cross section per volume for energy/ material
G4double CrossSectionPerVolume(G4double kineticEnergy,
const G4MaterialCutsCouple* couple);
const G4MaterialCutsCouple* couple,
G4double logKinEnergy = DBL_MAX);
// It returns the cross section of the process per atom
G4double ComputeCrossSectionPerAtom(G4double kineticEnergy,
@@ -161,9 +162,10 @@ public:
G4double MeanFreePath(const G4Track& track);
// It returns cross section per volume
inline G4double GetLambda(G4double kinEnergy,
const G4MaterialCutsCouple* couple);
// Obsolete method to access cross section per volume
G4double GetLambda(G4double kinEnergy, const G4MaterialCutsCouple* couple);
// The main method to access cross section per volume
inline G4double GetLambda(G4double kinEnergy,
const G4MaterialCutsCouple* couple,
G4double logKinEnergy);
@@ -266,6 +268,8 @@ protected:
G4PhysicsVector* LambdaPhysicsVector(const G4MaterialCutsCouple*);
inline void DefineMaterial(const G4MaterialCutsCouple* couple);
inline G4int LambdaBinning() const;
inline G4double MinKinEnergy() const;
@@ -319,16 +323,14 @@ private:
void ComputeIntegralLambda(G4double kinEnergy, G4double logKinEnergy);
inline void DefineMaterial(const G4MaterialCutsCouple* couple);
inline G4double GetLambdaFromTable(G4double kinEnergy);
// inline G4double GetLambdaFromTable(G4double kinEnergy);
inline G4double GetLambdaFromTable(G4double kinEnergy, G4double logKinEnergy);
inline G4double GetLambdaFromTablePrim(G4double kinEnergy);
// inline G4double GetLambdaFromTablePrim(G4double kinEnergy);
inline G4double GetLambdaFromTablePrim(G4double kinEnergy,
G4double logKinEnergy);
inline G4double GetCurrentLambda(G4double kinEnergy);
// inline G4double GetCurrentLambda(G4double kinEnergy);
inline G4double GetCurrentLambda(G4double kinEnergy, G4double logKinEnergy);
inline G4double ComputeCurrentLambda(G4double kinEnergy);
@@ -356,9 +358,6 @@ private:
std::vector<G4double> theEnergyOfCrossSectionMax;
std::vector<G4double> theCrossSectionMax;
size_t idxLambda;
size_t idxLambdaPrim;
const std::vector<G4double>* theCuts;
const std::vector<G4double>* theCutsGamma;
const std::vector<G4double>* theCutsElectron;
@@ -424,9 +423,9 @@ private:
G4VEmModel* currentModel;
const G4ParticleDefinition* particle;
const G4ParticleDefinition* currentParticle;
// cache
const G4ParticleDefinition* currentParticle;
const G4Material* baseMaterial;
G4double fFactor;
@@ -482,8 +481,6 @@ inline void G4VEmProcess::DefineMaterial(const G4MaterialCutsCouple* couple)
basedCoupleIndex = (*theDensityIdx)[currentCoupleIndex];
fFactor = biasFactor*(*theDensityFactor)[currentCoupleIndex];
mfpKinEnergy = DBL_MAX;
preStepKinEnergy = 0.0;
idxLambda = idxLambdaPrim = 0;
}
}
@@ -510,11 +507,6 @@ G4VEmModel* G4VEmProcess::SelectModelForMaterial(G4double kinEnergy,
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4VEmProcess::GetLambdaFromTable(G4double e)
{
return ((*theLambdaTable)[basedCoupleIndex])->Value(e, idxLambda);
}
inline G4double G4VEmProcess::GetLambdaFromTable(G4double e, G4double loge)
{
return ((*theLambdaTable)[basedCoupleIndex])->LogVectorValue(e, loge);
@@ -522,11 +514,6 @@ inline G4double G4VEmProcess::GetLambdaFromTable(G4double e, G4double loge)
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4VEmProcess::GetLambdaFromTablePrim(G4double e)
{
return ((*theLambdaTablePrim)[basedCoupleIndex])->Value(e, idxLambdaPrim)/e;
}
inline G4double G4VEmProcess::GetLambdaFromTablePrim(G4double e, G4double loge)
{
return ((*theLambdaTablePrim)[basedCoupleIndex])->LogVectorValue(e, loge)/e;
@@ -536,21 +523,11 @@ inline G4double G4VEmProcess::GetLambdaFromTablePrim(G4double e, G4double loge)
inline G4double G4VEmProcess::ComputeCurrentLambda(G4double e)
{
return currentModel->CrossSectionPerVolume(
baseMaterial,currentParticle, e,(*theCuts)[currentCoupleIndex]);
return currentModel->CrossSectionPerVolume(baseMaterial, currentParticle, e);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4VEmProcess::GetCurrentLambda(G4double e)
{
G4double x(0.0);
if(e >= minKinEnergyPrim) { x = GetLambdaFromTablePrim(e); }
else if(theLambdaTable) { x = GetLambdaFromTable(e); }
else if(currentModel) { x = ComputeCurrentLambda(e); }
return fFactor*x;
}
inline G4double G4VEmProcess::GetCurrentLambda(G4double e, G4double loge)
{
G4double x(0.0);
@@ -566,16 +543,7 @@ inline void
G4VEmProcess::CurrentSetup(const G4MaterialCutsCouple* couple, G4double energy)
{
DefineMaterial(couple);
SelectModel(energy, currentCoupleIndex);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double
G4VEmProcess::GetLambda(G4double kinEnergy, const G4MaterialCutsCouple* couple)
{
CurrentSetup(couple, kinEnergy);
return GetCurrentLambda(kinEnergy);
SelectModel(energy*massRatio, currentCoupleIndex);
}
inline G4double
@@ -335,7 +335,7 @@ public:
// Redefine parameteters for stepping control
void SetLinearLossLimit(G4double val);
void SetStepFunction(G4double v1, G4double v2, G4bool lock=true);
void SetStepFunction(G4double v1, G4double v2);
void SetLowestEnergyLimit(G4double);
inline G4int NumberOfSubCutoffRegions() const;
@@ -489,17 +489,17 @@ private:
G4PhysicsTable* theLambdaTable;
G4PhysicsTable* theSubLambdaTable;
size_t idxDEDX;
size_t idxDEDXSub;
size_t idxDEDXunRestricted;
size_t idxIonisation;
size_t idxIonisationSub;
size_t idxRange;
size_t idxCSDA;
size_t idxSecRange;
size_t idxInverseRange;
size_t idxLambda;
size_t idxSubLambda;
size_t idxDEDX = 0;
size_t idxDEDXSub = 0;
size_t idxDEDXunRestricted = 0;
size_t idxIonisation = 0;
size_t idxIonisationSub = 0;
size_t idxRange = 0;
size_t idxCSDA = 0;
size_t idxSecRange = 0;
size_t idxInverseRange = 0;
size_t idxLambda = 0;
size_t idxSubLambda = 0;
std::vector<G4double> theDEDXAtMaxEnergy;
std::vector<G4double> theRangeAtMaxEnergy;
@@ -541,7 +541,6 @@ private:
G4bool weightFlag;
G4bool isMaster;
G4bool actIntegral;
G4bool actStepFunc;
G4bool actLinLossLimit;
G4bool actLossFluc;
G4bool actBinning;
@@ -743,6 +742,7 @@ G4VEnergyLossProcess::GetScaledRangeForScaledEnergy(G4double e, G4double loge)
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double
G4VEnergyLossProcess::GetLimitScaledRangeForScaledEnergy(G4double e)
{
@@ -888,6 +888,7 @@ G4VEnergyLossProcess::GetRangeForLoss(G4double kinEnergy,
return reduceFactor * GetScaledRangeForScaledEnergy(kinEnergy*massRatio);
}
inline G4double
G4VEnergyLossProcess::GetRangeForLoss(G4double kinEnergy,
const G4MaterialCutsCouple* couple,
@@ -1051,7 +1052,7 @@ inline G4double G4VEnergyLossProcess::CrossSectionBiasingFactor() const
inline G4bool G4VEnergyLossProcess::TablesAreBuilt() const
{
return tablesAreBuilt;
return tablesAreBuilt;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -277,7 +277,6 @@ private:
G4bool latDisplacement;
G4bool isIon;
G4bool fDispBeyondSafety;
// ======== Cached values - may be state dependent ================