#include "CbmLitTrackFitterIter.h" #include "CbmLitTrack.h" #include "CbmLitFitNode.h" #include CbmLitTrackFitterIter::CbmLitTrackFitterIter( TrackFitterPtr fitter, TrackFitterPtr smoother) { fFitter = fitter; fSmoother = smoother; fNofIterations = 1; fChiSqCut = 10.; fMinNofHits = 2; } CbmLitTrackFitterIter::~CbmLitTrackFitterIter() { } LitStatus CbmLitTrackFitterIter::Initialize() { return kLITSUCCESS; } LitStatus CbmLitTrackFitterIter::Finalize() { return kLITSUCCESS; } LitStatus CbmLitTrackFitterIter::Fit( CbmLitTrack *track, bool downstream) { for (int iter = 0; iter < fNofIterations; iter++) { bool isRefit = false; if (fFitter->Fit(track) == kLITERROR) { return kLITERROR; } if (fSmoother->Fit(track) == kLITERROR) { return kLITERROR; } if (iter < fNofIterations -1) { for (int i = 0; i < track->GetNofHits(); i++) { myf chiSq = track->GetFitNode(i)->GetChiSqSmoothed(); if (chiSq > fChiSqCut) { track->RemoveHit(i); isRefit = true; } } } if (track->GetNofHits() < fMinNofHits) return kLITERROR; if (!isRefit) return kLITSUCCESS; } return kLITSUCCESS; }