Geant4 9.6.0
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// $Id$
28//
29// Hadronic Process: Nuclear De-excitations
30// by V. Lara
31//
32// Modified:
33// 25.07.08 I.Pshenichnov (in collaboration with Alexander Botvina and Igor
34// Mishustin (FIAS, Frankfurt, INR, Moscow and Kurchatov Institute,
35// Moscow, [email protected]) fixed computation of the
36// symmetry energy
37
40#include "G4SystemOfUnits.hh"
41
42// Default constructor
43G4StatMFMacroMultiNucleon::
44G4StatMFMacroMultiNucleon() :
45 G4VStatMFMacroCluster(0) // Beacuse the def. constr. of base class is private
46{
47 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroMultiNucleon::default_constructor meant to not be accessable");
48}
49
50// Copy constructor
51G4StatMFMacroMultiNucleon::
52G4StatMFMacroMultiNucleon(const G4StatMFMacroMultiNucleon & ) :
53 G4VStatMFMacroCluster(0) // Beacuse the def. constr. of base class is private
54{
55 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroMultiNucleon::copy_constructor meant to not be accessable");
56}
57
58// Operators
59
60G4StatMFMacroMultiNucleon & G4StatMFMacroMultiNucleon::
61operator=(const G4StatMFMacroMultiNucleon & )
62{
63 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroMultiNucleon::operator= meant to not be accessable");
64 return *this;
65}
66
67
68G4bool G4StatMFMacroMultiNucleon::operator==(const G4StatMFMacroMultiNucleon & ) const
69{
70 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroMultiNucleon::operator== meant to not be accessable");
71 return false;
72}
73
74
75G4bool G4StatMFMacroMultiNucleon::operator!=(const G4StatMFMacroMultiNucleon & ) const
76{
77 throw G4HadronicException(__FILE__, __LINE__, "G4StatMFMacroMultiNucleon::operator!= meant to not be accessable");
78 return true;
79}
80
81
82
84 const G4double nu, const G4double T)
85{
86 const G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
87
88 const G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
89
90 const G4double A23 = std::pow(static_cast<G4double>(theA),2./3.);
91
92 const G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
93 (1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
94
97 (1.0 - 2.0*theZARatio))*theA
99
100 exponent /= T;
101
102 if (exponent > 30.0) exponent = 30.0;
103
104 _MeanMultiplicity = std::max((FreeVol * static_cast<G4double>(theA) *
105 std::sqrt(static_cast<G4double>(theA))/lambda3) *
106 std::exp(exponent),1.0e-30);
107 return _MeanMultiplicity;
108}
109
110
112{
113 const G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
114 (1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
115
116 G4double den = 8.0*G4StatMFParameters::GetGamma0()+2.0*Coulomb*std::pow(static_cast<G4double>(theA),2./3.);
118
119 return theZARatio = num/den;
120
121
122}
123
124
125
127{
128 const G4double Coulomb = (3./5.)*(elm_coupling/G4StatMFParameters::Getr0())*
129 (1.0 - 1.0/std::pow(1.0+G4StatMFParameters::GetKappaCoulomb(),1./3.));
130
131 const G4double A23 = std::pow(static_cast<G4double>(theA),2./3.);
132
133 // Volume term
134 G4double EVol = static_cast<G4double>(theA) * (T*T/_InvLevelDensity - G4StatMFParameters::GetE0());
135
136 // Symmetry term
137 G4double ESym = static_cast<G4double>(theA) * G4StatMFParameters::GetGamma0() *(1. - 2.* theZARatio) * (1. - 2.* theZARatio);
138
139 // Surface term
141
142 // Coulomb term
143 G4double ECoul = Coulomb*A23*static_cast<G4double>(theA)*theZARatio*theZARatio;
144
145 // Translational term
146 G4double ETrans = (3./2.)*T;
147
148
149 return _Energy = EVol + ESurf + ECoul + ETrans + ESym;
150}
151
152
154{
155 const G4double ThermalWaveLenght = 16.15*fermi/std::sqrt(T);
156 const G4double lambda3 = ThermalWaveLenght*ThermalWaveLenght*ThermalWaveLenght;
157
158 G4double Entropy = 0.0;
159 if (_MeanMultiplicity > 0.0) {
160 // Volume term
161 G4double SV = 2.0*static_cast<G4double>(theA)*T/_InvLevelDensity;
162
163 // Surface term
164 G4double SS = -G4StatMFParameters::DBetaDT(T)*std::pow(static_cast<G4double>(theA),2./3.);
165
166 // Translational term
167 G4double ST = (5./2.)+std::log(FreeVol * std::sqrt(static_cast<G4double>(theA)) *
168 static_cast<G4double>(theA)/(lambda3*_MeanMultiplicity));
169
170
171 Entropy = _MeanMultiplicity*(SV + SS + ST);
172 }
173
174
175 return Entropy;
176}
#define A23
double G4double
Definition: G4Types.hh:64
bool G4bool
Definition: G4Types.hh:67
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 Getr0()
static G4double GetGamma0()
static G4double GetKappaCoulomb()
static G4double GetE0()
static G4double DBetaDT(const G4double T)
static G4double Beta(const G4double T)