Import Geant4 10.7.1 source tree
This commit is contained in:
@@ -16,6 +16,14 @@ committal in the CVS repository !
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
29.01.2021 V.Ivanchenko, emlowen-V10-06-14
|
||||
- G4MicroElecLOPhononModel - fixed Coverity warning; removed debug
|
||||
printout; rename member of class
|
||||
|
||||
06.12.2020 V.Ivanchenko,
|
||||
- G4MicroElecSurface, G4MicroElecLOPhononModel - fixed trivial
|
||||
Coverity warnings
|
||||
|
||||
17.11.2020 V.Ivanchenko, emlowen-V10-06-13
|
||||
- G4MicroElecInelasticModel_new, G4MicroElecInelastic_new,
|
||||
G4MicroElecSurface - fixed Coverity warnings (non-initialized
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
class G4MicroElecLOPhononModel : public G4VEmModel
|
||||
{
|
||||
public:
|
||||
G4MicroElecLOPhononModel(const G4ParticleDefinition*p = 0,
|
||||
G4MicroElecLOPhononModel(const G4ParticleDefinition*p = nullptr,
|
||||
const G4String& nam = "G4MicroElecLOPhononModel");
|
||||
~G4MicroElecLOPhononModel() override;
|
||||
|
||||
@@ -81,14 +81,13 @@ protected:
|
||||
G4ParticleChangeForGamma* fParticleChangeForGamma;
|
||||
|
||||
private:
|
||||
G4bool Interband;
|
||||
G4MicroElecLOPhononModel & operator=(const G4MicroElecLOPhononModel &right);
|
||||
G4MicroElecLOPhononModel(const G4MicroElecLOPhononModel&);
|
||||
|
||||
G4bool isOkToBeInitialised;
|
||||
G4bool isInitialised;
|
||||
G4bool abs = false;
|
||||
G4double Eprim = 0, signe = -1,phononEnergy=0;
|
||||
G4bool Interband = false;
|
||||
G4bool isInitialised = false;
|
||||
G4bool absor = false;
|
||||
G4double phononEnergy = 0.;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -60,11 +60,10 @@
|
||||
|
||||
G4MicroElecLOPhononModel::G4MicroElecLOPhononModel(const G4ParticleDefinition*,
|
||||
const G4String& nam)
|
||||
: G4VEmModel(nam),isInitialised(false)
|
||||
: G4VEmModel(nam)
|
||||
{
|
||||
abs = false;
|
||||
fParticleChangeForGamma = GetParticleChangeForGamma();
|
||||
G4cout << "SiO2 Phonon model is constructed " << G4endl;
|
||||
//G4cout << "SiO2 Phonon model is constructed " << G4endl;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -74,60 +73,42 @@ G4MicroElecLOPhononModel::~G4MicroElecLOPhononModel()
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4MicroElecLOPhononModel::Initialise(const G4ParticleDefinition* /*particle*/,
|
||||
const G4DataVector& /*cuts*/)
|
||||
void G4MicroElecLOPhononModel::Initialise(const G4ParticleDefinition*,
|
||||
const G4DataVector& /*cuts*/)
|
||||
{
|
||||
|
||||
if (isOkToBeInitialised == true && isInitialised == false) {
|
||||
G4cout << "Calling G4MicroElecLOPhononModel" << "::Initialise()" << G4endl;
|
||||
|
||||
if (isInitialised) { return; }
|
||||
fParticleChangeForGamma = GetParticleChangeForGamma();
|
||||
isInitialised = true;
|
||||
}
|
||||
if (isInitialised) { return; }
|
||||
//G4cout << "Calling G4MicroElecLOPhononModel::Initialise()" << G4endl;
|
||||
fParticleChangeForGamma = GetParticleChangeForGamma();
|
||||
isInitialised = true;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4double G4MicroElecLOPhononModel::CrossSectionPerVolume(const G4Material* material,
|
||||
const G4ParticleDefinition* p,
|
||||
const G4ParticleDefinition*,
|
||||
G4double ekin,
|
||||
G4double, G4double)
|
||||
{
|
||||
G4double e = CLHEP::eplus / coulomb,
|
||||
if (material->GetName()!="G4_SILICON_DIOXIDE") return 0.0;
|
||||
|
||||
m0 = CLHEP::electron_mass_c2 / c_squared / kg,
|
||||
h = CLHEP::hbar_Planck / (m2*kg / s),
|
||||
eps0 = CLHEP::epsilon0 / (farad / m),
|
||||
kb = CLHEP::k_Boltzmann / (joule / kelvin);
|
||||
G4double eps = 9,
|
||||
einf = 3,
|
||||
T = 300;
|
||||
|
||||
isOkToBeInitialised = true;
|
||||
const G4double e = CLHEP::eplus / CLHEP::coulomb;
|
||||
const G4double m0 = CLHEP::electron_mass_c2 / (CLHEP::c_squared*CLHEP::kg);
|
||||
const G4double h = CLHEP::hbar_Planck * CLHEP::s/ (CLHEP::m2*CLHEP::kg);
|
||||
const G4double eps0 = CLHEP::epsilon0 * CLHEP::m/ (CLHEP::farad);
|
||||
const G4double kb = CLHEP::k_Boltzmann * CLHEP::kelvin/ CLHEP::joule;
|
||||
|
||||
const G4DataVector cuts;
|
||||
Initialise(p, cuts);
|
||||
|
||||
if (material->GetName()!="G4_SILICON_DIOXIDE") return 1/DBL_MAX;
|
||||
|
||||
G4double E =(ekin/eV)*e;
|
||||
|
||||
// Parameters SiO2
|
||||
eps = 3.84;
|
||||
einf = 2.25;
|
||||
phononEnergy = (0.75*0.153+0.25*0.063 )* eV;
|
||||
G4double hw = (phononEnergy / eV) * e;
|
||||
G4double n = 1.0 / (std::exp(hw / (kb*T)) - 1); //Phonon distribution
|
||||
phononEnergy = (0.75*0.153+0.25*0.063 )* CLHEP::eV;
|
||||
const G4double eps = 3.84;
|
||||
const G4double einf = 2.25;
|
||||
const G4double T = 300; // should be taken from material property
|
||||
|
||||
G4double E =(ekin/CLHEP::eV)*e;
|
||||
|
||||
if (abs) { //Absorption
|
||||
Eprim = E + hw;
|
||||
signe = -1;
|
||||
}
|
||||
else { //Emission
|
||||
Eprim = E - hw;
|
||||
signe = +1;
|
||||
}
|
||||
G4double hw = (phononEnergy / CLHEP::eV) * e;
|
||||
G4double n = 1.0 / (std::exp(hw / (kb*T)) - 1); //Phonon distribution
|
||||
|
||||
G4double signe = (absor) ? -1. : 1.;
|
||||
|
||||
G4double racine = std::sqrt(1. + ((-signe*hw) / E));
|
||||
|
||||
@@ -135,7 +116,7 @@ G4double G4MicroElecLOPhononModel::CrossSectionPerVolume(const G4Material* mater
|
||||
|
||||
G4double MFP = (std::sqrt(2. * E / m0) / P)*m;
|
||||
|
||||
return 2 / MFP;
|
||||
return 2. / MFP;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -148,13 +129,8 @@ void G4MicroElecLOPhononModel::SampleSecondaries(
|
||||
{
|
||||
|
||||
G4double E = aDynamicElectron->GetKineticEnergy();
|
||||
|
||||
if (abs) {
|
||||
Eprim = E + phononEnergy;
|
||||
}
|
||||
else {
|
||||
Eprim = E - phononEnergy;
|
||||
}
|
||||
G4double Eprim = (absor) ? E + phononEnergy : E - phononEnergy;
|
||||
|
||||
G4double rand = G4UniformRand();
|
||||
G4double B = (E + Eprim + 2 * std::sqrt(E*Eprim)) / (E + Eprim - 2 * std::sqrt(E*Eprim));
|
||||
G4double cosTheta = ((E + Eprim) / (2 * std::sqrt(E*Eprim)))*(1 - std::pow(B, rand)) + std::pow(B, rand);
|
||||
@@ -162,7 +138,7 @@ void G4MicroElecLOPhononModel::SampleSecondaries(
|
||||
if(Interband){
|
||||
cosTheta = 1 - 2 * G4UniformRand(); //Isotrope
|
||||
}
|
||||
G4double phi = 2. * pi * G4UniformRand();
|
||||
G4double phi = twopi * G4UniformRand();
|
||||
G4ThreeVector zVers = aDynamicElectron->GetMomentumDirection();
|
||||
G4ThreeVector xVers = zVers.orthogonal();
|
||||
G4ThreeVector yVers = zVers.cross(xVers);
|
||||
|
||||
@@ -221,36 +221,34 @@ G4VParticleChange* G4MicroElecSurface::PostStepDoIt(const G4Track& aTrack, const
|
||||
if (aTrack.GetStepLength()<=kCarTolerance)
|
||||
{
|
||||
theStatus = StepTooSmallSurf;
|
||||
if (pPostStepPoint) {
|
||||
|
||||
WorkFunctionTable::iterator postStepWF;
|
||||
postStepWF = tableWF.find(pPostStepPoint->GetMaterial()->GetName());
|
||||
WorkFunctionTable::iterator preStepWF;
|
||||
preStepWF = tableWF.find(pPreStepPoint->GetMaterial()->GetName());
|
||||
WorkFunctionTable::iterator postStepWF;
|
||||
postStepWF = tableWF.find(pPostStepPoint->GetMaterial()->GetName());
|
||||
WorkFunctionTable::iterator preStepWF;
|
||||
preStepWF = tableWF.find(pPreStepPoint->GetMaterial()->GetName());
|
||||
|
||||
if (postStepWF == tableWF.end()) {
|
||||
G4String str = "Material ";
|
||||
str += pPostStepPoint->GetMaterial()->GetName() + " not found!";
|
||||
G4Exception("G4Surface::G4Surface", "em0002", FatalException, str);
|
||||
return 0;
|
||||
}
|
||||
if (postStepWF == tableWF.end()) {
|
||||
G4String str = "Material ";
|
||||
str += pPostStepPoint->GetMaterial()->GetName() + " not found!";
|
||||
G4Exception("G4Surface::G4Surface", "em0002", FatalException, str);
|
||||
return 0;
|
||||
}
|
||||
|
||||
else if (preStepWF == tableWF.end()) {
|
||||
G4String str = "Material ";
|
||||
str += pPreStepPoint->GetMaterial()->GetName() + " not found!";
|
||||
G4Exception("G4Surface::G4Surface", "em0002", FatalException, str);
|
||||
return 0;
|
||||
}
|
||||
else if (preStepWF == tableWF.end()) {
|
||||
G4String str = "Material ";
|
||||
str += pPreStepPoint->GetMaterial()->GetName() + " not found!";
|
||||
G4Exception("G4Surface::G4Surface", "em0002", FatalException, str);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (pPreStepPoint->GetMaterial() != pPostStepPoint->GetMaterial()) {
|
||||
if (pPreStepPoint->GetMaterial() != pPostStepPoint->GetMaterial()) {
|
||||
|
||||
flag_franchissement_surface = false;
|
||||
flag_franchissement_surface = false;
|
||||
|
||||
if (flag_reflexion == true && flag_normal == true) {
|
||||
aParticleChange.ProposeMomentumDirection(-Reflexion(aStep.GetPostStepPoint()));
|
||||
flag_reflexion = false;
|
||||
flag_normal = false;
|
||||
}
|
||||
if (flag_reflexion == true && flag_normal == true) {
|
||||
aParticleChange.ProposeMomentumDirection(-Reflexion(aStep.GetPostStepPoint()));
|
||||
flag_reflexion = false;
|
||||
flag_normal = false;
|
||||
}
|
||||
}
|
||||
return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
|
||||
|
||||
@@ -17,6 +17,11 @@ committal in the CVS repository !
|
||||
|
||||
----------------------------------------------------------
|
||||
|
||||
26 January 21: V.Ivanchenko (emstand-V10-06-20)
|
||||
- G4BetheBlochModel, G4LindhardSorensenIonModel - fixed problem #2312,
|
||||
restore computation of maximum energy transfer from Geant4 10.4,
|
||||
affect only ultrarelativistic ions
|
||||
|
||||
11 November 20: V.Ivanchenko (emstand-V10-06-19)
|
||||
- G4UrbanMscModel - restored parameterisation of step limit to
|
||||
the variant of emstand-V10-06-13
|
||||
|
||||
@@ -166,15 +166,14 @@ void G4BetheBlochModel::SetupParameters()
|
||||
formfact = 0.0;
|
||||
tlimit = DBL_MAX;
|
||||
if(particle->GetLeptonNumber() == 0) {
|
||||
G4int iz = G4lrint(q);
|
||||
if(iz <= 1) {
|
||||
formfact = (spin == 0.0 && mass < GeV) ? 1.181e-6 : 1.548e-6;
|
||||
} else {
|
||||
G4double x = nist->GetA27(iz);
|
||||
formfact = 3.969e-6*x*x;
|
||||
G4double x = 0.8426*CLHEP::GeV;
|
||||
if(spin == 0.0 && mass < GeV) { x = 0.736*CLHEP::GeV; }
|
||||
else if (mass > CLHEP::GeV) {
|
||||
G4int iz = G4lrint(std::abs(q));
|
||||
if(iz > 1) { x /= nist->GetA27(iz); }
|
||||
}
|
||||
tlimit = std::sqrt(0.414/formfact +
|
||||
electron_mass_c2*electron_mass_c2) - electron_mass_c2;
|
||||
formfact = 2.0*CLHEP::electron_mass_c2/(x*x);
|
||||
tlimit = 2.0/formfact;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -252,7 +251,8 @@ G4double G4BetheBlochModel::ComputeDEDXPerVolume(const G4Material* material,
|
||||
G4double cut)
|
||||
{
|
||||
G4double tmax = MaxSecondaryEnergy(p, kineticEnergy);
|
||||
G4double cutEnergy = std::min(cut,tmax);
|
||||
// projectile formfactor limit energy loss
|
||||
G4double cutEnergy = std::min(std::min(cut,tmax), tlimit);
|
||||
|
||||
G4double tau = kineticEnergy/mass;
|
||||
G4double gam = tau + 1.0;
|
||||
@@ -405,7 +405,7 @@ void G4BetheBlochModel::SampleSecondaries(vector<G4DynamicParticle*>* vdp,
|
||||
// projectile formfactor - suppresion of high energy
|
||||
// delta-electron production at high energy
|
||||
|
||||
G4double x = formfact*deltaKinEnergy*(deltaKinEnergy + 2*electron_mass_c2);
|
||||
G4double x = formfact*deltaKinEnergy;
|
||||
if(x > 1.e-6) {
|
||||
|
||||
G4double x1 = 1.0 + x;
|
||||
@@ -440,8 +440,8 @@ void G4BetheBlochModel::SampleSecondaries(vector<G4DynamicParticle*>* vdp,
|
||||
sqrt(deltaKinEnergy * (deltaKinEnergy + 2.0*electron_mass_c2));
|
||||
G4double cost = deltaKinEnergy * (totEnergy + electron_mass_c2) /
|
||||
(deltaMomentum * dp->GetTotalMomentum());
|
||||
if(cost > 1.0) { cost = 1.0; }
|
||||
G4double sint = sqrt((1.0 - cost)*(1.0 + cost));
|
||||
cost = std::min(cost, 1.0);
|
||||
G4double sint = std::sqrt((1.0 - cost)*(1.0 + cost));
|
||||
|
||||
G4double phi = twopi*rndmEngineMod->flat();
|
||||
|
||||
@@ -479,12 +479,12 @@ void G4BetheBlochModel::SampleSecondaries(vector<G4DynamicParticle*>* vdp,
|
||||
G4double G4BetheBlochModel::MaxSecondaryEnergy(const G4ParticleDefinition* pd,
|
||||
G4double kinEnergy)
|
||||
{
|
||||
// here particle type is checked for any method
|
||||
// here particle type is checked for the case,
|
||||
// when this model is shared between particles
|
||||
SetParticle(pd);
|
||||
G4double tau = kinEnergy/mass;
|
||||
G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) /
|
||||
(1. + 2.0*(tau + 1.)*ratio + ratio*ratio);
|
||||
return std::min(tmax,tlimit);
|
||||
return 2.0*CLHEP::electron_mass_c2*tau*(tau + 2.) /
|
||||
(1. + 2.0*(tau + 1.)*ratio + ratio*ratio);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -135,20 +135,18 @@ void G4LindhardSorensenIonModel::SetupParameters()
|
||||
mass = particle->GetPDGMass();
|
||||
spin = particle->GetPDGSpin();
|
||||
charge = particle->GetPDGCharge()*inveplus;
|
||||
Zin = G4lrint(charge);
|
||||
Zin = G4lrint(std::abs(charge));
|
||||
chargeSquare = charge*charge;
|
||||
ratio = electron_mass_c2/mass;
|
||||
static const G4double aMag = 1./(0.5*eplus*hbar_Planck*c_squared);
|
||||
G4double magmom = particle->GetPDGMagneticMoment()*mass*aMag;
|
||||
magMoment2 = magmom*magmom - 1.0;
|
||||
if(Zin <= 1) {
|
||||
formfact = (spin == 0.0 && mass < GeV) ? 1.181e-6 : 1.548e-6;
|
||||
} else {
|
||||
G4double x = nist->GetA27(Zin);
|
||||
formfact = 3.969e-6*x*x;
|
||||
}
|
||||
tlimit = std::sqrt(0.414/formfact +
|
||||
electron_mass_c2*electron_mass_c2) - electron_mass_c2;
|
||||
G4double x = 0.8426*CLHEP::GeV;
|
||||
if(spin == 0.0 && mass < GeV) { x = 0.736*CLHEP::GeV; }
|
||||
else if (Zin > 1) { x /= nist->GetA27(Zin); }
|
||||
|
||||
formfact = 2.0*CLHEP::electron_mass_c2/(x*x);
|
||||
tlimit = 2.0/formfact;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -170,7 +168,7 @@ G4LindhardSorensenIonModel::ComputeCrossSectionPerElectron(
|
||||
{
|
||||
G4double cross = 0.0;
|
||||
// take into account formfactor
|
||||
G4double tmax = std::min(MaxSecondaryEnergy(p, kineticEnergy),tlimit);
|
||||
G4double tmax = MaxSecondaryEnergy(p, kineticEnergy);
|
||||
G4double maxEnergy = std::min(tmax,maxKinEnergy);
|
||||
if(cutEnergy < maxEnergy) {
|
||||
|
||||
@@ -228,7 +226,7 @@ G4LindhardSorensenIonModel::ComputeDEDXPerVolume(const G4Material* material,
|
||||
{
|
||||
// formfactor is taken into account in CorrectionsAlongStep(..)
|
||||
G4double tmax = MaxSecondaryEnergy(p, kineticEnergy);
|
||||
G4double cutEnergy = std::min(cut,tmax);
|
||||
G4double cutEnergy = std::min(std::min(cut,tmax), tlimit);
|
||||
|
||||
G4double tau = kineticEnergy/mass;
|
||||
G4double gam = tau + 1.0;
|
||||
@@ -317,8 +315,7 @@ void G4LindhardSorensenIonModel::SampleSecondaries(
|
||||
{
|
||||
G4double kineticEnergy = dp->GetKineticEnergy();
|
||||
// take into account formfactor
|
||||
G4double tmax =
|
||||
std::min(MaxSecondaryEnergy(dp->GetDefinition(),kineticEnergy),tlimit);
|
||||
G4double tmax = MaxSecondaryEnergy(dp->GetDefinition(),kineticEnergy);
|
||||
|
||||
G4double maxKinEnergy = std::min(maxEnergy,tmax);
|
||||
if(minKinEnergy >= maxKinEnergy) { return; }
|
||||
@@ -356,7 +353,7 @@ void G4LindhardSorensenIonModel::SampleSecondaries(
|
||||
// projectile formfactor - suppresion of high energy
|
||||
// delta-electron production at high energy
|
||||
|
||||
G4double x = formfact*deltaKinEnergy*(deltaKinEnergy + 2*electron_mass_c2);
|
||||
G4double x = formfact*deltaKinEnergy;
|
||||
if(x > 1.e-6) {
|
||||
|
||||
G4double x1 = 1.0 + x;
|
||||
@@ -391,7 +388,7 @@ void G4LindhardSorensenIonModel::SampleSecondaries(
|
||||
sqrt(deltaKinEnergy * (deltaKinEnergy + 2.0*electron_mass_c2));
|
||||
G4double cost = deltaKinEnergy * (totEnergy + electron_mass_c2) /
|
||||
(deltaMomentum * dp->GetTotalMomentum());
|
||||
if(cost > 1.0) { cost = 1.0; }
|
||||
cost = std::min(cost, 1.0);
|
||||
G4double sint = sqrt((1.0 - cost)*(1.0 + cost));
|
||||
|
||||
G4double phi = twopi*rndmEngineMod->flat();
|
||||
@@ -434,10 +431,8 @@ G4LindhardSorensenIonModel::MaxSecondaryEnergy(const G4ParticleDefinition* pd,
|
||||
// here particle type is checked for any method
|
||||
SetParticle(pd);
|
||||
G4double tau = kinEnergy/mass;
|
||||
G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) /
|
||||
(1. + 2.0*(tau + 1.)*ratio + ratio*ratio);
|
||||
// formfactor is not taken into account
|
||||
return tmax;
|
||||
return 2.0*CLHEP::electron_mass_c2*tau*(tau + 2.) /
|
||||
(1. + 2.0*(tau + 1.)*ratio + ratio*ratio);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -16,6 +16,15 @@ committal in the CVS repository !
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
30 January 21: V.Ivanchenko (emutils-V10-06-16)
|
||||
- G4VEnergyLossProcess, G4VEmProcess, - improved printout
|
||||
G4EmExtraParameters, G4EmExtraParametersMessenger - fixed #2292
|
||||
|
||||
11 January 21: V.Ivanchenko
|
||||
- G4EmCorrections - fix 2-D interpolation of shell corrections
|
||||
(problem #2308), which provides minor change of ranges of
|
||||
charge particles (< 0.1 mm)
|
||||
|
||||
12 November 20: B. Morgan (emutils-V10-06-15)
|
||||
- Apply typo fixes from Gurkan Myczko (https://github.com/Geant4/geant4/pull/15)
|
||||
|
||||
|
||||
@@ -287,9 +287,8 @@ inline G4double G4EmCorrections::Value2(G4double xv, G4double yv,
|
||||
G4double z11, G4double z21,
|
||||
G4double z12, G4double z22) const
|
||||
{
|
||||
return (z11*(x2-xv)*(y2-yv) + z22*(xv-x1)*(yv-y1) +
|
||||
0.5*(z12*((x2-xv)*(yv-y1)+(xv-x1)*(y2-yv))+
|
||||
z21*((xv-x1)*(y2-yv)+(yv-y1)*(x2-xv))))
|
||||
return ( z11*(x2-xv)*(y2-yv) + z22*(xv-x1)*(yv-y1) +
|
||||
z12*(x2-xv)*(yv-y1) + z21*(xv-x1)*(y2-yv) )
|
||||
/ ((x2-x1)*(y2-y1));
|
||||
}
|
||||
|
||||
|
||||
@@ -284,7 +284,7 @@ const std::vector<G4String>& G4EmExtraParameters::TypesPhysics() const
|
||||
|
||||
void G4EmExtraParameters::SetSubCutoff(G4bool val, const G4String& region)
|
||||
{
|
||||
G4String r = CheckRegion(region);
|
||||
const G4String& r = CheckRegion(region);
|
||||
G4int nreg = m_regnamesSubCut.size();
|
||||
for(G4int i=0; i<nreg; ++i) {
|
||||
if(r == m_regnamesSubCut[i]) {
|
||||
@@ -326,13 +326,13 @@ G4EmExtraParameters::ActivateForcedInteraction(const G4String& procname,
|
||||
G4double length,
|
||||
G4bool wflag)
|
||||
{
|
||||
G4String r = CheckRegion(region);
|
||||
const G4String& r = CheckRegion(region);
|
||||
if(length >= 0.0) {
|
||||
G4int n = m_procForced.size();
|
||||
for(G4int i=0; i<n; ++i) {
|
||||
if(procname == m_procForced[i] && r == m_regnamesForced[i] ) {
|
||||
m_lengthForced[i] = length;
|
||||
m_weightForced[i]= wflag;
|
||||
m_weightForced[i] = wflag;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -355,7 +355,7 @@ G4EmExtraParameters::ActivateSecondaryBiasing(const G4String& procname,
|
||||
G4double factor,
|
||||
G4double energyLim)
|
||||
{
|
||||
G4String r = CheckRegion(region);
|
||||
const G4String& r = CheckRegion(region);
|
||||
if(factor >= 0.0 && energyLim >= 0.0) {
|
||||
G4int n = m_procBiasedSec.size();
|
||||
for(G4int i=0; i<n; ++i) {
|
||||
|
||||
@@ -94,6 +94,12 @@ G4EmExtraParametersMessenger::G4EmExtraParametersMessenger(G4EmExtraParameters*
|
||||
SubSecCmd->SetGuidance(" Region : region name");
|
||||
SubSecCmd->AvailableForStates(G4State_PreInit);
|
||||
|
||||
G4UIparameter* subSec = new G4UIparameter("subSec",'s',false);
|
||||
SubSecCmd->SetParameter(subSec);
|
||||
|
||||
G4UIparameter* subSecReg = new G4UIparameter("Region",'s',false);
|
||||
SubSecCmd->SetParameter(subSecReg);
|
||||
|
||||
StepFuncCmd = new G4UIcommand("/process/eLoss/StepFunction",this);
|
||||
StepFuncCmd->SetGuidance("Set the energy loss step limitation parameters for e+-.");
|
||||
StepFuncCmd->SetGuidance(" dRoverR : max Range variation per step");
|
||||
@@ -167,12 +173,6 @@ G4EmExtraParametersMessenger::G4EmExtraParametersMessenger(G4EmExtraParameters*
|
||||
unitPrm3->SetDefaultValue("mm");
|
||||
StepFuncCmd3->SetParameter(unitPrm3);
|
||||
|
||||
G4UIparameter* subSec = new G4UIparameter("subSec",'s',false);
|
||||
SubSecCmd->SetParameter(subSec);
|
||||
|
||||
G4UIparameter* subSecReg = new G4UIparameter("Region",'s',false);
|
||||
SubSecCmd->SetParameter(subSecReg);
|
||||
|
||||
bfCmd = new G4UIcommand("/process/em/setBiasingFactor",this);
|
||||
bfCmd->SetGuidance("Set factor for the process cross section.");
|
||||
bfCmd->SetGuidance(" procName : process name");
|
||||
|
||||
@@ -897,10 +897,7 @@ G4bool G4VEmProcess::StorePhysicsTable(const G4ParticleDefinition* part,
|
||||
yes = theLambdaTable->StorePhysicsTable(nam,ascii);
|
||||
|
||||
if ( yes ) {
|
||||
G4cout << "Physics table is stored for " << particle->GetParticleName()
|
||||
<< " and process " << GetProcessName()
|
||||
<< " in the directory <" << directory
|
||||
<< "> " << G4endl;
|
||||
if(0 < verboseLevel) G4cout << "Stored: " << nam << G4endl;
|
||||
} else {
|
||||
G4cout << "Fail to store Physics Table for "
|
||||
<< particle->GetParticleName()
|
||||
@@ -915,11 +912,13 @@ G4bool G4VEmProcess::StorePhysicsTable(const G4ParticleDefinition* part,
|
||||
yes = theLambdaTablePrim->StorePhysicsTable(name,ascii);
|
||||
|
||||
if ( yes ) {
|
||||
G4cout << "Physics table prim is stored for "
|
||||
<< particle->GetParticleName()
|
||||
<< " and process " << GetProcessName()
|
||||
<< " in the directory <" << directory
|
||||
<< "> " << G4endl;
|
||||
if(0 < verboseLevel) {
|
||||
G4cout << "Physics table prim is stored for "
|
||||
<< particle->GetParticleName()
|
||||
<< " and process " << GetProcessName()
|
||||
<< " in the directory <" << directory
|
||||
<< "> " << G4endl;
|
||||
}
|
||||
} else {
|
||||
G4cout << "Fail to store Physics Table Prim for "
|
||||
<< particle->GetParticleName()
|
||||
|
||||
@@ -1738,21 +1738,6 @@ G4bool G4VEnergyLossProcess::StorePhysicsTable(
|
||||
if(!StoreTable(part,theSubLambdaTable,ascii,directory,"SubLambda"))
|
||||
{res = false;}
|
||||
|
||||
if ( !res ) {
|
||||
if(1 < verboseLevel) {
|
||||
G4cout << "Physics tables are stored for "
|
||||
<< particle->GetParticleName()
|
||||
<< " and process " << GetProcessName()
|
||||
<< " in the directory <" << directory
|
||||
<< "> " << G4endl;
|
||||
}
|
||||
} else {
|
||||
G4cout << "Fail to store Physics Tables for "
|
||||
<< particle->GetParticleName()
|
||||
<< " and process " << GetProcessName()
|
||||
<< " in the directory <" << directory
|
||||
<< "> " << G4endl;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -1765,7 +1750,7 @@ G4VEnergyLossProcess::RetrievePhysicsTable(const G4ParticleDefinition* part,
|
||||
{
|
||||
G4bool res = true;
|
||||
if (!isMaster) return res;
|
||||
const G4String particleName = part->GetParticleName();
|
||||
const G4String& particleName = part->GetParticleName();
|
||||
|
||||
if(1 < verboseLevel) {
|
||||
G4cout << "G4VEnergyLossProcess::RetrievePhysicsTable() for "
|
||||
@@ -1830,14 +1815,15 @@ G4bool G4VEnergyLossProcess::StoreTable(const G4ParticleDefinition* part,
|
||||
const G4String& directory,
|
||||
const G4String& tname)
|
||||
{
|
||||
//G4cout << "G4VEnergyLossProcess::StoreTable: " << aTable
|
||||
// << " " << directory << " " << tname << G4endl;
|
||||
G4bool res = true;
|
||||
if ( aTable ) {
|
||||
const G4String name = GetPhysicsTableFileName(part,directory,tname,ascii);
|
||||
G4cout << name << G4endl;
|
||||
//G4cout << *aTable << G4endl;
|
||||
if( !aTable->StorePhysicsTable(name,ascii)) res = false;
|
||||
const G4String& name = GetPhysicsTableFileName(part, directory, tname, ascii);
|
||||
if ( aTable->StorePhysicsTable(name,ascii) ) {
|
||||
if (0 < verboseLevel) G4cout << "Stored: " << name << G4endl;
|
||||
} else {
|
||||
res = false;
|
||||
G4cout << "Fail to store: " << name << G4endl;
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user