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
00080