00001
00002
00003
00004 #include "Event/FitNode.h"
00005
00025
00026
00027
00028 FitNode::FitNode():
00029 m_predictedState(0),
00030 m_filteredState(0)
00031 {
00032
00033 m_transportMatrix = HepMatrix(5, 5, 1);
00034 m_transportVector = HepVector(5, 0);
00035 m_noiseMatrix = HepSymMatrix(5, 0);
00036 }
00037
00038
00039
00040
00041 FitNode::FitNode(Measurement& aMeas):
00042 m_predictedState(0),
00043 m_filteredState(0)
00044 {
00045
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
00054
00055 FitNode::~FitNode()
00056 {
00057 if (m_predictedState) delete m_predictedState;
00058 if (m_filteredState) delete m_filteredState;
00059 }
00060
00061
00062
00063
00064 void FitNode::setPredictedState( const State& predictedState )
00065 {
00066
00067 if (m_predictedState) delete m_predictedState;
00068 m_predictedState = predictedState.clone();
00069 setState(predictedState);
00070 }
00071
00072
00073
00074
00075 void FitNode::setFilteredState( const State& filteredState )
00076 {
00077
00078 if ( m_filteredState ) delete m_filteredState;
00079 m_filteredState = filteredState.clone();
00080 setState(filteredState);
00081 }
00082
00083
00084
00085
00086 void FitNode::addNode( const FitNode& prevNode )
00087 {
00088
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