Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
G4BetaDecayCorrections Class Reference

#include <G4BetaDecayCorrections.hh>

Public Member Functions

 G4BetaDecayCorrections (G4int Z, 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 ( G4int  Z,
G4int  A 
)

Definition at line 32 of file G4BetaDecayCorrections.cc.

References python.hepunit::fine_structure_const.

33  : Z(theZ), A(theA)
34 {
35  // alphaZ = fine_structure_const*std::abs(Z);
36  alphaZ = fine_structure_const*Z;
37 
38  // Nuclear radius in units of hbar/m_e/c
39  Rnuc = 0.5*fine_structure_const*std::pow(A, 0.33333);
40 
41  // Electron screening potential in units of electrom mass
43  *std::pow(std::abs(Z), 1.33333);
44 
45  gamma0 = std::sqrt(1. - alphaZ*alphaZ);
46 
47  // Coefficients for gamma function with real argument
48  gc[0] = -0.1010678;
49  gc[1] = 0.4245549;
50  gc[2] = -0.6998588;
51  gc[3] = 0.9512363;
52  gc[4] = -0.5748646;
53  gc[5] = 1.0;
54 }
G4BetaDecayCorrections::~G4BetaDecayCorrections ( )
inline

Definition at line 41 of file G4BetaDecayCorrections.hh.

41 {};

Member Function Documentation

G4double G4BetaDecayCorrections::FermiFunction ( const G4double W)

Definition at line 57 of file G4BetaDecayCorrections.cc.

References python.hepunit::pi.

Referenced by G4RadioactiveDecay::LoadDecayTable().

58 {
59  // Calculate the relativistic Fermi function. Argument W is the
60  // total electron energy in units of electron mass.
61 
62  G4double Wprime;
63  if (Z < 0) {
64  Wprime = W + V0;
65  } else {
66  Wprime = W - V0;
67 // if (Wprime < 1.) Wprime = W;
68  if (Wprime <= 1.00001) Wprime = 1.00001;
69  }
70 
71  G4double p_e = std::sqrt(Wprime*Wprime - 1.);
72  G4double eta = alphaZ*Wprime/p_e;
73  G4double epieta = std::exp(pi*eta);
74  G4double realGamma = Gamma(2.*gamma0+1);
75  G4double mod2Gamma = ModSquared(gamma0, eta);
76 
77  // Fermi function
78  G4double factor1 = 2*(1+gamma0)*mod2Gamma/realGamma/realGamma;
79  G4double factor2 = epieta*std::pow(2*p_e*Rnuc, 2*(gamma0-1) );
80 
81  // Electron screening factor
82  G4double factor3 = (Wprime/W)*std::sqrt( (Wprime*Wprime - 1.)/(W*W - 1.) );
83 
84  return factor1*factor2*factor3;
85 }
double G4double
Definition: G4Types.hh:76
G4double G4BetaDecayCorrections::ShapeFactor ( const G4BetaDecayType bdt,
const G4double p_e,
const G4double e_nu 
)

Definition at line 126 of file G4BetaDecayCorrections.cc.

References allowed, plottest35::c1, firstForbidden, G4Exception(), JustWarning, secondForbidden, thirdForbidden, uniqueFirstForbidden, uniqueSecondForbidden, and uniqueThirdForbidden.

Referenced by G4RadioactiveDecay::LoadDecayTable().

128 {
129  G4double twoPR = 2.*p_e*Rnuc;
130  G4double factor(1.);
131 
132  switch (bdt)
133  {
134  case (allowed) :
135  break;
136 
137  case (firstForbidden) :
138  {
139  // Parameters for 1st forbidden shape determined from 210Bi data
140  // Not valid for other 1st forbidden nuclei
141  G4double c1 = 0.578;
142  G4double c2 = 28.466;
143  G4double c3 = -0.658;
144 
145  G4double w = std::sqrt(1. + p_e*p_e);
146  factor = 1. + c1*w + c2/w + c3*w*w;
147  }
148  break;
149 
150  case (uniqueFirstForbidden) :
151  {
152  G4double eta = alphaZ*std::sqrt(1. + p_e*p_e)/p_e;
153  G4double gamma1 = std::sqrt(4. - alphaZ*alphaZ);
154  G4double gamterm1 = Gamma(2.*gamma0+1.)/Gamma(2.*gamma1+1.);
155  G4double term1 = e_nu*e_nu*(1. + gamma0)/6.;
156  G4double term2 = 12.*(2. + gamma1)*p_e*p_e
157  *std::pow(twoPR, 2.*(gamma1-gamma0-1) )
158  *gamterm1*gamterm1
159  *ModSquared(gamma1, eta)/ModSquared(gamma0, eta);
160  factor = term1 + term2;
161  }
162  break;
163 
164  case (secondForbidden) :
165  break;
166 
167  case (uniqueSecondForbidden) :
168  {
169  G4double eta = alphaZ*std::sqrt(1. + p_e*p_e)/p_e;
170  G4double gamma1 = std::sqrt(4. - alphaZ*alphaZ);
171  G4double gamma2 = std::sqrt(9. - alphaZ*alphaZ);
172  G4double gamterm0 = Gamma(2.*gamma0+1.);
173  G4double gamterm1 = gamterm0/Gamma(2.*gamma1+1.);
174  G4double gamterm2 = gamterm0/Gamma(2.*gamma2+1.);
175  G4double term1 = e_nu*e_nu*e_nu*e_nu*(1. + gamma0)/60.;
176 
177  G4double term2 = 4.*(2. + gamma1)*e_nu*e_nu*p_e*p_e
178  *std::pow(twoPR, 2.*(gamma1-gamma0-1.) )
179  *gamterm1*gamterm1
180  *ModSquared(gamma1, eta)/ModSquared(gamma0, eta);
181 
182  G4double term3 = 180.*(3.+gamma2)*p_e*p_e*p_e*p_e
183  *std::pow(twoPR, 2.*(gamma2-gamma0-2) )
184  *gamterm2*gamterm2
185  *ModSquared(gamma2, eta)/ModSquared(gamma0, eta);
186 
187  factor = term1 + term2 + term3;
188  }
189  break;
190 
191  case (thirdForbidden) :
192  break;
193 
194  case (uniqueThirdForbidden) :
195  {
196  G4double eta = alphaZ*std::sqrt(1. + p_e*p_e)/p_e;
197  G4double gamma1 = std::sqrt(4. - alphaZ*alphaZ);
198  G4double gamma2 = std::sqrt(9. - alphaZ*alphaZ);
199  G4double gamma3 = std::sqrt(16. - alphaZ*alphaZ);
200  G4double gamterm0 = Gamma(2.*gamma0+1.);
201  G4double gamterm1 = gamterm0/Gamma(2.*gamma1+1.);
202  G4double gamterm2 = gamterm0/Gamma(2.*gamma2+1.);
203  G4double gamterm3 = gamterm0/Gamma(2.*gamma3+1.);
204 
205  G4double term1 = e_nu*e_nu*e_nu*e_nu*e_nu*e_nu*(1. + gamma0)/1260.;
206 
207  G4double term2 = 2.*(2. + gamma1)*e_nu*e_nu*e_nu*e_nu*p_e*p_e
208  *std::pow(twoPR, 2.*(gamma1-gamma0-1.) )
209  *gamterm1*gamterm1
210  *ModSquared(gamma1, eta)/ModSquared(gamma0, eta)/5.;
211 
212  G4double term3 = 60.*(3.+gamma2)*p_e*p_e*p_e*p_e*e_nu*e_nu
213  *std::pow(twoPR, 2.*(gamma2-gamma0-2.) )
214  *gamterm2*gamterm2
215  *ModSquared(gamma2, eta)/ModSquared(gamma0, eta);
216 
217  G4double term4 = 2240.*p_e*p_e*p_e*p_e*p_e*p_e*(4. + gamma3)
218  *std::pow(twoPR, 2.*(gamma3-gamma0-3.) )
219  *gamterm3*gamterm3
220  *ModSquared(gamma3, eta)/ModSquared(gamma0, eta);
221 
222  factor = term1 + term2 + term3 + term4;
223  }
224  break;
225 
226  default:
227  G4Exception("G4BetaDecayCorrections::ShapeFactor()","HAD_RDM_010",
228  JustWarning,
229  "Transition not yet implemented - using allowed shape");
230  break;
231  }
232  return factor;
233 }
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
double G4double
Definition: G4Types.hh:76
tuple c1
Definition: plottest35.py:14

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