]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDtransform.cxx
Some hick-up with common blocks solved.
[u/mrichter/AliRoot.git] / TRD / AliTRDtransform.cxx
index ca00a70919dd2c5d586c3c22c764b1e89b1b9184..f5d9b18a6d52c59f461d1028f80849716b935762 100644 (file)
@@ -25,8 +25,6 @@
 #include <TGeoMatrix.h>
 
 #include "AliLog.h"
-#include "AliTracker.h"
-#include "AliCodeTimer.h"
 
 #include "AliTRDtransform.h"
 #include "AliTRDcluster.h"
@@ -40,8 +38,6 @@
 ClassImp(AliTRDtransform)
 
 //_____________________________________________________________________________
-//AliTRDtransform::AliTRDtransform()
-//  :AliTransform()
 AliTRDtransform::AliTRDtransform()
   :TObject()
   ,fGeo(0x0)
@@ -51,8 +47,8 @@ AliTRDtransform::AliTRDtransform()
   ,fCalVdriftROC(0x0)
   ,fCalT0ROC(0x0)
   ,fCalPRFROC(0x0)
-  ,fCalVdriftDet(0x0)
-  ,fCalT0Det(0x0)
+  ,fkCalVdriftDet(0x0)
+  ,fkCalT0Det(0x0)
   ,fCalVdriftDetValue(0)
   ,fCalT0DetValue(0)
   ,fSamplingFrequency(0)
@@ -67,8 +63,6 @@ AliTRDtransform::AliTRDtransform()
 }
 
 //_____________________________________________________________________________
-//AliTRDtransform::AliTRDtransform(Int_t det)
-//  :AliTransform()
 AliTRDtransform::AliTRDtransform(Int_t det)
   :TObject()
   ,fGeo(0x0)
@@ -78,8 +72,8 @@ AliTRDtransform::AliTRDtransform(Int_t det)
   ,fCalVdriftROC(0x0)
   ,fCalT0ROC(0x0)
   ,fCalPRFROC(0x0)
-  ,fCalVdriftDet(0x0)
-  ,fCalT0Det(0x0)
+  ,fkCalVdriftDet(0x0)
+  ,fkCalT0Det(0x0)
   ,fCalVdriftDetValue(0)
   ,fCalT0DetValue(0)
   ,fSamplingFrequency(0)
@@ -108,16 +102,14 @@ AliTRDtransform::AliTRDtransform(Int_t det)
   }
 
   // Get the calibration objects for the global calibration
-  fCalVdriftDet      = fCalibration->GetVdriftDet();
-  fCalT0Det          = fCalibration->GetT0Det();
+  fkCalVdriftDet     = fCalibration->GetVdriftDet();
+  fkCalT0Det         = fCalibration->GetT0Det();
 
   SetDetector(det);
 
 }
 
 //_____________________________________________________________________________
-//AliTRDtransform::AliTRDtransform(const AliTRDtransform &t)
-//  :AliTransform(t)
 AliTRDtransform::AliTRDtransform(const AliTRDtransform &t)
   :TObject(t)
   ,fGeo(0x0)
@@ -127,8 +119,8 @@ AliTRDtransform::AliTRDtransform(const AliTRDtransform &t)
   ,fCalVdriftROC(0x0)
   ,fCalT0ROC(0x0)
   ,fCalPRFROC(0x0)
-  ,fCalVdriftDet(0x0)
-  ,fCalT0Det(0x0)
+  ,fkCalVdriftDet(0x0)
+  ,fkCalT0Det(0x0)
   ,fCalVdriftDetValue(0)
   ,fCalT0DetValue(0)
   ,fSamplingFrequency(0)
@@ -156,8 +148,8 @@ AliTRDtransform::AliTRDtransform(const AliTRDtransform &t)
   if (!fCalibration) {
     AliError("Cannot find calibration object");
   }
-  fCalVdriftDet      = fCalibration->GetVdriftDet();
-  fCalT0Det          = fCalibration->GetT0Det();
+  fkCalVdriftDet     = fCalibration->GetVdriftDet();
+  fkCalT0Det         = fCalibration->GetT0Det();
 
 }
 
@@ -190,8 +182,8 @@ void AliTRDtransform::SetDetector(Int_t det)
   fCalPRFROC         = fCalibration->GetPRFROC(det);
 
   // Get the detector wise defined calibration values
-  fCalVdriftDetValue = fCalVdriftDet->GetValue(det);
-  fCalT0DetValue     = fCalT0Det->GetValue(det);
+  fCalVdriftDetValue = fkCalVdriftDet->GetValue(det);
+  fCalT0DetValue     = fkCalT0Det->GetValue(det);
 
   // Shift needed to define Z-position relative to middle of chamber
   Int_t layer        = fGeo->GetLayer(det);
@@ -229,21 +221,22 @@ Bool_t AliTRDtransform::Transform(AliTRDcluster *c)
   Double_t vd  = fCalVdriftDetValue * fCalVdriftROC->GetValue(col,row);
   // t0
   Double_t t0  = fCalT0DetValue     + fCalT0ROC->GetValue(col,row);
+  t0 /= fSamplingFrequency;
   // ExB correction
   Double_t exb = AliTRDCommonParam::Instance()->GetOmegaTau(vd);
 
   Float_t x = c->GetXloc(t0, vd);
 
-  // pad response width with diffusion corrections
-  Double_t s2  = fCalPRFROC->GetValue(col, row); s2 *= s2; 
-  Float_t dl, dt;
-  AliTRDCommonParam::Instance()->GetDiffCoeff(dl, dt, vd);
-  s2 += dl*dl*x/(1.+2.*exb*exb);
-  s2 -= - 1.5e-1;
-
   // Pad dimensions
   Double_t rs = fPadPlane->GetRowSize(row);
   Double_t cs = fPadPlane->GetColSize(col);
+
+  // cluster error with diffusion corrections
+  Double_t s2  = cs*fCalPRFROC->GetValue(col, row); 
+  s2 *= s2; 
+  Float_t dl, dt;
+  AliTRDCommonParam::Instance()->GetDiffCoeff(dl, dt, vd);
+
   Double_t y0 = fPadPlane->GetColPos(col) + .5*cs;
   Double_t loc[] = {
     kX0shift-x,                    // Invert the X-position,
@@ -257,10 +250,11 @@ Bool_t AliTRDtransform::Transform(AliTRDcluster *c)
 
   // store tracking values
   c->SetX(trk[0]);c->SetY(trk[1]);c->SetZ(trk[2]);
-  c->SetSigmaY2(s2);
+  c->SetSigmaY2(s2, dt, exb, x);
   c->SetSigmaZ2(fPadPlane->GetRowSize(row)*fPadPlane->GetRowSize(row)/12.);
   
   return kTRUE;
+
 }
 
 //_____________________________________________________________________________
@@ -275,4 +269,5 @@ void AliTRDtransform::Recalibrate(AliTRDcluster *c, Bool_t setDet)
 
   if (setDet) SetDetector(c->GetDetector());
   Transform(c);
+
 }