Newer
Older
TB_Chris / TbEvent / Event / .svn / text-base / TbKalmanPixelMeasurement.h.svn-base
  1. #ifndef TBKALMANPIXELMEASUREMENT
  2. #define TBKALMANPIXELMEASUREMENT
  3.  
  4. #include "Event/TbKalmanNode.h"
  5.  
  6. namespace LHCb {
  7. class TbKalmanPixelMeasurement : public TbKalmanNode {
  8. public:
  9. // create from a cluster
  10. TbKalmanPixelMeasurement(TbKalmanTrack& parent, const TbCluster& cluster,
  11. double measerr2)
  12. : TbKalmanNode(parent, cluster.z()),
  13. m_cluster(&cluster),
  14. m_isactive(true) {
  15. m_x = m_cluster->x();
  16. m_covx = measerr2;
  17. m_y = m_cluster->y();
  18. m_covy = measerr2;
  19. }
  20.  
  21. // filter this hit
  22. LHCb::ChiSquare filter(State& state) const;
  23.  
  24. // compute residual with respect to given (smoothed) state
  25. void updateResidual(const State& state);
  26.  
  27. // tell if this meausurement should be used in fit
  28. bool hasInfo() const { return m_isactive; }
  29.  
  30. //=========================================================================
  31. // Turn this node into an outlier
  32. //=========================================================================
  33. void deactivateMeasurement(bool deactivate);
  34.  
  35. double residualX() const { return m_residualX; }
  36. double residualCovX() const { return m_residualCovX; }
  37. double residualY() const { return m_residualY; }
  38. double residualCovY() const { return m_residualCovY; }
  39. double covX() const { return m_covx; }
  40. double covY() const { return m_covy; }
  41.  
  42. const TbCluster& cluster() const { return *m_cluster; }
  43.  
  44. LHCb::ChiSquare chi2() const {
  45. return LHCb::ChiSquare(m_residualX * m_residualX / m_residualCovX +
  46. m_residualY * m_residualY / m_residualCovY,
  47. 2);
  48. }
  49.  
  50. private:
  51. const TbCluster* m_cluster;
  52. bool m_isactive;
  53. /// Measured X coordinate
  54. double m_x;
  55. /// Error^2 in X
  56. double m_covx;
  57. /// Measured Y coordinate
  58. double m_y;
  59. /// Error^2 in Y
  60. double m_covy;
  61. double m_residualX;
  62. double m_residualY;
  63. double m_residualCovX;
  64. double m_residualCovY;
  65. };
  66. }
  67.  
  68. #endif