#include <TGeoMatrix.h>
#include "AliLog.h"
-#include "AliTracker.h"
-#include "AliCodeTimer.h"
#include "AliTRDtransform.h"
#include "AliTRDcluster.h"
ClassImp(AliTRDtransform)
//_____________________________________________________________________________
-//AliTRDtransform::AliTRDtransform()
-// :AliTransform()
AliTRDtransform::AliTRDtransform()
:TObject()
,fGeo(0x0)
,fCalVdriftROC(0x0)
,fCalT0ROC(0x0)
,fCalPRFROC(0x0)
- ,fCalVdriftDet(0x0)
- ,fCalT0Det(0x0)
+ ,fkCalVdriftDet(0x0)
+ ,fkCalT0Det(0x0)
,fCalVdriftDetValue(0)
,fCalT0DetValue(0)
,fSamplingFrequency(0)
}
//_____________________________________________________________________________
-//AliTRDtransform::AliTRDtransform(Int_t det)
-// :AliTransform()
AliTRDtransform::AliTRDtransform(Int_t det)
:TObject()
,fGeo(0x0)
,fCalVdriftROC(0x0)
,fCalT0ROC(0x0)
,fCalPRFROC(0x0)
- ,fCalVdriftDet(0x0)
- ,fCalT0Det(0x0)
+ ,fkCalVdriftDet(0x0)
+ ,fkCalT0Det(0x0)
,fCalVdriftDetValue(0)
,fCalT0DetValue(0)
,fSamplingFrequency(0)
}
// 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)
,fCalVdriftROC(0x0)
,fCalT0ROC(0x0)
,fCalPRFROC(0x0)
- ,fCalVdriftDet(0x0)
- ,fCalT0Det(0x0)
+ ,fkCalVdriftDet(0x0)
+ ,fkCalT0Det(0x0)
,fCalVdriftDetValue(0)
,fCalT0DetValue(0)
,fSamplingFrequency(0)
if (!fCalibration) {
AliError("Cannot find calibration object");
}
- fCalVdriftDet = fCalibration->GetVdriftDet();
- fCalT0Det = fCalibration->GetT0Det();
+ fkCalVdriftDet = fCalibration->GetVdriftDet();
+ fkCalT0Det = fCalibration->GetT0Det();
}
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);
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,
// 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;
+
}
//_____________________________________________________________________________
if (setDet) SetDetector(c->GetDetector());
Transform(c);
+
}