Protection against fpe in GetLocalPosition()
authorschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 25 Oct 2000 08:33:58 +0000 (08:33 +0000)
committerschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 25 Oct 2000 08:33:58 +0000 (08:33 +0000)
PHOS/AliPHOSEmcRecPoint.cxx

index 68e3230..fdc4f89 100644 (file)
@@ -55,7 +55,6 @@ AliPHOSEmcRecPoint::AliPHOSEmcRecPoint(Float_t W0, Float_t LocMaxCut)
   fW0        = W0 ;          
   fLocMaxCut = LocMaxCut ; 
   fLocPos.SetX(1000000.)  ;      //Local position should be evaluated
-  
 }
 
 //____________________________________________________________________________
@@ -389,7 +388,6 @@ void AliPHOSEmcRecPoint::GetLocalPosition(TVector3 &LPos)
 
   Int_t iDigit;
 
-
   for(iDigit=0; iDigit<fMulDigit; iDigit++) {
     digit = (AliPHOSDigit *) ( please->GimeDigit(fDigitsList[iDigit]) );
 
@@ -401,11 +399,17 @@ void AliPHOSEmcRecPoint::GetLocalPosition(TVector3 &LPos)
     x    += xi * w ;
     z    += zi * w ;
     wtot += w ;
-
   }
 
-  x /= wtot ;
-  z /= wtot ;
+  if (wtot != 0) {
+    x /= wtot ;
+    z /= wtot ;
+  } else {
+    x = -1e6 ;
+    z = -1e6 ;
+    if (fMulDigit != 0) cout << "AliPHOSEMCRecPoint: too low log weight factor "
+                            << "to evaluate cluster's center\n";
+  }
   fLocPos.SetX(x)  ;
   fLocPos.SetY(0.) ;
   fLocPos.SetZ(z)  ;