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() 00067 { return *m_predictedState; } 00068 00070 const State& predictedState() const 00071 { return *m_predictedState; } 00072 00074 void setPredictedState( const State& predictedState ); 00075 00077 State& filteredState() 00078 {return *m_filteredState; } 00079 00081 const State& filteredState() const 00082 {return *m_filteredState; } 00083 00085 void setFilteredState( const State& filteredState ); 00086 00088 void addNode( const FitNode& node ); 00089 00091 double z() const { return m_measurement->z(); }; 00092 00093 private: 00094 00095 HepMatrix m_transportMatrix; 00096 HepVector m_transportVector; 00097 HepSymMatrix m_noiseMatrix; 00098 State* m_predictedState; 00099 State* m_filteredState; 00100 }; 00101 00102 00103 #endif // TRACKFITEVENT_FITNODE_H