]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCpolyTrack.h
Fix in documentation
[u/mrichter/AliRoot.git] / TPC / AliTPCpolyTrack.h
index 1045d88feec0524071b9e2ad9f941b1403ca21bc..1e0ee4cf7762b6dcf140c145066c907556b398bc 100644 (file)
@@ -3,6 +3,8 @@
 
 //-------------------------------------------------------
 //                    TPC Cluster Class
+//     track fitting using the polynom
+//     allows bending in both direction
 //
 //   Origin: Marian Ivanov
 //-------------------------------------------------------
@@ -15,10 +17,16 @@ public:
   AliTPCpolyTrack();
   void Reset();
   void AddPoint(Double_t x, Double_t y, Double_t z, Double_t sy=1, Double_t sz=1);
-  void GetFitPoint(Double_t x, Double_t &y, Double_t &z);
+  inline void GetFitPoint(Double_t x, Double_t &y, Double_t &z) const;
+  inline void GetFitDerivation(Double_t x, Double_t &y, Double_t &z) const;
+  inline void GetFitDerivation2(Double_t &y, Double_t &z) const;
+  void UpdateParameters(Int_t ny, Int_t nz);
   void UpdateParameters();
-  Int_t GetN(){return fNPoints;}
-  void GetBoundaries(Double_t &xmin, Double_t &xmax){xmin = fMinX;xmax=fMaxX;}
+  Int_t GetN() const {return fNPoints;}
+  void GetBoundaries(Double_t &xmin, Double_t &xmax) const 
+                     {xmin = fMinX;xmax=fMaxX;}
+  void Refit(AliTPCpolyTrack & track, Double_t deltay, Double_t deltaz); 
+  void Refit(AliTPCpolyTrack & track, Double_t deltay, Double_t deltaz, Int_t nfirst, Int_t ny, Int_t nz); 
 private: 
   void   Fit2(Double_t fSumY, Double_t fSumYX, Double_t fSumYX2,
              Double_t fSumX,  Double_t fSumX2, Double_t fSumX3, 
@@ -27,39 +35,62 @@ private:
              Double_t fSumX,  Double_t fSumX2, 
              Double_t fSumW, Double_t &a, Double_t &b, Double_t &c);
   //
-  Double_t fA;
-  Double_t fB;
-  Double_t fC;
-  Double_t fD;
-  Double_t fE;
-  Double_t fF;
-  Double_t fMaxX;
-  Double_t fMinX;
+  Double_t fA; // parameter
+  Double_t fB; // parameter
+  Double_t fC; // parameter
+  Double_t fD; // parameter
+  Double_t fE; // parameter
+  Double_t fF; // parameter 
+  Double_t fMaxX; // X range
+  Double_t fMinX; // X range
   //
   Double_t fSumW;   // sum of the weight 
 
-  Double_t fSumX;    //
-  Double_t fSumX2;   //
-  Double_t fSumX3;   //  
-  Double_t fSumX4;   //
-  Double_t fSumY;    //
-  Double_t fSumYX;   //  
-  Double_t fSumYX2;  //
-  Double_t fSumZ;    //
-  Double_t fSumZX;   //
-  Double_t fSumZX2;  //
+  Double_t fSumX;    // weighted summ of X 
+  Double_t fSumX2;   // weighted summ of X**2
+  Double_t fSumX3;   // weighted summ of X**3 
+  Double_t fSumX4;   // weighted summ of X**4
+  Double_t fSumY;    // as X
+  Double_t fSumYX;   //  summ of X*Y
+  Double_t fSumYX2;  // summ of X**2*Y
+  Double_t fSumZ;    // summ of Z 
+  Double_t fSumZX;   // summ of Z*X
+  Double_t fSumZX2;  // summ of Z*X**2
   
-  Double_t fX[200];
-  Double_t fY[200];
-  Double_t fSY[200];
-  Double_t fZ[200];
-  Double_t fSZ[200];
+  Double_t fX[200]; // array of coordinates 
+  Double_t fY[200]; // array of coordinates
+  Double_t fSY[200]; // array of coordinates
+  Double_t fZ[200]; // array of coordinates
+  Double_t fSZ[200]; // array of coordinates
 
-  Int_t fNPoints; 
+  Int_t fNPoints; // No of points
 
   ClassDef(AliTPCpolyTrack,1)  // Time Projection "polynomial track"
 };
 
+void AliTPCpolyTrack::GetFitPoint(Double_t x, Double_t &y, Double_t &z) const
+{
+  y = fA+fB*x+fC*x*x;
+  z = fD+fE*x+fF*x*x;
+}
+
+
+void AliTPCpolyTrack::GetFitDerivation(Double_t x, Double_t &y, Double_t &z) const
+{
+
+  y = fB+2.*fC*x;
+  z = fE+2.*fF*x;
+  
+}
+
+void AliTPCpolyTrack::GetFitDerivation2(Double_t &y, Double_t &z) const
+{
+
+  y = 2.*fC;
+  z = 2.*fF;
+  
+}
+
 
 #endif