#ifndef TBTRACKFIT_H #define TBTRACKFIT_H 1 // Gaudi #include "GaudiAlg/GaudiTool.h" // Tb/TbKernel #include "TbKernel/ITbTrackFit.h" #include "TbKernel/ITbGeometrySvc.h" /** @class TbKalmanTrackFit TbKalmanTrackFit.h * Track fit tool implementation using a Kalman-filter * */ class TbKalmanTrackFit : public GaudiTool, virtual public ITbTrackFit { public: /// Constructor TbKalmanTrackFit(const std::string& type, const std::string& name, const IInterface* parent); /// Destructor virtual ~TbKalmanTrackFit(); virtual StatusCode initialize(); /// Fit the track virtual void fit(LHCb::TbTrack* track); virtual void maskPlane(const unsigned int plane); virtual void unmaskPlane(const unsigned int plane); protected: /// Indices of planes to be masked. std::vector<unsigned int> m_maskedPlanes; /// Flags whether a plane is masked or not. std::vector<bool> m_masked; /// Hit error double m_hiterror; /// Hit error squared double m_hiterror2; /// Noise term squared double m_scat2; /// Straight-line fit ITbTrackFit* m_fitter; /// Pointer to geometry service mutable ITbGeometrySvc* m_geomSvc; /// Access geometry service on-demand ITbGeometrySvc* geomSvc() const { if (!m_geomSvc) m_geomSvc = svc<ITbGeometrySvc>("TbGeometrySvc", true); return m_geomSvc; } }; #endif