Import Geant4 10.7.0.beta source tree
This commit is contained in:
@@ -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 ================
|
||||
|
||||
|
||||
Reference in New Issue
Block a user