1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
17 #include "AliTPCpolyTrack.h"
20 ClassImp(AliTPCpolyTrack)
23 AliTPCpolyTrack::AliTPCpolyTrack()
28 void AliTPCpolyTrack::Reset()
32 fSumX = fSumX2= fSumX3=fSumX4 = fSumY=fSumYX=fSumYX2=fSumZ=fSumZX=fSumZX2=fSumW =0;
36 void AliTPCpolyTrack::AddPoint(Double_t x, Double_t y, Double_t z,Double_t sy, Double_t sz)
49 Double_t w = 2./(sy+sz);
75 void AliTPCpolyTrack::UpdateParameters()
79 //Update fit parameters
81 Fit2(fSumY,fSumYX,fSumYX2,fSumX,fSumX2,fSumX3,fSumX4,fSumW,fA,fB,fC);
82 // Fit2(fSumZ,fSumZX,fSumZX2,fSumX,fSumX2,fSumX3,fSumX4,fNPoints,fD,fE,fF);
83 Fit1(fSumZ,fSumZX,fSumX,fSumX2,fSumW,fD,fE,fF);
87 Fit1(fSumY,fSumYX,fSumX,fSumX2,fSumW,fA,fB,fC);
88 Fit1(fSumZ,fSumZX,fSumX,fSumX2,fSumW,fD,fE,fF);
93 void AliTPCpolyTrack::GetFitPoint(Double_t x, Double_t &y, Double_t &z)
100 void AliTPCpolyTrack::Fit2(Double_t fSumY, Double_t fSumYX, Double_t fSumYX2,
101 Double_t fSumX, Double_t fSumX2, Double_t fSumX3,
102 Double_t fSumX4, Double_t fSumW,
103 Double_t &a, Double_t &b, Double_t &c)
105 //fit of second order
107 fSumW* (fSumX2*fSumX4-fSumX3*fSumX3) -
108 fSumX* (fSumX*fSumX4-fSumX3*fSumX2)+
109 fSumX2* (fSumX*fSumX3-fSumX2*fSumX2);
111 if (TMath::Abs(det)> 0.000000000000001) {
113 (fSumY * (fSumX2*fSumX4-fSumX3*fSumX3)-
114 fSumX *(fSumYX*fSumX4-fSumYX2*fSumX3)+
115 fSumX2*(fSumYX*fSumX3-fSumYX2*fSumX2))/det;
117 (fSumW*(fSumYX*fSumX4-fSumX3*fSumYX2)-
118 fSumY*(fSumX*fSumX4-fSumX3*fSumX2)+
119 fSumX2*(fSumX*fSumYX2-fSumYX*fSumX2))/det;
121 (fSumW*(fSumX2*fSumYX2-fSumYX*fSumX3)-
122 fSumX*(fSumX*fSumYX2-fSumYX*fSumX2)+
123 fSumY*(fSumX*fSumX3-fSumX2*fSumX2))/det;
127 void AliTPCpolyTrack::Fit1(Double_t fSumY, Double_t fSumYX,
128 Double_t fSumX, Double_t fSumX2,
129 Double_t fSumW, Double_t &a, Double_t &b, Double_t &c)
134 Double_t det = fSumW*fSumX2-fSumX*fSumX;
135 if (TMath::Abs(det)> 0.000000000000001) {
136 b = (fSumW*fSumYX-fSumX*fSumY)/det;
137 a = (fSumX2*fSumY-fSumX*fSumYX)/det;