#include <KFStripUpdator.h>
Public Member Functions | |
virtual KFStripUpdator * | clone () const |
KFStripUpdator () | |
virtual TSOS | update (const TSOS &aTsos, const TransientTrackingRecHit &aHit) const |
~KFStripUpdator () | |
Private Types | |
typedef LocalTrajectoryError | LTE |
typedef LocalTrajectoryParameters | LTP |
typedef TrajectoryStateOnSurface | TSOS |
A Kalman Updator that works in the measurement frame and uses both hit coordinates. Ported from ORCA.
Definition at line 15 of file KFStripUpdator.h.
typedef LocalTrajectoryError KFStripUpdator::LTE [private] |
Definition at line 21 of file KFStripUpdator.h.
typedef LocalTrajectoryParameters KFStripUpdator::LTP [private] |
Definition at line 20 of file KFStripUpdator.h.
typedef TrajectoryStateOnSurface KFStripUpdator::TSOS [private] |
Definition at line 19 of file KFStripUpdator.h.
KFStripUpdator::KFStripUpdator | ( | ) | [inline] |
KFStripUpdator::~KFStripUpdator | ( | ) | [inline] |
Definition at line 27 of file KFStripUpdator.h.
{}
virtual KFStripUpdator* KFStripUpdator::clone | ( | void | ) | const [inline, virtual] |
Implements TrajectoryStateUpdator.
Definition at line 31 of file KFStripUpdator.h.
References KFStripUpdator().
{ return new KFStripUpdator(*this); }
TrajectoryStateOnSurface KFStripUpdator::update | ( | const TSOS & | aTsos, |
const TransientTrackingRecHit & | aHit | ||
) | const [virtual] |
Implements TrajectoryStateUpdator.
Definition at line 7 of file KFStripUpdator.cc.
References funct::C, TrajectoryStateOnSurface::globalParameters(), StripMeasurementTransformator::hitError(), StripMeasurementTransformator::hitParameters(), Exhume::I, invertPosDefMatrix(), TrajectoryStateOnSurface::localParameters(), m, GlobalTrajectoryParameters::magneticField(), StripMeasurementTransformator::projectedTrajectoryError(), StripMeasurementTransformator::projectedTrajectoryParameters(), StripMeasurementTransformator::projectionMatrix(), LocalTrajectoryParameters::pzSign(), dttmaxenums::R, TrajectoryStateOnSurface::surface(), StripMeasurementTransformator::trajectoryError(), StripMeasurementTransformator::trajectoryParameters(), and x.
Referenced by KFSwitchingUpdator::update().
{ double pzSign = aTsos.localParameters().pzSign(); StripMeasurementTransformator myTrafo(aTsos, aHit); AlgebraicMatrix25 H(myTrafo.projectionMatrix()); AlgebraicVector2 m(myTrafo.hitParameters()); AlgebraicVector5 x(myTrafo.trajectoryParameters()); AlgebraicVector2 px(myTrafo.projectedTrajectoryParameters()); // AlgebraicVector px = H*x; AlgebraicSymMatrix22 V(myTrafo.hitError()); const AlgebraicSymMatrix55 &C = myTrafo.trajectoryError(); AlgebraicSymMatrix22 pC(myTrafo.projectedTrajectoryError()); // AlgebraicSymMatrix pC = C.similarity(H); AlgebraicSymMatrix22 R(V + pC); //int ierr; R.invert(ierr); // if (ierr != 0) throw exception; invertPosDefMatrix(R); // Compute Kalman gain matrix // AlgebraicMatrix Hm2l(myTrafo.measurement2LocalProj()); AlgebraicMatrix52 K(C * ROOT::Math::Transpose(H) * R); // Compute local filtered state vector AlgebraicVector5 fsv(x + K * (m - px)); // Compute covariance matrix of local filtered state vector AlgebraicMatrix55 I = AlgebraicMatrixID(); AlgebraicMatrix55 M = (I - K * H); AlgebraicSymMatrix55 fse = ROOT::Math::Similarity(M,C) + ROOT::Math::Similarity(K,V); return TSOS( LTP(fsv, pzSign), LTE(fse), aTsos.surface(),&(aTsos.globalParameters().magneticField())); }