]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliTrackFitter.cxx
Bug fix
[u/mrichter/AliRoot.git] / STEER / AliTrackFitter.cxx
index 01b21e3bf128ca8e776b8d76e87550b53f918453..dfce869f045aa3c85345ba60765894d43ca41bae 100644 (file)
 //-----------------------------------------------------------------
 
 #include <TMatrixDSym.h>
+#include <TArrayI.h>
 
 #include "AliTrackFitter.h"
 #include "AliTrackPointArray.h"
+#include "AliLog.h"
 
 ClassImp(AliTrackFitter)
 
 //_____________________________________________________________________________
-AliTrackFitter::AliTrackFitter()
+AliTrackFitter::AliTrackFitter() :
+  TObject(),
+  fCov(0),
+  fPoints(0),
+  fPVolId(0),
+  fPTrack(0),
+  fChi2(0),
+  fNdf(0),
+  fMinNPoints(0),
+  fIsOwner(kFALSE)
 {
   // default constructor
   //
   for (Int_t i=0;i<6;i++) fParams[i] = 0;
-  fCov = 0;
-  fPoints = 0;
-  fPVolId = fPTrack = 0;
-  fChi2 = 0;
-  fNdf = 0;
-  fIsOwner = kFALSE;
 }
 
 //_____________________________________________________________________________
-AliTrackFitter::AliTrackFitter(AliTrackPointArray *array, Bool_t owner)
+AliTrackFitter::AliTrackFitter(AliTrackPointArray *array, Bool_t owner) :
+  TObject(),
+  fCov(new TMatrixDSym(6)),
+  fPoints(0),
+  fPVolId(0),
+  fPTrack(0),
+  fChi2(0),
+  fNdf(0),
+  fMinNPoints(0),
+  fIsOwner(kFALSE)
+  
 {
   // constructor from space points array
   //
   for (Int_t i=0;i<6;i++) fParams[i] = 0;
-  fCov = new TMatrixDSym(6);
-  fPVolId = fPTrack = 0;
-  fChi2 = 0;
-  fNdf = 0;
-  fIsOwner = kFALSE;
   SetTrackPointArray(array,owner);
 }
 
 //_____________________________________________________________________________
 AliTrackFitter::AliTrackFitter(const AliTrackFitter &fitter):
-  TObject(fitter)
+  TObject(fitter),
+  fCov(new TMatrixDSym(*fitter.fCov)),
+  fPoints(0),
+  fPVolId(0),
+  fPTrack(0),
+  fChi2(fitter.fChi2),
+  fNdf(fitter.fNdf),
+  fMinNPoints(fitter.fMinNPoints),
+  fIsOwner(kFALSE)
 {
   // 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;
-  fIsOwner = kFALSE;
 }
 
 //_____________________________________________________________________________
@@ -80,6 +94,7 @@ AliTrackFitter &AliTrackFitter::operator =(const AliTrackFitter& fitter)
   fCov = new TMatrixDSym(*fitter.fCov);
   fChi2 = fitter.fChi2;
   fNdf = fitter.fNdf;
+  fMinNPoints = fitter.fMinNPoints;
   fIsOwner = kFALSE;
   
   return *this;
@@ -109,6 +124,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;
@@ -122,3 +144,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;
+}