#include <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 |
Update trajectory state by combining predicted state and measurement as prescribed in the Kalman Filter algorithm (see R. 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] |
virtual KFUpdator* KFUpdator::clone | ( | void | ) | const [inline, virtual] |
Implements TrajectoryStateUpdator.
Definition at line 48 of file KFUpdator.h.
References KFUpdator().
{ return new KFUpdator(*this); }
TrajectoryStateOnSurface KFUpdator::update | ( | const TrajectoryStateOnSurface & | tsos, |
const TransientTrackingRecHit & | aRecHit | ||
) | const [virtual] |
Implements TrajectoryStateUpdator.
Definition at line 10 of file KFUpdator.cc.
References TrackingRecHit::dimension(), Exception, TransientTrackingRecHit::hit(), and mergeVDriftHistosByStation::name.
Referenced by CRackTrajectoryBuilder::AddHit(), SiStripElectronSeedGenerator::altCheckHitsAndTSOS(), SeedFromConsecutiveHitsCreator::buildSeed(), SiStripElectronSeedGenerator::checkHitsAndTSOS(), SeedFromNuclearInteraction::construct(), OutInConversionSeedFinder::createSeed(), InOutConversionSeedFinder::createSeed(), CosmicMuonSmoother::fit(), ConvBremSeedProducer::produce(), SimpleTrackRefitter::refitTrack(), SeedGeneratorForCRack::seeds(), SimpleCosmicBONSeeder::seeds(), SeedGeneratorForCosmics::seeds(), CosmicMuonSmoother::smooth(), KFSwitching1DUpdator::update(), GsfMultiStateUpdator::update(), and KFSwitchingUpdator::update().
{ switch (aRecHit.dimension()) { case 1: return update<1>(tsos,aRecHit); case 2: return update<2>(tsos,aRecHit); case 3: return update<3>(tsos,aRecHit); case 4: return update<4>(tsos,aRecHit); case 5: return update<5>(tsos,aRecHit); } throw cms::Exception("Rec hit of invalid dimension (not 1,2,3,4,5)") << "The value was " << aRecHit.dimension() << ", type is " << typeid(aRecHit).name() << ", persistent rechit type " << (aRecHit.hit() ? typeid(*aRecHit.hit()).name() : "NULL") << "\n"; }
TrajectoryStateOnSurface KFUpdator::update | ( | const TrajectoryStateOnSurface & | , |
const TransientTrackingRecHit & | |||
) | const [virtual] |
Implements TrajectoryStateUpdator.