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
00081
00082 m_state = filteredState.clone();
00083 }
00084
00085
00086
00087
00088 void FitNode::addNode( const FitNode& prevNode )
00089 {
00090
00091 m_transportVector += m_transportMatrix * prevNode.transportVector() ;
00092 m_noiseMatrix += (prevNode.noiseMatrix()).similarity( m_transportMatrix );
00093 m_transportMatrix = m_transportMatrix * prevNode.transportMatrix();
00094 }
00095
00096