CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_1/src/RecoMET/METAlgorithms/interface/MuonMETAlgo.h

Go to the documentation of this file.
00001 #ifndef RecoMET_MuonMETAlgo_h
00002 #define RecoMET_MuonMETAlgo_h
00003 
00011 #include "FWCore/Framework/interface/Event.h"
00012 #include "FWCore/Framework/interface/EventSetup.h"
00013 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00014 
00015 #include "DataFormats/Math/interface/Point3D.h"
00016 #include "DataFormats/Math/interface/LorentzVector.h"
00017 
00018 #include "DataFormats/Common/interface/View.h"
00019 #include "DataFormats/METReco/interface/METFwd.h"
00020 #include "DataFormats/METReco/interface/MET.h"
00021 #include "DataFormats/METReco/interface/CaloMETCollection.h"
00022 #include "DataFormats/METReco/interface/CorrMETData.h"
00023 #include "DataFormats/MuonReco/interface/Muon.h"
00024 #include "DataFormats/MuonReco/interface/MuonFwd.h"
00025 #include "TrackingTools/TrackAssociator/interface/TrackDetectorAssociator.h"
00026 #include "TrackingTools/TrackAssociator/interface/TrackAssociatorParameters.h"
00027 #include "DataFormats/Common/interface/ValueMap.h" 
00028 #include "RecoMET/METAlgorithms/interface/MuonMETInfo.h"
00029 
00030 
00031 #include "DataFormats/MuonReco/interface/MuonMETCorrectionData.h"
00032 class MuonMETAlgo 
00033 {
00034  public:
00035   MuonMETAlgo();
00036   virtual ~MuonMETAlgo();
00037    
00038   reco::CaloMET makeMET(const reco::CaloMET& fMet, double fSumEt,
00039                         const std::vector<CorrMETData>& fCorrections, 
00040                         const reco::MET::LorentzVector&);
00041   reco::MET     makeMET(const reco::MET&, double fSumEt,
00042                         const std::vector<CorrMETData>& fCorrections, 
00043                         const reco::MET::LorentzVector& fP4);
00044   
00045   virtual void run(const edm::View<reco::Muon>& inputMuons,
00046                    const edm::ValueMap<reco::MuonMETCorrectionData>& vm_muCorrData,
00047                    const edm::View<reco::MET>& uncorMET,
00048                    reco::METCollection *corMET);
00049                    
00050   virtual void run(const edm::View<reco::Muon>& inputMuons,
00051                    const edm::ValueMap<reco::MuonMETCorrectionData>& vm_muCorrData,
00052                    const edm::View<reco::CaloMET>& uncorMET,
00053                    reco::CaloMETCollection *corMET);
00054                      
00055   
00056   void GetMuDepDeltas(const reco::Muon* inputMuon,
00057                       TrackDetMatchInfo& info,
00058                       bool useTrackAssociatorPositions,
00059                       bool useRecHits,
00060                       bool useHO,
00061                       double towerEtThreshold,
00062                       double& deltax, double& deltay, double Bfield);
00063   
00064   template <class T> void MuonMETAlgo_run(const edm::View<reco::Muon>& inputMuons,
00065                                           const edm::ValueMap<reco::MuonMETCorrectionData>& vm_muCorrData,
00066                                           const edm::View<T>& v_uncorMET,
00067                                           std::vector<T>* v_corMET);
00068                                           
00069   static void  correctMETforMuon(double& deltax, double& deltay,
00070                                  double bfield, int muonCharge,
00071                                  const math::XYZTLorentzVector muonP4,
00072                                  const math::XYZPoint muonVertex,
00073                                  MuonMETInfo&);
00074     
00075 };
00076 
00077 #endif // Type1MET_MuonMETAlgo_h
00078 
00079 /*  LocalWords:  MuonMETAlgo
00080  */