Import Geant4 11.4.0 source tree

This commit is contained in:
Gabriele Cosmo
2025-12-05 08:54:02 +01:00
parent a499fb82e9
commit b4a16de652
6484 changed files with 232674 additions and 221097 deletions
@@ -35,6 +35,11 @@
#include "G4SystemOfUnits.hh"
#include "G4NuclearRadii.hh"
namespace
{
constexpr G4double e0 = 2*CLHEP::MeV;
}
G4CoulombBarrier::G4CoulombBarrier(G4int A, G4int Z)
: G4VCoulombBarrier(A, Z)
{
@@ -45,9 +50,8 @@ G4CoulombBarrier::G4CoulombBarrier(G4int A, G4int Z)
G4double G4CoulombBarrier::GetCoulombBarrier(
G4int ARes, G4int ZRes, G4double U) const
{
if (0 == theZ) { return 0.0; }
G4double cb = factor*ZRes/(G4NuclearRadii::RadiusCB(ZRes,ARes) + theRho);
if (U > 0.0) { cb /= (1.0 + std::sqrt( U/((2*(ARes + theA))*CLHEP::MeV) )); }
cb /= (1.0 + std::sqrt( U / ((ARes + theA)*e0)));
return cb;
}
@@ -30,50 +30,51 @@
//
#include "G4DeexPrecoUtility.hh"
#include "G4SystemOfUnits.hh"
namespace
{
const G4double elim = 0.2*CLHEP::MeV; // low-energy limit for neutrons
const G4double alpha = 2.0; // extra factor for neutrons
const G4double beta = 1.0; // extra factor for the Coulomb barrier
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4double G4DeexPrecoUtility::CorrectionFactor(const G4int index, const G4int Z,
const G4double A13,
const G4double CB,
const G4double eKin,
const G4double eKin0)
const G4double ekin)
{
G4double res = 1.0;
G4double e = std::max(ekin, elim);
G4double x;
switch (index) {
case 0:
x = (2.12*A13 - 0.05)/(2.2*A13 + 0.76);
res = (eKin + x)/(eKin0 + x);
x = alpha*(0.76 + 2.2/A13 + (2.12/(A13*A13) - 0.05)*CLHEP::MeV/e);
break;
case 1:
x = ProtonKValue(Z);
res = std::max(eKin - x*CB, 0.0)/(eKin0 - x*CB);
x = (1. + ProtonCValue(Z))*(1. - beta*ProtonKValue(Z)*CB/e);
break;
case 2:
x = ProtonKValue(Z) + 0.06;
res = std::max(eKin - x*CB, 0.0)/(eKin0 - x*CB);
x = (1. + ProtonCValue(Z)*0.5)*(1. - beta*(ProtonKValue(Z) + 0.06)*CB/e);
break;
case 3:
x = ProtonKValue(Z) + 0.12;
res = std::max(eKin - x*CB, 0.0)/(eKin0 - x*CB);
x = (1. + ProtonCValue(Z)/3.)*(1. - beta*(ProtonKValue(Z) + 0.12)*CB/e);
break;
case 4:
x = AlphaKValue(Z) + 0.12;
res = std::max(eKin - x*CB, 0.0)/(eKin0 - x*CB);
x = (1. + AlphaCValue(Z)*4./3.)*(1. - beta*(AlphaKValue(Z) - 0.06)*CB/e);
break;
default:
x = AlphaKValue(Z);
res = std::max(eKin - x*CB, 0.0)/(eKin0 - x*CB);
x = (1. + AlphaCValue(Z))*(1. - beta*AlphaKValue(Z)*CB/e);
break;
}
return res;
x = std::max(x, 0.0);
return x;
}
G4double G4DeexPrecoUtility::ProtonKValue(const G4int Z)
@@ -122,6 +123,39 @@ G4double G4DeexPrecoUtility::AlphaCValue(const G4int Z)
return res;
}
G4double
G4DeexPrecoUtility::LevelDensity(const G4int Z, const G4int A, const G4int idx)
{
G4double a = 0.05*A;
G4double x = (A - Z)*1.3/(G4double)A;
switch (idx) {
case 0:
a *= (1. - x/A)*(1. - x/A);
break;
case 1:
a *= (1. + x/A)*(1. + x/A);
break;
case 2:
a *= (1. - 0.5/A)*(1. - 0.5/A);
break;
case 3:
a *= (1. - (1. + x)/A)*(1. - (1. + x)/A);
break;
case 4:
a *= (1. - (1. - x)/A)*(1. - (1. - x)/A);
break;
default:
a *= (1. - 1.5/A)*(1. - 1.5/A);
break;
}
return a;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......