CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2/src/RecoMuon/MuonIdentification/interface/MuonKinkFinder.h

Go to the documentation of this file.
00001 #ifndef RecoMuon_MuonIdentification_MuonKinkFinder_h
00002 #define RecoMuon_MuonIdentification_MuonKinkFinder_h
00003 
00004 #include "DataFormats/MuonReco/interface/MuonQuality.h"
00005 #include "TrackingTools/TrackRefitter/interface/TrackTransformer.h"
00006 
00007 class MuonKinkFinder {
00008     public:
00009         MuonKinkFinder(const edm::ParameterSet &iConfig);
00010         ~MuonKinkFinder() ;
00011 
00012         // set event setup
00013         void init(const edm::EventSetup &iSetup) ;
00014 
00015         // fill data, return false if refit failed or too few hits
00016         bool fillTrkKink(reco::MuonQuality & quality, const Trajectory &trajectory) const ;
00017 
00018         // fill data, return false if refit failed or too few hits
00019         bool fillTrkKink(reco::MuonQuality & quality, const reco::Track &track) const ;
00020 
00021     private:
00023         bool diagonalOnly_;
00025         bool usePosition_;
00026 
00028         TrackTransformer refitter_;
00029 
00030         // compute chi2 between track states
00031         double getChi2(const TrajectoryStateOnSurface &start, const TrajectoryStateOnSurface &other) const ;
00032 
00033         // possibly crop matrix or set to zero off-diagonal elements, then invert
00034         void cropAndInvert(AlgebraicSymMatrix55 &cov) const ;
00035 };
00036 #endif