CGEM BOSS 6.6.5.g
BESIII Offline Software System
Loading...
Searching...
No Matches
KalFitMaterial Class Reference

#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.
 
double Z (void) const
 
double get_density (void) const
 

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() [1/3]

KalFitMaterial::KalFitMaterial ( )
inline

Constructor.

Definition at line 28 of file KalFitMaterial.h.

28{}

◆ KalFitMaterial() [2/3]

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

Definition at line 18 of file KalFitMaterial.cxx.

20 : x0_(x0), z_(z), rho_(rho) // rho is the density, z is the atomic number, a is the weight
21 // i is mean excitation potention, x0 is the radiation length
22{
23 rza_ = rho * z / a;
24 isq_ = i * i * 1e-18;
25}

◆ KalFitMaterial() [3/3]

KalFitMaterial::KalFitMaterial ( const KalFitMaterial mat)

Definition at line 27 of file KalFitMaterial.cxx.

28 : rza_(mat.rza_), isq_(mat.isq_),
29 x0_(mat.x0_), z_(mat.z_), rho_(mat.rho_)
30{
31
32}

Member Function Documentation

◆ dE()

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

Calculate energy loss.

Definition at line 35 of file KalFitMaterial.cxx.

37{
38 if (!(p>0))
39 return 0;
40
41 //cout<<"this material:x0 "<< x0_ << " Z " << z_ << endl
42 // <<" rho*Z/A "<< rza_ << " I^2 "<< isq_ << endl;
43
44
45 const double Me = 0.000510999;
46 double psq = p * p;
47 double bsq = psq / (psq + mass * mass);
48 double esq = psq / (mass * mass);
49
50 double s = Me / mass;
51 double w = (4 * Me * esq
52 / (1 + 2 * s * sqrt(1 + esq)
53 + s * s));
54
55 // Density correction :
56 double cc, x0;
57 cc = 1+2*log(sqrt(isq_)/(28.8E-09*sqrt(rza_)));
58 if (cc < 5.215)
59 x0 = 0.2;
60 else
61 x0 = 0.326*cc-1.5;
62 double x1(3), xa(cc/4.606), aa;
63 aa = 4.606*(xa-x0)/((x1-x0)*(x1-x0)*(x1-x0));
64 double delta(0);
65 double x(log10(sqrt(esq)));
66 if (x > x0){
67 delta = 4.606*x-cc;
68 if (x < x1) delta=delta+aa*(x1-x)*(x1-x)*(x1-x);
69 }
70
71 // Shell correction :
72 float f1, f2, f3, f4, f5, ce;
73 f1 = 1/esq;
74 f2 = f1*f1;
75 f3 = f1*f2;
76 f4 = (f1*0.42237+f2*0.0304-f3*0.00038)*1E12;
77 f5 = (f1*3.858-f2*0.1668+f3*0.00158)*1E18;
78 ce = f4*isq_+f5*isq_*sqrt(isq_);
79
80 return (0.0001535 * rza_ / bsq
81 * (log(Me * esq * w / isq_)
82 - 2 * bsq-delta-2.0*ce/z_)) * path;
83}
double mass
TFile * f1
Double_t x[10]
XmlRpcServer s
Definition: HelloServer.cpp:11

Referenced by KalFitTrack::eloss().

◆ del_E()

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.

101{
102 double sigma0_2 = 0.1569*rza_*path;
103
104 if (sigma0_2<0) return 0;
105
106 double psq = p * p;
107 double bsq = psq / (psq + mass * mass);
108
109 // Correction for relativistic particles :
110 double sigma_2 = sigma0_2*(1-0.5*bsq)/(1-bsq);
111
112 if (sigma_2<0) return 0;
113
114 // Return sigma in GeV !!
115 return sqrt(sigma_2)*0.001;
116
117}

Referenced by KalFitTrack::eloss().

◆ get_density()

double KalFitMaterial::get_density ( void  ) const
inline

Definition at line 44 of file KalFitMaterial.h.

44{return rho_;}

Referenced by KalFitAlg::residual().

◆ mcs_angle()

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

Calculate Multiple Scattering angle.

Definition at line 87 of file KalFitMaterial.cxx.

89{
90 //cout<<"this material:x0 "<< x0_ << " Z " << z_ << endl
91 // <<" rho*Z/A "<< rza_ << " I^2 "<< isq_ << endl;
92 double t = path / x0_;
93 double psq = p*p;
94 return 0.0136 * sqrt(t * (mass*mass + psq)) / psq
95 * (1 + 0.038 * log(t));
96}
int t()
Definition: t.c:1

Referenced by KalFitTrack::ms().

◆ X0()

double KalFitMaterial::X0 ( void  ) const
inline

Extractor.

Definition at line 42 of file KalFitMaterial.h.

42{ return x0_; }

Referenced by KalFitTrack::ms(), and KalFitAlg::residual().

◆ Z()

double KalFitMaterial::Z ( void  ) const
inline

Definition at line 43 of file KalFitMaterial.h.

43{ return z_; }

Referenced by KalFitAlg::residual().


The documentation for this class was generated from the following files: