#include <KFStrip1DUpdator.h>
Public Member Functions | |
virtual KFStrip1DUpdator * | clone () const |
KFStrip1DUpdator () | |
virtual TSOS | update (const TSOS &aTsos, const TransientTrackingRecHit &aHit) const |
~KFStrip1DUpdator () | |
Private Types | |
typedef LocalTrajectoryError | LTE |
typedef LocalTrajectoryParameters | LTP |
typedef TrajectoryStateOnSurface | TSOS |
A Kalman Updator that works in the measurement frame and uses only the X coordinate (the one perpendicular to the strip). Ported from ORCA.
Definition at line 15 of file KFStrip1DUpdator.h.
typedef LocalTrajectoryError KFStrip1DUpdator::LTE [private] |
Definition at line 21 of file KFStrip1DUpdator.h.
typedef LocalTrajectoryParameters KFStrip1DUpdator::LTP [private] |
Definition at line 20 of file KFStrip1DUpdator.h.
typedef TrajectoryStateOnSurface KFStrip1DUpdator::TSOS [private] |
Definition at line 19 of file KFStrip1DUpdator.h.
KFStrip1DUpdator::KFStrip1DUpdator | ( | ) | [inline] |
KFStrip1DUpdator::~KFStrip1DUpdator | ( | ) | [inline] |
Definition at line 27 of file KFStrip1DUpdator.h.
{}
virtual KFStrip1DUpdator* KFStrip1DUpdator::clone | ( | void | ) | const [inline, virtual] |
Implements TrajectoryStateUpdator.
Definition at line 31 of file KFStrip1DUpdator.h.
References KFStrip1DUpdator().
{ return new KFStrip1DUpdator(*this); }
TrajectoryStateOnSurface KFStrip1DUpdator::update | ( | const TSOS & | aTsos, |
const TransientTrackingRecHit & | aHit | ||
) | const [virtual] |
Implements TrajectoryStateUpdator.
Definition at line 5 of file KFStrip1DUpdator.cc.
References funct::C, TrajectoryStateOnSurface::globalParameters(), Strip1DMeasurementTransformator::hitError(), Strip1DMeasurementTransformator::hitParameters(), Exhume::I, TrajectoryStateOnSurface::localParameters(), m, GlobalTrajectoryParameters::magneticField(), Strip1DMeasurementTransformator::projectedTrajectoryError(), Strip1DMeasurementTransformator::projectedTrajectoryParameters(), Strip1DMeasurementTransformator::projectionMatrix(), LocalTrajectoryParameters::pzSign(), dttmaxenums::R, TrajectoryStateOnSurface::surface(), TrajectoryStateOnSurface::surfaceSide(), Strip1DMeasurementTransformator::trajectoryError(), Strip1DMeasurementTransformator::trajectoryParameters(), and x.
Referenced by KFSwitching1DUpdator::update().
{ double pzSign = aTsos.localParameters().pzSign(); Strip1DMeasurementTransformator myTrafo(aTsos, aHit); double m = myTrafo.hitParameters(); AlgebraicVector5 x(myTrafo.trajectoryParameters()); double px = myTrafo.projectedTrajectoryParameters(); AlgebraicMatrix15 H(myTrafo.projectionMatrix()); double V = myTrafo.hitError(); AlgebraicSymMatrix55 C(myTrafo.trajectoryError()); double pC = myTrafo.projectedTrajectoryError(); double R = 1./(V + pC); // Compute Kalman gain matrix AlgebraicMatrix51 K(R * (C * ROOT::Math::Transpose(H))); // Compute local filtered state vector AlgebraicVector5 fsv = x + K.Col(0) * (m - px); // Compute covariance matrix of local filtered state vector AlgebraicSymMatrix55 I = AlgebraicMatrixID(); AlgebraicMatrix55 M = I - K * H; AlgebraicSymMatrix55 fse = ROOT::Math::Similarity(M, C) + ROOT::Math::Similarity(K, AlgebraicSymMatrix11(V) ); // AlgebraicMatrix M((I - K * H)*C); // already commented when CLHEP was in use // AlgebraicSymMatrix fse(5,0); fse.assign(M); // already commented when CLHEP was in use return TSOS( LTP(fsv, pzSign), LTE(fse), aTsos.surface(), &(aTsos.globalParameters().magneticField()), aTsos.surfaceSide() ); }