- #ifndef TBKALMANPIXELMEASUREMENT
- #define TBKALMANPIXELMEASUREMENT
-
- #include "Event/TbKalmanNode.h"
-
- namespace LHCb {
- class TbKalmanPixelMeasurement : public TbKalmanNode {
- public:
- // create from a cluster
- TbKalmanPixelMeasurement(TbKalmanTrack& parent, const TbCluster& cluster,
- double measerr2)
- : TbKalmanNode(parent, cluster.z()),
- m_cluster(&cluster),
- m_isactive(true) {
- m_x = m_cluster->x();
- m_covx = measerr2;
- m_y = m_cluster->y();
- m_covy = measerr2;
- }
-
- // filter this hit
- LHCb::ChiSquare filter(State& state) const;
-
- // compute residual with respect to given (smoothed) state
- void updateResidual(const State& state);
-
- // tell if this meausurement should be used in fit
- bool hasInfo() const { return m_isactive; }
-
- //=========================================================================
- // Turn this node into an outlier
- //=========================================================================
- void deactivateMeasurement(bool deactivate);
-
- double residualX() const { return m_residualX; }
- double residualCovX() const { return m_residualCovX; }
- double residualY() const { return m_residualY; }
- double residualCovY() const { return m_residualCovY; }
- double covX() const { return m_covx; }
- double covY() const { return m_covy; }
-
- const TbCluster& cluster() const { return *m_cluster; }
-
- LHCb::ChiSquare chi2() const {
- return LHCb::ChiSquare(m_residualX * m_residualX / m_residualCovX +
- m_residualY * m_residualY / m_residualCovY,
- 2);
- }
-
- private:
- const TbCluster* m_cluster;
- bool m_isactive;
- /// Measured X coordinate
- double m_x;
- /// Error^2 in X
- double m_covx;
- /// Measured Y coordinate
- double m_y;
- /// Error^2 in Y
- double m_covy;
- double m_residualX;
- double m_residualY;
- double m_residualCovX;
- double m_residualCovY;
- };
- }
-
- #endif