Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

KalFitMaterial Class Reference

#include <KalFitMaterial.h>

List of all members.

Public Member Functions

double dE (double mass, double path, double p) const
 Calculate energy loss.
double dE (double mass, double path, double p) const
 Calculate energy loss.
double del_E (double mass, double path, double p) const
 Calculate the straggling of energy loss.
double del_E (double mass, double path, double p) const
 Calculate the straggling of energy loss.
 KalFitMaterial (const KalFitMaterial &mat)
 KalFitMaterial (double z, double a, double i, double rho, double x0)
 KalFitMaterial ()
 Constructor.
 KalFitMaterial (const KalFitMaterial &mat)
 KalFitMaterial (double z, double a, double i, double rho, double x0)
 KalFitMaterial ()
 Constructor.
double mcs_angle (double mass, double path, double p) const
 Calculate Multiple Scattering angle.
double mcs_angle (double mass, double path, double p) const
 Calculate Multiple Scattering angle.
double X0 (void) const
 Extractor.
double X0 (void) const
 Extractor.

Private Attributes

double isq_
double rza_
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.


Constructor & Destructor Documentation

KalFitMaterial::KalFitMaterial  )  [inline]
 

Constructor.

00027 {}

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

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  ) 
 

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

KalFitMaterial::KalFitMaterial  )  [inline]
 

Constructor.

00027 {}

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

KalFitMaterial::KalFitMaterial const KalFitMaterial mat  ) 
 


Member Function Documentation

double KalFitMaterial::dE double  mass,
double  path,
double  p
const
 

Calculate energy loss.

double KalFitMaterial::dE double  mass,
double  path,
double  p
const
 

Calculate energy loss.

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.

double KalFitMaterial::del_E double  mass,
double  path,
double  p
const
 

Calculate the straggling of energy loss.

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.

double KalFitMaterial::mcs_angle double  mass,
double  path,
double  p
const
 

Calculate Multiple Scattering angle.

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.

00041 { return x0_; }

double KalFitMaterial::X0 void   )  const [inline]
 

Extractor.

00041 { return x0_; }


Member Data Documentation

double KalFitMaterial::isq_ [private]
 

double KalFitMaterial::rza_ [private]
 

double KalFitMaterial::x0_ [private]
 

double KalFitMaterial::z_ [private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 16:19:56 2011 for BOSS6.5.5 by  doxygen 1.3.9.1