CMS 3D CMS Logo

Public Member Functions | Private Types

KFStrip1DUpdator Class Reference

#include <KFStrip1DUpdator.h>

Inheritance diagram for KFStrip1DUpdator:
TrajectoryStateUpdator

List of all members.

Public Member Functions

virtual KFStrip1DUpdatorclone () const
 KFStrip1DUpdator ()
virtual TSOS update (const TSOS &aTsos, const TransientTrackingRecHit &aHit) const
 ~KFStrip1DUpdator ()

Private Types

typedef LocalTrajectoryError LTE
typedef LocalTrajectoryParameters LTP
typedef TrajectoryStateOnSurface TSOS

Detailed Description

A Kalman Updator that works in the measurement frame and uses only the X coordinate (the one perpendicular to the strip). Ported from ORCA.

Date:
2007/05/09 13:50:25
Revision:
1.3
Author:
todorov, cerati

Definition at line 15 of file KFStrip1DUpdator.h.


Member Typedef Documentation

Definition at line 21 of file KFStrip1DUpdator.h.

Definition at line 20 of file KFStrip1DUpdator.h.

Definition at line 19 of file KFStrip1DUpdator.h.


Constructor & Destructor Documentation

KFStrip1DUpdator::KFStrip1DUpdator ( ) [inline]

Definition at line 25 of file KFStrip1DUpdator.h.

Referenced by clone().

{}
KFStrip1DUpdator::~KFStrip1DUpdator ( ) [inline]

Definition at line 27 of file KFStrip1DUpdator.h.

{}

Member Function Documentation

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() );  
}