Geant4-11
G4StatMFMacroMultiNucleon.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27//
28// Hadronic Process: Nuclear De-excitations
29// by V. Lara
30//
31// Modified:
32// 25.07.08 I.Pshenichnov (in collaboration with Alexander Botvina and Igor
33// Mishustin (FIAS, Frankfurt, INR, Moscow and Kurchatov Institute,
34// Moscow, pshenich@fias.uni-frankfurt.de) fixed computation of the
35// symmetry energy
36
39#include "G4SystemOfUnits.hh"
40#include "G4Log.hh"
41#include "G4Exp.hh"
42#include "G4Pow.hh"
43
44// Default constructor
47 G4VStatMFMacroCluster(0) // Beacuse the def. constr. of base class is private
48{
49 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroMultiNucleon::default_constructor meant to not be accessible");
50}
51
52// Copy constructor
55 G4VStatMFMacroCluster(0) // Beacuse the def. constr. of base class is private
56{
57 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroMultiNucleon::copy_constructor meant to not be accessible");
58}
59
60// Operators
61
64{
65 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroMultiNucleon::operator= meant to not be accessible");
66 return *this;
67}
68
70{
71 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroMultiNucleon::operator== meant to not be accessible");
72 return false;
73}
74
76{
77 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroMultiNucleon::operator!= meant to not be accessible");
78 return true;
79}
80
82 const G4double mu,
83 const G4double nu,
84 const G4double T)
85{
86 G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
87 G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
88 G4Pow* g4calc = G4Pow::GetInstance();
89 G4double A23 = g4calc->Z23(theA);
90
91 G4double exponent = (mu + nu*theZARatio+ G4StatMFParameters::GetE0()
92 + T*T/_InvLevelDensity
94 (1.0 - 2.0*theZARatio))*theA
97
98 exponent /= T;
99
100 if (exponent > 30.0) exponent = 30.0;
101
102 _MeanMultiplicity = std::max((FreeVol * theA * std::sqrt((G4double)theA)/lambda3) *
103 G4Exp(exponent),1.0e-30);
104 return _MeanMultiplicity;
105}
106
108{
112 return theZARatio;
113}
114
116{
117 G4Pow* g4calc = G4Pow::GetInstance();
118 G4double A23 = g4calc->Z23(theA);
119
120 // Volume term
122
123 // Symmetry term
125 *(1. - 2.* theZARatio) * (1. - 2.* theZARatio);
126
127 // Surface term
129
130 // Coulomb term
132
133 // Translational term
134 G4double ETrans = 1.5*T;
135 return _Energy = EVol + ESurf + ECoul + ETrans + ESym;
136}
137
139 const G4double FreeVol)
140{
141 G4double Entropy = 0.0;
142 if (_MeanMultiplicity > 0.0) {
143
144 G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
145 G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
146 // Volume term
147 G4double SV = 2.0*theA*T/_InvLevelDensity;
148
149 // Surface term
151
152 // Translational term
153 G4double ST = 2.5 + G4Log(FreeVol * std::sqrt((G4double)theA) * theA
154 /(lambda3*_MeanMultiplicity));
155
156 Entropy = _MeanMultiplicity*(SV + SS + ST);
157 }
158 return Entropy;
159}
#define A23
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:179
G4double G4Log(G4double x)
Definition: G4Log.hh:226
static constexpr double fermi
Definition: G4SIunits.hh:83
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
Definition: G4Pow.hh:49
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
G4double Z23(G4int Z) const
Definition: G4Pow.hh:125
G4bool operator!=(const G4StatMFMacroMultiNucleon &right) const
G4double CalcEnergy(const G4double T)
G4double CalcZARatio(const G4double nu)
G4bool operator==(const G4StatMFMacroMultiNucleon &right) const
G4double CalcEntropy(const G4double T, const G4double FreeVol)
G4StatMFMacroMultiNucleon & operator=(const G4StatMFMacroMultiNucleon &right)
G4double CalcMeanMultiplicity(const G4double FreeVol, const G4double mu, const G4double nu, const G4double T)
static G4double DBetaDT(G4double T)
static G4double GetE0()
static G4double GetGamma0()
static G4double Beta(G4double T)
static G4double GetCoulomb()
T max(const T t1, const T t2)
brief Return the largest of the two arguments