]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSCalibration.cxx
- AliITSInitGeometry.cxx (updated): fgkOldSSDcone changed from kTRUE to
[u/mrichter/AliRoot.git] / ITS / AliITSCalibration.cxx
index 8b05d8911bb2908ef8633e2aab3ca3cc1f360028..f8a159f378b58999003fd4074078a312057a8bc8 100644 (file)
@@ -13,6 +13,7 @@
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
+/* $Id:$ */
 
 //////////////////////////////////////////////////////
 //  Calibration class for set:ITS                   //
 //  AliITSCalibrationSSD                            //
 //////////////////////////////////////////////////////
 
-#include "Riostream.h"
+#include <Riostream.h>
+#include <TMath.h>
+
 #include "AliITSCalibration.h"
+#include "AliLog.h"
 
 ClassImp(AliITSCalibration)
 
@@ -57,6 +61,32 @@ fResponse(){
     fResponse = 0;
 }
 
+//______________________________________________________________________
+AliITSCalibration::AliITSCalibration(const AliITSCalibration &ob):
+TObject(ob),
+fDataType(ob.fDataType),
+fdv(ob.fdv),
+fN(ob.fN),
+fT(ob.fT),
+fGeVcharge(ob.fGeVcharge),
+fResponse(ob.fResponse)
+{
+  // Copy constructor
+
+}
+/*
+//______________________________________________________________________________
+AliITSCalibration& AliITSCalibration::operator= (const AliITSCalibration& source)
+{
+  // Asignment operator
+
+  this->~AliITSCalibration();
+  new(this) AliITSCalibration(source);
+  return *this;
+
+
+}
+*/
 //______________________________________________________________________
 Double_t AliITSCalibration::MobilityElectronSiEmp() const {
     // Computes the electron mobility in cm^2/volt-sec. Taken from SILVACO
@@ -168,6 +198,56 @@ Double_t AliITSCalibration::DiffusionCoefficientHole() const {
     return m*kbqe*tT;  // [cm^2/sec]
 }
 //______________________________________________________________________
+Double_t AliITSCalibration::LorentzAngleHole(Double_t B) const {
+   // Computes the Lorentz angle for electrons in Si 
+   // Input: magnetic Field in KGauss
+   // Output: Lorentz angle in radians (positive if Bz is positive)
+   // Main Reference: NIM A 497 (2003) 389–396. 
+   // "An algorithm for calculating the Lorentz angle in silicon detectors", V. Bartsch et al.
+   //
+   const Double_t krH=0.70; // Hall scattering factor for Hole
+   const Double_t kT0  = 300.;       // reference Temperature (degree K).
+   const Double_t kmulow0 = 470.5;   // cm^2/Volt-sec
+   const Double_t keT0 = -2.5;       // Power of Temp.
+   const Double_t beta0 = 1.213;     // beta coeff. at T0=300K
+   const Double_t keT1 = 0.17;       // Power of Temp. for beta
+   const Double_t kvsat0 = 8.37E+06; // saturated velocity at T0=300K (cm/sec)
+   const Double_t keT2 = 0.52;       // Power of Temp. for vsat
+   Double_t tT = fT;
+   Double_t eE= 1./fdv;
+   Double_t muLow=kmulow0*TMath::Power(tT/kT0,keT0);
+   Double_t beta=beta0*TMath::Power(tT/kT0,keT1);
+   Double_t vsat=kvsat0*TMath::Power(tT/kT0,keT2);
+   Double_t mu=muLow/TMath::Power(1+TMath::Power(muLow*eE/vsat,beta),1/beta);
+   Double_t angle=TMath::ATan(krH*mu*B*1.E-05); // Conversion Factor
+   return angle;
+}
+//______________________________________________________________________
+Double_t AliITSCalibration::LorentzAngleElectron(Double_t B) const {
+   // Computes the Lorentz angle for electrons in Si 
+   // Input: magnetic Field in KGauss
+   // Output: Lorentz angle in radians (positive if Bz is positive)
+   // Main Reference: NIM A 497 (2003) 389–396.
+   // "An algorithm for calculating the Lorentz angle in silicon detectors", V. Bartsch et al.
+   //
+   const Double_t krH=1.15; // Hall scattering factor for Electron
+   const Double_t kT0  = 300.;       // reference Temperature (degree K).
+   const Double_t kmulow0 = 1417.0;  // cm^2/Volt-sec
+   const Double_t keT0 = -2.2;       // Power of Temp.
+   const Double_t beta0 = 1.109;     // beta coeff. at T0=300K
+   const Double_t keT1 = 0.66;       // Power of Temp. for beta
+   const Double_t kvsat0 = 1.07E+07; // saturated velocity at T0=300K (cm/sec)
+   const Double_t keT2 = 0.87;       // Power of Temp. for vsat
+   Double_t tT = fT;
+   Double_t eE= 1./fdv;
+   Double_t muLow=kmulow0*TMath::Power(tT/kT0,keT0);
+   Double_t beta=beta0*TMath::Power(tT/kT0,keT1);
+   Double_t vsat=kvsat0*TMath::Power(tT/kT0,keT2);
+   Double_t mu=muLow/TMath::Power(1+TMath::Power(muLow*eE/vsat,beta),1/beta);
+   Double_t angle=TMath::ATan(krH*mu*B*1.E-05);
+   return angle;
+}
+//______________________________________________________________________
 Double_t AliITSCalibration::SpeedElectron() const {
     // Computes the average speed for electrons in Si under the low-field 
     // approximation. [cm/sec].