#ifndef ALITRACKFITTERRIEMAN_H
#define ALITRACKFITTERRIEMAN_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
-#include "TMatrixDSym.h"
+/* $Id$ */
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// Class to the track points on the Riemann sphere. Inputs are
+// the set of id's (volids) of the volumes in which residuals are
+// calculated to construct a chi2 function to be minimized during
+// the alignment procedures
+//
+//////////////////////////////////////////////////////////////////////////////
#include "AliTrackFitter.h"
+#include "AliRieman.h"
+class TTreeSRedirector;
+class AliRieman;
class AliTrackFitterRieman : public AliTrackFitter{
public:
AliTrackFitterRieman &operator =(const AliTrackFitterRieman& rieman);
virtual ~AliTrackFitterRieman();
- Bool_t Fit(UShort_t volId,
- AliTrackPointArray *pVolId, AliTrackPointArray *pTrack,
- AliAlignObj::ELayerID layerRangeMin = AliAlignObj::kFirstLayer,
- AliAlignObj::ELayerID layerRangeMax = AliAlignObj::kLastLayer);
+ Bool_t Fit(const TArrayI *volIds,const TArrayI *volIdsFit = 0x0,
+ AliGeomManager::ELayerID layerRangeMin = AliGeomManager::kFirstLayer,
+ AliGeomManager::ELayerID layerRangeMax = AliGeomManager::kLastLayer);
Bool_t GetPCA(const AliTrackPoint &p, AliTrackPoint &p2) const;
-
+ void SetMaxDelta(Float_t maxDelta) { fMaxDelta = maxDelta;}
+ Float_t GetMaxDelta() const { return fMaxDelta;}
+ void SetCorrection(Bool_t correction){ fBCorrection=correction;}
+ Bool_t GetCorrection() const {return fBCorrection ;}
void Reset();
void AddPoint(Float_t x, Float_t y, Float_t z, Float_t sy, Float_t sz);
- void Update();
+ Bool_t Update();
- 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);
- Bool_t GetXYZat(Double_t r, Float_t *xyz);
+ Double_t GetC() const {return fRieman->GetC();}
+ Double_t GetYat(Double_t x) const;
+ Double_t GetZat(Double_t x) const;
+ Double_t GetDYat(Double_t x) const {return fRieman->GetDYat(x);}
+ Double_t GetDZat(Double_t x) const {return fRieman->GetDZat(x);}
+ Double_t GetErrY2at(Double_t x) const;
+ Double_t GetErrZ2at(Double_t x) const;
- protected:
+ Bool_t GetXYZat(Double_t r, Float_t *xyz) const {return fRieman->GetXYZat(r, fAlpha,xyz);}
+ AliRieman *GetRieman() const {return fRieman;}
- Double_t fAlpha; //angle to transform to the fitting coordinate system
- Double_t fSumXY[9]; //sums for XY part
- Double_t fSumXZ[9]; //sums for XZ part
- Bool_t fConv; // indicates convergation
+ // Methods needed in order to use the class
+ // inside the millipede alignment algorithm
+ Double_t GetAlpha() const { return fAlpha; }
+ void SetParam(Int_t i, Double_t par);
- private:
+ void SetMinPointRadius(Double_t radius) { fMinPointRadius = radius; }
+ void SetMaxPointRadius(Double_t radius) { fMaxPointRadius = radius; }
+ Double_t GetMinPointRadius() const { return fMinPointRadius; }
+ Double_t GetMaxPointRadius() const { return fMaxPointRadius; }
- ClassDef(AliTrackFitterRieman,1) // Fast fit of helices on ITS RecPoints
+ protected:
+ Bool_t fBCorrection; //add correction for non-helicity
+ Double_t fAlpha; //angle to transform to the fitting coordinate system
+ Int_t fNUsed; //actual number of space-points used in the fit
+ Bool_t fConv; //indicates convergation
+ Float_t fMaxDelta; // maximal allowed delta in PCA exported for PCA minimization
+ AliRieman *fRieman; // rieman fitter
+ Double_t fCorrY[4]; // correction polynom coef
+ Double_t fCorrZ[4]; // correction polynom coef
+ Double_t fMinPointRadius; // minimal allowed radius for the point to be included in the fit
+ Double_t fMaxPointRadius; // maximal allowed radius for the point to be included in the fit
+ private:
+ Bool_t Begin(Int_t, Int_t) {Reset(); return kTRUE;}
+ Bool_t AddPoint(const AliTrackPoint *) {return kTRUE;}
+ TTreeSRedirector *fDebugStream; //!debug streamer
+ ClassDef(AliTrackFitterRieman,3) // Fast fit of helices on ITS RecPoints
};