Int_t n=GetNumberOfClusters();
Int_t idx=GetClusterIndex(n); // save the current cluster index
- AliCluster cl(*c); cl.SetSigmaY2(fErrorY2); cl.SetSigmaZ2(fErrorZ2);
+ AliTPCclusterMI cl(*(AliTPCclusterMI*)c); cl.SetSigmaY2(fErrorY2); cl.SetSigmaZ2(fErrorZ2);
+
+ AliTPCClusterParam * parcl = AliTPCcalibDB::Instance()->GetClusterParam();
+
+ Float_t ty = TMath::Tan(TMath::ASin(GetSnp()));
+
+ if( parcl ){
+ Int_t padSize = 0; // short pads
+ if (cl.GetDetector() >= 36) {
+ padSize = 1; // medium pads
+ if (cl.GetRow() > 63) padSize = 2; // long pads
+ }
+ Float_t waveCorr = parcl->GetWaveCorrection( padSize, cl.GetZ(), cl.GetMax(),cl.GetPad(), ty );
+ cl.SetY( cl.GetY() - waveCorr );
+ }
+
Float_t dx = ((AliTPCclusterMI*)c)->GetX()-GetX();
if (TMath::Abs(dx)>0){
- Float_t ty = TMath::Tan(TMath::ASin(GetSnp()));
Float_t dy = dx*ty;
Float_t dz = dx*TMath::Sqrt(1.+ty*ty)*GetTgl();
- cl.SetY(c->GetY()-dy);
- cl.SetZ(c->GetZ()-dz);
- }
+ cl.SetY(cl.GetY()-dy);
+ cl.SetZ(cl.GetZ()-dz);
+ }
+
if (!AliTPCtrack::Update(&cl,chisq,index)) return kFALSE;