GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Private Attributes | List of all members
genie::mueloss::gsl::KokoulinPetrukhinIntegrand Class Reference

#include <KokoulinPetrukhinModel.h>

Inheritance diagram for genie::mueloss::gsl::KokoulinPetrukhinIntegrand:
Inheritance graph
[legend]
Collaboration diagram for genie::mueloss::gsl::KokoulinPetrukhinIntegrand:
Collaboration graph
[legend]

Public Member Functions

 KokoulinPetrukhinIntegrand (double E, double Z)
 
 ~KokoulinPetrukhinIntegrand ()
 
unsigned int NDim (void) const
 
double DoEval (const double *xin) const
 
ROOT::Math::IBaseFunctionMultiDim * Clone (void) const
 

Private Attributes

double fE
 
double fZ
 

Detailed Description

Definition at line 80 of file KokoulinPetrukhinModel.h.

Constructor & Destructor Documentation

gsl::KokoulinPetrukhinIntegrand::KokoulinPetrukhinIntegrand ( double  E,
double  Z 
)

Definition at line 93 of file KokoulinPetrukhinModel.cxx.

References fE, and fZ.

93  :
94 ROOT::Math::IBaseFunctionMultiDim()
95 {
96  fE = E;
97  fZ = Z;
98 }
gsl::KokoulinPetrukhinIntegrand::~KokoulinPetrukhinIntegrand ( )

Definition at line 100 of file KokoulinPetrukhinModel.cxx.

101 {
102 
103 }

Member Function Documentation

ROOT::Math::IBaseFunctionMultiDim * gsl::KokoulinPetrukhinIntegrand::Clone ( void  ) const
double gsl::KokoulinPetrukhinIntegrand::DoEval ( const double *  xin) const

Definition at line 110 of file KokoulinPetrukhinModel.cxx.

References genie::units::b, genie::constants::kAem, genie::constants::kElectronMass, genie::constants::kElectronMass2, genie::constants::kLe, genie::constants::kMuonMass, genie::constants::kMuonMass2, genie::constants::kPi, and genie::constants::kSqrtNapierConst.

111 {
112 // Returns v*(d^2s/dvdp)
113 
114  double v = xin[0]; // v, the fraction of energy transfered to the photon
115  double p = xin[1]; //
116 
117  if (! (v >0)) return 0;
118  if ( v >1) return 0;
119  if (! (fE>0)) return 0;
120 
121  double pmax_v = (1. - 6.*kMuonMass2 / (fE*fE*(1.-v)) ) *
122  TMath::Sqrt(1.-4.*kElectronMass/(fE*v));
123  if(p>pmax_v) return 0;
124 
125  double v2 = TMath::Power(v,2.);
126  double p2 = TMath::Power(p,2.);
127  double R = 189.;
128  double a4 = TMath::Power(kAem,4.);
129  double pi = kPi;
130  double ZLe2 = TMath::Power(fZ*kLe,2.);
131  double Zm13 = TMath::Power(fZ,-1./3.);
132  double Zm23 = TMath::Power(fZ,-2./3.);
133  double Z13 = TMath::Power(fZ,1./3.);
134  double me = kElectronMass;
135  double me2 = kElectronMass2;
136  double mmu = kMuonMass;
137  double mmu2 = kMuonMass2;
138  double memu2 = me2/mmu2;
139  double memu = me/mmu;
140  double mume = mmu/me;
141 
142  double b = 0.5*v2/(1.-v);
143  double xi = (1.-p2) * TMath::Power(0.5*v*mume, 2.) / (1.-v);
144 
145  // Approximate the FIm factor (dimensionless) for the Kokoulin Petrukhin
146  // pair production cross section
147 
148  double FImA = ( (1.+p2)*(1.+3.*b/2.) - (1.+2.*b)*(1.-p2)/xi ) * TMath::Log(1.+xi);
149  double FImB = xi*(1.-p2-b) / (1.+xi);
150  double FImC = (1.+2.*b) * (1.-p2);
151  double Ym = (4. + p2 + 3.*b*(1.+p2)) /
152  ((1.+p2)*(1.5+2.*b)*TMath::Log(3.+xi) + 1. - 1.5*p2);
153  double LmA = (2./3.) * mume * R * Zm23;
154  double LmB = 1. + (2.*me*R * kSqrtNapierConst * Zm13 * (1+xi) * (1+Ym)) / (fE*v*(1-p2) );
155  double Lm = TMath::Log(LmA/LmB);
156  double FIm = (FImA+FImB+FImC)*Lm;
157 
158  // Approximate the FIe factor (dimensionless) for the Kokoulin Petrukhin
159  // pair production cross section
160 
161  double FIeA = ( (2.+p2) * (1.+b) + xi*(3.+p2) ) * log(1.+1./xi);
162  double FIeB = (1.-p2-b) / (1.+xi);
163  double FIeC = 3. + p2;
164  double Ye = (5. - p2 + 4*b*(1+p2)) /
165  (2.*(1.+3.*b)*TMath::Log(3.+1./xi) - p2 - 2.*b*(2.-p2));
166  double x_Y = (1+xi)*(1+Ye);
167  double LeA = R*Zm13*TMath::Sqrt(x_Y);
168  double LeB = 1. + (2.*me*R*kSqrtNapierConst*Zm13*x_Y) / (fE*v*(1-p2));
169  double LeC = 1.5 * memu * Z13;
170  double LeD = 1 + TMath::Power(LeC,2.)*x_Y;
171  double Le = TMath::Log(LeA/LeB) - 0.5*TMath::Log(LeD);
172  double FIe = (FIeA+FIeB-FIeC)*Le;
173 
174  double d2s_dvdp = a4 * (2./(3.*pi)) * ZLe2 * ((1.-v)/v) * (FIe + FIm*memu2);
175 
176  double vd2s_dvdp = v*d2s_dvdp;
177  return vd2s_dvdp;
178 }
static const double kSqrtNapierConst
static const double kElectronMass
static constexpr double b
Definition: Units.h:78
static const double kElectronMass2
unsigned int gsl::KokoulinPetrukhinIntegrand::NDim ( void  ) const

Definition at line 105 of file KokoulinPetrukhinModel.cxx.

106 {
107  return 2;
108 }

Member Data Documentation

double genie::mueloss::gsl::KokoulinPetrukhinIntegrand::fE
private

Definition at line 90 of file KokoulinPetrukhinModel.h.

Referenced by KokoulinPetrukhinIntegrand().

double genie::mueloss::gsl::KokoulinPetrukhinIntegrand::fZ
private

Definition at line 91 of file KokoulinPetrukhinModel.h.

Referenced by KokoulinPetrukhinIntegrand().


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