if( Map ){
fWaveCorrectionMap = dynamic_cast<THnBase*>( Map->Clone(Map->GetName()));
if( fWaveCorrectionMap ){
- fWaveCorrectionMirroredPad = ( fWaveCorrectionMap->GetAxis(3)->GetXmin()>0.01 ); // cog axis is mirrored at 0.5
- fWaveCorrectionMirroredZ = ( fWaveCorrectionMap->GetAxis(1)->GetXmin() > -200.00 ); // Z axis is mirrored at 0
- fWaveCorrectionMirroredAngle = ( fWaveCorrectionMap->GetAxis(4)->GetXmin() > -0.5 );// Angle axis is mirrored at 0
+ fWaveCorrectionMirroredPad = ( fWaveCorrectionMap->GetAxis(3)->FindFixBin(0.5)<=1 ); // Pad axis is mirrored at 0.5
+ fWaveCorrectionMirroredZ = ( fWaveCorrectionMap->GetAxis(1)->FindFixBin(0)<=1); // Z axis is mirrored at 0
+ fWaveCorrectionMirroredAngle = ( fWaveCorrectionMap->GetAxis(4)->FindFixBin(0.0)<=1 ); // Angle axis is mirrored at 0
}
}
}
}
}
-
Float_t AliTPCClusterParam::GetWaveCorrection(Int_t Type, Float_t Z, Int_t QMax, Float_t Pad, Float_t angleY ) const
{
//
swapY = !swapY;
Z = -Z;
}
+
if( fWaveCorrectionMirroredAngle && (angleY<0) ){ // Angle axis is mirrored at 0
angleY = -angleY;
- }
-
+ }
double var[5] = { Type, Z, QMax, Pad, angleY };
Long64_t bin = fWaveCorrectionMap->GetBin(var, kFALSE );
if( bin<0 ) return 0;
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;