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 "G4StatMFMacroTriNucleon.hh"
00033 #include "G4PhysicalConstants.hh"
00034 #include "G4SystemOfUnits.hh"
00035
00036
00037
00038 G4StatMFMacroTriNucleon & G4StatMFMacroTriNucleon::
00039 operator=(const G4StatMFMacroTriNucleon & )
00040 {
00041 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroTriNucleon::operator= meant to not be accessable");
00042 return *this;
00043 }
00044
00045
00046 G4bool G4StatMFMacroTriNucleon::operator==(const G4StatMFMacroTriNucleon & ) const
00047 {
00048 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroTriNucleon::operator== meant to not be accessable");
00049 return false;
00050 }
00051
00052
00053 G4bool G4StatMFMacroTriNucleon::operator!=(const G4StatMFMacroTriNucleon & ) const
00054 {
00055 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroTriNucleon::operator!= meant to not be accessable");
00056 return true;
00057 }
00058
00059
00060
00061 G4double G4StatMFMacroTriNucleon::CalcMeanMultiplicity(const G4double FreeVol, const G4double mu,
00062 const G4double nu, const G4double T)
00063 {
00064 const G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
00065
00066 const G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
00067
00068 const G4double degeneracy = 2.0+2.0;
00069
00070 const G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
00071 (1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
00072
00073 const G4double BindingE = G4NucleiProperties::GetBindingEnergy(theA,1);
00074
00075
00076 G4double exponent = (BindingE+ theA*(mu+nu*theZARatio) -
00077 Coulomb*theZARatio*theZARatio*std::pow(static_cast<G4double>(theA),5./3.))/T;
00078 if (exponent > 700.0) exponent = 700.0;
00079
00080 _MeanMultiplicity = (degeneracy*FreeVol*static_cast<G4double>(theA)*
00081 std::sqrt(static_cast<G4double>(theA))/lambda3)*
00082 std::exp(exponent);
00083
00084 return _MeanMultiplicity;
00085 }
00086
00087
00088 G4double G4StatMFMacroTriNucleon::CalcEnergy(const G4double T)
00089 {
00090 const G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
00091 (1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
00092
00093 return _Energy = -G4NucleiProperties::GetBindingEnergy(theA,1) +
00094 Coulomb * theZARatio * theZARatio * std::pow(static_cast<G4double>(theA),5./3.) +
00095 (3./2.) * T;
00096
00097 }
00098
00099
00100 G4double G4StatMFMacroTriNucleon::CalcEntropy(const G4double T, const G4double FreeVol)
00101 {
00102 const G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
00103 const G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
00104
00105 G4double Entropy = 0.0;
00106 if (_MeanMultiplicity > 0.0)
00107 Entropy = _MeanMultiplicity*(5./2.+
00108 std::log(4.0*static_cast<G4double>(theA)*
00109 std::sqrt(static_cast<G4double>(theA))*FreeVol/(lambda3*_MeanMultiplicity)));
00110
00111
00112 return Entropy;
00113 }