Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
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, [email protected]) 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
45G4StatMFMacroMultiNucleon::
46G4StatMFMacroMultiNucleon() :
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
53G4StatMFMacroMultiNucleon::
54G4StatMFMacroMultiNucleon(const G4StatMFMacroMultiNucleon & ) :
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
62G4StatMFMacroMultiNucleon & G4StatMFMacroMultiNucleon::
63operator=(const G4StatMFMacroMultiNucleon & )
64{
65 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroMultiNucleon::operator= meant to not be accessible");
66 return *this;
67}
68
69G4bool G4StatMFMacroMultiNucleon::operator==(const G4StatMFMacroMultiNucleon & ) const
70{
71 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroMultiNucleon::operator== meant to not be accessible");
72 return false;
73}
74
75G4bool G4StatMFMacroMultiNucleon::operator!=(const G4StatMFMacroMultiNucleon & ) const
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:180
G4double G4Log(G4double x)
Definition: G4Log.hh:227
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
G4double CalcEnergy(const G4double T)
G4double CalcZARatio(const G4double nu)
G4double CalcEntropy(const G4double T, const G4double FreeVol)
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()