ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4StatMFMacroMultiNucleon.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4StatMFMacroMultiNucleon.cc
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 
38 #include "G4PhysicalConstants.hh"
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
95  - G4StatMFParameters::Beta(T)*A23
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 {
111  theZARatio = (4.0*G4StatMFParameters::GetGamma0()+nu)/den;
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 }