Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer << 3 // * DISCLAIMER * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th << 5 // * The following disclaimer summarizes all the specific disclaimers * 6 // * the Geant4 Collaboration. It is provided << 6 // * of contributors to this software. The specific disclaimers,which * 7 // * conditions of the Geant4 Software License << 7 // * govern, are listed with their locations in: * 8 // * LICENSE and available at http://cern.ch/ << 8 // * http://cern.ch/geant4/license * 9 // * include a list of copyright holders. << 10 // * 9 // * * 11 // * Neither the authors of this software syst 10 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 11 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 12 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 13 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file << 14 // * use. * 16 // * for the full disclaimer and the limitatio << 17 // * 15 // * * 18 // * This code implementation is the result << 16 // * This code implementation is the intellectual property of the * 19 // * technical work of the GEANT4 collaboratio << 17 // * GEANT4 collaboration. * 20 // * By using, copying, modifying or distri << 18 // * By copying, distributing or modifying the Program (or any work * 21 // * any work based on the software) you ag << 19 // * based on the Program) you indicate your acceptance of this * 22 // * use in resulting scientific publicati << 20 // * statement, and all its terms. * 23 // * acceptance of all terms of the Geant4 Sof << 24 // ******************************************* 21 // ******************************************************************** 25 // 22 // 26 // 23 // >> 24 // $Id: G4StatMFMacroTriNucleon.cc,v 1.2 2003/11/03 17:53:05 hpw Exp $ >> 25 // GEANT4 tag $Name: geant4-06-00-patch-01 $ 27 // 26 // 28 // Hadronic Process: Nuclear De-excitations 27 // Hadronic Process: Nuclear De-excitations 29 // by V. Lara 28 // by V. Lara 30 29 31 #include "G4StatMFMacroTriNucleon.hh" 30 #include "G4StatMFMacroTriNucleon.hh" 32 #include "G4PhysicalConstants.hh" << 33 #include "G4SystemOfUnits.hh" << 34 #include "G4Log.hh" << 35 #include "G4Exp.hh" << 36 #include "G4Pow.hh" << 37 << 38 G4StatMFMacroTriNucleon::G4StatMFMacroTriNucle << 39 : G4VStatMFMacroCluster(3) << 40 {} << 41 << 42 G4StatMFMacroTriNucleon::~G4StatMFMacroTriNucl << 43 {} << 44 << 45 G4double << 46 G4StatMFMacroTriNucleon::CalcMeanMultiplicity( << 47 const G4double mu, << 48 const G4double nu, << 49 const G4double T) << 50 { << 51 G4double ThermalWaveLenght = 16.15*fermi/std << 52 G4double lambda3 = ThermalWaveLenght*Thermal << 53 static const G4double degeneracy = 4.0; // << 54 << 55 // old value was 9.224*MeV << 56 G4double BindingE = G4NucleiProperties::GetB << 57 // + G4NucleiProperties::GetBindingEnergy << 58 << 59 G4double exponent = (BindingE+ theA*(mu+nu*t << 60 G4StatMFParameters::GetCoulomb()*th << 61 *theA*G4Pow::GetInstance()->Z23(the << 62 if (exponent > 300.0) exponent = 300.0; << 63 31 64 _MeanMultiplicity = (degeneracy*FreeVol*theA << 32 // Operators 65 G4Exp(exponent); << 33 >> 34 G4StatMFMacroTriNucleon & G4StatMFMacroTriNucleon:: >> 35 operator=(const G4StatMFMacroTriNucleon & ) >> 36 { >> 37 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroTriNucleon::operator= meant to not be accessable"); >> 38 return *this; >> 39 } >> 40 >> 41 >> 42 G4bool G4StatMFMacroTriNucleon::operator==(const G4StatMFMacroTriNucleon & ) const >> 43 { >> 44 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroTriNucleon::operator== meant to not be accessable"); >> 45 return false; >> 46 } >> 47 >> 48 >> 49 G4bool G4StatMFMacroTriNucleon::operator!=(const G4StatMFMacroTriNucleon & ) const >> 50 { >> 51 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroTriNucleon::operator!= meant to not be accessable"); >> 52 return true; >> 53 } >> 54 >> 55 >> 56 >> 57 G4double G4StatMFMacroTriNucleon::CalcMeanMultiplicity(const G4double FreeVol, const G4double mu, >> 58 const G4double nu, const G4double T) >> 59 { >> 60 const G4double ThermalWaveLenght = 16.15*fermi/sqrt(T); >> 61 >> 62 const G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght; >> 63 >> 64 const G4double degeneracy = 2.0+2.0; // H3 + He3 >> 65 >> 66 const G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())* >> 67 (1.0 - 1.0/pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.)); >> 68 >> 69 const G4double BindingE = G4NucleiPropertiesTable::GetBindingEnergy(1,theA); // old value was 9.224*MeV >> 70 // + G4NucleiProperties::GetBindingEnergy(2,theA); >> 71 >> 72 G4double exponent = (BindingE+ theA*(mu+nu*theZARatio) - >> 73 Coulomb*theZARatio*theZARatio*pow(static_cast<G4double>(theA),5./3.))/T; >> 74 if (exponent > 700.0) exponent = 700.0; >> 75 >> 76 _MeanMultiplicity = (degeneracy*FreeVol*static_cast<G4double>(theA)* >> 77 sqrt(static_cast<G4double>(theA))/lambda3)* >> 78 exp(exponent); 66 79 67 return _MeanMultiplicity; << 80 return _MeanMultiplicity; 68 } 81 } 69 82 >> 83 70 G4double G4StatMFMacroTriNucleon::CalcEnergy(c 84 G4double G4StatMFMacroTriNucleon::CalcEnergy(const G4double T) 71 { 85 { 72 return _Energy = -G4NucleiProperties::GetBi << 86 const G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())* 73 G4StatMFParameters::GetCoulomb() * theZARa << 87 (1.0 - 1.0/pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.)); 74 * theA*G4Pow::GetInstance()->Z23(theA) + 1 << 88 >> 89 return _Energy = -G4NucleiPropertiesTable::GetBindingEnergy(1,theA) + >> 90 Coulomb * theZARatio * theZARatio * pow(static_cast<G4double>(theA),5./3.) + >> 91 (3./2.) * T; >> 92 75 } 93 } 76 94 77 G4double << 95 78 G4StatMFMacroTriNucleon::CalcEntropy(const G4d << 96 G4double G4StatMFMacroTriNucleon::CalcEntropy(const G4double T, const G4double FreeVol) 79 { 97 { 80 G4double Entropy = 0.0; << 98 const G4double ThermalWaveLenght = 16.15*fermi/sqrt(T); 81 if (_MeanMultiplicity > 0.0) { << 99 const G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght; 82 G4double ThermalWaveLenght = 16.15*fermi/s << 100 83 G4double lambda3 = ThermalWaveLenght*Therm << 101 G4double Entropy = 0.0; 84 Entropy = _MeanMultiplicity*(2.5 + G4Log(( << 102 if (_MeanMultiplicity > 0.0) 85 *FreeVol/(lambda3*_MeanMultipli << 103 Entropy = _MeanMultiplicity*(5./2.+ 86 } << 104 log(4.0*static_cast<G4double>(theA)* 87 return Entropy; << 105 sqrt(static_cast<G4double>(theA))*FreeVol/(lambda3*_MeanMultiplicity))); >> 106 >> 107 >> 108 return Entropy; 88 } 109 } 89 110