#include <KalFitMaterial.h>
Public Member Functions | |
KalFitMaterial () | |
Constructor. | |
KalFitMaterial (double z, double a, double i, double rho, double x0) | |
KalFitMaterial (const KalFitMaterial &mat) | |
double | dE (double mass, double path, double p) const |
Calculate energy loss. | |
double | mcs_angle (double mass, double path, double p) const |
Calculate Multiple Scattering angle. | |
double | del_E (double mass, double path, double p) const |
Calculate the straggling of energy loss. | |
double | X0 (void) const |
Extractor. | |
Private Attributes | |
double | rza_ |
double | isq_ |
double | x0_ |
double | z_ |
Definition at line 19 of file KalFitMaterial.h.
KalFitMaterial::KalFitMaterial | ( | ) | [inline] |
KalFitMaterial::KalFitMaterial | ( | double | z, | |
double | a, | |||
double | i, | |||
double | rho, | |||
double | x0 | |||
) |
KalFitMaterial::KalFitMaterial | ( | const KalFitMaterial & | mat | ) |
double KalFitMaterial::dE | ( | double | mass, | |
double | path, | |||
double | p | |||
) | const |
Calculate energy loss.
Definition at line 35 of file KalFitMaterial.cxx.
References f1, f2, isq_, rza_, s, w, x, and z_.
Referenced by KalFitTrack::eloss().
00037 { 00038 if (!(p>0)) 00039 return 0; 00040 00041 //cout<<"this material:x0 "<< x0_ << " Z " << z_ << endl 00042 // <<" rho*Z/A "<< rza_ << " I^2 "<< isq_ << endl; 00043 00044 00045 const double Me = 0.000510999; 00046 double psq = p * p; 00047 double bsq = psq / (psq + mass * mass); 00048 double esq = psq / (mass * mass); 00049 00050 double s = Me / mass; 00051 double w = (4 * Me * esq 00052 / (1 + 2 * s * sqrt(1 + esq) 00053 + s * s)); 00054 00055 // Density correction : 00056 double cc, x0; 00057 cc = 1+2*log(sqrt(isq_)/(28.8E-09*sqrt(rza_))); 00058 if (cc < 5.215) 00059 x0 = 0.2; 00060 else 00061 x0 = 0.326*cc-1.5; 00062 double x1(3), xa(cc/4.606), aa; 00063 aa = 4.606*(xa-x0)/((x1-x0)*(x1-x0)*(x1-x0)); 00064 double delta(0); 00065 double x(log10(sqrt(esq))); 00066 if (x > x0){ 00067 delta = 4.606*x-cc; 00068 if (x < x1) delta=delta+aa*(x1-x)*(x1-x)*(x1-x); 00069 } 00070 00071 // Shell correction : 00072 float f1, f2, f3, f4, f5, ce; 00073 f1 = 1/esq; 00074 f2 = f1*f1; 00075 f3 = f1*f2; 00076 f4 = (f1*0.42237+f2*0.0304-f3*0.00038)*1E12; 00077 f5 = (f1*3.858-f2*0.1668+f3*0.00158)*1E18; 00078 ce = f4*isq_+f5*isq_*sqrt(isq_); 00079 00080 return (0.0001535 * rza_ / bsq 00081 * (log(Me * esq * w / isq_) 00082 - 2 * bsq-delta-2.0*ce/z_)) * path; 00083 }
double KalFitMaterial::del_E | ( | double | mass, | |
double | path, | |||
double | p | |||
) | const |
Calculate the straggling of energy loss.
Definition at line 99 of file KalFitMaterial.cxx.
References rza_.
Referenced by KalFitTrack::eloss().
00101 { 00102 double sigma0_2 = 0.1569*rza_*path; 00103 00104 if (sigma0_2<0) return 0; 00105 00106 double psq = p * p; 00107 double bsq = psq / (psq + mass * mass); 00108 00109 // Correction for relativistic particles : 00110 double sigma_2 = sigma0_2*(1-0.5*bsq)/(1-bsq); 00111 00112 if (sigma_2<0) return 0; 00113 00114 // Return sigma in GeV !! 00115 return sqrt(sigma_2)*0.001; 00116 00117 }
double KalFitMaterial::mcs_angle | ( | double | mass, | |
double | path, | |||
double | p | |||
) | const |
Calculate Multiple Scattering angle.
Definition at line 87 of file KalFitMaterial.cxx.
Referenced by KalFitTrack::ms().
00089 { 00090 //cout<<"this material:x0 "<< x0_ << " Z " << z_ << endl 00091 // <<" rho*Z/A "<< rza_ << " I^2 "<< isq_ << endl; 00092 double t = path / x0_; 00093 double psq = p*p; 00094 return 0.0136 * sqrt(t * (mass*mass + psq)) / psq 00095 * (1 + 0.038 * log(t)); 00096 }
double KalFitMaterial::X0 | ( | void | ) | const [inline] |
Extractor.
Definition at line 41 of file KalFitMaterial.h.
References x0_.
Referenced by KalFitTrack::ms().
00041 { return x0_; }
double KalFitMaterial::isq_ [private] |
double KalFitMaterial::rza_ [private] |
double KalFitMaterial::x0_ [private] |
double KalFitMaterial::z_ [private] |