Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

FitNode.cpp

Go to the documentation of this file.
00001 // Include files
00002 // -------------
00003 // local
00004 #include "Event/FitNode.h"
00005 
00025 //=============================================================================
00026 // Standard constructor, initializes variables
00027 //=============================================================================
00028 FitNode::FitNode():
00029   m_predictedState(0),
00030   m_filteredState(0)
00031 {
00032   // FitNode default constructer
00033   m_transportMatrix = HepMatrix(5, 5, 1);
00034   m_transportVector = HepVector(5, 0);
00035   m_noiseMatrix     = HepSymMatrix(5, 0);
00036 }
00037 
00038 //=============================================================================
00039 // Constructor from a Measurement
00040 //=============================================================================
00041 FitNode::FitNode(Measurement& aMeas):
00042   m_predictedState(0),
00043   m_filteredState(0)
00044 {
00045   //FitNode constructer
00046   m_transportMatrix = HepMatrix(5, 5, 1);
00047   m_transportVector = HepVector(5, 0);
00048   m_noiseMatrix     = HepSymMatrix(5, 0);
00049   m_measurement     = &aMeas;
00050 }
00051 
00052 //=============================================================================
00053 // Destructor
00054 //=============================================================================
00055 FitNode::~FitNode()
00056 {
00057   if (m_predictedState) delete m_predictedState;
00058   if (m_filteredState) delete m_filteredState;
00059 }
00060 
00061 //=============================================================================
00062 // Update the State predicted by the Kalman filter
00063 //=============================================================================
00064 void FitNode::setPredictedState( const State& predictedState )
00065 {  
00066   //if pointer not set clone state - else copy (not great)
00067   if (m_predictedState) delete m_predictedState;
00068   m_predictedState = predictedState.clone();
00069   setState(predictedState);
00070 }
00071 
00072 //=============================================================================
00073 // Update the filtered state from the Kalman filter step
00074 //=============================================================================
00075 void FitNode::setFilteredState( const State& filteredState )
00076 {  
00077   //if pointer not set clone state - else copy (not great)
00078   if ( m_filteredState ) delete m_filteredState;
00079   m_filteredState = filteredState.clone();
00080   setState(filteredState);
00081 }
00082 
00083 //=============================================================================
00084 // Add the transport transformation of prevNode to this node
00085 //=============================================================================
00086 void FitNode::addNode( const FitNode& prevNode )
00087 {
00088   // add the transport transformation of prevNode to this node
00089   m_transportVector += m_transportMatrix * prevNode.transportVector() ;
00090   m_noiseMatrix += (prevNode.noiseMatrix()).similarity( m_transportMatrix );
00091   m_transportMatrix = m_transportMatrix * prevNode.transportMatrix();  
00092 }
00093 
00094 //=============================================================================

Generated on Fri May 27 13:59:37 2005 for New Track Event Model by doxygen 1.4.1