00001 #ifndef TRACKFITEVENT_FITNODE_H 00002 #define TRACKFITEVENT_FITNODE_H 1 00003 00004 // from CLHEP 00005 #include "CLHEP/Matrix/Matrix.h" 00006 00007 // from TrackEvent 00008 #include "Event/Node.h" 00009 #include "Event/Measurement.h" 00010 00030 class FitNode: public Node { 00031 public: 00033 FitNode(); 00034 00036 FitNode(Measurement& meas ); 00037 00039 virtual ~FitNode(); 00040 00042 const HepMatrix& transportMatrix() const { return m_transportMatrix; } 00043 00045 const HepVector& transportVector() const { return m_transportVector; } 00046 00048 const HepSymMatrix& noiseMatrix() const { return m_noiseMatrix; } 00049 00051 void setTransportMatrix( const HepMatrix& transportMatrix ) { 00052 m_transportMatrix = transportMatrix; 00053 } 00054 00056 void setTransportVector( const HepVector& transportVector ) { 00057 m_transportVector = transportVector; 00058 } 00059 00061 void setNoiseMatrix( const HepSymMatrix& noiseMatrix ) { 00062 m_noiseMatrix = noiseMatrix; 00063 } 00064 00066 State& predictedState() const 00067 { return *m_predictedState; } 00068 00070 void setPredictedState( const State& predictedState ); 00071 00073 const State& filteredState() const 00074 {return *m_filteredState; } 00075 00077 void setFilteredState( const State& filteredState ); 00078 00080 void addNode( const FitNode& node ); 00081 00083 double z() const { return m_measurement->z(); }; 00084 00085 private: 00086 00087 HepMatrix m_transportMatrix; 00088 HepVector m_transportVector; 00089 HepSymMatrix m_noiseMatrix; 00090 State* m_predictedState; 00091 State* m_filteredState; 00092 }; 00093 00094 00095 #endif // TRACKFITEVENT_FITNODE_H