Adding protection in case AliTracker::MeanMaterialBudget()
authormasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 8 May 2009 09:54:08 +0000 (09:54 +0000)
committermasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 8 May 2009 09:54:08 +0000 (09:54 +0000)
fails in crossing a boundary. This fixes a bug spotted by A. Bercuci
(savannah #50037)

ITS/AliITStrackV2.cxx

index 2de59d6..4cd0a0d 100644 (file)
@@ -211,11 +211,13 @@ Bool_t AliITStrackV2::PropagateToTGeo(Double_t xToGo, Int_t nstep, Double_t &xOv
     if (!GetXYZAt(x, bz, end)) return kFALSE;
     if (!AliExternalTrackParam::PropagateTo(x, bz)) return kFALSE;
     AliTracker::MeanMaterialBudget(start, end, mparam);
+    xTimesRho = sign*mparam[4]*mparam[0];
+    xOverX0   = mparam[1];
     if (mparam[1]<900000) {
-      xTimesRho = sign*mparam[4]*mparam[0];
-      xOverX0   = mparam[1];
       if (!AliExternalTrackParam::CorrectForMeanMaterial(xOverX0,
-                                     xTimesRho,GetMass())) return kFALSE;
+                          xTimesRho,GetMass())) return kFALSE;
+    } else { // this happens when MeanMaterialBudget cannot cross a boundary
+      return kFALSE;
     }
   }