Import Geant4 10.0.0 source tree
This commit is contained in:
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4Solver.cc 67983 2013-03-13 10:42:03Z gcosmo $
|
||||
//
|
||||
// Hadronic Process: Nuclear De-excitations
|
||||
// by V. Lara
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4StatMF.cc 67983 2013-03-13 10:42:03Z gcosmo $
|
||||
//
|
||||
// Hadronic Process: Nuclear De-excitations
|
||||
// by V. Lara
|
||||
@@ -57,7 +57,7 @@ G4FragmentVector * G4StatMF::BreakItUp(const G4Fragment &theFragment)
|
||||
// Maximun average multiplicity: M_0 = 2.6 for A ~ 200
|
||||
// and M_0 = 3.3 for A <= 110
|
||||
G4double MaxAverageMultiplicity =
|
||||
G4StatMFParameters::GetMaxAverageMultiplicity(static_cast<G4int>(theFragment.GetA()));
|
||||
G4StatMFParameters::GetMaxAverageMultiplicity(theFragment.GetA_asInt());
|
||||
|
||||
|
||||
// We'll use two kinds of ensembles
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4StatMFChannel.cc 67983 2013-03-13 10:42:03Z gcosmo $
|
||||
//
|
||||
// Hadronic Process: Nuclear De-excitations
|
||||
// by V. Lara
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4StatMFFragment.cc 67983 2013-03-13 10:42:03Z gcosmo $
|
||||
//
|
||||
// Hadronic Process: Nuclear De-excitations
|
||||
// by V. Lara
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4StatMFMacroBiNucleon.cc 67983 2013-03-13 10:42:03Z gcosmo $
|
||||
//
|
||||
// Hadronic Process: Nuclear De-excitations
|
||||
// by V. Lara
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4StatMFMacroCanonical.cc 67983 2013-03-13 10:42:03Z gcosmo $
|
||||
//
|
||||
// by V. Lara
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4StatMFMacroChemicalPotential.cc 67983 2013-03-13 10:42:03Z gcosmo $
|
||||
//
|
||||
// Hadronic Process: Nuclear De-excitations
|
||||
// by V. Lara
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4StatMFMacroMultiNucleon.cc 67983 2013-03-13 10:42:03Z gcosmo $
|
||||
//
|
||||
// Hadronic Process: Nuclear De-excitations
|
||||
// by V. Lara
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4StatMFMacroMultiplicity.cc 67983 2013-03-13 10:42:03Z gcosmo $
|
||||
//
|
||||
// Hadronic Process: Nuclear De-excitations
|
||||
// by V. Lara
|
||||
|
||||
+50
-62
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4StatMFMacroNucleon.cc 68724 2013-04-05 09:26:32Z gcosmo $
|
||||
//
|
||||
// Hadronic Process: Nuclear De-excitations
|
||||
// by V. Lara
|
||||
@@ -33,87 +33,75 @@
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
// Operators
|
||||
G4StatMFMacroNucleon::G4StatMFMacroNucleon()
|
||||
: G4VStatMFMacroCluster(1), _NeutronMeanMultiplicity(0.0),
|
||||
_ProtonMeanMultiplicity(0.0)
|
||||
{}
|
||||
|
||||
G4StatMFMacroNucleon & G4StatMFMacroNucleon::
|
||||
operator=(const G4StatMFMacroNucleon & )
|
||||
G4StatMFMacroNucleon::~G4StatMFMacroNucleon()
|
||||
{}
|
||||
|
||||
G4double
|
||||
G4StatMFMacroNucleon::CalcMeanMultiplicity(const G4double FreeVol,
|
||||
const G4double mu,
|
||||
const G4double nu, const G4double T)
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroNucleon::operator= meant to not be accessable");
|
||||
return *this;
|
||||
}
|
||||
if (T <= 0.0) {
|
||||
throw G4HadronicException(__FILE__, __LINE__,
|
||||
"G4StatMFMacroNucleon::CalcMeanMultiplicity: Temperature less or equal 0");
|
||||
}
|
||||
|
||||
|
||||
G4bool G4StatMFMacroNucleon::operator==(const G4StatMFMacroNucleon & ) const
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroNucleon::operator== meant to not be accessable");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
G4bool G4StatMFMacroNucleon::operator!=(const G4StatMFMacroNucleon & ) const
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroNucleon::operator!= meant to not be accessable");
|
||||
return true;
|
||||
}
|
||||
|
||||
G4double G4StatMFMacroNucleon::CalcMeanMultiplicity(const G4double FreeVol, const G4double mu,
|
||||
const G4double nu, const G4double T)
|
||||
{
|
||||
if (T <= 0.0) throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroNucleon::CalcMeanMultiplicity: Temperature less or equal 0");
|
||||
const G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
|
||||
G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
|
||||
|
||||
const G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
|
||||
G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
|
||||
|
||||
const G4double degeneracy = 2.0;
|
||||
static const G4double degeneracy = 2.0;
|
||||
|
||||
const G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
|
||||
(1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
|
||||
G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
|
||||
(1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
|
||||
|
||||
G4double exponent_proton = (mu+nu-Coulomb)/T;
|
||||
G4double exponent_neutron = mu/T;
|
||||
G4double exponent_proton = (mu+nu-Coulomb)/T;
|
||||
G4double exponent_neutron = mu/T;
|
||||
|
||||
if (exponent_neutron > 700.0) exponent_neutron = 700.0;
|
||||
if (exponent_proton > 700.0) exponent_proton = 700.0;
|
||||
if (exponent_neutron > 700.0) exponent_neutron = 700.0;
|
||||
if (exponent_proton > 700.0) exponent_proton = 700.0;
|
||||
|
||||
_NeutronMeanMultiplicity = (degeneracy*FreeVol/lambda3)*std::exp(exponent_neutron);
|
||||
_NeutronMeanMultiplicity =
|
||||
(degeneracy*FreeVol/lambda3)*std::exp(exponent_neutron);
|
||||
|
||||
_ProtonMeanMultiplicity = (degeneracy*FreeVol/lambda3)*std::exp(exponent_proton);
|
||||
_ProtonMeanMultiplicity =
|
||||
(degeneracy*FreeVol/lambda3)*std::exp(exponent_proton);
|
||||
|
||||
|
||||
|
||||
return _MeanMultiplicity = _NeutronMeanMultiplicity + _ProtonMeanMultiplicity;
|
||||
|
||||
return _MeanMultiplicity = _NeutronMeanMultiplicity + _ProtonMeanMultiplicity;
|
||||
}
|
||||
|
||||
|
||||
G4double G4StatMFMacroNucleon::CalcEnergy(const G4double T)
|
||||
{
|
||||
const G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
|
||||
(1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
|
||||
G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
|
||||
(1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
|
||||
|
||||
return _Energy = Coulomb * theZARatio * theZARatio + (3./2.) * T;
|
||||
|
||||
return _Energy = Coulomb * theZARatio * theZARatio + (3./2.) * T;
|
||||
}
|
||||
|
||||
G4double G4StatMFMacroNucleon::CalcEntropy(const G4double T, const G4double FreeVol)
|
||||
G4double
|
||||
G4StatMFMacroNucleon::CalcEntropy(const G4double T, const G4double FreeVol)
|
||||
{
|
||||
const G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
|
||||
const G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
|
||||
G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
|
||||
G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
|
||||
|
||||
G4double NeutronEntropy = 0.0;
|
||||
if (_NeutronMeanMultiplicity > 0.0)
|
||||
NeutronEntropy = _NeutronMeanMultiplicity*(5./2.+
|
||||
std::log(2.0*static_cast<G4double>(theA)*FreeVol/
|
||||
(lambda3*_NeutronMeanMultiplicity)));
|
||||
|
||||
|
||||
G4double ProtonEntropy = 0.0;
|
||||
if (_ProtonMeanMultiplicity > 0.0)
|
||||
ProtonEntropy = _ProtonMeanMultiplicity*(5./2.+
|
||||
std::log(2.0*static_cast<G4double>(theA)*FreeVol/
|
||||
(lambda3*_ProtonMeanMultiplicity)));
|
||||
|
||||
|
||||
return NeutronEntropy+ProtonEntropy;
|
||||
G4double NeutronEntropy = 0.0;
|
||||
if (_NeutronMeanMultiplicity > 0.0)
|
||||
NeutronEntropy = _NeutronMeanMultiplicity*(5./2.+
|
||||
std::log(2.0*static_cast<G4double>(theA)*FreeVol/
|
||||
(lambda3*_NeutronMeanMultiplicity)));
|
||||
|
||||
G4double ProtonEntropy = 0.0;
|
||||
if (_ProtonMeanMultiplicity > 0.0)
|
||||
ProtonEntropy = _ProtonMeanMultiplicity*(5./2.+
|
||||
std::log(2.0*static_cast<G4double>(theA)*FreeVol/
|
||||
(lambda3*_ProtonMeanMultiplicity)));
|
||||
|
||||
return NeutronEntropy+ProtonEntropy;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4StatMFMacroTemperature.cc 67983 2013-03-13 10:42:03Z gcosmo $
|
||||
//
|
||||
// Hadronic Process: Nuclear De-excitations
|
||||
// by V. Lara
|
||||
|
||||
+45
-68
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4StatMFMacroTetraNucleon.cc 68724 2013-04-05 09:26:32Z gcosmo $
|
||||
//
|
||||
// Hadronic Process: Nuclear De-excitations
|
||||
// by V. Lara
|
||||
@@ -33,89 +33,66 @@
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
// Copy constructor
|
||||
G4StatMFMacroTetraNucleon::
|
||||
G4StatMFMacroTetraNucleon(const G4StatMFMacroTetraNucleon & ) :
|
||||
G4VStatMFMacroCluster(0) // Beacuse the def. constr. of base class is private
|
||||
G4StatMFMacroTetraNucleon::G4StatMFMacroTetraNucleon()
|
||||
: G4VStatMFMacroCluster(4)
|
||||
{}
|
||||
|
||||
G4StatMFMacroTetraNucleon::~G4StatMFMacroTetraNucleon()
|
||||
{}
|
||||
|
||||
G4double
|
||||
G4StatMFMacroTetraNucleon::CalcMeanMultiplicity(const G4double FreeVol,
|
||||
const G4double mu,
|
||||
const G4double nu,
|
||||
const G4double T)
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroTetraNucleon::copy_constructor meant to not be accessable");
|
||||
}
|
||||
|
||||
// Operators
|
||||
|
||||
G4StatMFMacroTetraNucleon & G4StatMFMacroTetraNucleon::
|
||||
operator=(const G4StatMFMacroTetraNucleon & )
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroTetraNucleon::operator= meant to not be accessable");
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
G4bool G4StatMFMacroTetraNucleon::operator==(const G4StatMFMacroTetraNucleon & ) const
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroTetraNucleon::operator== meant to not be accessable");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
G4bool G4StatMFMacroTetraNucleon::operator!=(const G4StatMFMacroTetraNucleon & ) const
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroTetraNucleon::operator!= meant to not be accessable");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
G4double G4StatMFMacroTetraNucleon::CalcMeanMultiplicity(const G4double FreeVol, const G4double mu,
|
||||
const G4double nu, const G4double T)
|
||||
{
|
||||
const G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
|
||||
|
||||
const G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
|
||||
|
||||
const G4double degeneracy = 1; // He4
|
||||
|
||||
const G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
|
||||
G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
|
||||
G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
|
||||
static const G4double degeneracy = 1; // He4
|
||||
const G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
|
||||
(1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
|
||||
|
||||
const G4double BindingE = G4NucleiProperties::GetBindingEnergy(theA,2); //old value was 30.11*MeV
|
||||
//old value was 30.11*MeV
|
||||
G4double BindingE = G4NucleiProperties::GetBindingEnergy(theA,2);
|
||||
|
||||
G4double exponent = (BindingE + theA*(mu+nu*theZARatio+T*T/_InvLevelDensity) -
|
||||
Coulomb*theZARatio*theZARatio*std::pow(static_cast<G4double>(theA),5./3.))/T;
|
||||
if (exponent > 700.0) exponent = 700.0;
|
||||
G4double exponent = (BindingE + theA*(mu+nu*theZARatio+T*T/_InvLevelDensity)
|
||||
- Coulomb*theZARatio*theZARatio*
|
||||
std::pow(static_cast<G4double>(theA),5./3.))/T;
|
||||
if (exponent > 700.0) exponent = 700.0;
|
||||
|
||||
_MeanMultiplicity = ( degeneracy*FreeVol* static_cast<G4double>(theA)*
|
||||
std::sqrt(static_cast<G4double>(theA))/lambda3)*
|
||||
std::exp(exponent);
|
||||
_MeanMultiplicity = ( degeneracy*FreeVol*theA*
|
||||
std::sqrt(static_cast<G4double>(theA))/lambda3)*
|
||||
std::exp(exponent);
|
||||
|
||||
return _MeanMultiplicity;
|
||||
return _MeanMultiplicity;
|
||||
}
|
||||
|
||||
|
||||
G4double G4StatMFMacroTetraNucleon::CalcEnergy(const G4double T)
|
||||
{
|
||||
const G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
|
||||
(1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
|
||||
G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
|
||||
(1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
|
||||
|
||||
return _Energy = -G4NucleiProperties::GetBindingEnergy(theA,2) +
|
||||
Coulomb * theZARatio * theZARatio * std::pow(static_cast<G4double>(theA),5./3.) +
|
||||
(3./2.) * T +
|
||||
theA * T*T/_InvLevelDensity;
|
||||
return _Energy = -G4NucleiProperties::GetBindingEnergy(theA,2) +
|
||||
Coulomb * theZARatio * theZARatio *
|
||||
std::pow(static_cast<G4double>(theA),5./3.) +
|
||||
(3./2.) * T +
|
||||
theA * T*T/_InvLevelDensity;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
G4double G4StatMFMacroTetraNucleon::CalcEntropy(const G4double T, const G4double FreeVol)
|
||||
G4double
|
||||
G4StatMFMacroTetraNucleon::CalcEntropy(const G4double T,
|
||||
const G4double FreeVol)
|
||||
{
|
||||
const G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
|
||||
const G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
|
||||
G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
|
||||
G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
|
||||
|
||||
G4double Entropy = 0.0;
|
||||
if (_MeanMultiplicity > 0.0)
|
||||
Entropy = _MeanMultiplicity*(5./2.+
|
||||
std::log(8.0*FreeVol/(lambda3*_MeanMultiplicity)))+ // 8 = theA*std::sqrt(theA)
|
||||
8.0*T/_InvLevelDensity;
|
||||
G4double Entropy = 0.0;
|
||||
if (_MeanMultiplicity > 0.0)
|
||||
Entropy = _MeanMultiplicity*(5./2.+
|
||||
std::log(8.0*FreeVol/(lambda3*_MeanMultiplicity)))+ // 8 = theA*std::sqrt(theA)
|
||||
8.0*T/_InvLevelDensity;
|
||||
|
||||
return Entropy;
|
||||
return Entropy;
|
||||
}
|
||||
|
||||
+43
-62
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4StatMFMacroTriNucleon.cc 68724 2013-04-05 09:26:32Z gcosmo $
|
||||
//
|
||||
// Hadronic Process: Nuclear De-excitations
|
||||
// by V. Lara
|
||||
@@ -33,81 +33,62 @@
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
// Operators
|
||||
G4StatMFMacroTriNucleon::G4StatMFMacroTriNucleon()
|
||||
: G4VStatMFMacroCluster(3)
|
||||
{}
|
||||
|
||||
G4StatMFMacroTriNucleon & G4StatMFMacroTriNucleon::
|
||||
operator=(const G4StatMFMacroTriNucleon & )
|
||||
G4StatMFMacroTriNucleon::~G4StatMFMacroTriNucleon()
|
||||
{}
|
||||
|
||||
G4double
|
||||
G4StatMFMacroTriNucleon::CalcMeanMultiplicity(const G4double FreeVol,
|
||||
const G4double mu,
|
||||
const G4double nu,
|
||||
const G4double T)
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroTriNucleon::operator= meant to not be accessable");
|
||||
return *this;
|
||||
}
|
||||
G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
|
||||
G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
|
||||
static const G4double degeneracy = 2.0+2.0; // H3 + He3
|
||||
G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
|
||||
(1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
|
||||
|
||||
// old value was 9.224*MeV
|
||||
G4double BindingE = G4NucleiProperties::GetBindingEnergy(theA,1);
|
||||
// + G4NucleiProperties::GetBindingEnergy(theA,2);
|
||||
|
||||
G4bool G4StatMFMacroTriNucleon::operator==(const G4StatMFMacroTriNucleon & ) const
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroTriNucleon::operator== meant to not be accessable");
|
||||
return false;
|
||||
}
|
||||
|
||||
G4double exponent = (BindingE+ theA*(mu+nu*theZARatio) -
|
||||
Coulomb*theZARatio*theZARatio
|
||||
*std::pow(static_cast<G4double>(theA),5./3.))/T;
|
||||
if (exponent > 700.0) exponent = 700.0;
|
||||
|
||||
G4bool G4StatMFMacroTriNucleon::operator!=(const G4StatMFMacroTriNucleon & ) const
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroTriNucleon::operator!= meant to not be accessable");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
G4double G4StatMFMacroTriNucleon::CalcMeanMultiplicity(const G4double FreeVol, const G4double mu,
|
||||
const G4double nu, const G4double T)
|
||||
{
|
||||
const G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
|
||||
|
||||
const G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
|
||||
|
||||
const G4double degeneracy = 2.0+2.0; // H3 + He3
|
||||
|
||||
const G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
|
||||
(1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
|
||||
|
||||
const G4double BindingE = G4NucleiProperties::GetBindingEnergy(theA,1); // old value was 9.224*MeV
|
||||
// + G4NucleiProperties::GetBindingEnergy(theA,2);
|
||||
|
||||
G4double exponent = (BindingE+ theA*(mu+nu*theZARatio) -
|
||||
Coulomb*theZARatio*theZARatio*std::pow(static_cast<G4double>(theA),5./3.))/T;
|
||||
if (exponent > 700.0) exponent = 700.0;
|
||||
|
||||
_MeanMultiplicity = (degeneracy*FreeVol*static_cast<G4double>(theA)*
|
||||
std::sqrt(static_cast<G4double>(theA))/lambda3)*
|
||||
std::exp(exponent);
|
||||
_MeanMultiplicity = (degeneracy*FreeVol*theA*
|
||||
std::sqrt(static_cast<G4double>(theA))/lambda3)*
|
||||
std::exp(exponent);
|
||||
|
||||
return _MeanMultiplicity;
|
||||
return _MeanMultiplicity;
|
||||
}
|
||||
|
||||
|
||||
G4double G4StatMFMacroTriNucleon::CalcEnergy(const G4double T)
|
||||
{
|
||||
const G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
|
||||
(1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
|
||||
G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
|
||||
(1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
|
||||
|
||||
return _Energy = -G4NucleiProperties::GetBindingEnergy(theA,1) +
|
||||
Coulomb * theZARatio * theZARatio * std::pow(static_cast<G4double>(theA),5./3.) +
|
||||
(3./2.) * T;
|
||||
|
||||
return _Energy = -G4NucleiProperties::GetBindingEnergy(theA,1) +
|
||||
Coulomb * theZARatio * theZARatio
|
||||
* std::pow(static_cast<G4double>(theA),5./3.) + (3./2.) * T;
|
||||
}
|
||||
|
||||
|
||||
G4double G4StatMFMacroTriNucleon::CalcEntropy(const G4double T, const G4double FreeVol)
|
||||
G4double
|
||||
G4StatMFMacroTriNucleon::CalcEntropy(const G4double T, const G4double FreeVol)
|
||||
{
|
||||
const G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
|
||||
const G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
|
||||
G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
|
||||
G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
|
||||
|
||||
G4double Entropy = 0.0;
|
||||
if (_MeanMultiplicity > 0.0)
|
||||
Entropy = _MeanMultiplicity*(5./2.+
|
||||
std::log(4.0*static_cast<G4double>(theA)*
|
||||
std::sqrt(static_cast<G4double>(theA))*FreeVol/(lambda3*_MeanMultiplicity)));
|
||||
G4double Entropy = 0.0;
|
||||
if (_MeanMultiplicity > 0.0)
|
||||
Entropy = _MeanMultiplicity*(2.5 + std::log((4*theA)*
|
||||
std::sqrt(static_cast<G4double>(theA))*FreeVol
|
||||
/(lambda3*_MeanMultiplicity)));
|
||||
|
||||
|
||||
return Entropy;
|
||||
return Entropy;
|
||||
}
|
||||
|
||||
+2
-2
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4StatMFMicroCanonical.cc 67983 2013-03-13 10:42:03Z gcosmo $
|
||||
//
|
||||
// Hadronic Process: Nuclear De-excitations
|
||||
// by V. Lara
|
||||
@@ -261,7 +261,7 @@ G4StatMFChannel * G4StatMFMicroCanonical::ChooseAandZ(const G4Fragment & theFra
|
||||
for (it = _ThePartitionManagerVector.begin(); it != _ThePartitionManagerVector.end(); ++it) {
|
||||
AccumWeight += (*it)->GetProbability();
|
||||
if (RandNumber < AccumWeight) {
|
||||
return (*it)->ChooseChannel(theFragment.GetA(),theFragment.GetZ(),__MeanTemperature);
|
||||
return (*it)->ChooseChannel(theFragment.GetA_asInt(),theFragment.GetZ_asInt(),__MeanTemperature);
|
||||
}
|
||||
}
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMicroCanonical::ChooseAandZ: wrong normalization!");
|
||||
|
||||
+13
-24
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4StatMFMicroManager.cc 67983 2013-03-13 10:42:03Z gcosmo $
|
||||
//
|
||||
// Hadronic Process: Nuclear De-excitations
|
||||
// by V. Lara
|
||||
@@ -61,11 +61,9 @@ G4bool G4StatMFMicroManager::operator!=(const G4StatMFMicroManager & ) const
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// constructor
|
||||
G4StatMFMicroManager::G4StatMFMicroManager(const G4Fragment & theFragment, const G4int multiplicity,
|
||||
const G4double FreeIntE, const G4double SCompNuc) :
|
||||
G4StatMFMicroManager::G4StatMFMicroManager(const G4Fragment & theFragment, G4int multiplicity,
|
||||
G4double FreeIntE, G4double SCompNuc) :
|
||||
_Normalization(0.0)
|
||||
{
|
||||
// Perform class initialization
|
||||
@@ -87,15 +85,15 @@ G4StatMFMicroManager::~G4StatMFMicroManager()
|
||||
|
||||
// Initialization method
|
||||
|
||||
void G4StatMFMicroManager::Initialize(const G4Fragment & theFragment, const G4int im,
|
||||
const G4double FreeIntE, const G4double SCompNuc)
|
||||
void G4StatMFMicroManager::Initialize(const G4Fragment & theFragment, G4int im,
|
||||
G4double FreeIntE, G4double SCompNuc)
|
||||
{
|
||||
G4int i;
|
||||
|
||||
G4double U = theFragment.GetExcitationEnergy();
|
||||
|
||||
G4double A = theFragment.GetA();
|
||||
G4double Z = theFragment.GetZ();
|
||||
G4int A = theFragment.GetA_asInt();
|
||||
G4int Z = theFragment.GetZ_asInt();
|
||||
|
||||
// Statistical weights
|
||||
_WW = 0.0;
|
||||
@@ -118,7 +116,7 @@ void G4StatMFMicroManager::Initialize(const G4Fragment & theFragment, const G4in
|
||||
// FragmentAtomicNumbers[m-1]>FragmentAtomicNumbers[m-2]>...>FragmentAtomicNumbers[0]
|
||||
// Our initial distribution is
|
||||
// FragmentAtomicNumbers[m-1]=A, FragmentAtomicNumbers[m-2]=0, ..., FragmentAtomicNumbers[0]=0
|
||||
FragmentAtomicNumbers[im-1] = static_cast<G4int>(A);
|
||||
FragmentAtomicNumbers[im-1] = A;
|
||||
for (i = 0; i < (im - 1); i++) FragmentAtomicNumbers[i] = 0;
|
||||
|
||||
// We try to distribute A nucleons in partitions of m fragments
|
||||
@@ -127,8 +125,7 @@ void G4StatMFMicroManager::Initialize(const G4Fragment & theFragment, const G4in
|
||||
while (MakePartition(im,FragmentAtomicNumbers)) {
|
||||
// Allowed partitions are stored and its probability calculated
|
||||
|
||||
G4StatMFMicroPartition * aPartition = new G4StatMFMicroPartition(static_cast<G4int>(A),
|
||||
static_cast<G4int>(Z));
|
||||
G4StatMFMicroPartition * aPartition = new G4StatMFMicroPartition(A,Z);
|
||||
G4double PartitionProbability = 0.0;
|
||||
|
||||
for (i = im-1; i >= 0; i--) aPartition->SetPartitionFragment(FragmentAtomicNumbers[i]);
|
||||
@@ -142,15 +139,9 @@ void G4StatMFMicroManager::Initialize(const G4Fragment & theFragment, const G4in
|
||||
_MeanEntropy += PartitionProbability * aPartition->GetEntropy();
|
||||
|
||||
}
|
||||
|
||||
|
||||
// garbage collection
|
||||
// delete [] FragmentAtomicNumbers;
|
||||
|
||||
}
|
||||
|
||||
|
||||
G4bool G4StatMFMicroManager::MakePartition(const G4int k, G4int * ANumbers)
|
||||
G4bool G4StatMFMicroManager::MakePartition(G4int k, G4int * ANumbers)
|
||||
// Distributes A nucleons between k fragments
|
||||
// mantaining the order ANumbers[k-1] > ANumbers[k-2] > ... > ANumbers[0]
|
||||
// If it is possible returns true. In other case returns false
|
||||
@@ -169,9 +160,7 @@ G4bool G4StatMFMicroManager::MakePartition(const G4int k, G4int * ANumbers)
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void G4StatMFMicroManager::Normalize(const G4double Norm)
|
||||
void G4StatMFMicroManager::Normalize(G4double Norm)
|
||||
{
|
||||
_Normalization = Norm;
|
||||
_WW /= Norm;
|
||||
@@ -182,8 +171,8 @@ void G4StatMFMicroManager::Normalize(const G4double Norm)
|
||||
return;
|
||||
}
|
||||
|
||||
G4StatMFChannel * G4StatMFMicroManager::ChooseChannel(const G4double A0, const G4double Z0,
|
||||
const G4double MeanT)
|
||||
G4StatMFChannel*
|
||||
G4StatMFMicroManager::ChooseChannel(G4int A0, G4int Z0, G4double MeanT)
|
||||
{
|
||||
G4double RandNumber = _Normalization * _WW * G4UniformRand();
|
||||
G4double AccumWeight = 0.0;
|
||||
|
||||
+23
-31
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4StatMFMicroPartition.cc 67983 2013-03-13 10:42:03Z gcosmo $
|
||||
//
|
||||
// by V. Lara
|
||||
// --------------------------------------------------------------------
|
||||
@@ -63,9 +63,7 @@ G4bool G4StatMFMicroPartition::operator!=(const G4StatMFMicroPartition & ) const
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void G4StatMFMicroPartition::CoulombFreeEnergy(const G4double anA)
|
||||
void G4StatMFMicroPartition::CoulombFreeEnergy(G4int anA)
|
||||
{
|
||||
// This Z independent factor in the Coulomb free energy
|
||||
G4double CoulombConstFactor = 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1.0/3.0);
|
||||
@@ -74,10 +72,12 @@ void G4StatMFMicroPartition::CoulombFreeEnergy(const G4double anA)
|
||||
(1. - CoulombConstFactor)/G4StatMFParameters::Getr0();
|
||||
|
||||
// We use the aproximation Z_f ~ Z/A * A_f
|
||||
|
||||
G4double ZA = G4double(theZ)/G4double(theA);
|
||||
|
||||
if (anA == 0 || anA == 1)
|
||||
{
|
||||
_theCoulombFreeEnergy.push_back(CoulombConstFactor*(theZ/theA)*(theZ/theA));
|
||||
_theCoulombFreeEnergy.push_back(CoulombConstFactor*ZA*ZA);
|
||||
}
|
||||
else if (anA == 2 || anA == 3 || anA == 4)
|
||||
{
|
||||
@@ -86,13 +86,10 @@ void G4StatMFMicroPartition::CoulombFreeEnergy(const G4double anA)
|
||||
}
|
||||
else // anA > 4
|
||||
{
|
||||
_theCoulombFreeEnergy.push_back(CoulombConstFactor*(theZ/theA)*(theZ/theA)*
|
||||
std::pow(anA,5./3.));
|
||||
|
||||
_theCoulombFreeEnergy.push_back(CoulombConstFactor*ZA*ZA*std::pow(anA,5./3.));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
G4double G4StatMFMicroPartition::GetCoulombEnergy(void)
|
||||
{
|
||||
G4double CoulombFactor = 1.0/
|
||||
@@ -101,22 +98,22 @@ G4double G4StatMFMicroPartition::GetCoulombEnergy(void)
|
||||
G4double CoulombEnergy = elm_coupling*(3./5.)*theZ*theZ*CoulombFactor/
|
||||
(G4StatMFParameters::Getr0()*std::pow(static_cast<G4double>(theA),1./3.));
|
||||
|
||||
G4double ZA = G4double(theZ)/G4double(theA);
|
||||
for (unsigned int i = 0; i < _thePartition.size(); i++)
|
||||
CoulombEnergy += _theCoulombFreeEnergy[i] - elm_coupling*(3./5.)*
|
||||
(theZ/theA)*(theZ/theA)*std::pow(static_cast<G4double>(_thePartition[i]),5./3.)/
|
||||
ZA*ZA*std::pow(static_cast<G4double>(_thePartition[i]),5./3.)/
|
||||
G4StatMFParameters::Getr0();
|
||||
|
||||
return CoulombEnergy;
|
||||
}
|
||||
|
||||
G4double G4StatMFMicroPartition::GetPartitionEnergy(const G4double T)
|
||||
G4double G4StatMFMicroPartition::GetPartitionEnergy(G4double T)
|
||||
{
|
||||
G4double CoulombFactor = 1.0/
|
||||
std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1.0/3.0);
|
||||
|
||||
G4double PartitionEnergy = 0.0;
|
||||
|
||||
|
||||
// We use the aprox that Z_f ~ Z/A * A_f
|
||||
for (unsigned int i = 0; i < _thePartition.size(); i++)
|
||||
{
|
||||
@@ -171,15 +168,14 @@ G4double G4StatMFMicroPartition::GetPartitionEnergy(const G4double T)
|
||||
return PartitionEnergy;
|
||||
}
|
||||
|
||||
|
||||
G4double G4StatMFMicroPartition::CalcPartitionTemperature(const G4double U,
|
||||
const G4double FreeInternalE0)
|
||||
G4double G4StatMFMicroPartition::CalcPartitionTemperature(G4double U,
|
||||
G4double FreeInternalE0)
|
||||
{
|
||||
G4double PartitionEnergy = GetPartitionEnergy(0.0);
|
||||
|
||||
// If this happens, T = 0 MeV, which means that probability for this
|
||||
// partition will be 0
|
||||
if (std::abs(U + FreeInternalE0 - PartitionEnergy) < 0.003) return -1.0;
|
||||
if (std::fabs(U + FreeInternalE0 - PartitionEnergy) < 0.003) return -1.0;
|
||||
|
||||
// Calculate temperature by midpoint method
|
||||
|
||||
@@ -204,9 +200,9 @@ G4double G4StatMFMicroPartition::CalcPartitionTemperature(const G4double U,
|
||||
for (G4int i = 0; i < 1000; i++)
|
||||
{
|
||||
Tmid = (Ta+Tb)/2.0;
|
||||
if (std::abs(Ta-Tb) <= eps) return Tmid;
|
||||
if (std::fabs(Ta-Tb) <= eps) return Tmid;
|
||||
G4double Dmid = (U + FreeInternalE0 - GetPartitionEnergy(Tmid))/U;
|
||||
if (std::abs(Dmid) < 0.003) return Tmid;
|
||||
if (std::fabs(Dmid) < 0.003) return Tmid;
|
||||
if (Da*Dmid < 0.0)
|
||||
{
|
||||
Tb = Tmid;
|
||||
@@ -226,10 +222,9 @@ G4double G4StatMFMicroPartition::CalcPartitionTemperature(const G4double U,
|
||||
|
||||
}
|
||||
|
||||
|
||||
G4double G4StatMFMicroPartition::CalcPartitionProbability(const G4double U,
|
||||
const G4double FreeInternalE0,
|
||||
const G4double SCompound)
|
||||
G4double G4StatMFMicroPartition::CalcPartitionProbability(G4double U,
|
||||
G4double FreeInternalE0,
|
||||
G4double SCompound)
|
||||
{
|
||||
G4double T = CalcPartitionTemperature(U,FreeInternalE0);
|
||||
if ( T <= 0.0) return _Probability = 0.0;
|
||||
@@ -293,7 +288,7 @@ G4double G4StatMFMicroPartition::CalcPartitionProbability(const G4double U,
|
||||
G4double FreeVolume = kappa*V0;
|
||||
G4double TranslationalS = std::max(0.0, std::log(ProbA32/Fact) +
|
||||
(_thePartition.size()-1.0)*std::log(FreeVolume/ThermalWaveLenght3) +
|
||||
1.5*(_thePartition.size()-1.0) - (3./2.)*std::log(theA));
|
||||
1.5*(_thePartition.size()-1.0) - (3./2.)*std::log(G4double(theA)));
|
||||
|
||||
PartitionEntropy += std::log(ProbDegeneracy) + TranslationalS;
|
||||
_Entropy = PartitionEntropy;
|
||||
@@ -304,9 +299,7 @@ G4double G4StatMFMicroPartition::CalcPartitionProbability(const G4double U,
|
||||
return _Probability = std::exp(exponent);
|
||||
}
|
||||
|
||||
|
||||
|
||||
G4double G4StatMFMicroPartition::GetDegeneracyFactor(const G4int A)
|
||||
G4double G4StatMFMicroPartition::GetDegeneracyFactor(G4int A)
|
||||
{
|
||||
// Degeneracy factors are statistical factors
|
||||
// DegeneracyFactor for nucleon is (2S_n + 1)(2I_n + 1) = 4
|
||||
@@ -314,13 +307,12 @@ G4double G4StatMFMicroPartition::GetDegeneracyFactor(const G4int A)
|
||||
if (A > 4) DegFactor = 1.0;
|
||||
else if (A == 1) DegFactor = 4.0; // nucleon
|
||||
else if (A == 2) DegFactor = 3.0; // Deuteron
|
||||
else if (A == 3) DegFactor = 2.0+2.0; // Triton + He3
|
||||
else if (A == 3) DegFactor = 4.0; // Triton + He3
|
||||
else if (A == 4) DegFactor = 1.0; // alpha
|
||||
return DegFactor;
|
||||
}
|
||||
|
||||
|
||||
G4StatMFChannel * G4StatMFMicroPartition::ChooseZ(const G4double A0, const G4double Z0, const G4double MeanT)
|
||||
G4StatMFChannel * G4StatMFMicroPartition::ChooseZ(G4int A0, G4int Z0, G4double MeanT)
|
||||
// Gives fragments charges
|
||||
{
|
||||
std::vector<G4int> FragmentsZ;
|
||||
@@ -346,9 +338,9 @@ G4StatMFChannel * G4StatMFMicroPartition::ChooseZ(const G4double A0, const G4dou
|
||||
FragmentsZ.push_back(Zf);
|
||||
SumZ += Zf;
|
||||
}
|
||||
ZBalance = static_cast<G4int>(Z0) - SumZ;
|
||||
ZBalance = Z0 - SumZ;
|
||||
}
|
||||
while (std::abs(ZBalance) > 1.1);
|
||||
while (std::abs(ZBalance) > 1);
|
||||
FragmentsZ[0] += ZBalance;
|
||||
|
||||
G4StatMFChannel * theChannel = new G4StatMFChannel;
|
||||
|
||||
+75
-32
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4StatMFParameters.cc 68724 2013-04-05 09:26:32Z gcosmo $
|
||||
//
|
||||
// Hadronic Process: Nuclear De-excitations
|
||||
// by V. Lara
|
||||
@@ -33,62 +33,105 @@
|
||||
#include "G4StatMFParameters.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
const G4double G4StatMFParameters::_Kappa = 1.0; // dimensionless
|
||||
const G4double G4StatMFParameters::fKappa = 1.0; // dimensionless
|
||||
|
||||
const G4double G4StatMFParameters::_KappaCoulomb = 2.0; // dimensionless
|
||||
const G4double G4StatMFParameters::fKappaCoulomb = 2.0; // dimensionless
|
||||
|
||||
const G4double G4StatMFParameters::_Epsilon0 = 16.0*MeV;
|
||||
const G4double G4StatMFParameters::fEpsilon0 = 16.0*MeV;
|
||||
|
||||
// Bethe-Weizsacker coefficients
|
||||
const G4double G4StatMFParameters::_E0 = 16.0*MeV;
|
||||
const G4double G4StatMFParameters::fE0 = 16.0*MeV;
|
||||
|
||||
const G4double G4StatMFParameters::_Beta0 = 18.0*MeV;
|
||||
const G4double G4StatMFParameters::fBeta0 = 18.0*MeV;
|
||||
|
||||
const G4double G4StatMFParameters::_Gamma0 = 25.0*MeV;
|
||||
const G4double G4StatMFParameters::fGamma0 = 25.0*MeV;
|
||||
|
||||
// Critical temperature (for liquid-gas phase transitions)
|
||||
const G4double G4StatMFParameters::_CriticalTemp = 18.0*MeV;
|
||||
const G4double G4StatMFParameters::fCriticalTemp = 18.0*MeV;
|
||||
|
||||
// Nuclear radius
|
||||
const G4double G4StatMFParameters::_r0 = 1.17*fermi;
|
||||
const G4double G4StatMFParameters::fr0 = 1.17*fermi;
|
||||
|
||||
G4double G4StatMFParameters::Beta(const G4double T)
|
||||
{
|
||||
if (T > _CriticalTemp) return 0.0;
|
||||
else {
|
||||
G4double CriticalTempSqr = _CriticalTemp*_CriticalTemp;
|
||||
G4double TempSqr = T*T;
|
||||
G4double tmp = (CriticalTempSqr-TempSqr)/(CriticalTempSqr+TempSqr);
|
||||
|
||||
return _Beta0*tmp*std::pow(tmp,1.0/4.0);
|
||||
}
|
||||
G4StatMFParameters::G4StatMFParameters()
|
||||
{}
|
||||
|
||||
G4StatMFParameters::~G4StatMFParameters()
|
||||
{}
|
||||
|
||||
G4double G4StatMFParameters::GetKappa()
|
||||
{
|
||||
return fKappa;
|
||||
}
|
||||
|
||||
G4double G4StatMFParameters::GetKappaCoulomb()
|
||||
{
|
||||
return fKappaCoulomb;
|
||||
}
|
||||
|
||||
G4double G4StatMFParameters::GetEpsilon0()
|
||||
{
|
||||
return fEpsilon0;
|
||||
}
|
||||
|
||||
G4double G4StatMFParameters::GetE0()
|
||||
{
|
||||
return fE0;
|
||||
}
|
||||
|
||||
G4double G4StatMFParameters::GetBeta0()
|
||||
{
|
||||
return fBeta0;
|
||||
}
|
||||
|
||||
G4double G4StatMFParameters::GetGamma0()
|
||||
{
|
||||
return fGamma0;
|
||||
}
|
||||
|
||||
G4double G4StatMFParameters::GetCriticalTemp()
|
||||
{
|
||||
return fCriticalTemp;
|
||||
}
|
||||
|
||||
G4double G4StatMFParameters::Getr0()
|
||||
{
|
||||
return fr0;
|
||||
}
|
||||
|
||||
G4double G4StatMFParameters::DBetaDT(const G4double T)
|
||||
G4double G4StatMFParameters::Beta(G4double T)
|
||||
{
|
||||
if (T > _CriticalTemp) return 0.0;
|
||||
else {
|
||||
G4double CriticalTempSqr = _CriticalTemp*_CriticalTemp;
|
||||
G4double res = 0.0;
|
||||
if (T < fCriticalTemp) {
|
||||
G4double CriticalTempSqr = fCriticalTemp*fCriticalTemp;
|
||||
G4double TempSqr = T*T;
|
||||
G4double tmp = (CriticalTempSqr-TempSqr)/(CriticalTempSqr+TempSqr);
|
||||
|
||||
return -5.0*_Beta0*std::pow(tmp,1.0/4.0)*(CriticalTempSqr*T)/
|
||||
res = fBeta0*tmp*std::pow(tmp,0.25);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
G4double G4StatMFParameters::DBetaDT(G4double T)
|
||||
{
|
||||
G4double res = 0.0;
|
||||
if (T < fCriticalTemp) {
|
||||
G4double CriticalTempSqr = fCriticalTemp*fCriticalTemp;
|
||||
G4double TempSqr = T*T;
|
||||
G4double tmp = (CriticalTempSqr-TempSqr)/(CriticalTempSqr+TempSqr);
|
||||
|
||||
res = -5.0*fBeta0*std::pow(tmp,0.25)*(CriticalTempSqr*T)/
|
||||
((CriticalTempSqr+TempSqr)*(CriticalTempSqr+TempSqr));
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
G4double G4StatMFParameters::GetMaxAverageMultiplicity(const G4int A)
|
||||
G4double
|
||||
G4StatMFParameters::GetMaxAverageMultiplicity(G4int A)
|
||||
{
|
||||
// Maximun average multiplicity: M_0 = 2.6 for A ~ 200
|
||||
// and M_0 = 3.3 for A <= 110
|
||||
G4double MaxAverageMultiplicity = 2.6;
|
||||
if (A <= 110) MaxAverageMultiplicity = 3.3;
|
||||
if (A <= 110) { MaxAverageMultiplicity = 3.3; }
|
||||
return MaxAverageMultiplicity;
|
||||
}
|
||||
|
||||
G4StatMFParameters G4StatMFParameters::theStatMFParameters;
|
||||
|
||||
|
||||
G4StatMFParameters * G4StatMFParameters::GetAddress()
|
||||
{ return &theStatMFParameters; }
|
||||
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4VMultiFragmentation.cc 67983 2013-03-13 10:42:03Z gcosmo $
|
||||
//
|
||||
// Hadronic Process: Nuclear De-excitations
|
||||
// by V. Lara (Nov 1998)
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4VStatMFEnsemble.cc 67983 2013-03-13 10:42:03Z gcosmo $
|
||||
//
|
||||
// Hadronic Process: Nuclear De-excitations
|
||||
// by V. Lara
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4VStatMFMacroCluster.cc 67983 2013-03-13 10:42:03Z gcosmo $
|
||||
//
|
||||
// Hadronic Process: Nuclear De-excitations
|
||||
// by V. Lara
|
||||
|
||||
Reference in New Issue
Block a user