#include <TrackingTools/KalmanUpdators/interface/KFUpdator.h>
Public Member Functions | |
virtual KFUpdator * | clone () const |
KFUpdator () | |
template<unsigned int D> | |
TrajectoryStateOnSurface | update (const TrajectoryStateOnSurface &, const TransientTrackingRecHit &) const |
TrajectoryStateOnSurface | update (const TrajectoryStateOnSurface &, const TransientTrackingRecHit &) const |
Fruhwirth, NIM A262 (1987) 444).
x_filtered = x_predicted + K * (measurement - H * x_predicted)
x_filtered, x_predicted filtered and predicted state vectors
measurement measurement vector
H "measurement matrix" projects state vector onto measurement space
K Kalman gain matrix
(formulae for K and error matrix of filtered state not shown)
This implementation works for measurements of all dimensions. It relies on CLHEP double precision vectors and matrices for matrix calculations.
Arguments: TrajectoryState & predicted state
RecHit & reconstructed hit
Initial author: P.Vanlaer 25.02.1999 Ported from ORCA.
Definition at line 34 of file KFUpdator.h.
KFUpdator::KFUpdator | ( | ) | [inline] |
Implements TrajectoryStateUpdator.
Definition at line 48 of file KFUpdator.h.
References KFUpdator().
00048 { 00049 return new KFUpdator(*this); 00050 }
TrajectoryStateOnSurface KFUpdator::update | ( | const TrajectoryStateOnSurface & | , | |
const TransientTrackingRecHit & | ||||
) | const [inline, virtual] |
Implements TrajectoryStateUpdator.
TrajectoryStateOnSurface KFUpdator::update | ( | const TrajectoryStateOnSurface & | tsos, | |
const TransientTrackingRecHit & | aRecHit | |||
) | const [inline, virtual] |
Implements TrajectoryStateUpdator.
Definition at line 7 of file KFUpdator.cc.
References TrackingRecHit::dimension(), Exception, TransientTrackingRecHit::hit(), and name.
Referenced by ElectronSiStripSeedGenerator::checkHitsAndTSOS(), SeedFromNuclearInteraction::construct(), SeedFromConsecutiveHits::construct(), OutInConversionSeedFinder::createSeed(), InOutConversionSeedFinder::createSeed(), CosmicMuonSmoother::fit(), ElectronPixelSeedGenerator::prepareElTrackSeed(), ConvBremSeedProducer::produce(), SeedGeneratorForLaserBeams::propagateAnalytical(), SeedGeneratorForLaserBeams::propagateWithMaterial(), SimpleTrackRefitter::refitTrack(), SeedFromConsecutiveHits::SeedFromConsecutiveHits(), SeedGeneratorForCRack::seeds(), SimpleCosmicBONSeeder::seeds(), SeedGeneratorForCosmics::seeds(), CosmicMuonSmoother::smooth(), KFSwitching1DUpdator::update(), and KFSwitchingUpdator::update().
00008 { 00009 switch (aRecHit.dimension()) { 00010 case 1: return update<1>(tsos,aRecHit); 00011 case 2: return update<2>(tsos,aRecHit); 00012 case 3: return update<3>(tsos,aRecHit); 00013 case 4: return update<4>(tsos,aRecHit); 00014 case 5: return update<5>(tsos,aRecHit); 00015 } 00016 throw cms::Exception("Rec hit of invalid dimension (not 1,2,3,4,5)") << 00017 "The value was " << aRecHit.dimension() << 00018 ", type is " << typeid(aRecHit).name() << 00019 ", persistent rechit type " << (aRecHit.hit() ? typeid(*aRecHit.hit()).name() : "NULL") << "\n"; 00020 }