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 }