- //Perform extrapolation
- Double_t trkPos[3];
- Float_t clsPos[3];
-
- AliExternalTrackParam *trkParamTmp = new AliExternalTrackParam(*trkParam);
- cluster->GetPosition(clsPos);
- TVector3 vec(clsPos[0],clsPos[1],clsPos[2]);
- Double_t alpha = ((int)(vec.Phi()*TMath::RadToDeg()/20)+0.5)*20*TMath::DegToRad();
- //Rotate to proper local coordinate
- vec.RotateZ(-alpha);
- trkParamTmp->Rotate(alpha);
- //extrapolation is done here
- if(!AliTrackerBase::PropagateTrackToBxByBz(trkParamTmp, vec.X(), track->GetMass(), GetRecParam()->GetExtrapolateStep(), kFALSE))
- return kFALSE;
-
- //Calculate the residuals
- trkParamTmp->GetXYZ(trkPos);
- delete trkParamTmp;
-
- TVector3 clsPosVec(clsPos[0],clsPos[1],clsPos[2]);
- TVector3 trkPosVec(trkPos[0],trkPos[1],trkPos[2]);
-
- Double_t clsPhi = clsPosVec.Phi();
- if(clsPhi<0) clsPhi+=2*TMath::Pi();
- Double_t trkPhi = trkPosVec.Phi();
- if(trkPhi<0) trkPhi+=2*TMath::Pi();
-
- dPhi = clsPhi-trkPhi;
- dEta = clsPosVec.Eta()-trkPosVec.Eta();
-