Newer
Older
TB_Chris / TbKernel / src / .svn / text-base / TbKalmanTrackFit.h.svn-base
  1. #ifndef TBTRACKFIT_H
  2. #define TBTRACKFIT_H 1
  3.  
  4. // Gaudi
  5. #include "GaudiAlg/GaudiTool.h"
  6.  
  7. // Tb/TbKernel
  8. #include "TbKernel/ITbTrackFit.h"
  9. #include "TbKernel/ITbGeometrySvc.h"
  10.  
  11. /** @class TbKalmanTrackFit TbKalmanTrackFit.h
  12. * Track fit tool implementation using a Kalman-filter
  13. *
  14. */
  15.  
  16. class TbKalmanTrackFit : public GaudiTool, virtual public ITbTrackFit {
  17.  
  18. public:
  19. /// Constructor
  20. TbKalmanTrackFit(const std::string& type, const std::string& name,
  21. const IInterface* parent);
  22. /// Destructor
  23. virtual ~TbKalmanTrackFit();
  24.  
  25. virtual StatusCode initialize();
  26.  
  27. /// Fit the track
  28. virtual void fit(LHCb::TbTrack* track);
  29.  
  30. virtual void maskPlane(const unsigned int plane);
  31. virtual void unmaskPlane(const unsigned int plane);
  32.  
  33. protected:
  34. /// Indices of planes to be masked.
  35. std::vector<unsigned int> m_maskedPlanes;
  36. /// Flags whether a plane is masked or not.
  37. std::vector<bool> m_masked;
  38.  
  39. /// Hit error
  40. double m_hiterror;
  41. /// Hit error squared
  42. double m_hiterror2;
  43. /// Noise term squared
  44. double m_scat2;
  45.  
  46. /// Straight-line fit
  47. ITbTrackFit* m_fitter;
  48.  
  49. /// Pointer to geometry service
  50. mutable ITbGeometrySvc* m_geomSvc;
  51. /// Access geometry service on-demand
  52. ITbGeometrySvc* geomSvc() const {
  53. if (!m_geomSvc) m_geomSvc = svc<ITbGeometrySvc>("TbGeometrySvc", true);
  54. return m_geomSvc;
  55. }
  56. };
  57.  
  58. #endif