ROOT logo
#ifndef ALITPCPOLYTRACK_H
#define ALITPCPOLYTRACK_H

//-------------------------------------------------------
//                    TPC Cluster Class
//     track fitting using the polynom
//     allows bending in both direction
//
//   Origin: Marian Ivanov
//-------------------------------------------------------

#include "TObject.h"

//_____________________________________________________________________________
class AliTPCpolyTrack : public TObject {
public:
  AliTPCpolyTrack();
  void Reset();
  void AddPoint(Double_t x, Double_t y, Double_t z, Double_t sy=1, Double_t sz=1);
  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() 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 &a, Double_t &b, Double_t &c);
  void  Fit1(Double_t &a, Double_t &b, Double_t &c);
  //
  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;    // 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]; // 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; // 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


 AliTPCpolyTrack.h:1
 AliTPCpolyTrack.h:2
 AliTPCpolyTrack.h:3
 AliTPCpolyTrack.h:4
 AliTPCpolyTrack.h:5
 AliTPCpolyTrack.h:6
 AliTPCpolyTrack.h:7
 AliTPCpolyTrack.h:8
 AliTPCpolyTrack.h:9
 AliTPCpolyTrack.h:10
 AliTPCpolyTrack.h:11
 AliTPCpolyTrack.h:12
 AliTPCpolyTrack.h:13
 AliTPCpolyTrack.h:14
 AliTPCpolyTrack.h:15
 AliTPCpolyTrack.h:16
 AliTPCpolyTrack.h:17
 AliTPCpolyTrack.h:18
 AliTPCpolyTrack.h:19
 AliTPCpolyTrack.h:20
 AliTPCpolyTrack.h:21
 AliTPCpolyTrack.h:22
 AliTPCpolyTrack.h:23
 AliTPCpolyTrack.h:24
 AliTPCpolyTrack.h:25
 AliTPCpolyTrack.h:26
 AliTPCpolyTrack.h:27
 AliTPCpolyTrack.h:28
 AliTPCpolyTrack.h:29
 AliTPCpolyTrack.h:30
 AliTPCpolyTrack.h:31
 AliTPCpolyTrack.h:32
 AliTPCpolyTrack.h:33
 AliTPCpolyTrack.h:34
 AliTPCpolyTrack.h:35
 AliTPCpolyTrack.h:36
 AliTPCpolyTrack.h:37
 AliTPCpolyTrack.h:38
 AliTPCpolyTrack.h:39
 AliTPCpolyTrack.h:40
 AliTPCpolyTrack.h:41
 AliTPCpolyTrack.h:42
 AliTPCpolyTrack.h:43
 AliTPCpolyTrack.h:44
 AliTPCpolyTrack.h:45
 AliTPCpolyTrack.h:46
 AliTPCpolyTrack.h:47
 AliTPCpolyTrack.h:48
 AliTPCpolyTrack.h:49
 AliTPCpolyTrack.h:50
 AliTPCpolyTrack.h:51
 AliTPCpolyTrack.h:52
 AliTPCpolyTrack.h:53
 AliTPCpolyTrack.h:54
 AliTPCpolyTrack.h:55
 AliTPCpolyTrack.h:56
 AliTPCpolyTrack.h:57
 AliTPCpolyTrack.h:58
 AliTPCpolyTrack.h:59
 AliTPCpolyTrack.h:60
 AliTPCpolyTrack.h:61
 AliTPCpolyTrack.h:62
 AliTPCpolyTrack.h:63
 AliTPCpolyTrack.h:64
 AliTPCpolyTrack.h:65
 AliTPCpolyTrack.h:66
 AliTPCpolyTrack.h:67
 AliTPCpolyTrack.h:68
 AliTPCpolyTrack.h:69
 AliTPCpolyTrack.h:70
 AliTPCpolyTrack.h:71
 AliTPCpolyTrack.h:72
 AliTPCpolyTrack.h:73
 AliTPCpolyTrack.h:74
 AliTPCpolyTrack.h:75
 AliTPCpolyTrack.h:76
 AliTPCpolyTrack.h:77
 AliTPCpolyTrack.h:78
 AliTPCpolyTrack.h:79
 AliTPCpolyTrack.h:80
 AliTPCpolyTrack.h:81
 AliTPCpolyTrack.h:82
 AliTPCpolyTrack.h:83
 AliTPCpolyTrack.h:84
 AliTPCpolyTrack.h:85
 AliTPCpolyTrack.h:86
 AliTPCpolyTrack.h:87
 AliTPCpolyTrack.h:88
 AliTPCpolyTrack.h:89
 AliTPCpolyTrack.h:90
 AliTPCpolyTrack.h:91
 AliTPCpolyTrack.h:92
 AliTPCpolyTrack.h:93