Just something left from v2...now clean
[u/mrichter/AliRoot.git] / TPC / AliTPCpolyTrack.h
1 #ifndef ALITPCPOLYTRACK_H
2 #define ALITPCPOLYTRACK_H
3
4 //-------------------------------------------------------
5 //                    TPC Cluster Class
6 //     track fitting using the polynom
7 //     allows bending in both direction
8 //
9 //   Origin: Marian Ivanov
10 //-------------------------------------------------------
11
12 #include "TObject.h"
13
14 //_____________________________________________________________________________
15 class AliTPCpolyTrack : public TObject {
16 public:
17   AliTPCpolyTrack();
18   void Reset();
19   void AddPoint(Double_t x, Double_t y, Double_t z, Double_t sy=1, Double_t sz=1);
20   inline void GetFitPoint(Double_t x, Double_t &y, Double_t &z) const;
21   inline void GetFitDerivation(Double_t x, Double_t &y, Double_t &z) const;
22   inline void GetFitDerivation2(Double_t &y, Double_t &z) const;
23   void UpdateParameters(Int_t ny, Int_t nz);
24   void UpdateParameters();
25   Int_t GetN() const {return fNPoints;}
26   void GetBoundaries(Double_t &xmin, Double_t &xmax) const 
27                      {xmin = fMinX;xmax=fMaxX;}
28   void Refit(AliTPCpolyTrack & track, Double_t deltay, Double_t deltaz); 
29   void Refit(AliTPCpolyTrack & track, Double_t deltay, Double_t deltaz, Int_t nfirst, Int_t ny, Int_t nz); 
30 private: 
31   void   Fit2(Double_t fSumY, Double_t fSumYX, Double_t fSumYX2,
32               Double_t fSumX,  Double_t fSumX2, Double_t fSumX3, 
33               Double_t fSumX4, Double_t fSumW, Double_t &a, Double_t &b, Double_t &c);
34   void  Fit1(Double_t fSumY, Double_t fSumYX, 
35               Double_t fSumX,  Double_t fSumX2, 
36               Double_t fSumW, Double_t &a, Double_t &b, Double_t &c);
37   //
38   Double_t fA; // parameter
39   Double_t fB; // parameter
40   Double_t fC; // parameter
41   Double_t fD; // parameter
42   Double_t fE; // parameter
43   Double_t fF; // parameter 
44   Double_t fMaxX; // X range
45   Double_t fMinX; // X range
46   //
47   Double_t fSumW;   // sum of the weight 
48
49   Double_t fSumX;    // weighted summ of X 
50   Double_t fSumX2;   // weighted summ of X**2
51   Double_t fSumX3;   // weighted summ of X**3 
52   Double_t fSumX4;   // weighted summ of X**4
53   Double_t fSumY;    // as X
54   Double_t fSumYX;   //  summ of X*Y
55   Double_t fSumYX2;  // summ of X**2*Y
56   Double_t fSumZ;    // summ of Z 
57   Double_t fSumZX;   // summ of Z*X
58   Double_t fSumZX2;  // summ of Z*X**2
59   
60   Double_t fX[200]; // array of coordinates 
61   Double_t fY[200]; // array of coordinates
62   Double_t fSY[200]; // array of coordinates
63   Double_t fZ[200]; // array of coordinates
64   Double_t fSZ[200]; // array of coordinates
65
66   Int_t fNPoints; // No of points
67
68   ClassDef(AliTPCpolyTrack,1)  // Time Projection "polynomial track"
69 };
70
71 void AliTPCpolyTrack::GetFitPoint(Double_t x, Double_t &y, Double_t &z) const
72 {
73   y = fA+fB*x+fC*x*x;
74   z = fD+fE*x+fF*x*x;
75 }
76
77
78 void AliTPCpolyTrack::GetFitDerivation(Double_t x, Double_t &y, Double_t &z) const
79 {
80
81   y = fB+2.*fC*x;
82   z = fE+2.*fF*x;
83   
84 }
85
86 void AliTPCpolyTrack::GetFitDerivation2(Double_t &y, Double_t &z) const
87 {
88
89   y = 2.*fC;
90   z = 2.*fF;
91   
92 }
93
94
95 #endif
96
97