]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliTrackFitterRieman.h
Bug fix in copy constructor and assignement operator (Matthias + me)
[u/mrichter/AliRoot.git] / STEER / AliTrackFitterRieman.h
1 #ifndef ALITRACKFITTERRIEMAN_H
2 #define ALITRACKFITTERRIEMAN_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 ///////////////////////////////////////////////////////////////////////////////
9 //
10 // Class to the track points on the Riemann sphere. Inputs are
11 // the set of id's (volids) of the volumes in which residuals are
12 // calculated to construct a chi2 function to be minimized during 
13 // the alignment procedures
14 //
15 //////////////////////////////////////////////////////////////////////////////
16
17 #include "AliTrackFitter.h"
18 #include "AliRieman.h"  
19 class TTreeSRedirector;
20 class AliRieman;
21
22 class AliTrackFitterRieman : public AliTrackFitter{
23  public:
24   AliTrackFitterRieman();
25   AliTrackFitterRieman(AliTrackPointArray *array, Bool_t owner = kTRUE);
26   AliTrackFitterRieman(const AliTrackFitterRieman &rieman);
27   AliTrackFitterRieman &operator =(const AliTrackFitterRieman& rieman);
28   virtual ~AliTrackFitterRieman();
29
30   Bool_t Fit(const TArrayI *volIds,const TArrayI *volIdsFit = 0x0,
31              AliGeomManager::ELayerID layerRangeMin = AliGeomManager::kFirstLayer,
32              AliGeomManager::ELayerID layerRangeMax = AliGeomManager::kLastLayer);
33   Bool_t GetPCA(const AliTrackPoint &p, AliTrackPoint &p2) const;
34   void SetMaxDelta(Float_t maxDelta) { fMaxDelta = maxDelta;}
35   Float_t GetMaxDelta() const { return fMaxDelta;}
36   void  SetCorrection(Bool_t correction){ fBCorrection=correction;}
37   Bool_t  GetCorrection() const {return fBCorrection ;}
38   void Reset();
39   void AddPoint(Float_t x, Float_t y, Float_t z, Float_t sy, Float_t sz);
40   Bool_t Update();
41
42   Double_t GetC() const              {return fRieman->GetC();}
43   Double_t GetYat(Double_t x) const;
44   Double_t GetZat(Double_t x) const;
45   Double_t GetDYat(Double_t x) const {return fRieman->GetDYat(x);}
46   Double_t GetDZat(Double_t x) const {return fRieman->GetDZat(x);}  
47   Double_t GetErrY2at(Double_t x) const;
48   Double_t GetErrZ2at(Double_t x) const;
49
50   Bool_t   GetXYZat(Double_t r, Float_t *xyz) const {return fRieman->GetXYZat(r, fAlpha,xyz);}
51   AliRieman *GetRieman() const {return fRieman;}
52
53   // Methods needed in order to use the class
54   // inside the millipede alignment algorithm
55   Double_t   GetAlpha() const { return fAlpha; }
56   void SetParam(Int_t i, Double_t par);
57
58   void SetMinPointRadius(Double_t radius) { fMinPointRadius = radius; }
59   void SetMaxPointRadius(Double_t radius) { fMaxPointRadius = radius; }
60   Double_t GetMinPointRadius() const { return fMinPointRadius; }
61   Double_t GetMaxPointRadius() const { return fMaxPointRadius; }
62
63  protected:
64   Bool_t        fBCorrection; //add  correction for non-helicity
65   Double_t      fAlpha;     //angle to transform to the fitting coordinate system
66   Int_t         fNUsed;     //actual number of space-points used in the fit
67   Bool_t        fConv;      //indicates convergation
68   Float_t       fMaxDelta;  // maximal allowed delta in PCA exported for PCA minimization
69   AliRieman    *fRieman;    // rieman fitter
70   Double_t      fCorrY[4];  // correction polynom coef
71   Double_t      fCorrZ[4];  // correction polynom coef
72   Double_t      fMinPointRadius; // minimal allowed radius for the point to be included in the fit
73   Double_t      fMaxPointRadius; // maximal allowed radius for the point to be included in the fit
74  private:
75   Bool_t Begin(Int_t, Int_t) {Reset(); return kTRUE;}
76   Bool_t AddPoint(const AliTrackPoint *) {return kTRUE;}
77   TTreeSRedirector *fDebugStream;   //!debug streamer
78   ClassDef(AliTrackFitterRieman,3)  // Fast fit of helices on ITS RecPoints
79
80 };
81
82 #endif