}
}
+void AliTPCpolyTrack::UpdateParameters(Int_t ny, Int_t nz)
+{
+ //
+ //
+ //Update fit parameters
+ if (ny>1){
+ Fit2(fSumY,fSumYX,fSumYX2,fSumX,fSumX2,fSumX3,fSumX4,fSumW,fA,fB,fC);
+ }
+ else{
+ Fit1(fSumY,fSumYX,fSumX,fSumX2,fSumW,fA,fB,fC);
+ }
+ if (nz>1){
+ Fit2(fSumZ,fSumZX,fSumZX2,fSumX,fSumX2,fSumX3,fSumX4,fNPoints,fD,fE,fF);
+ }
+ else{
+ Fit1(fSumZ,fSumZX,fSumX,fSumX2,fSumW,fD,fE,fF);
+ }
+}
+
void AliTPCpolyTrack::Fit2(Double_t fSumY, Double_t fSumYX, Double_t fSumYX2,
}
+void AliTPCpolyTrack::Refit(AliTPCpolyTrack &track, Double_t deltay, Double_t deltaz, Int_t nfirst, Int_t ny, Int_t nz)
+{
+ //
+ // refit with cut on distortion
+ //
+ track.Reset();
+ //first refit to temporary
+ AliTPCpolyTrack track0;
+ track0.Reset();
+ for (Int_t i=0;i<fNPoints;i++){
+ Double_t y,z;
+ GetFitPoint(fX[i],y,z);
+ if ( (TMath::Abs(y-fY[i])<deltay)&&(TMath::Abs(z-fZ[i])<deltaz)){
+ track0.AddPoint(fX[i],y,z);
+ }
+ }
+ if (track0.GetN()>2){
+ if (track0.GetN()>nfirst)
+ track0.UpdateParameters(ny,nz);
+ else
+ track0.UpdateParameters(1,1);
+ }
+ else
+ return;
+ //
+ for (Int_t i=0;i<fNPoints;i++){
+ Double_t y,z;
+ track0.GetFitPoint(fX[i],y,z);
+ if ( (TMath::Abs(y-fY[i])<deltay)&&(TMath::Abs(z-fZ[i])<deltaz)){
+ track.AddPoint(fX[i],y,z);
+ }
+ }
+ if (track.GetN()>2)
+ track.UpdateParameters(ny,nz);
+
+}
+
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);
inline void GetFitDerivation(Double_t x, Double_t &y, Double_t &z);
+ inline void GetFitDerivation2(Double_t &y, Double_t &z);
+ 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;}
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,
}
+void AliTPCpolyTrack::GetFitDerivation2(Double_t &y, Double_t &z)
+{
+
+ y = 2.*fC;
+ z = 2.*fF;
+
+}
+
#endif