-
- // if (t.GetRadius()>x+10 ) return 0;
- // t.PropagateTo(x+0.02);
- //t.PropagateTo(x+0.01);
- if (!t.PropagateTo(x)) {
- t.fRemoval = 10;
- return 0;
+ AliTPCclusterMI *cl=0;
+ Int_t tpcindex= t.GetClusterIndex2(nr);
+ //
+ // update current shape info every 5 pad-row
+ // if ( (nr%5==0) || t.GetNumberOfClusters()<2 || (t.fCurrentSigmaY2<0.0001) ){
+ GetShape(&t,nr);
+ //}
+ //
+ if (fIteration>0 && tpcindex>=-1){ //if we have already clusters
+ //
+ if (tpcindex==-1) return 0; //track in dead zone
+ if (tpcindex>0){ //
+ cl = t.fClusterPointer[nr];
+ if ( (cl==0) ) cl = GetClusterMI(tpcindex);
+ t.fCurrentClusterIndex1 = tpcindex;
+ }
+ if (cl){
+ Int_t relativesector = ((tpcindex&0xff000000)>>24)%18; // if previously accepted cluster in different sector
+ Float_t angle = relativesector*fSectors->GetAlpha()+fSectors->GetAlphaShift();
+ //
+ if (angle<-TMath::Pi()) angle += 2*TMath::Pi();
+ if (angle>=TMath::Pi()) angle -= 2*TMath::Pi();
+
+ if (TMath::Abs(angle-t.GetAlpha())>0.001){
+ Double_t rotation = angle-t.GetAlpha();
+ t.fRelativeSector= relativesector;
+ t.Rotate(rotation);
+ }
+ t.PropagateTo(x);
+ //
+ t.fCurrentCluster = cl;
+ t.fRow = nr;
+ Int_t accept = AcceptCluster(&t,t.fCurrentCluster,1.);
+ if ((tpcindex&0x8000)==0) accept =0;
+ if (accept<3) {
+ //if founded cluster is acceptible
+ if (cl->IsUsed(11)) { // id cluster is shared inrease uncertainty
+ t.fErrorY2 += 0.03;
+ t.fErrorZ2 += 0.03;
+ t.fErrorY2 *= 3;
+ t.fErrorZ2 *= 3;
+ }
+ t.fNFoundable++;
+ UpdateTrack(&t,accept);
+ return 1;
+ }
+ }