#include <PetrukhinShestakovModel.h>
Inheritance diagram for PetrukhinShestakovModel:

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 |
Definition at line 24 of file PetrukhinShestakovModel.h.
| 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 | ( | ) |
| 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 }
1.4.7