]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Fixes for bug #75092: AliTPCtrackerMI - floating point exception in RAW reco of Pb...
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 14 Nov 2010 19:24:29 +0000 (19:24 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 14 Nov 2010 19:24:29 +0000 (19:24 +0000)
ITS/AliITStrackerMI.cxx
STEER/AliExternalTrackParam.cxx

index 7cf10c3fa165835044581a0b679b93b768dd3293..7f56c9b8eab2a07c50292d8c15e23d3c7e3025c9 100644 (file)
@@ -747,8 +747,16 @@ Int_t AliITStrackerMI::RefitInward(AliESDEvent *event) {
     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() &&
@@ -2394,7 +2402,7 @@ Bool_t AliITStrackerMI::RefitAt(Double_t xx,AliITStrackMI *track,
      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);
index 295830b47930627c00ffdc667aa60a650707ab91..bbd1760334a10ba87470ae239c7307f2245a17c5 100644 (file)
@@ -1868,6 +1868,14 @@ Bool_t AliExternalTrackParam::PropagateToBxByBz(Double_t xk, const Double_t b[3]
   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.;