00001 // $Id: TrackProjector.h,v 1.3 2005/04/18 09:12:05 hernando Exp $ 00002 #ifndef TRACKPROJECTORS_TRACKPROJECTOR_H 00003 #define TRACKPROJECTORS_TRACKPROJECTOR_H 1 00004 00005 // Include files 00006 // from Gaudi 00007 #include "GaudiAlg/GaudiTool.h" 00008 00009 #include "Tools/ITrackProjector.h" // Interface 00010 00011 #include "Event/State.h" 00012 #include "Event/Measurement.h" 00013 00023 class TrackProjector : public GaudiTool, 00024 virtual public ITrackProjector { 00025 public: 00026 00029 virtual StatusCode project( const State& state, 00030 Measurement& meas ); 00031 00032 00034 virtual const HepVector& projectionMatrix() const; 00035 00037 double chi2() const; 00038 00040 double residual() const; 00041 00043 double errResidual() const; 00044 00046 TrackProjector( const std::string& type, 00047 const std::string& name, 00048 const IInterface* parent ); 00049 00050 virtual ~TrackProjector( ); 00051 00052 protected: 00053 00054 void computeResidual(const State& state, const Measurement& meas); 00055 void computeErrorResidual(const State& state, const Measurement& meas); 00056 00057 protected: 00058 double m_residual; 00059 double m_errResidual; 00060 HepVector m_H; 00061 00062 private: 00063 00064 }; 00065 #endif // TRACKPROJECTORS_TRACKPROJECTOR_H