ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
G4GEMProbability.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4GEMProbability.hh
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
//
29
// Geant4 header G4GEMProbability
30
//
31
//
32
// Hadronic Process: Nuclear De-excitations
33
// by V. Lara (Sept 2001)
34
//
35
// 18.05.2010 V.Ivanchenko trying to speedup the most slow method
36
// by usage of G4Pow, integer Z and A; moved constructor,
37
// destructor and virtual functions to source
38
//
39
40
#ifndef G4GEMProbability_h
41
#define G4GEMProbability_h 1
42
43
#include <
CLHEP/Units/SystemOfUnits.h
>
44
45
#include "
G4VEmissionProbability.hh
"
46
#include "
G4VLevelDensityParameter.hh
"
47
#include "
G4EvaporationLevelDensityParameter.hh
"
48
#include "
G4VCoulombBarrier.hh
"
49
#include "
G4NuclearLevelData.hh
"
50
#include "
G4Pow.hh
"
51
#include "
G4Exp.hh
"
52
53
class
G4GEMProbability
:
public
G4VEmissionProbability
54
{
55
public
:
56
57
G4GEMProbability
(
G4int
anA,
G4int
aZ,
G4double
aSpin);
58
59
virtual
~G4GEMProbability
();
60
61
// not used for evaporation
62
virtual
G4double
EmissionProbability
(
const
G4Fragment
& fragment,
63
G4double
maxKineticEnergy);
64
65
void
Dump
()
const
;
66
67
inline
G4double
GetSpin
(
void
)
const
;
68
69
inline
void
SetCoulomBarrier
(
const
G4VCoulombBarrier
* aCoulombBarrierStrategy);
70
71
inline
G4double
GetCoulombBarrier
(
const
G4Fragment
& fragment)
const
;
72
73
inline
G4double
CalcAlphaParam
(
const
G4Fragment
& )
const
;
74
75
inline
G4double
CalcBetaParam
(
const
G4Fragment
& )
const
;
76
77
private
:
78
79
G4double
CalcProbability
(
const
G4Fragment
& fragment,
80
G4double
MaximalKineticEnergy,
81
G4double
V);
82
83
inline
G4double
CCoeficient
(
G4int
)
const
;
84
85
inline
G4double
I0
(
G4double
t
);
86
inline
G4double
I1
(
G4double
t,
G4double
tx);
87
inline
G4double
I2
(
G4double
s0
,
G4double
sx);
88
G4double
I3
(
G4double
s0,
G4double
sx);
89
90
// Copy constructor
91
G4GEMProbability
();
92
G4GEMProbability
(
const
G4GEMProbability
&
right
);
93
const
G4GEMProbability
&
operator=
(
const
G4GEMProbability
&right);
94
G4bool
operator==
(
const
G4GEMProbability
&right)
const
;
95
G4bool
operator!=
(
const
G4GEMProbability
&right)
const
;
96
97
// Data Members
98
G4Pow
*
fG4pow
;
99
G4NuclearLevelData
*
fNucData
;
100
101
G4VLevelDensityParameter
*
theEvapLDPptr
;
102
103
// Spin is fragment spin
104
G4double
Spin
;
105
106
// Coulomb Barrier
107
const
G4VCoulombBarrier
*
theCoulombBarrierPtr
;
108
109
protected
:
110
111
G4double
fPlanck
;
112
113
// Resonances Energy
114
std::vector<G4double>
ExcitEnergies
;
115
116
// Resonances Spin
117
std::vector<G4double>
ExcitSpins
;
118
119
// Resonances half lifetime
120
std::vector<G4double>
ExcitLifetimes
;
121
122
};
123
124
inline
G4double
G4GEMProbability::GetSpin
(
void
)
const
125
{
126
return
Spin
;
127
}
128
129
inline
void
130
G4GEMProbability::SetCoulomBarrier
(
const
G4VCoulombBarrier
* aCoulombBarrierStrategy)
131
{
132
theCoulombBarrierPtr
= aCoulombBarrierStrategy;
133
}
134
135
inline
G4double
136
G4GEMProbability::GetCoulombBarrier
(
const
G4Fragment
& fragment)
const
137
{
138
G4double
res = 0.0;
139
if
(
theCoulombBarrierPtr
) {
140
G4int
Acomp = fragment.
GetA_asInt
();
141
G4int
Zcomp = fragment.
GetZ_asInt
();
142
res =
theCoulombBarrierPtr
->
GetCoulombBarrier
(Acomp-
theA
, Zcomp-
theZ
,
143
fragment.
GetExcitationEnergy
() -
144
fNucData
->
GetPairingCorrection
(Zcomp,Acomp));
145
}
146
return
res;
147
}
148
149
inline
G4double
G4GEMProbability::CCoeficient
(
G4int
aZ)
const
150
{
151
//JMQ 190709 C's values from Furihata's paper
152
//(notes added on proof in Dostrovskii's paper)
153
//data = {{20, 0.}, {30, -0.06}, {40, -0.10}, {50, -0.10}};
154
G4double
C
= 0.0;
155
if
(aZ >= 50){
156
C=-0.10/
G4double
(
theA
);
157
}
else
if
(aZ > 20) {
158
C=(0.123482-0.00534691*aZ-0.0000610624*aZ*aZ+5.93719*1
e
-7*aZ*aZ*aZ+
159
1.95687*1
e
-8*aZ*aZ*aZ*aZ)/
G4double
(
theA
);
160
}
161
return
C
;
162
}
163
164
165
inline
G4double
G4GEMProbability::CalcAlphaParam
(
const
G4Fragment
& fragment)
const
166
{
167
//JMQ 190709 values according to Furihata's paper (based on notes added
168
//on proof in Dostrovskii's paper)
169
G4double
res;
170
if
(
theZ
== 0) {
171
res = 0.76+1.93/
fG4pow
->
Z13
(fragment.
GetA_asInt
()-
theA
);
172
}
else
{
173
res = 1.0 +
CCoeficient
(fragment.
GetZ_asInt
()-
theZ
);
174
}
175
return
res;
176
}
177
178
inline
G4double
179
G4GEMProbability::CalcBetaParam
(
const
G4Fragment
& fragment)
const
180
{
181
//JMQ 190709 values according to Furihata's paper (based on notes added
182
//on proof in Dostrovskii's paper)
183
G4double
res;
184
if
(
theZ
== 0) {
185
res = (1.66/
fG4pow
->
Z23
(fragment.
GetA_asInt
()-
theA
)-0.05)*
CLHEP::MeV
/
186
CalcAlphaParam
(fragment);
187
}
else
{
188
res = -
GetCoulombBarrier
(fragment);
189
}
190
return
res;
191
}
192
193
inline
G4double
G4GEMProbability::I0
(
G4double
t
)
194
{
195
return
G4Exp
(t) - 1.0;
196
}
197
198
inline
G4double
G4GEMProbability::I1
(
G4double
t
,
G4double
tx)
199
{
200
return
(t - tx + 1.0)*
G4Exp
(tx) - t - 1.0;
201
}
202
203
204
inline
G4double
G4GEMProbability::I2
(
G4double
s0
,
G4double
sx)
205
{
206
G4double
S
= 1.0/std::sqrt(s0);
207
G4double
Sx = 1.0/std::sqrt(sx);
208
209
G4double
p1 = S*S*S*( 1.0 + S*S*( 1.5 + 3.75*S*
S
) );
210
G4double
p2 = Sx*Sx*Sx*( 1.0 + Sx*Sx*( 1.5 + 3.75*Sx*Sx) )*
G4Exp
(sx-s0);
211
212
return
p1-p2;
213
}
214
215
216
#endif
geant4
tree
geant4-10.6-release
source
processes
hadronic
models
de_excitation
gem_evaporation
include
G4GEMProbability.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:41
using
1.8.2 with
ECCE GitHub integration