G4StatMFMacroMultiNucleon.cc

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 //
00027 // $Id$
00028 //
00029 // Hadronic Process: Nuclear De-excitations
00030 // by V. Lara
00031 //
00032 // Modified:
00033 // 25.07.08 I.Pshenichnov (in collaboration with Alexander Botvina and Igor 
00034 //          Mishustin (FIAS, Frankfurt, INR, Moscow and Kurchatov Institute, 
00035 //          Moscow, pshenich@fias.uni-frankfurt.de) fixed computation of the 
00036 //          symmetry energy 
00037 
00038 #include "G4StatMFMacroMultiNucleon.hh"
00039 #include "G4PhysicalConstants.hh"
00040 #include "G4SystemOfUnits.hh"
00041 
00042 // Default constructor
00043 G4StatMFMacroMultiNucleon::
00044 G4StatMFMacroMultiNucleon() :
00045     G4VStatMFMacroCluster(0)  // Beacuse the def. constr. of base class is private
00046 {
00047     throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroMultiNucleon::default_constructor meant to not be accessable");
00048 }
00049 
00050 // Copy constructor
00051 G4StatMFMacroMultiNucleon::
00052 G4StatMFMacroMultiNucleon(const G4StatMFMacroMultiNucleon & ) :
00053     G4VStatMFMacroCluster(0)  // Beacuse the def. constr. of base class is private
00054 {
00055     throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroMultiNucleon::copy_constructor meant to not be accessable");
00056 }
00057 
00058 // Operators
00059 
00060 G4StatMFMacroMultiNucleon & G4StatMFMacroMultiNucleon::
00061 operator=(const G4StatMFMacroMultiNucleon & ) 
00062 {
00063     throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroMultiNucleon::operator= meant to not be accessable");
00064     return *this;
00065 }
00066 
00067 
00068 G4bool G4StatMFMacroMultiNucleon::operator==(const G4StatMFMacroMultiNucleon & ) const
00069 {
00070     throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroMultiNucleon::operator== meant to not be accessable");
00071     return false;
00072 }
00073  
00074 
00075 G4bool G4StatMFMacroMultiNucleon::operator!=(const G4StatMFMacroMultiNucleon & ) const
00076 {
00077     throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroMultiNucleon::operator!= meant to not be accessable");
00078     return true;
00079 }
00080 
00081 
00082 
00083 G4double G4StatMFMacroMultiNucleon::CalcMeanMultiplicity(const G4double FreeVol, const G4double mu,
00084                                                          const G4double nu, const G4double T)
00085 {
00086     const G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
00087         
00088     const G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
00089         
00090     const G4double A23 = std::pow(static_cast<G4double>(theA),2./3.);
00091         
00092     const G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
00093         (1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
00094         
00095     G4double exponent = (mu + nu*theZARatio+ G4StatMFParameters::GetE0() + T*T/_InvLevelDensity 
00096                          - G4StatMFParameters::GetGamma0()*(1.0 - 2.0*theZARatio)*
00097                          (1.0 - 2.0*theZARatio))*theA
00098         - G4StatMFParameters::Beta(T)*A23 - Coulomb*theZARatio*theZARatio*A23*theA;
00099         
00100     exponent /= T;
00101         
00102     if (exponent > 30.0) exponent = 30.0;
00103         
00104     _MeanMultiplicity = std::max((FreeVol * static_cast<G4double>(theA) * 
00105                                     std::sqrt(static_cast<G4double>(theA))/lambda3) *
00106                                    std::exp(exponent),1.0e-30);
00107     return _MeanMultiplicity;   
00108 }
00109 
00110 
00111 G4double G4StatMFMacroMultiNucleon::CalcZARatio(const G4double nu)
00112 {
00113     const G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
00114         (1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
00115 
00116     G4double den = 8.0*G4StatMFParameters::GetGamma0()+2.0*Coulomb*std::pow(static_cast<G4double>(theA),2./3.);
00117     G4double num = 4.0*G4StatMFParameters::GetGamma0()+nu;
00118         
00119     return theZARatio = num/den;
00120         
00121 
00122 }
00123 
00124 
00125 
00126 G4double G4StatMFMacroMultiNucleon::CalcEnergy(const G4double T)
00127 {
00128     const G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
00129         (1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
00130         
00131     const G4double A23 = std::pow(static_cast<G4double>(theA),2./3.);
00132 
00133     // Volume term 
00134     G4double EVol = static_cast<G4double>(theA) * (T*T/_InvLevelDensity - G4StatMFParameters::GetE0());
00135         
00136     // Symmetry term
00137     G4double ESym = static_cast<G4double>(theA) * G4StatMFParameters::GetGamma0() *(1. - 2.* theZARatio) * (1. - 2.* theZARatio);
00138         
00139     // Surface term
00140     G4double ESurf = A23*(G4StatMFParameters::Beta(T) - T*G4StatMFParameters::DBetaDT(T));
00141  
00142     // Coulomb term
00143     G4double ECoul = Coulomb*A23*static_cast<G4double>(theA)*theZARatio*theZARatio;
00144         
00145     // Translational term
00146     G4double ETrans = (3./2.)*T;
00147         
00148        
00149     return _Energy = EVol + ESurf + ECoul + ETrans + ESym;
00150 }
00151 
00152 
00153 G4double G4StatMFMacroMultiNucleon::CalcEntropy(const G4double T, const G4double FreeVol)
00154 {
00155     const G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
00156     const G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
00157 
00158     G4double Entropy = 0.0;
00159     if (_MeanMultiplicity > 0.0) {
00160         // Volume term
00161         G4double SV = 2.0*static_cast<G4double>(theA)*T/_InvLevelDensity;
00162                 
00163         // Surface term
00164         G4double SS = -G4StatMFParameters::DBetaDT(T)*std::pow(static_cast<G4double>(theA),2./3.);
00165                 
00166         // Translational term
00167         G4double ST = (5./2.)+std::log(FreeVol * std::sqrt(static_cast<G4double>(theA)) * 
00168                                   static_cast<G4double>(theA)/(lambda3*_MeanMultiplicity));
00169                 
00170                 
00171         Entropy = _MeanMultiplicity*(SV + SS + ST);
00172     }
00173                                                                 
00174                                                                 
00175     return Entropy;
00176 }

Generated on Mon May 27 17:49:53 2013 for Geant4 by  doxygen 1.4.7