CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/RecoMuon/TrackingTools/plugins/MuonErrorMatrixAdjuster.h

Go to the documentation of this file.
00001 #ifndef RecoMuon_TrackingTools_MuonErrorMatrixAdjuster_H
00002 #define RecoMuon_TrackingTools_MuonErrorMatrixAdjuster_H
00003 
00020 #include <memory>
00021 #include "FWCore/Framework/interface/Frameworkfwd.h"
00022 #include "FWCore/Framework/interface/EDProducer.h"
00023 
00024 #include "FWCore/Framework/interface/Event.h"
00025 #include <FWCore/Framework/interface/EventSetup.h>
00026 
00027 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00028 
00029 #include <DataFormats/TrackReco/interface/Track.h>
00030 #include <DataFormats/TrackReco/interface/TrackExtra.h>
00031 #include <DataFormats/TrackingRecHit/interface/TrackingRecHit.h>
00032 
00033 #include "FWCore/Utilities/interface/InputTag.h"
00034 
00035 class FreeTrajectoryState;
00036 class MuonErroMatrix;
00037 class MagneticField;
00038 class MuonErrorMatrix;
00039 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
00040 
00041 #include  <FWCore/Framework/interface/ESHandle.h>
00042 
00043 //
00044 // class decleration
00045 //
00046 
00047 class MuonErrorMatrixAdjuster : public edm::EDProducer {
00048  public:
00050   explicit MuonErrorMatrixAdjuster(const edm::ParameterSet&);
00052   ~MuonErrorMatrixAdjuster();
00053   
00054  private:
00056   virtual void beginJob() ;
00057   virtual void produce(edm::Event&, const edm::EventSetup&);
00058   virtual void endJob() ;
00059   
00061   reco::TrackBase::CovarianceMatrix fix_cov_matrix(const reco::TrackBase::CovarianceMatrix& error_matrix, const GlobalVector& momentum);
00063   void multiply(reco::TrackBase::CovarianceMatrix & revised_matrix, const reco::TrackBase::CovarianceMatrix & scale_matrix);
00065   bool divide(reco::TrackBase::CovarianceMatrix & num_matrix, const reco::TrackBase::CovarianceMatrix & denom_matrix);
00066 
00068   reco::Track makeTrack(const reco::Track & recotrack_orig,
00069                         const FreeTrajectoryState & PCAstate);
00070 
00072   bool selectTrack(const reco::Track & recotrack_orig);
00073 
00075   reco::TrackExtra * makeTrackExtra(const reco::Track & recotrack_orig,
00076                                     reco::Track & recotrack,
00077                                     reco::TrackExtraCollection& TEcol);
00078 
00080   bool attachRecHits(const reco::Track & recotrack_orig,
00081                      reco::Track & recotrack,
00082                      reco::TrackExtra & trackextra,
00083                      TrackingRecHitCollection& RHcol);
00084       
00085   // ----------member data ---------------------------
00087   std::string theCategory;
00088 
00090   edm::InputTag theTrackLabel;
00091 
00093   std::string theInstanceName;
00094 
00096   bool theRescale;
00097 
00099   edm::ParameterSet theMatrixProvider_pset;
00100   MuonErrorMatrix * theMatrixProvider;
00101   
00102 
00104   edm::ESHandle<MagneticField> theField;
00105       
00107   edm::RefProd<reco::TrackExtraCollection> theRefprodTE;
00108   edm::Ref<reco::TrackExtraCollection>::key_type theTEi;
00109 
00111   edm::RefProd<TrackingRecHitCollection> theRefprodRH;
00112   edm::Ref<TrackingRecHitCollection>::key_type theRHi;
00113 
00114 };
00115 
00116 #endif