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::PetrukhinShestakovIntegrand Class Reference

#include <PetrukhinShestakovModel.h>

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

Public Member Functions

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

Private Attributes

double fE
 
double fZ
 

Detailed Description

Definition at line 81 of file PetrukhinShestakovModel.h.

Constructor & Destructor Documentation

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

Definition at line 86 of file PetrukhinShestakovModel.cxx.

References fE, and fZ.

86  :
87 ROOT::Math::IBaseFunctionOneDim()
88 {
89  fE = E;
90  fZ = Z;
91 }
gsl::PetrukhinShestakovIntegrand::~PetrukhinShestakovIntegrand ( )

Definition at line 93 of file PetrukhinShestakovModel.cxx.

94 {
95 
96 }

Member Function Documentation

ROOT::Math::IBaseFunctionOneDim * gsl::PetrukhinShestakovIntegrand::Clone ( void  ) const
double gsl::PetrukhinShestakovIntegrand::DoEval ( double  xin) const

Definition at line 103 of file PetrukhinShestakovModel.cxx.

References a, genie::units::b, genie::constants::kAem, genie::constants::kElectronMass, genie::constants::kLe2, genie::constants::kMuonMass, genie::constants::kMuonMass2, and genie::constants::kSqrtNapierConst.

104 {
105 // Calculate the Bethe-Heitler cross section ds/dv for muon bremsstrahlung
106 // Returns v*(ds/dv)
107 
108  double v = xin; // v, the fraction of energy transfered to the photon
109  double v2 = TMath::Power(v,2.);
110 
111  if (! (v >0)) return 0;
112  if ( v >1) return 0;
113  if (! (fE>0)) return 0;
114 
115  // Some constants...
116  double Z2 = TMath::Power(fZ,2.);
117  double Zm13 = TMath::Power(fZ,-1./3.);
118  double Zm23 = TMath::Power(fZ,-2./3.);
119  double a3 = TMath::Power(kAem,3.); // (e/m coupling const)^3
120  double me = kElectronMass;
121  double mmu = kMuonMass;
122  double mmu2 = kMuonMass2;
123  double mmue = mmu/me;
124  double memu = me/mmu;
125  double memu2 = TMath::Power(memu,2);
126 
127  // Calculate the minimum monentum transfer to the nucleus (in GeV)
128  double delta = (mmu2/fE) * 0.5*v/(1.-v);
129 
130  // Calculate the fi(delta) factor for the bremsstrahlung cross section
131  // ds/dv according to the Petrukhin/Shestakov formula (dimensionless)
132  double a = ( (fZ<10) ? 189.*mmue * Zm13 : 189.*mmue * (2./3.)*Zm23 );
133  double b = 1. + (189./me) * Zm13 * kSqrtNapierConst * delta;
134  double fi = TMath::Log(a/b);
135 
136  // Calculate the Bethe-Heitler cross section ds/dv for muon bremsstrahlung
137  double ds_dv = (a3*memu2*kLe2) * (4*Z2) * (fi) * (4/3.-4*v/3.+v2)/v;
138  double vds_dv = v*ds_dv;
139  return vds_dv; // in GeV^-2
140 }
static const double kSqrtNapierConst
static const double kElectronMass
static constexpr double b
Definition: Units.h:78
const double a
unsigned int gsl::PetrukhinShestakovIntegrand::NDim ( void  ) const

Definition at line 98 of file PetrukhinShestakovModel.cxx.

99 {
100  return 1;
101 }

Member Data Documentation

double genie::mueloss::gsl::PetrukhinShestakovIntegrand::fE
private

Definition at line 91 of file PetrukhinShestakovModel.h.

Referenced by PetrukhinShestakovIntegrand().

double genie::mueloss::gsl::PetrukhinShestakovIntegrand::fZ
private

Definition at line 92 of file PetrukhinShestakovModel.h.

Referenced by PetrukhinShestakovIntegrand().


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