Go to the documentation of this file.00001
00002
00003
00004
00005
00013
00014
00015
00016
00017
00018
00019
00020 #include <memory>
00021
00022 #include <string.h>
00023
00024
00025 #include "RecoMET/METProducers/interface/MuonMET.h"
00026
00027 #include "DataFormats/Common/interface/View.h"
00028 #include "DataFormats/METReco/interface/MET.h"
00029 #include "DataFormats/METReco/interface/METCollection.h"
00030 #include "DataFormats/METReco/interface/CaloMET.h"
00031 #include "DataFormats/METReco/interface/CaloMETCollection.h"
00032 #include "DataFormats/JetReco/interface/CaloJet.h"
00033 #include "DataFormats/JetReco/interface/CaloJetCollection.h"
00034 #include "DataFormats/RecoCandidate/interface/IsoDeposit.h"
00035 #include "DataFormats/RecoCandidate/interface/IsoDepositFwd.h"
00036
00037 #include "Geometry/Records/interface/IdealGeometryRecord.h"
00038
00039 #include "DataFormats/MuonReco/interface/MuonMETCorrectionData.h"
00040 #include "FWCore/Framework/interface/MakerMacros.h"
00041
00042
00043
00044 namespace cms
00045 {
00046
00047 MuonMET::MuonMET( const edm::ParameterSet& iConfig ) : alg_()
00048 {
00049 metTypeInputTag_ = iConfig.getParameter<edm::InputTag>("metTypeInputTag");
00050 uncorMETInputTag_ = iConfig.getParameter<edm::InputTag>("uncorMETInputTag");
00051 muonsInputTag_ = iConfig.getParameter<edm::InputTag>("muonsInputTag");
00052 muonDepValueMap_ = iConfig.getParameter<edm::InputTag>("muonMETDepositValueMapInputTag");
00053
00054 if( metTypeInputTag_.label() == "CaloMET" ) {
00055 produces<reco::CaloMETCollection>();
00056 } else
00057 produces<reco::METCollection>();
00058
00059 }
00060 MuonMET::MuonMET() : alg_() {}
00061
00062 MuonMET::~MuonMET() {}
00063
00064
00065 void MuonMET::produce( edm::Event& iEvent, const edm::EventSetup& iSetup )
00066 {
00067 using namespace edm;
00068
00069
00070 Handle<View<reco::Muon> > inputMuons;
00071 iEvent.getByLabel( muonsInputTag_, inputMuons );
00072
00073 Handle<ValueMap<reco::MuonMETCorrectionData> > vm_muCorrData_h;
00074
00075 iEvent.getByLabel( muonDepValueMap_, vm_muCorrData_h);
00076
00077 if( metTypeInputTag_.label() == "CaloMET")
00078 {
00079 Handle<View<reco::CaloMET> > inputUncorMet;
00080 iEvent.getByLabel( uncorMETInputTag_, inputUncorMet );
00081 std::auto_ptr<reco::CaloMETCollection> output( new reco::CaloMETCollection() );
00082
00083 alg_.run(*(inputMuons.product()), *(vm_muCorrData_h.product()),
00084 *(inputUncorMet.product()), &*output);
00085
00086 iEvent.put(output);
00087 }
00088 else
00089 {
00090 Handle<View<reco::MET> > inputUncorMet;
00091 iEvent.getByLabel( uncorMETInputTag_, inputUncorMet );
00092 std::auto_ptr<reco::METCollection> output( new reco::METCollection() );
00093
00094
00095 alg_.run(*(inputMuons.product()), *(vm_muCorrData_h.product()),*(inputUncorMet.product()), &*output);
00096 iEvent.put(output);
00097 }
00098 }
00099 }
00100
00101
00102