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

#include <BezrukovBugaevModel.h>

Inheritance diagram for genie::mueloss::gsl::BezrukovBugaevIntegrand:

Public Member Functions

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

Private Attributes

double fE
 
double fA
 

Detailed Description

Definition at line 69 of file BezrukovBugaevModel.h.

Constructor & Destructor Documentation

gsl::BezrukovBugaevIntegrand::BezrukovBugaevIntegrand ( double  E,
double  A 
)

Definition at line 104 of file BezrukovBugaevModel.cxx.

104  :
105 ROOT::Math::IBaseFunctionOneDim()
106 {
107  fE = E;
108  fA = A;
109 }
E
Definition: 018_def.c:13
#define A
Definition: memgrp.cpp:38
gsl::BezrukovBugaevIntegrand::~BezrukovBugaevIntegrand ( )

Definition at line 111 of file BezrukovBugaevModel.cxx.

112 {
113 
114 }

Member Function Documentation

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

Definition at line 121 of file BezrukovBugaevModel.cxx.

122 {
123 // Returns v*(ds/dv)
124 
125  double v = xin; // v, the fraction of energy transfered to the photon
126 
127  if (! (v >0)) return 0;
128  if ( v >1) return 0;
129  if (! (fE>0)) return 0;
130 
131  double a = kAem;
132  double pi = kPi;
133  double mmu2 = kMuonMass2;
134  double v2 = TMath::Power(v,2.);
135  double t = mmu2 *v2/(1-v);
136  double k = 1. - 2./v + 2./v2;
137  double A13 = TMath::Power(fA,1./3.);
138  double M1_2 = 0.54; // m1^2 in photonuclear diff. xsec formula (in GeV^2)
139  double M2_2 = 1.80; // m2^2 in photonuclear diff. xsec formula (in GeV^2)
140  double M1_2_t = M1_2 / t;
141  double M2_2_t = M2_2 / t;
142  double mmu2_t = mmu2 / t;
143  double d = M1_2 / (t + M1_2);
144 
145  // Calculate the cross section (in ub) for photonuclear interaction
146  double Ep = v*fE; // photon energy (GeV)
147  double loge = TMath::Log(0.0213*Ep); // factor 0.0213 has units of GeV^-1
148  double sig = 114.3 + 1.647 * loge*loge; // in ub
149 
150  // Calculate the factor G (dimensionless) appearing in the differential
151  // photonuclear interaction cross section
152  double x = 0.00282*A13*sig; // factor 0.00282 has units of ub^-1
153  double x2 = x*x;
154  double x3 = x2*x;
155  double G = 3*(0.5*x2 - 1. + (1.+x)*TMath::Exp(-x)) /x3;
156 
157  // Calculate the differential cross section ds/dv for muon nuclear
158  // interaction based on the Bezrukov-Bugaev formula.
159  double bbA = 0.5*(a/pi) * fA * sig * v;
160  double bbB = 0.75*G * ( k*TMath::Log(1.+M1_2_t) - k*d - 2.*mmu2_t );
161  double bbC = 0.25 * ( k*TMath::Log(1.+M2_2_t) - 2.*mmu2_t );
162  double bbD = 0.5*mmu2_t * ( 0.75*G*d + 0.25*M2_2_t*TMath::Log(1.+1./M2_2_t) );
163 
164  double ds_dv = bbA*(bbB+bbC+bbD); // in um (microbarns)
165  double vds_dv = v*ds_dv;
166 
167  vds_dv *= units::ub; // ub -> GeV^-2
168  return vds_dv;
169 }
static constexpr double ub
Definition: Units.h:80
static const double kAem
Definition: Constants.h:56
const double a
static const double kMuonMass2
Definition: Constants.h:84
list x
Definition: train.py:276
float pi
Definition: units.py:11
static const double kPi
Definition: Constants.h:37
unsigned int gsl::BezrukovBugaevIntegrand::NDim ( void  ) const

Definition at line 116 of file BezrukovBugaevModel.cxx.

117 {
118  return 1;
119 }

Member Data Documentation

double genie::mueloss::gsl::BezrukovBugaevIntegrand::fA
private

Definition at line 80 of file BezrukovBugaevModel.h.

double genie::mueloss::gsl::BezrukovBugaevIntegrand::fE
private

Definition at line 79 of file BezrukovBugaevModel.h.


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