ROOT logo
#ifndef ALITRACKFITTER_H
#define ALITRACKFITTER_H

/*************************************************************************
 * AliTrackFitter: base class for the fast track fitters                 *
 *                                                                       *
 * Supposed to be used for alignment framework                           *
 * More information is available in 
 * http://agenda.cern.ch/askArchive.php?base=agenda&categ=a057717&id=a057717s1t6/transparencies  
 * Author: C.Cheskov                                                     *
 *                                                                       *
 *                                                                       *
 *************************************************************************/

#include <TObject.h>
#include <TMatrixDSymfwd.h>

#include "AliTrackPointArray.h"
#include "AliAlignObj.h"

class TArrayI;

class AliTrackFitter : public TObject {

 public:

  AliTrackFitter();
  AliTrackFitter(AliTrackPointArray *array, Bool_t owner = kTRUE);
  AliTrackFitter(const AliTrackFitter &fitter);
  AliTrackFitter& operator= (const AliTrackFitter& fitter);
  virtual ~AliTrackFitter();

  virtual void   Reset();
  virtual void   SetTrackPointArray(AliTrackPointArray *array, Bool_t owner = kTRUE);
  virtual Bool_t Fit(const TArrayI *volIds,const TArrayI *volIdsFit = 0x0,
		     AliGeomManager::ELayerID layerRangeMin = AliGeomManager::kFirstLayer,
		     AliGeomManager::ELayerID layerRangeMax = AliGeomManager::kLastLayer);

  virtual Bool_t Begin(Int_t, Int_t) = 0;
  virtual Bool_t AddPoint(const AliTrackPoint *p) = 0;
  virtual Bool_t Update() = 0;

  virtual Bool_t GetPCA(const AliTrackPoint &pIn, AliTrackPoint &pOut) const = 0;

  Bool_t         FindVolId(const TArrayI *array, UShort_t volid) const;

  void           SetMinNPoints(Int_t n) { fMinNPoints = n;}

  const Float_t* GetX() const {return fPoints->GetX();}
  const Float_t* GetY() const {return fPoints->GetY();}
  const Float_t* GetZ() const {return fPoints->GetZ();}
  const Double_t* GetParam() const {return &fParams[0];}
  const TMatrixDSym &  GetCovariance() const {return *fCov;}
  Float_t        GetChi2() const {return fChi2;}
  Int_t          GetNdf()  const {return fNdf;}
  Int_t          GetMinNPoints()  const {return fMinNPoints;}
  Float_t        GetNormChi2() const { return (fNdf != 0) ? fChi2/fNdf : 0; }
  void           GetTrackResiduals(AliTrackPointArray*& pVolId, AliTrackPointArray*& pTrack) const
    { pVolId = fPVolId; pTrack = fPTrack; }

 protected:

  Double_t      fParams[6];    // Track parameters
  TMatrixDSym  *fCov;          // Track cov matrix
  AliTrackPointArray *fPoints; // Pointer to the array with track space points
  AliTrackPointArray *fPVolId; // Pointer to the array with space-points in volId
  AliTrackPointArray *fPTrack; // Pointer to the array with track extrapolation points in volId
  Float_t       fChi2;         // Chi squared of the fit
  Int_t         fNdf;          // Number of degrees of freedom
  Int_t         fMinNPoints;   // Minimum allowed number of points
  Bool_t  fIsOwner;            // Is the object owner of the space points array

 private:

  ClassDef(AliTrackFitter,1) // Abstract class of fast track fitters

};

#endif
 AliTrackFitter.h:1
 AliTrackFitter.h:2
 AliTrackFitter.h:3
 AliTrackFitter.h:4
 AliTrackFitter.h:5
 AliTrackFitter.h:6
 AliTrackFitter.h:7
 AliTrackFitter.h:8
 AliTrackFitter.h:9
 AliTrackFitter.h:10
 AliTrackFitter.h:11
 AliTrackFitter.h:12
 AliTrackFitter.h:13
 AliTrackFitter.h:14
 AliTrackFitter.h:15
 AliTrackFitter.h:16
 AliTrackFitter.h:17
 AliTrackFitter.h:18
 AliTrackFitter.h:19
 AliTrackFitter.h:20
 AliTrackFitter.h:21
 AliTrackFitter.h:22
 AliTrackFitter.h:23
 AliTrackFitter.h:24
 AliTrackFitter.h:25
 AliTrackFitter.h:26
 AliTrackFitter.h:27
 AliTrackFitter.h:28
 AliTrackFitter.h:29
 AliTrackFitter.h:30
 AliTrackFitter.h:31
 AliTrackFitter.h:32
 AliTrackFitter.h:33
 AliTrackFitter.h:34
 AliTrackFitter.h:35
 AliTrackFitter.h:36
 AliTrackFitter.h:37
 AliTrackFitter.h:38
 AliTrackFitter.h:39
 AliTrackFitter.h:40
 AliTrackFitter.h:41
 AliTrackFitter.h:42
 AliTrackFitter.h:43
 AliTrackFitter.h:44
 AliTrackFitter.h:45
 AliTrackFitter.h:46
 AliTrackFitter.h:47
 AliTrackFitter.h:48
 AliTrackFitter.h:49
 AliTrackFitter.h:50
 AliTrackFitter.h:51
 AliTrackFitter.h:52
 AliTrackFitter.h:53
 AliTrackFitter.h:54
 AliTrackFitter.h:55
 AliTrackFitter.h:56
 AliTrackFitter.h:57
 AliTrackFitter.h:58
 AliTrackFitter.h:59
 AliTrackFitter.h:60
 AliTrackFitter.h:61
 AliTrackFitter.h:62
 AliTrackFitter.h:63
 AliTrackFitter.h:64
 AliTrackFitter.h:65
 AliTrackFitter.h:66
 AliTrackFitter.h:67
 AliTrackFitter.h:68
 AliTrackFitter.h:69
 AliTrackFitter.h:70
 AliTrackFitter.h:71
 AliTrackFitter.h:72
 AliTrackFitter.h:73
 AliTrackFitter.h:74
 AliTrackFitter.h:75
 AliTrackFitter.h:76
 AliTrackFitter.h:77
 AliTrackFitter.h:78
 AliTrackFitter.h:79