]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliRieman.h
Fix for Savannah bug report 59287
[u/mrichter/AliRoot.git] / STEER / AliRieman.h
index 2b599c19ea9b1b96820e60733733220cb7b86fe2..651ee82f2c23c6852ed0d029611ddfb063341bfb 100644 (file)
@@ -1,7 +1,16 @@
-#ifndef ALIRIEMANN_H
-#define ALIRIEMANN_H
+#ifndef ALIRIEMAN_H
+#define ALIRIEMAN_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+/* $Id$ */
+// Class for global helix fit of a track
+// Author: M.Ivanov
+// This class uses decomposition of the chi2 based on the fact that
+// one can rotate the coordinate system and provide xi >> yi for each
+// space point
 
-#include "TMatrixDSym.h"
+
+#include <TMatrixDSymfwd.h>
 
 class AliRieman : public TObject{
  public:
@@ -10,41 +19,64 @@ class AliRieman : public TObject{
   AliRieman(const AliRieman &rieman);
   ~AliRieman();
   void Reset();
-  void AddPoint(Float_t x, Float_t y, Float_t z, Float_t sy, Float_t sz);
+  void AddPoint(Double_t x, Double_t y, Double_t z, Double_t sy, Double_t sz);
   Int_t GetN() const {return fN;}
   Int_t GetCapacity() const {return fCapacity;}
-  Float_t * GetX(){return fX;}
-  Float_t * GetY(){return fY;}
-  Float_t * GetZ(){return fZ;}
-  Float_t * GetSy(){return fSy;}
-  Float_t * GetSz(){return fSz;}
+  Double_t * GetX()  const {return fX;}
+  Double_t * GetY()  const {return fY;}
+  Double_t * GetZ()  const {return fZ;}
+  Double_t * GetSy() const {return fSy;}
+  Double_t * GetSz() const {return fSz;}
   void Update();
   void UpdatePol();
   Double_t*  GetParam(){return fParams;}
-  const TMatrixDSym &  GetCovariance(){return *fCovar;}
-  Double_t GetC(); 
-  Double_t GetYat(Double_t x);
-  Double_t GetZat(Double_t x);
-  Double_t GetDYat(Double_t x);
-  Double_t GetDZat(Double_t x);
+  const TMatrixDSym &  GetCovariance() const {return *fCovar;}
+  Double_t GetC() const;
+  Double_t GetYat(Double_t x) const;
+  Double_t GetZat(Double_t x) const; 
+  Double_t GetDYat(Double_t x) const;
+  Double_t GetDZat(Double_t x) const;
+  Bool_t   GetXYZat(Double_t r, Double_t alpha, Float_t *xyz) const;
+  //
+  Bool_t   IsValid(){ return fConv;}
+  Double_t GetChi2Y() const { return fChi2Y;}
+  Double_t GetChi2Z() const { return fChi2Z;}
+  Double_t GetChi2() const  { return fChi2; }
+  Double_t CalcChi2Y() const;  
+  Double_t CalcChi2Z() const;
+  Double_t CalcChi2() const;
+  AliRieman * MakeResiduals() const;
+  Double_t    GetErrY(Double_t x) const; 
+  Double_t    GetErrZ(Double_t x) const;
+  Bool_t GetExternalParameters(Double_t xref, Double_t *params, Double_t * covar);
+  //
  protected:
+  void          UpdateCovariancePol();  // update covariance for error estimates
   // public:
   Int_t         fCapacity;  // capacity
   Int_t         fN;         // numebr of points
-  Float_t      *fX;         //[fN] x coordinate
-  Float_t      *fY;         //[fN] y coordinate
-  Float_t      *fZ;         //[fN] z coordinate
-  Float_t      *fSy;        //[fN] sigma y coordinate
-  Float_t      *fSz;        //[fN] sigma z coordinate
+  Double_t      *fX;         //[fN] x coordinate
+  Double_t      *fY;         //[fN] y coordinate
+  Double_t      *fZ;         //[fN] z coordinate
+  Double_t      *fSy;        //[fN] sigma y coordinate
+  Double_t      *fSz;        //[fN] sigma z coordinate
   Double_t      fParams[6]; //Parameters
   TMatrixDSym  *fCovar;     //Covariance
+  TMatrixDSym  *fCovarPolY; // covariance matrix for parabola fit in xy - used for error estimation
+  TMatrixDSym  *fCovarPolZ; // covariance matrix for parabola fit in xy - used for error estimation
   Double_t      fSumXY[9];  //sums for XY part
   Double_t      fSumXZ[9];  //sums for XZ part
+  Double_t      fSumPolY[5]; //sums of polynoms X with weight Z
+  Double_t      fSumPolZ[5]; //sums of polynoms X with weight Z
+  Double_t      fSumZZ;     //sums of Z2 
+  Double_t      fChi2;      //sums of chi2
+  Double_t      fChi2Y;     //sums of chi2 for y coord
+  Double_t      fChi2Z;     //sums of chi2 foz z coord 
   Bool_t        fConv;      // indicates convergation
- protected:
-  
+ protected:  
  private:
-  ClassDef(AliRieman,1)  // Fast fit of helices on ITS RecPoints
+  AliRieman& operator=(const AliRieman &rieman);
+  ClassDef(AliRieman,2)  // Fast fit of helices on ITS RecPoints
 };