00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #include "G4StatMFMacroBiNucleon.hh"
00033 #include "G4PhysicalConstants.hh"
00034 #include "G4SystemOfUnits.hh"
00035
00036
00037
00038 G4StatMFMacroBiNucleon & G4StatMFMacroBiNucleon::
00039 operator=(const G4StatMFMacroBiNucleon & )
00040 {
00041 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroBiNucleon::operator= meant to not be accessable");
00042 return *this;
00043 }
00044
00045
00046 G4bool G4StatMFMacroBiNucleon::operator==(const G4StatMFMacroBiNucleon & ) const
00047 {
00048 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroBiNucleon::operator== meant to not be accessable");
00049 return false;
00050 }
00051
00052
00053 G4bool G4StatMFMacroBiNucleon::operator!=(const G4StatMFMacroBiNucleon & ) const
00054 {
00055 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroBiNucleon::operator!= meant to not be accessable");
00056 return true;
00057 }
00058
00059
00060 G4double G4StatMFMacroBiNucleon::CalcMeanMultiplicity(const G4double FreeVol, const G4double mu,
00061 const G4double nu, const G4double T)
00062 {
00063 const G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
00064
00065 const G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
00066
00067 const G4double degeneracy = 3.0;
00068
00069 const G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
00070 (1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
00071
00072 const G4double BindingE = G4NucleiProperties::GetBindingEnergy(theA,1);
00073 G4double exponent = (BindingE + theA*(mu+nu*theZARatio) -
00074 Coulomb*theZARatio*theZARatio*std::pow(G4double(theA),5./3.))/T;
00075
00076
00077 if (exponent < -700.0) exponent = -700.0;
00078 else if (exponent > 700.0) exponent = 700.0;
00079
00080 _MeanMultiplicity = (degeneracy*FreeVol*static_cast<G4double>(theA)*std::sqrt(static_cast<G4double>(theA))/lambda3)*
00081 std::exp(exponent);
00082
00083 return _MeanMultiplicity;
00084 }
00085
00086
00087 G4double G4StatMFMacroBiNucleon::CalcEnergy(const G4double T)
00088 {
00089 const G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
00090 (1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
00091
00092 _Energy = -G4NucleiProperties::GetBindingEnergy(theA,1) +
00093 Coulomb * theZARatio * theZARatio * std::pow(G4double(theA),5./3.) +
00094 (3./2.) * T;
00095
00096 return _Energy;
00097 }
00098
00099
00100
00101 G4double G4StatMFMacroBiNucleon::CalcEntropy(const G4double T, const G4double FreeVol)
00102 {
00103 const G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
00104 const G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
00105
00106 G4double Entropy = 0.0;
00107 if (_MeanMultiplicity > 0.0)
00108
00109 Entropy = _MeanMultiplicity*(5./2.+
00110 std::log(3.0*static_cast<G4double>(theA)*
00111 std::sqrt(static_cast<G4double>(theA))*FreeVol/
00112 (lambda3*_MeanMultiplicity)));
00113
00114
00115 return Entropy;
00116 }