ResetTrackToFollow(*t);
fTrackToFollow.ResetClusters();
- if ((esd->GetStatus()&AliESDtrack::kTPCin)==0)
+ // ITS standalone tracks
+ if ((esd->GetStatus()&AliESDtrack::kTPCin)==0) {
fTrackToFollow.ResetCovariance(10.);
+ // protection for loopers that can have parameters screwed up
+ if(TMath::Abs(fTrackToFollow.GetY())>1000. ||
+ TMath::Abs(fTrackToFollow.GetZ())>1000.) {
+ delete t;
+ continue;
+ }
+ }
//Refitting...
Bool_t pe=(AliITSReconstructor::GetRecoParam()->GetComputePlaneEff() &&
track->SetModuleIndexInfo(ilayer,idet,modstatus,xloc,zloc);
- if (extra) { // search for extra clusters in overlapped modules
+ if (extra && clAcc) { // search for extra clusters in overlapped modules
AliITStrackV2 tmp(*track);
if (!ComputeRoad(track,ilayer,idet,zmin,zmax,ymin,ymax)) return kFALSE;
layer.SelectClusters(zmin,zmax,ymin,ymax);
Double_t dx=xk-fX;
if (TMath::Abs(dx)<=kAlmost0) return kTRUE;
if (TMath::Abs(fP[4])<=kAlmost0) return kFALSE;
+ // Do not propagate tracks outside the ALICE detector
+ if (TMath::Abs(dx)>1e5 ||
+ TMath::Abs(GetY())>1e5 ||
+ TMath::Abs(GetZ())>1e5) {
+ AliWarning(Form("Anomalous track, target X:%f",xk));
+ Print();
+ return kFALSE;
+ }
Double_t crv=GetC(b[2]);
if (TMath::Abs(b[2]) < kAlmost0Field) crv=0.;