KalFitMaterial Class Reference

#include <KalFitMaterial.h>

List of all members.

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_


Detailed Description

Material is a class which describes the properties of a given material, for instance atomic number, atomic weight and so on.

Definition at line 19 of file KalFitMaterial.h.


Constructor & Destructor Documentation

KalFitMaterial::KalFitMaterial (  )  [inline]

Constructor.

Definition at line 27 of file KalFitMaterial.h.

00027 {}

KalFitMaterial::KalFitMaterial ( double  z,
double  a,
double  i,
double  rho,
double  x0 
)

Definition at line 18 of file KalFitMaterial.cxx.

References isq_, and rza_.

00020   : x0_(x0), z_(z)  // rho is the density, z is the atomic number, a is the weight
00021                     // i is mean excitation potention, x0 is the radiation length
00022 {
00023   rza_ = rho * z / a;
00024   isq_  = i * i * 1e-18;
00025 }

KalFitMaterial::KalFitMaterial ( const KalFitMaterial mat  ) 

Definition at line 27 of file KalFitMaterial.cxx.

00028   : rza_(mat.rza_), isq_(mat.isq_),
00029     x0_(mat.x0_), z_(mat.z_)
00030 {
00031    
00032 }


Member Function Documentation

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.

References t(), and x0_.

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_; }


Member Data Documentation

double KalFitMaterial::isq_ [private]

Definition at line 21 of file KalFitMaterial.h.

Referenced by dE(), and KalFitMaterial().

double KalFitMaterial::rza_ [private]

Definition at line 20 of file KalFitMaterial.h.

Referenced by dE(), del_E(), and KalFitMaterial().

double KalFitMaterial::x0_ [private]

Definition at line 22 of file KalFitMaterial.h.

Referenced by mcs_angle(), and X0().

double KalFitMaterial::z_ [private]

Definition at line 23 of file KalFitMaterial.h.

Referenced by dE().


Generated on Tue Nov 29 23:19:55 2016 for BOSS_7.0.2 by  doxygen 1.4.7