From: belikov Date: Thu, 3 May 2007 07:14:59 +0000 (+0000) Subject: An additional function for the default initialization of the fit. X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=commitdiff_plain;h=57c8a1c2ccba1da21ede8a775c371dad062e2255 An additional function for the default initialization of the fit. --- diff --git a/STEER/AliTrackFitter.cxx b/STEER/AliTrackFitter.cxx index 788eb8f9f28..7efcf62ceae 100644 --- a/STEER/AliTrackFitter.cxx +++ b/STEER/AliTrackFitter.cxx @@ -199,10 +199,17 @@ AliAlignObj::ELayerID layerRangeMax) // Fast counting the points Int_t countFit=0; Int_t countPnt=0; + + Int_t fst=-1; + Int_t lst=-1; if (volIdsFit != 0x0) { for (Int_t i=0; iGetVolumeID()[i])) countPnt++; - if (FindVolId(volIdsFit,fPoints->GetVolumeID()[i])) countFit++; + if (FindVolId(volIdsFit,fPoints->GetVolumeID()[i])) { + countFit++; + if (fst<0) fst=i; + lst=i; + } } } else { for (Int_t i=0; i AliAlignObj::LayerToVolUID(layerRangeMax, AliAlignObj::LayerSize(layerRangeMax))) continue; countFit++; + if (fst<0) fst=i; + lst=i; } } if (countPnt==0) return kFALSE; @@ -221,7 +230,7 @@ AliAlignObj::ELayerID layerRangeMax) //************* Fit the selected track points - //Reset(); + if (!Begin(fst,lst)) return kFALSE; AliTrackPoint p; if (volIdsFit != 0x0) { diff --git a/STEER/AliTrackFitter.h b/STEER/AliTrackFitter.h index 0b0ef81e1af..952f0a6959e 100644 --- a/STEER/AliTrackFitter.h +++ b/STEER/AliTrackFitter.h @@ -31,8 +31,11 @@ class AliTrackFitter : public TObject { virtual Bool_t Fit(const TArrayI *volIds,const TArrayI *volIdsFit = 0x0, AliAlignObj::ELayerID layerRangeMin = AliAlignObj::kFirstLayer, AliAlignObj::ELayerID layerRangeMax = AliAlignObj::kLastLayer); + + virtual Bool_t Begin(Int_t, Int_t) = 0; virtual Bool_t AddPoint(const AliTrackPoint *p) = 0; virtual Bool_t Update() = 0; + virtual Bool_t GetPCA(const AliTrackPoint &pIn, AliTrackPoint &pOut) const = 0; Bool_t FindVolId(const TArrayI *array, UShort_t volid) const; diff --git a/STEER/AliTrackFitterKalman.cxx b/STEER/AliTrackFitterKalman.cxx index e20063a2fac..eff5c04a117 100755 --- a/STEER/AliTrackFitterKalman.cxx +++ b/STEER/AliTrackFitterKalman.cxx @@ -42,14 +42,27 @@ const Double_t AliTrackFitterKalman::fgkMaxChi2=33.; AliTrackFitterKalman:: AliTrackFitterKalman(AliTrackPointArray *array, Bool_t owner): AliTrackFitter(array,owner), - fMaxChi2(fgkMaxChi2) + fMaxChi2(fgkMaxChi2), + fSeed(kFALSE) { // // Constructor // } -void AliTrackFitterKalman:: +Bool_t AliTrackFitterKalman::Begin(Int_t first, Int_t last) { + // + // Make a seed out of the track points with the indices "first" and "last". + // This is the "default" seed. + // + if (fSeed) return kTRUE; + AliTrackPoint fp,lp; + fPoints->GetPoint(fp,first); fPoints->GetPoint(lp,last); + return MakeSeed(&fp,&lp); +} + + +Bool_t AliTrackFitterKalman:: MakeSeed(const AliTrackPoint *p0, const AliTrackPoint *p1) { // // Make a seed out of the two track points @@ -76,6 +89,8 @@ MakeSeed(const AliTrackPoint *p0, const AliTrackPoint *p1) { }; SetSeed(par,cov); + + return kTRUE; } Bool_t AliTrackFitterKalman::AddPoint(const AliTrackPoint *p) @@ -301,4 +316,5 @@ AliTrackFitterKalman::SetSeed(const Double_t par[5], const Double_t cov[15]) { cv(0,3)=cv(3,0); cv(1,3)=cv(3,1); cv(2,3)=cv(3,2); cv(0,4)=cv(4,0); cv(1,4)=cv(4,1); cv(2,4)=cv(4,2); cv(3,4)=cv(4,3); + fSeed=kTRUE; } diff --git a/STEER/AliTrackFitterKalman.h b/STEER/AliTrackFitterKalman.h index d5c41929aab..ae39197f2f5 100755 --- a/STEER/AliTrackFitterKalman.h +++ b/STEER/AliTrackFitterKalman.h @@ -17,19 +17,24 @@ class AliTrackFitterKalman : public AliTrackFitter { public: - AliTrackFitterKalman() : AliTrackFitter(), fMaxChi2(fgkMaxChi2) {} + AliTrackFitterKalman() : + AliTrackFitter(), + fMaxChi2(fgkMaxChi2), + fSeed(kFALSE) {} AliTrackFitterKalman(AliTrackPointArray *array, Bool_t owner = kTRUE); virtual ~AliTrackFitterKalman() {} void SetMaxChi2(Double_t chi2) {fMaxChi2=chi2;} - void SetSeed(const Double_t par[6], const Double_t cov[15]); - void MakeSeed(const AliTrackPoint *p, const AliTrackPoint *p2); + void SetSeed(const Double_t par[6], const Double_t cov[15]); + Bool_t MakeSeed(const AliTrackPoint *p, const AliTrackPoint *p2); Bool_t GetPCA(const AliTrackPoint &p, AliTrackPoint &p2) const; + Bool_t Begin(Int_t first, Int_t last); Bool_t AddPoint(const AliTrackPoint *p); + Bool_t Update() {fSeed=kFALSE; return kTRUE;} private: AliTrackFitterKalman(const AliTrackFitterKalman &kalman); @@ -38,13 +43,14 @@ private: Bool_t Propagate(const AliTrackPoint *p); Double_t GetPredictedChi2(const AliTrackPoint *p) const; Bool_t Update(const AliTrackPoint *p,Double_t chi2); - Bool_t Update() {return kTRUE;} + static const Double_t fgkMaxChi2; // Default maximal allowed chi2 Double_t fMaxChi2; // A point is added if chi2 < fMaxChi2 + Bool_t fSeed; // True, if the fitter is already "seeded" - ClassDef(AliTrackFitterKalman,1) // Kalman-Filter fit to a straight line + ClassDef(AliTrackFitterKalman,2) // Kalman-Filter fit to a straight line }; diff --git a/STEER/AliTrackFitterRieman.h b/STEER/AliTrackFitterRieman.h index 898f269a592..d3bbc94f4bc 100644 --- a/STEER/AliTrackFitterRieman.h +++ b/STEER/AliTrackFitterRieman.h @@ -59,6 +59,7 @@ class AliTrackFitterRieman : public AliTrackFitter{ Double_t fCorrY[4]; // correction polynom coef Double_t fCorrZ[4]; // correction polynom coef private: + Bool_t Begin(Int_t, Int_t) {Reset(); return kTRUE;} Bool_t AddPoint(const AliTrackPoint *) {return kTRUE;} TTreeSRedirector *fDebugStream; //!debug streamer ClassDef(AliTrackFitterRieman,2) // Fast fit of helices on ITS RecPoints diff --git a/STEER/AliTrackFitterStraight.h b/STEER/AliTrackFitterStraight.h index 0f3bcf69ea0..574ab6eec1c 100644 --- a/STEER/AliTrackFitterStraight.h +++ b/STEER/AliTrackFitterStraight.h @@ -38,6 +38,7 @@ class AliTrackFitterStraight : public AliTrackFitter{ Bool_t fConv; // indicates convergation private: + Bool_t Begin(Int_t, Int_t) {Reset(); return kTRUE;} Bool_t AddPoint(const AliTrackPoint *) {return kTRUE;} ClassDef(AliTrackFitterStraight,1) // Fast fit of straight tracks