#include <G4INCLNuclearPotentialEnergyIsospinSmooth.hh>
Inheritance diagram for G4INCL::NuclearPotential::NuclearPotentialEnergyIsospinSmooth:
Public Member Functions | |
NuclearPotentialEnergyIsospinSmooth (const G4int A, const G4int Z, const G4bool pionPotential) | |
virtual | ~NuclearPotentialEnergyIsospinSmooth () |
virtual G4double | computePotentialEnergy (const Particle *const p) const |
Definition at line 56 of file G4INCLNuclearPotentialEnergyIsospinSmooth.hh.
G4INCL::NuclearPotential::NuclearPotentialEnergyIsospinSmooth::NuclearPotentialEnergyIsospinSmooth | ( | const G4int | A, | |
const G4int | Z, | |||
const G4bool | pionPotential | |||
) |
Definition at line 59 of file G4INCLNuclearPotentialEnergyIsospinSmooth.cc.
00060 : NuclearPotentialIsospin(A,Z,aPionPotential) 00061 {}
G4INCL::NuclearPotential::NuclearPotentialEnergyIsospinSmooth::~NuclearPotentialEnergyIsospinSmooth | ( | ) | [virtual] |
G4double G4INCL::NuclearPotential::NuclearPotentialEnergyIsospinSmooth::computePotentialEnergy | ( | const Particle *const | p | ) | const [virtual] |
Reimplemented from G4INCL::NuclearPotential::NuclearPotentialIsospin.
Definition at line 66 of file G4INCLNuclearPotentialEnergyIsospinSmooth.cc.
References G4INCL::NuclearPotential::NuclearPotentialIsospin::computePotentialEnergy(), G4INCL::NuclearPotential::INuclearPotential::getFermiEnergy(), G4INCL::Particle::getKineticEnergy(), and G4INCL::Particle::isNucleon().
00066 { 00067 00068 const G4double v0 = NuclearPotentialIsospin::computePotentialEnergy(particle); 00069 00070 if(particle->isNucleon()) { 00071 const G4double t = particle->getKineticEnergy(); 00072 const G4double tf = getFermiEnergy(particle); 00073 // Constant potential for T<Tf 00074 if(t < tf) 00075 return v0; 00076 00077 // Linear function for Tf<T<T0, exponential function for T>T0 00078 const G4double t0 = tf + v0*(1.-alpha)/alpha - deltaE; // deltaE before the linear potential vanishes 00079 G4double v; 00080 if(t<t0) { 00081 v = v0 - alpha*(t-tf)/(1.-alpha); 00082 } else { 00083 const G4double v_at_t0 = v0 - alpha*(t0-tf)/(1.-alpha); 00084 const G4double kappa = alpha / (v_at_t0 * (1.-alpha)); 00085 v = v_at_t0 * std::exp(kappa * (t0-t)); 00086 } 00087 return (v>0.0) ? v : 0.0; 00088 } else 00089 return v0; 00090 }