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