]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliTrackFitter.cxx
Corrected call to the static method AliBitPacking::UnpackWord
[u/mrichter/AliRoot.git] / STEER / AliTrackFitter.cxx
index 23853223e59cb78d3721d8dfcf79d6d311a54e64..5ca611f6c2ddad7582aa578050e835cc409be501 100644 (file)
 //-----------------------------------------------------------------
 
 #include <TMatrixDSym.h>
+#include <TArrayI.h>
 
 #include "AliTrackFitter.h"
 #include "AliTrackPointArray.h"
+#include "AliLog.h"
 
 ClassImp(AliTrackFitter)
 
@@ -34,6 +36,10 @@ AliTrackFitter::AliTrackFitter()
   for (Int_t i=0;i<6;i++) fParams[i] = 0;
   fCov = 0;
   fPoints = 0;
+  fPVolId = fPTrack = 0;
+  fChi2 = 0;
+  fNdf = 0;
+  fMinNPoints = 0;
   fIsOwner = kFALSE;
 }
 
@@ -44,6 +50,10 @@ AliTrackFitter::AliTrackFitter(AliTrackPointArray *array, Bool_t owner)
   //
   for (Int_t i=0;i<6;i++) fParams[i] = 0;
   fCov = new TMatrixDSym(6);
+  fPVolId = fPTrack = 0;
+  fChi2 = 0;
+  fNdf = 0;
+  fMinNPoints = 0;
   fIsOwner = kFALSE;
   SetTrackPointArray(array,owner);
 }
@@ -54,10 +64,13 @@ AliTrackFitter::AliTrackFitter(const AliTrackFitter &fitter):
 {
   // Copy constructor
   //
+  SetTrackPointArray(fitter.fPoints,fitter.fIsOwner);
   for (Int_t i=0;i<6;i++) fParams[i] = fitter.fParams[i];
   fCov = new TMatrixDSym(*fitter.fCov);
+  fChi2 = fitter.fChi2;
+  fNdf = fitter.fNdf;
+  fMinNPoints = fitter.fMinNPoints;
   fIsOwner = kFALSE;
-  SetTrackPointArray(fitter.fPoints,fitter.fIsOwner);
 }
 
 //_____________________________________________________________________________
@@ -67,10 +80,13 @@ AliTrackFitter &AliTrackFitter::operator =(const AliTrackFitter& fitter)
   //
   if(this==&fitter) return *this;
 
+  SetTrackPointArray(fitter.fPoints);
   for (Int_t i=0;i<6;i++) fParams[i] = fitter.fParams[i];
   fCov = new TMatrixDSym(*fitter.fCov);
+  fChi2 = fitter.fChi2;
+  fNdf = fitter.fNdf;
+  fMinNPoints = fitter.fMinNPoints;
   fIsOwner = kFALSE;
-  SetTrackPointArray(fitter.fPoints);
   
   return *this;
 }
@@ -89,6 +105,9 @@ void AliTrackFitter::Reset()
   for (Int_t i=0;i<6;i++) fParams[i] = 0;
   delete fCov;
   fCov = new TMatrixDSym(6);
+  fPVolId = fPTrack = 0;
+  fChi2 = 0;
+  fNdf = 0;
 }
 
 void AliTrackFitter::SetTrackPointArray(AliTrackPointArray *array, Bool_t owner)
@@ -96,6 +115,13 @@ void AliTrackFitter::SetTrackPointArray(AliTrackPointArray *array, Bool_t owner)
   // Load space points from array
   // By default we don't copy them but
   // just put the pointers to them
+  if (!array) {
+    AliWarning("Invalid pointer to the space-points array !");
+    if (fIsOwner) delete fPoints;
+    fPoints = NULL;
+    return;
+  }
+
   Reset();
 
   if (fIsOwner) delete fPoints;
@@ -109,3 +135,22 @@ void AliTrackFitter::SetTrackPointArray(AliTrackPointArray *array, Bool_t owner)
     fIsOwner = kFALSE;
   }
 }
+
+Bool_t AliTrackFitter::FindVolId(const TArrayI *array, UShort_t volid) const
+{
+  // The method is used to check whenever
+  // the volume id (volid) is contained in
+  // a array of integers
+  Int_t nVolIds = array->GetSize();
+  if (nVolIds == 0) return kFALSE;
+
+  Bool_t found = kFALSE;
+  for (Int_t iVolId = 0; iVolId < nVolIds; iVolId++) {
+    if ((*array)[iVolId] == volid) {
+      found = kTRUE;
+      break;
+    }
+  }
+
+  return found;
+}