Public Member Functions | Private Attributes | List of all members
genie::mueloss::gsl::KokoulinPetrukhinIntegrand Class Reference

#include "/cvmfs/nova.opensciencegrid.org/externals/genie/v3_00_06_p01/Linux64bit+2.6-2.12-e17-debug/GENIE-Generator/src/Physics/MuonEnergyLoss/KokoulinPetrukhinModel.h"

Inheritance diagram for genie::mueloss::gsl::KokoulinPetrukhinIntegrand:

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 81 of file KokoulinPetrukhinModel.h.

Constructor & Destructor Documentation

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

Definition at line 117 of file KokoulinPetrukhinModel.cxx.

References E, fE, fZ, and Z.

117  :
118 ROOT::Math::IBaseFunctionMultiDim()
119 {
120  fE = E;
121  fZ = Z;
122 }
Float_t Z
Definition: plot.C:38
Float_t E
Definition: plot.C:20
gsl::KokoulinPetrukhinIntegrand::~KokoulinPetrukhinIntegrand ( )

Definition at line 124 of file KokoulinPetrukhinModel.cxx.

125 {
126 
127 }

Member Function Documentation

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

Definition at line 134 of file KokoulinPetrukhinModel.cxx.

References a4, b, fE, fZ, genie::constants::kAem, genie::constants::kElectronMass, genie::constants::kElectronMass2, genie::constants::kLe, genie::constants::kMuonMass, genie::constants::kMuonMass2, kPi, genie::constants::kSqrtNapierConst, test_ParserArtEvents::log, plot_validation_datamc::p2, python.hepunit::pi, R, ana::Sqrt(), and registry_explorer::v.

135 {
136 // Returns v*(d^2s/dvdp)
137 
138  double v = xin[0]; // v, the fraction of energy transfered to the photon
139  double p = xin[1]; //
140 
141  if (! (v >0)) return 0;
142  if ( v >1) return 0;
143  if (! (fE>0)) return 0;
144 
145  double pmax_v = (1. - 6.*kMuonMass2 / (fE*fE*(1.-v)) ) *
146  TMath::Sqrt(1.-4.*kElectronMass/(fE*v));
147  if(p>pmax_v) return 0;
148 
149  double v2 = TMath::Power(v,2.);
150  double p2 = TMath::Power(p,2.);
151  double R = 189.;
152  double a4 = TMath::Power(kAem,4.);
153  double pi = kPi;
154  double ZLe2 = TMath::Power(fZ*kLe,2.);
155  double Zm13 = TMath::Power(fZ,-1./3.);
156  double Zm23 = TMath::Power(fZ,-2./3.);
157  double Z13 = TMath::Power(fZ,1./3.);
158  double me = kElectronMass;
159  double me2 = kElectronMass2;
160  double mmu = kMuonMass;
161  double mmu2 = kMuonMass2;
162  double memu2 = me2/mmu2;
163  double memu = me/mmu;
164  double mume = mmu/me;
165 
166  double b = 0.5*v2/(1.-v);
167  double xi = (1.-p2) * TMath::Power(0.5*v*mume, 2.) / (1.-v);
168 
169  // Approximate the FIm factor (dimensionless) for the Kokoulin Petrukhin
170  // pair production cross section
171 
172  double FImA = ( (1.+p2)*(1.+3.*b/2.) - (1.+2.*b)*(1.-p2)/xi ) * TMath::Log(1.+xi);
173  double FImB = xi*(1.-p2-b) / (1.+xi);
174  double FImC = (1.+2.*b) * (1.-p2);
175  double Ym = (4. + p2 + 3.*b*(1.+p2)) /
176  ((1.+p2)*(1.5+2.*b)*TMath::Log(3.+xi) + 1. - 1.5*p2);
177  double LmA = (2./3.) * mume * R * Zm23;
178  double LmB = 1. + (2.*me*R * kSqrtNapierConst * Zm13 * (1+xi) * (1+Ym)) / (fE*v*(1-p2) );
179  double Lm = TMath::Log(LmA/LmB);
180  double FIm = (FImA+FImB+FImC)*Lm;
181 
182  // Approximate the FIe factor (dimensionless) for the Kokoulin Petrukhin
183  // pair production cross section
184 
185  double FIeA = ( (2.+p2) * (1.+b) + xi*(3.+p2) ) * log(1.+1./xi);
186  double FIeB = (1.-p2-b) / (1.+xi);
187  double FIeC = 3. + p2;
188  double Ye = (5. - p2 + 4*b*(1+p2)) /
189  (2.*(1.+3.*b)*TMath::Log(3.+1./xi) - p2 - 2.*b*(2.-p2));
190  double x_Y = (1+xi)*(1+Ye);
191  double LeA = R*Zm13*TMath::Sqrt(x_Y);
192  double LeB = 1. + (2.*me*R*kSqrtNapierConst*Zm13*x_Y) / (fE*v*(1-p2));
193  double LeC = 1.5 * memu * Z13;
194  double LeD = 1 + TMath::Power(LeC,2.)*x_Y;
195  double Le = TMath::Log(LeA/LeB) - 0.5*TMath::Log(LeD);
196  double FIe = (FIeA+FIeB-FIeC)*Le;
197 
198  double d2s_dvdp = a4 * (2./(3.*pi)) * ZLe2 * ((1.-v)/v) * (FIe + FIm*memu2);
199 
200  double vd2s_dvdp = v*d2s_dvdp;
201  return vd2s_dvdp;
202 }
const double kPi
static const double kSqrtNapierConst
Definition: Constants.h:45
static const double kLe
Definition: Constants.h:51
const char * p
Definition: xmltok.h:285
static const double kElectronMass
Definition: Constants.h:71
static const double kAem
Definition: Constants.h:57
Definition: NueSkimmer.h:24
static const double kElectronMass2
Definition: Constants.h:84
static const double kMuonMass2
Definition: Constants.h:85
#define R(x)
static const double kMuonMass
Definition: Constants.h:72
Var Sqrt(const Var &v)
Use to take sqrt of a var.
Definition: Var.cxx:326
TH1F * a4
Definition: f2_nu.C:666
const hit & b
Definition: hits.cxx:21
unsigned int gsl::KokoulinPetrukhinIntegrand::NDim ( void  ) const

Definition at line 129 of file KokoulinPetrukhinModel.cxx.

130 {
131  return 2;
132 }

Member Data Documentation

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

Definition at line 91 of file KokoulinPetrukhinModel.h.

Referenced by Clone(), DoEval(), and KokoulinPetrukhinIntegrand().

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

Definition at line 92 of file KokoulinPetrukhinModel.h.

Referenced by Clone(), DoEval(), and KokoulinPetrukhinIntegrand().


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