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* aHit ); 00037 00039 virtual ~FitNode(); 00040 00041 // /// retrieve pointer to Node Measurement 00042 // Measurement* measurementOnTrack() const { return m_meas; } 00043 00045 const HepMatrix& transportMatrix() const { return m_transportMatrix; } 00046 00048 const HepVector& transportVector() const { return m_transportVector; } 00049 00051 const HepSymMatrix& noiseMatrix() const { return m_noiseMatrix; } 00052 00054 void setTransportMatrix( HepMatrix transportMatrix ) { 00055 m_transportMatrix = transportMatrix; 00056 } 00057 00059 void setTransportVector( const HepVector& transportVector ) { 00060 m_transportVector = transportVector; 00061 } 00062 00064 void setNoiseMatrix( const HepSymMatrix& noiseMatrix ) { 00065 m_noiseMatrix = noiseMatrix; 00066 } 00067 00069 State* predictedState() const { return m_predictedState; } 00070 00072 void setPredictedState( State* predictedState ) { 00073 m_predictedState = predictedState; 00074 } 00075 00077 void updatePredictedState( State* predictedState ); 00078 00080 State* filteredState() const { return m_filteredState; } 00081 00082 00084 void setFilteredState( State* filteredState ) { 00085 m_filteredState = filteredState; 00086 } 00087 00089 void updateFilteredState( State* filteredState ); 00090 00092 State* bestState() const { return m_state; } 00093 00095 void setBestState( State* bestState ) { m_state = bestState; } 00096 00098 void updateBestState( State* state ); 00099 00101 void addNode( FitNode* node ); 00102 00104 double z() const { return m_measurement -> z(); }; 00105 00106 private: 00107 00108 HepMatrix m_transportMatrix; 00109 HepVector m_transportVector; 00110 HepSymMatrix m_noiseMatrix; 00111 // Measurement* m_meas; ///< measurement 00112 State* m_predictedState; 00113 State* m_filteredState; 00114 // State* m_bestState; ///< best state at this node 00115 00116 }; 00117 00118 00119 #endif // TRACKFITEVENT_FITNODE_H