]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONTrackParam.cxx
Fix for bug #70969: Memory leaks in AliTPCcalibDButil
[u/mrichter/AliRoot.git] / MUON / AliMUONTrackParam.cxx
index abcb58e3c06a7feb1bc468e204cedaaa9d77604d..02859bce758fbf35faf21dcf2a124f7c9a11f63a 100644 (file)
@@ -52,6 +52,7 @@ AliMUONTrackParam::AliMUONTrackParam()
     fLocalChi2(0.)
 {
   /// Constructor
+  fParameters.Zero();
 }
 
   //_________________________________________________________________________
@@ -191,53 +192,49 @@ AliMUONTrackParam::Clear(Option_t* /*opt*/)
 Double_t AliMUONTrackParam::Px() const
 {
   /// return p_x from track parameters
-  Double_t pYZ, pZ, pX;
-  pYZ = 0;
-  if (  TMath::Abs(fParameters(4,0)) > 0 )
-    pYZ = TMath::Abs(1.0 / fParameters(4,0));
-  pZ = -pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0)));  // spectro. (z<0)
-  pX = pZ * fParameters(1,0); 
-  return pX;
+  Double_t pZ;
+  if (TMath::Abs(fParameters(4,0)) > 0) {
+    Double_t pYZ = (TMath::Abs(fParameters(4,0)) > 0) ? TMath::Abs(1.0 / fParameters(4,0)) : FLT_MAX;
+    pZ = - pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0)));  // spectro. (z<0)
+  } else {
+    pZ = - FLT_MAX / TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0) + fParameters(1,0) * fParameters(1,0));
+  }
+  return pZ * fParameters(1,0); 
 }
 
   //__________________________________________________________________________
 Double_t AliMUONTrackParam::Py() const
 {
   /// return p_y from track parameters
-  Double_t pYZ, pZ, pY;
-  pYZ = 0;
-  if (  TMath::Abs(fParameters(4,0)) > 0 )
-    pYZ = TMath::Abs(1.0 / fParameters(4,0));
-  pZ = -pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0)));  // spectro. (z<0)
-  pY = pZ * fParameters(3,0); 
-  return pY;
+  Double_t pZ;
+  if (TMath::Abs(fParameters(4,0)) > 0) {
+    Double_t pYZ = (TMath::Abs(fParameters(4,0)) > 0) ? TMath::Abs(1.0 / fParameters(4,0)) : FLT_MAX;
+    pZ = - pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0)));  // spectro. (z<0)
+  } else {
+    pZ = - FLT_MAX / TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0) + fParameters(1,0) * fParameters(1,0));
+  }
+  return pZ * fParameters(3,0); 
 }
 
   //__________________________________________________________________________
 Double_t AliMUONTrackParam::Pz() const
 {
   /// return p_z from track parameters
-  Double_t pYZ, pZ;
-  pYZ = 0;
-  if (  TMath::Abs(fParameters(4,0)) > 0 )
-    pYZ = TMath::Abs(1.0 / fParameters(4,0));
-  pZ = -pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0)));  // spectro. (z<0)
-  return pZ;
+  if (TMath::Abs(fParameters(4,0)) > 0) {
+    Double_t pYZ = TMath::Abs(1.0 / fParameters(4,0));
+    return - pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0)));  // spectro. (z<0)
+  } else return - FLT_MAX / TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0) + fParameters(1,0) * fParameters(1,0));
 }
 
   //__________________________________________________________________________
 Double_t AliMUONTrackParam::P() const
 {
   /// return p from track parameters
-  Double_t  pYZ, pZ, p;
-  pYZ = 0;
-  if (  TMath::Abs(fParameters(4,0)) > 0 )
-    pYZ = TMath::Abs(1.0 / fParameters(4,0));
-  pZ = -pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0)));  // spectro. (z<0)
-  p = TMath::Abs(pZ) * 
-    TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0) + fParameters(1,0) * fParameters(1,0));
-  return p;
-  
+  if (TMath::Abs(fParameters(4,0)) > 0) {
+    Double_t pYZ = TMath::Abs(1.0 / fParameters(4,0));
+    Double_t pZ = - pYZ / (TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0)));  // spectro. (z<0)
+    return - pZ * TMath::Sqrt(1.0 + fParameters(3,0) * fParameters(3,0) + fParameters(1,0) * fParameters(1,0));
+  } else return FLT_MAX;
 }
 
   //__________________________________________________________________________
@@ -427,7 +424,7 @@ Bool_t AliMUONTrackParam::CompatibleTrackParam(const AliMUONTrackParam &trackPar
   
   // check Z parameters
   if (fZ != trackParam.fZ)
-    AliWarning(Form("Parameters are given at different Z position (%le : %le): results are meaningless", fZ, trackParam.fZ));
+    AliWarning(Form("Parameters are given at different Z position (%e : %e): results are meaningless", fZ, trackParam.fZ));
   
   // compute the parameter residuals
   TMatrixD deltaParam(fParameters, TMatrixD::kMinus, trackParam.fParameters);
@@ -474,7 +471,8 @@ void AliMUONTrackParam::Print(Option_t* opt) const
       "," <<  setw(5) << setprecision(3) << fZ <<
       ") cm, (px,py,pz)=(" << setw(5) << setprecision(3) << Px() <<
       "," << setw(5) << setprecision(3) << Py() <<
-      "," << setw(5) << setprecision(3) << Pz() << ") GeV/c" << endl;
+      "," << setw(5) << setprecision(3) << Pz() << ") GeV/c"
+      "," << "local chi2=" << GetLocalChi2() << endl;
   }
   else {
     cout << "<AliMUONTrackParam>"  << endl;