00001 #ifndef TRACKPROJECTORS_TRACKMASTERPROJECTOR_H 00002 #define TRACKPROJECTORS_TRACKMASTERPROJECTOR_H 1 00003 00004 // Include files 00005 // from Gaudi 00006 #include "GaudiAlg/GaudiTool.h" 00007 00008 #include "Tools/ITrackProjector.h" // Interface 00009 00010 #include "Event/State.h" 00011 #include "Event/Measurement.h" 00012 00022 class TrackMasterProjector : public GaudiTool, 00023 virtual public ITrackProjector { 00024 public: 00027 StatusCode project( const State& state, 00028 Measurement& meas ); 00029 00031 const HepVector& projectionMatrix() const; 00032 00034 double chi2() const; 00035 00037 double residual() const; 00038 00040 double errResidual() const; 00041 00043 TrackMasterProjector( const std::string& type, 00044 const std::string& name, 00045 const IInterface* parent ); 00046 00047 virtual ~TrackMasterProjector( ); 00048 00049 StatusCode initialize(); 00050 00051 protected: 00052 00053 StatusCode selectProjector( const Measurement::Type& type ); 00054 00055 private: 00056 00057 std::string m_OTProjName; 00058 std::string m_ITProjName; 00059 std::string m_VeloRProjName; 00060 std::string m_VeloPhiProjName; 00061 00062 std::map<Measurement::Type,ITrackProjector*> m_projectors; 00063 00064 Measurement::Type m_selectedMeasType; 00065 00066 ITrackProjector* m_selectedProjector; 00067 }; 00068 #endif // TRACKPROJECTORS_TRACKMASTERPROJECTOR_H