PetrukhinShestakovModel Class Reference

#include <PetrukhinShestakovModel.h>

Inheritance diagram for PetrukhinShestakovModel:

ProcessModel List of all members.

Public Member Functions

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

Private Member Functions

double bbrem (double E) const
double V_max (double E) const
double ds_dv (double v, double E) const
double fi (double v, double E) const
double delta (double v, double E) const

Detailed Description

________________________________________________________________________________________
Id
PetrukhinShestakovModel.cxx,v 1.2 2004/01/05 16:11:13 costas Exp

Definition at line 24 of file PetrukhinShestakovModel.h.


Constructor & Destructor Documentation

PetrukhinShestakovModel::PetrukhinShestakovModel (  ) 

Definition at line 26 of file PetrukhinShestakovModel.cxx.

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

PetrukhinShestakovModel::PetrukhinShestakovModel ( const Material material  ) 

Definition at line 32 of file PetrukhinShestakovModel.cxx.

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

PetrukhinShestakovModel::~PetrukhinShestakovModel (  ) 

Definition at line 38 of file PetrukhinShestakovModel.cxx.

00039 {
00040 
00041 }


Member Function Documentation

double PetrukhinShestakovModel::bbrem ( double  E  )  const [private]

Definition at line 61 of file PetrukhinShestakovModel.cxx.

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

Referenced by dE_dx().

00062 {
00063 // Calculate the b factor for muon bremsstrahlung ( -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_dv = new double[kNV];
00075   
00076   for(int iv = 0; iv < kNV; iv++) 
00077                       vds_dv[iv] = (Vmin+(iv+1)*dV) * ds_dv( (Vmin+(iv+1)*dV), E);
00078 
00079   double integral = integrator->Simpson(vds_dv, kNV, dV);
00080 
00081   // factor 10 is for dimensions:
00082   //    10 :   v*ds/dv(integral) in 10^22 cm2 --  N->N*10^(-23) -> b in 0.1 cm2/gr
00083   return 10*(MuELoss::Na/fMaterial.A())*integral;
00084 }

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

Implements ProcessModel.

Definition at line 53 of file PetrukhinShestakovModel.cxx.

References bbrem().

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

double PetrukhinShestakovModel::delta ( double  v,
double  E 
) const [private]

Definition at line 134 of file PetrukhinShestakovModel.cxx.

References MuELoss::Mm_2.

Referenced by fi().

00135 {
00136 // Calculate the minimum monentum transfer to the nucleus in MeV
00137 // Input   : v, the fraction of energy transfered to the photon
00138 //           E, muon energy in MeV
00139 
00140  return MuELoss::Mm_2 * v / (2*E*(1-v));
00141 }

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

Definition at line 91 of file PetrukhinShestakovModel.cxx.

References MuELoss::a_3, fi(), ProcessModel::fMaterial, MuELoss::Le_2, MuELoss::Me_Mm_2, and Material::Z().

Referenced by bbrem().

00092 {
00093 // Calculate the Bethe-Heitler cross section ds/dv for muon bremsstrahlung in 10^22 cm^2
00094 // Input  : v, the fraction of energy transfered to the photon
00095 //          E, muon energy in MeV
00096 //
00097   assert( v > 0 );
00098   assert( E >=0 );
00099 
00100   double a_3     = MuELoss::a_3;
00101   double z_2     = pow(fMaterial.Z(),2);
00102   double le_2    = MuELoss::Le_2;
00103   double me_mm_2 = MuELoss::Me_Mm_2;
00104 
00105   return a_3 * 4*z_2 * le_2 * me_mm_2 * ( ( 4/3. - 4*v/3. + v*v )/v ) * fi(v,E);
00106 }

double PetrukhinShestakovModel::fi ( double  v,
double  E 
) const [private]

Definition at line 108 of file PetrukhinShestakovModel.cxx.

References MuELoss::a, delta(), ProcessModel::fMaterial, MuELoss::Me, MuELoss::Mm_Me, MuELoss::sqrt_e, and Material::Z().

Referenced by ds_dv().

00109 {
00110 // Calculate the fi(d) factor for the bremsstrahlung cross section ds/dv according to the
00111 // Petrukhin/Shestakov formula (dimensionless)
00112 // Input   : v, the fraction of energy transfered to the photon
00113 //           E, muon energy in MeV
00114 
00115   double d = delta(v,E);
00116 
00117   if( fMaterial.Z() < 10 ) {
00118 
00119      double a = (189.*MuELoss::Mm_Me ) * pow(fMaterial.Z(),-1./3.);
00120      double b = 1 + (189./MuELoss::Me) * pow(fMaterial.Z(),-1./3.) * MuELoss::sqrt_e * d;
00121 
00122      return log(a/b);
00123 
00124   } else if ( fMaterial.Z() > 10 ) {
00125 
00126      double a = (2./3.) * (189.*MuELoss::Mm_Me) * pow(fMaterial.Z(),-2./3.);
00127      double b = 1 + (189./MuELoss::Me) * pow(fMaterial.Z(),-1./3.) * MuELoss::sqrt_e * d;
00128 
00129      return log(a/b);
00130 
00131   } else return 0;
00132 }

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

Definition at line 86 of file PetrukhinShestakovModel.cxx.

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

Referenced by bbrem().

00087 {
00088   return ( 1 - (3/4.)*sqrt(MuELoss::e)*(MuELoss::Mm/E)* pow(fMaterial.Z(),1/3.) );
00089 }

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

Implements ProcessModel.

Definition at line 43 of file PetrukhinShestakovModel.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 Wed Dec 10 22:50:18 2014 for loon by  doxygen 1.4.7