-#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:
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
};