Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4BetaDecayCorrections Class Reference

#include <G4BetaDecayCorrections.hh>

Public Member Functions

 G4BetaDecayCorrections (const G4int Z, const G4int A)
 
 ~G4BetaDecayCorrections ()
 
G4double FermiFunction (const G4double &W)
 
G4double ShapeFactor (const G4BetaDecayType &, const G4double &p_e, const G4double &e_nu)
 

Detailed Description

Definition at line 36 of file G4BetaDecayCorrections.hh.

Constructor & Destructor Documentation

◆ G4BetaDecayCorrections()

G4BetaDecayCorrections::G4BetaDecayCorrections ( const G4int Z,
const G4int A )

Definition at line 33 of file G4BetaDecayCorrections.cc.

34 : Z(theZ), A(theA)
35{
36 // alphaZ = fine_structure_const*std::abs(Z);
37 alphaZ = fine_structure_const*Z;
38
39 // Nuclear radius in units of hbar/m_e/c
41 Rnuc = 0.5*fine_structure_const*a13;
42
43 // Electron screening potential in units of electron mass
44 V0 = 1.13*fine_structure_const*fine_structure_const
45 *std::pow(std::abs(Z), 4./3.);
46
47 gamma0 = std::sqrt(1. - alphaZ*alphaZ);
48
49 // Largest allowed value of im argument in ModSquared
50// imMax = std::log(DBL_MAX)/pi;
51 imMax = 200.; // actual value = 225.931, but use 200 to be safe
52// G4cout << " imMax = " << imMax << G4endl;
53
54 // Coefficients for gamma function with real argument
55 gc[0] = -0.1010678;
56 gc[1] = 0.4245549;
57 gc[2] = -0.6998588;
58 gc[3] = 0.9512363;
59 gc[4] = -0.5748646;
60 gc[5] = 1.0;
61}
double G4double
Definition G4Types.hh:83
static G4Pow * GetInstance()
Definition G4Pow.cc:41
G4double Z13(G4int Z) const
Definition G4Pow.hh:123

◆ ~G4BetaDecayCorrections()

G4BetaDecayCorrections::~G4BetaDecayCorrections ( )
inline

Definition at line 41 of file G4BetaDecayCorrections.hh.

41{};

Member Function Documentation

◆ FermiFunction()

G4double G4BetaDecayCorrections::FermiFunction ( const G4double & W)

Definition at line 64 of file G4BetaDecayCorrections.cc.

65{
66 // Calculate the relativistic Fermi function. Argument W is the
67 // total electron energy in units of electron mass.
68 // Ref: E. Feenberg, G. Trigg, Reviews of Modern Physics, 22(1950)
69
70 G4double Wprime;
71 if (Z < 0) {
72 Wprime = W + V0;
73 } else {
74 Wprime = W - V0;
75// if (Wprime < 1.) Wprime = W;
76 if (Wprime <= 1.00001) Wprime = 1.00001;
77 }
78
79 G4double p_e = std::sqrt(Wprime*Wprime - 1.);
80 G4double eta = alphaZ*Wprime/p_e;
81 G4double epieta = std::exp(pi*eta);
82 G4double realGamma = Gamma(2.*gamma0+1);
83 G4double mod2Gamma = ModSquared(gamma0, eta);
84
85 // Fermi function
86 G4double factor1 = 2*(1+gamma0)*mod2Gamma/realGamma/realGamma;
87 G4double factor2 = epieta*std::pow(2*p_e*Rnuc, 2*(gamma0-1) );
88
89 // Electron screening factor
90 G4double factor3 = (Wprime/W)*std::sqrt( (Wprime*Wprime - 1.)/(W*W - 1.) );
91
92 return factor1*factor2*factor3;
93}
#define W
Definition crc32.c:85

◆ ShapeFactor()

G4double G4BetaDecayCorrections::ShapeFactor ( const G4BetaDecayType & bdt,
const G4double & p_e,
const G4double & e_nu )

Definition at line 144 of file G4BetaDecayCorrections.cc.

146{
147 G4double twoPR = 2.*p_e*Rnuc;
148 G4double factor(1.);
149
150 switch (bdt)
151 {
152 case (allowed) :
153 break;
154
155 case (firstForbidden) :
156 {
157 // Parameters for 1st forbidden shape determined from 210Bi data
158 // Not valid for other 1st forbidden nuclei
159 G4double c1 = 0.578;
160 G4double c2 = 28.466;
161 G4double c3 = -0.658;
162
163 G4double w = std::sqrt(1. + p_e*p_e);
164 factor = 1. + c1*w + c2/w + c3*w*w;
165 }
166 break;
167
168 case (uniqueFirstForbidden) :
169 {
170 G4double eta = alphaZ*std::sqrt(1. + p_e*p_e)/p_e;
171 G4double gamma1 = std::sqrt(4. - alphaZ*alphaZ);
172 G4double gamterm1 = Gamma(2.*gamma0+1.)/Gamma(2.*gamma1+1.);
173 G4double term1 = e_nu*e_nu*(1. + gamma0)/6.;
174 G4double term2 = 12.*(2. + gamma1)*p_e*p_e
175 *std::pow(twoPR, 2.*(gamma1-gamma0-1) )
176 *gamterm1*gamterm1
177 *ModSquared(gamma1, eta)/ModSquared(gamma0, eta);
178 factor = term1 + term2;
179 }
180 break;
181
182 case (secondForbidden) :
183 break;
184
185 case (uniqueSecondForbidden) :
186 {
187 G4double eta = alphaZ*std::sqrt(1. + p_e*p_e)/p_e;
188 G4double gamma1 = std::sqrt(4. - alphaZ*alphaZ);
189 G4double gamma2 = std::sqrt(9. - alphaZ*alphaZ);
190 G4double gamterm0 = Gamma(2.*gamma0+1.);
191 G4double gamterm1 = gamterm0/Gamma(2.*gamma1+1.);
192 G4double gamterm2 = gamterm0/Gamma(2.*gamma2+1.);
193 G4double term1 = e_nu*e_nu*e_nu*e_nu*(1. + gamma0)/60.;
194
195 G4double term2 = 4.*(2. + gamma1)*e_nu*e_nu*p_e*p_e
196 *std::pow(twoPR, 2.*(gamma1-gamma0-1.) )
197 *gamterm1*gamterm1
198 *ModSquared(gamma1, eta)/ModSquared(gamma0, eta);
199
200 G4double term3 = 180.*(3.+gamma2)*p_e*p_e*p_e*p_e
201 *std::pow(twoPR, 2.*(gamma2-gamma0-2) )
202 *gamterm2*gamterm2
203 *ModSquared(gamma2, eta)/ModSquared(gamma0, eta);
204
205 factor = term1 + term2 + term3;
206 }
207 break;
208
209 case (thirdForbidden) :
210 break;
211
212 case (uniqueThirdForbidden) :
213 {
214 G4double eta = alphaZ*std::sqrt(1. + p_e*p_e)/p_e;
215 G4double gamma1 = std::sqrt(4. - alphaZ*alphaZ);
216 G4double gamma2 = std::sqrt(9. - alphaZ*alphaZ);
217 G4double gamma3 = std::sqrt(16. - alphaZ*alphaZ);
218 G4double gamterm0 = Gamma(2.*gamma0+1.);
219 G4double gamterm1 = gamterm0/Gamma(2.*gamma1+1.);
220 G4double gamterm2 = gamterm0/Gamma(2.*gamma2+1.);
221 G4double gamterm3 = gamterm0/Gamma(2.*gamma3+1.);
222
223 G4double term1 = e_nu*e_nu*e_nu*e_nu*e_nu*e_nu*(1. + gamma0)/1260.;
224
225 G4double term2 = 2.*(2. + gamma1)*e_nu*e_nu*e_nu*e_nu*p_e*p_e
226 *std::pow(twoPR, 2.*(gamma1-gamma0-1.) )
227 *gamterm1*gamterm1
228 *ModSquared(gamma1, eta)/ModSquared(gamma0, eta)/5.;
229
230 G4double term3 = 60.*(3.+gamma2)*p_e*p_e*p_e*p_e*e_nu*e_nu
231 *std::pow(twoPR, 2.*(gamma2-gamma0-2.) )
232 *gamterm2*gamterm2
233 *ModSquared(gamma2, eta)/ModSquared(gamma0, eta);
234
235 G4double term4 = 2240.*p_e*p_e*p_e*p_e*p_e*p_e*(4. + gamma3)
236 *std::pow(twoPR, 2.*(gamma3-gamma0-3.) )
237 *gamterm3*gamterm3
238 *ModSquared(gamma3, eta)/ModSquared(gamma0, eta);
239
240 factor = term1 + term2 + term3 + term4;
241 }
242 break;
243
244 default:
245 G4Exception("G4BetaDecayCorrections::ShapeFactor()","HAD_RDM_010",
247 "Transition not yet implemented - using allowed shape");
248 break;
249 }
250
251 return factor;
252}
@ uniqueFirstForbidden
@ uniqueThirdForbidden
@ allowed
@ uniqueSecondForbidden
@ thirdForbidden
@ secondForbidden
@ firstForbidden
@ JustWarning
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)

The documentation for this class was generated from the following files: