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

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 |
________________________________________________________________________________________
Costas Andreopoulos <C.V.Andreopoulos@rl.ac.uk> CCLRC, Rutherford Lab. December 10, 2003 _________________________________________________________________________________________
Definition at line 22 of file BezrukovBugaevModel.h.
|
|
Definition at line 26 of file BezrukovBugaevModel.cxx. 00026 : 00027 ProcessModel() 00028 { 00029 00030 } //_________________________________________________________________________________________
|
|
|
Definition at line 32 of file BezrukovBugaevModel.cxx. 00032 : 00033 ProcessModel(material, Process::eNuclearInteraction) 00034 { 00035 00036 } //_________________________________________________________________________________________
|
|
|
Definition at line 38 of file BezrukovBugaevModel.cxx. 00039 {
00040
00041 }
|
|
|
Definition at line 61 of file BezrukovBugaevModel.cxx. References Material::A(), ds_dv(), Integrator::Instance(), 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 }
|
|
|
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 }
|
|
||||||||||||
|
Definition at line 96 of file BezrukovBugaevModel.cxx. References Material::A(), C, G(), and PhotonuclXSec(). 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 }
|
|
||||||||||||
|
Definition at line 128 of file BezrukovBugaevModel.cxx. References Material::A(), 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 }
|
|
||||||||||||
|
Definition at line 145 of file BezrukovBugaevModel.cxx. 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 }
|
|
|
Definition at line 88 of file BezrukovBugaevModel.cxx. References 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 }
|
|
|
Implements ProcessModel. Definition at line 43 of file BezrukovBugaevModel.cxx. References ValidityRange::Emax, ValidityRange::Emin, ValidityRange_t, 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.3.9.1