BetheBlochModel Class Reference

#include <BetheBlochModel.h>

Inheritance diagram for BetheBlochModel:

ProcessModel List of all members.

Public Member Functions

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

Private Member Functions

double MaximumEnergyTransfer (double E) const
double DensityCorrectionFactor (double E) const

Detailed Description

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

Definition at line 22 of file BetheBlochModel.h.


Constructor & Destructor Documentation

BetheBlochModel::BetheBlochModel (  ) 

Definition at line 26 of file BetheBlochModel.cxx.

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

BetheBlochModel::BetheBlochModel ( const Material material  ) 

Definition at line 32 of file BetheBlochModel.cxx.

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

BetheBlochModel::~BetheBlochModel (  ) 

Definition at line 38 of file BetheBlochModel.cxx.

00039 {
00040 
00041 }


Member Function Documentation

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

Implements ProcessModel.

Definition at line 53 of file BetheBlochModel.cxx.

References Material::A(), MuELoss::a_2, Utils::BetaFactor(), DensityCorrectionFactor(), MuELoss::e, ProcessModel::fMaterial, Utils::GammaFactor(), Material::IonPotential(), MuELoss::Le_2, MaximumEnergyTransfer(), MuELoss::Me, MuELoss::Mm, MuELoss::Na, MuELoss::pi, Mphysical::pi, and Material::Z().

00054 {
00055 // Calculates ionization dE/dx for muons via Bethe-Bloch formula in MeV / (gr/cm^2)
00056 // Input  : E, muon energy in MeV
00057 
00058    double a_2     = MuELoss::a_2;
00059    double pi      = MuELoss::pi;
00060    double Na      = MuELoss::Na;                     // in 10^-23
00061    double lamda_2 = MuELoss::Le_2;                   // in 10^22 cm^2
00062    double Z_A     = fMaterial.Z() / fMaterial.A();   // in mol/gr
00063    double me      = MuELoss::Me;                     // in MeV
00064    double beta    = Utils::BetaFactor(MuELoss::Mm, E);
00065    double beta_2  = beta*beta;
00066    double gamma   = Utils::GammaFactor(MuELoss::Mm, E);
00067    double gamma_2 = gamma*gamma;
00068    double I       = 1e-6 * fMaterial.IonPotential(); // in MeV  (ionization potential)
00069    double I_2     = I*I;                             // in MeV^2
00070    double Em      = MaximumEnergyTransfer(E);        // in MeV^2
00071    double Em_2    = Em*Em;                           // in MeV^2
00072    double E_2     = E*E;                             // in MeV^2
00073    double d       = DensityCorrectionFactor(E);
00074 
00075    double de_dx =  a_2 * 2*pi * Na * lamda_2 * Z_A * (me / beta_2) *
00076                     ( log( 2*me*beta_2*gamma_2*Em/I_2 ) - 2*beta_2 + 0.25*(Em_2/E_2) - d );
00077 
00078    // fix units... Compton wavelength ^2 is multiplied by 10^22 cm^2,
00079    //              Avogadro's number is in 10^-23.
00080    // need to multiply by 10
00081 
00082    return 10*de_dx; // in MeV/(gr/cm^2)
00083 }

double BetheBlochModel::DensityCorrectionFactor ( double  E  )  const [private]

Definition at line 100 of file BetheBlochModel.cxx.

References Material::a(), MuELoss::a, Utils::BetaFactor(), Material::C(), ProcessModel::fMaterial, Utils::GammaFactor(), Material::m(), Munits::m, MuELoss::Mm, Material::X0(), and Material::X1().

Referenced by dE_dx().

00101 {
00102 // Calculates the density correction factor delta
00103 // Input  : muon energy (MeV)
00104 
00105 // Looking at R.M.Sternheimer (BNL), Density Effect for the BetheBlochModel Loss in Various
00106 // Materials, Phys. Rev. 103, 511 (1956):
00107 // For Fe: X1 = 3, X0 = 0.10. a = 0.127, m = 3.29, C = -4.62
00108 
00109 // Also Table 1, at YR.
00110 
00111    const double X0    =  fMaterial.X0();
00112    const double X1    =  fMaterial.X1();
00113    const double a     =  fMaterial.a();
00114    const double m     =  fMaterial.m();
00115    const double C     =  fMaterial.C();
00116    const double beta  =  Utils::BetaFactor(MuELoss::Mm, E);
00117    const double gamma =  Utils::GammaFactor(MuELoss::Mm, E);
00118    const double X     =  log10( beta*gamma );
00119 
00120    if(X0 < X && X < X1) return ( 4.6052 * X + a * pow(X1-X,m) + C ); // X e (X0, X1)
00121    if(X > X1)           return ( 4.6052 * X + C);                    // X e (X1, oo)
00122 
00123    return 0; // presumably valid in case X < X0
00124 }

double BetheBlochModel::MaximumEnergyTransfer ( double  E  )  const [private]

Definition at line 85 of file BetheBlochModel.cxx.

References Utils::E2P(), MuELoss::Me, MuELoss::Me_2, MuELoss::Mm, Munits::mm, and MuELoss::Mm_2.

Referenced by dE_dx().

00086 {
00087 // Calculates the maximum energy transfer to the electron (in MeV)
00088 // Input  : muon energy (MeV)
00089 
00090    double me   = MuELoss::Me;
00091    double me_2 = MuELoss::Me_2;
00092    double mm   = MuELoss::Mm;
00093    double mm_2 = MuELoss::Mm_2;
00094    double p    = Utils::E2P(mm, E);
00095    double p_2  = p*p;
00096 
00097    return 2 * me * p_2 / ( me_2 + mm_2 + 2*me*E );
00098 }

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

Implements ProcessModel.

Definition at line 43 of file BetheBlochModel.cxx.

References ValidityRange::Emax, and ValidityRange::Emin.

00044 {
00045   ValidityRange_t validity_range;
00046   
00047   validity_range.Emin = 0;
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:49:14 2014 for loon by  doxygen 1.4.7