BezrukovBugaevModel Class Reference

#include <BezrukovBugaevModel.h>

Inheritance diagram for BezrukovBugaevModel:
ProcessModel

List of all members.

Public Member Functions

 BezrukovBugaevModel ()
 BezrukovBugaevModel (const Material &material)
 ~BezrukovBugaevModel ()
double dE_dx (double E) const
ValidityRange_t ValidityRange (void) const

Private Member Functions

double bnuc (double E) const
double V_max (double E) const
double ds_dv (double v, double E) const
double G (double v, double E) const
double PhotonuclXSec (double v, double E) const

Detailed Description

________________________________________________________________________________________

Id
BezrukovBugaevModel.cxx,v 1.2 2004/01/05 16:11:12 costas Exp

________________________________________________________________________________________

Id
BezrukovBugaevModel.h,v 1.2 2004/01/05 16:11:12 costas Exp

Definition at line 22 of file BezrukovBugaevModel.h.


Constructor & Destructor Documentation

BezrukovBugaevModel::BezrukovBugaevModel (  ) 

Definition at line 26 of file BezrukovBugaevModel.cxx.

00026                                          :
00027 ProcessModel()
00028 {
00029 
00030 }
//_________________________________________________________________________________________

BezrukovBugaevModel::BezrukovBugaevModel ( const Material material  ) 

Definition at line 32 of file BezrukovBugaevModel.cxx.

00032                                                                   :
00033 ProcessModel(material, Process::eNuclearInteraction)
00034 {
00035 
00036 }
//_________________________________________________________________________________________

BezrukovBugaevModel::~BezrukovBugaevModel (  ) 

Definition at line 38 of file BezrukovBugaevModel.cxx.

00039 {
00040 
00041 }


Member Function Documentation

double BezrukovBugaevModel::bnuc ( double  E  )  const [private]

Definition at line 61 of file BezrukovBugaevModel.cxx.

References Material::A(), ds_dv(), MuELoss::e, ProcessModel::fMaterial, Integrator::Instance(), MuELoss::Na, Integrator::Simpson(), and V_max().

Referenced by dE_dx().

00062 {
00063 // Calculate the b factor for muon nuclear interaction ( -dE/dx = b*E ) in cm^2 / gr
00064 // Input  : E, muon energy in MeV
00065 
00066   const int kNV = 600;
00067 
00068   double Vmin = 0;
00069   double Vmax = V_max(E);
00070   double dV   = (Vmax - Vmin) / kNV;
00071 
00072   Integrator * integrator = Integrator::Instance();
00073 
00074   double * vds = new double[kNV];
00075 
00076   for(int iv = 0; iv < kNV; iv++)  vds[iv] = (Vmin+(iv+1)*dV) * ds_dv(Vmin+(iv+1)*dV, E);
00077 
00078   double integral = integrator->Simpson(vds, kNV, dV);
00079 
00080   delete [] vds;
00081 
00082   // 1e-7 a dimensional factor:
00083   // v*ds/dv (in microbarns) --> v*ds/dv*10^-30 cm^2, N -> N*10^23
00084 
00085   return 1e-7*(MuELoss::Na/fMaterial.A())*integral;
00086 }

double BezrukovBugaevModel::dE_dx ( double  E  )  const [virtual]

Implements ProcessModel.

Definition at line 53 of file BezrukovBugaevModel.cxx.

References bnuc().

00054 {
00055 // Calculate the muon -dE/dx due to muon nuclear interaction in MeV / (gr / cm^2 )
00056 // Input  : E, muon energy in MeV
00057 
00058   return bnuc(E) * E;
00059 }

double BezrukovBugaevModel::ds_dv ( double  v,
double  E 
) const [private]

Definition at line 96 of file BezrukovBugaevModel.cxx.

References MuELoss::a, Material::A(), ProcessModel::fMaterial, G(), Munits::g, MuELoss::m1_2, MuELoss::m2_2, MuELoss::Mm_2, PhotonuclXSec(), and MuELoss::pi.

Referenced by bnuc().

00097 {
00098 // Calculate the differential cross section ds/dv (in microbarn) for muon nuclear
00099 // interaction based on the Bezrukov, Bugaev formula.
00100 // Input  : E, muon energy in MeV
00101 //          v, fraction of energy transferred to the photon
00102 //
00103   assert(E >= 0);
00104   assert(v >  0);
00105 
00106   double sig = PhotonuclXSec(v,E);
00107   double g   = 3.*G(v,E)/4.;
00108   double v2  = v*v;
00109   double t   = MuELoss::Mm_2 *v2/(1-v);
00110   double k   = 1. - 2./v + 2./v2;
00111 
00112   assert(t >  0);
00113 
00114   double m1_2_t = MuELoss::m1_2 / t;
00115   double m2_2_t = MuELoss::m2_2 / t;
00116   double mm_2_t = MuELoss::Mm_2 / t;
00117   double d      = MuELoss::m1_2 / ( t + MuELoss::m1_2 );
00118 
00119   double A = MuELoss::a * fMaterial.A() * sig * v / (2 * MuELoss::pi);
00120 
00121   double B = g          * ( k*log(1.+m1_2_t) - k*d - 2.*mm_2_t );
00122   double C = 0.25       * ( k*log(1.+m2_2_t) - 2.*mm_2_t );
00123   double D = 0.5*mm_2_t * ( g*d + 0.25*m2_2_t*log(1.+1./m2_2_t) );
00124 
00125   return A*(B+C+D); // microbarns
00126 }

double BezrukovBugaevModel::G ( double  v,
double  E 
) const [private]

Definition at line 128 of file BezrukovBugaevModel.cxx.

References Material::A(), ProcessModel::fMaterial, and PhotonuclXSec().

Referenced by ds_dv().

00129 {
00130 // Calculate the factor G (dimensionless) appearing in the differential photonuclear
00131 // interaction xsec
00132 // Input  : E, muon energy in MeV
00133 //          v, fraction of energy transferred to the photon
00134 //
00135   assert(E >= 0);
00136   assert(v >  0);
00137   double A13 = pow(fMaterial.A(),1/3.);
00138   double x   = 0.00282 * A13 * PhotonuclXSec(v,E);  // factor 0.00282 has units of ub^-1
00139   double x2  = x*x;
00140   double x3  = x2*x;
00141 
00142   return 3. * ( x2/2. - 1. + (1.+x)*exp(-x) ) / x3;
00143 }

double BezrukovBugaevModel::PhotonuclXSec ( double  v,
double  E 
) const [private]

Definition at line 145 of file BezrukovBugaevModel.cxx.

References MuELoss::e.

Referenced by ds_dv(), and G().

00146 {
00147 // Calculate the cross section (in microbarns) for photonuclear interaction
00148 // Input  : E, muon energy in MeV
00149 //          v, fraction of energy transferred to the photon
00150 //
00151   assert(E >= 0);
00152   assert(v >  0);
00153 
00154   double Ep   = v*E; // photon energy
00155   double loge = log(0.0213*1e-3*Ep); // factor 0.0213 has units of GeV^-1
00156   
00157   return 114.3 + 1.647 * loge*loge;
00158 }

double BezrukovBugaevModel::V_max ( double  E  )  const [private]

Definition at line 88 of file BezrukovBugaevModel.cxx.

References MuELoss::e, ProcessModel::fMaterial, MuELoss::Mm, and Material::Z().

Referenced by bnuc().

00089 {
00090 // Calculate the maximum fraction of energy carried to the photon.
00091 // Input  : E, muon energy in MeV
00092 //
00093   return ( 1 - (3/4.)*sqrt(MuELoss::e)*(MuELoss::Mm/E)* pow(fMaterial.Z(),1/3.) );
00094 }

ValidityRange_t BezrukovBugaevModel::ValidityRange ( void   )  const [virtual]

Implements ProcessModel.

Definition at line 43 of file BezrukovBugaevModel.cxx.

References MuELoss::e, ValidityRange::Emax, ValidityRange::Emin, ProcessModel::fMaterial, MuELoss::Mm, and Material::Z().

00044 {
00045   ValidityRange_t validity_range;
00046 
00047   validity_range.Emin = 0.75*sqrt(MuELoss::e)*(MuELoss::Mm)*pow(fMaterial.Z(), 1./3.);
00048   validity_range.Emax = 10000000.; // MeV
00049 
00050   return validity_range;
00051 }


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

Generated on 22 Nov 2017 for loon by  doxygen 1.6.1