34 #define INCLXX_IN_GEANT4_MODE 1
54 namespace NuclearPotential {
66 void NuclearPotentialIsospin::initialize() {
80 vProton = theProtonFermiEnergy + theProtonSeparationEnergy;
88 vNeutron = theNeutronFermiEnergy + theNeutronSeparationEnergy;
90 const G4double separationEnergyDeltaPlusPlus = 2.*theProtonSeparationEnergy - theNeutronSeparationEnergy;
94 const G4double separationEnergyDeltaMinus = 2.*theNeutronSeparationEnergy - theProtonSeparationEnergy;
99 vDeltaZero = vNeutron;
100 vDeltaPlusPlus =
std::max(separationEnergyDeltaPlusPlus + tinyMargin, 2.*vDeltaPlus - vDeltaZero);
101 vDeltaMinus =
std::max(separationEnergyDeltaMinus + tinyMargin, 2.*vDeltaZero - vDeltaPlus);
117 INCL_DEBUG(
"Table of separation energies [MeV] for A=" << theA <<
", Z=" <<
theZ <<
":" <<
'\n'
118 <<
" proton: " << separationEnergy[
Proton] <<
'\n'
119 <<
" neutron: " << separationEnergy[
Neutron] <<
'\n'
121 <<
" delta+: " << separationEnergy[
DeltaPlus] <<
'\n'
122 <<
" delta0: " << separationEnergy[
DeltaZero] <<
'\n'
123 <<
" delta-: " << separationEnergy[
DeltaMinus] <<
'\n'
124 <<
" pi+: " << separationEnergy[
PiPlus] <<
'\n'
125 <<
" pi0: " << separationEnergy[
PiZero] <<
'\n'
126 <<
" pi-: " << separationEnergy[
PiMinus] <<
'\n'
127 <<
" eta: " << separationEnergy[
Eta] <<
'\n'
128 <<
" omega: " << separationEnergy[
Omega] <<
'\n'
129 <<
" etaprime:" << separationEnergy[
EtaPrime] <<
'\n'
130 <<
" photon: " << separationEnergy[
Photon] <<
'\n'
133 INCL_DEBUG(
"Table of Fermi energies [MeV] for A=" << theA <<
", Z=" <<
theZ <<
":" <<
'\n'
142 INCL_DEBUG(
"Table of Fermi momenta [MeV/c] for A=" << theA <<
", Z=" <<
theZ <<
":" <<
'\n'
176 return vDeltaPlusPlus;
188 INCL_ERROR(
"No potential computed for particle of type Cluster.");
192 INCL_ERROR(
"Trying to compute potential energy for an unknown particle.");
197 INCL_ERROR(
"There is no potential for this type of particle.");
virtual G4double computePotentialEnergy(const Particle *const p) const
std::map< ParticleType, G4double > fermiEnergy
virtual ~NuclearPotentialIsospin()
double A(double temperature)
const G4int theA
The mass number of the nucleus.
Isospin-dependent nuclear potential.
Isospin- and energy-independent nuclear potential.
G4ThreadLocal SeparationEnergyFn getSeparationEnergy
Static pointer to the separation-energy function.
G4double computePionResonancePotentialEnergy(const Particle *const p) const
Compute the potential energy for the given pion resonances (Eta, Omega and EtaPrime and Gamma also)...
G4double getINCLMass(const G4int A, const G4int Z)
Get INCL nuclear mass (in MeV/c^2)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4INCL::ParticleType getType() const
NuclearPotentialIsospin(const G4int A, const G4int Z, const G4bool pionPotential)
std::map< ParticleType, G4double > separationEnergy
const G4int theZ
The charge number of the nucleus.
G4double computePionPotentialEnergy(const Particle *const p) const
Compute the potential energy for the given pion.
std::map< ParticleType, G4double > fermiMomentum
G4double pow13(G4double x)
G4ThreadLocal FermiMomentumFn getFermiMomentum