Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:26:48

0001 #ifndef RecoMET_METPUSubtraction_NoPileUpPFMEtProducer_h
0002 #define RecoMET_METPUSubtraction_NoPileUpPFMEtProducer_h
0003 
0004 /** \class NoPileUpPFMEtProducer
0005  *
0006  * Produce PFMET objects from no-PU jets + "unclustered" no-PU tracks + "unclustered" neutral particles
0007  * ("unclustered" particles = particles not within jets)
0008  *
0009  * \authors Christian Veelken, LLR
0010  *
0011  */
0012 
0013 #include "FWCore/Framework/interface/Frameworkfwd.h"
0014 #include "FWCore/Framework/interface/stream/EDProducer.h"
0015 #include "FWCore/Framework/interface/Event.h"
0016 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0017 
0018 #include "RecoMET/METPUSubtraction/interface/PFMEtSignInterfaceBase.h"
0019 #include "RecoMET/METPUSubtraction/interface/NoPileUpMEtUtilities.h"
0020 
0021 #include "DataFormats/METReco/interface/PFMET.h"
0022 #include "DataFormats/METReco/interface/PFMETFwd.h"
0023 #include "DataFormats/VertexReco/interface/Vertex.h"
0024 #include "DataFormats/VertexReco/interface/VertexFwd.h"
0025 #include "DataFormats/Candidate/interface/Candidate.h"
0026 #include "DataFormats/Candidate/interface/CandidateFwd.h"
0027 
0028 #include <vector>
0029 
0030 class NoPileUpPFMEtProducer : public edm::stream::EDProducer<> {
0031 public:
0032   NoPileUpPFMEtProducer(const edm::ParameterSet&);
0033   ~NoPileUpPFMEtProducer() override;
0034 
0035 private:
0036   void produce(edm::Event&, const edm::EventSetup&) override;
0037 
0038   std::string moduleLabel_;
0039 
0040   edm::EDGetTokenT<reco::PFMETCollection> srcMEt_;
0041   edm::InputTag srcMEtCov_;
0042   edm::EDGetTokenT<reco::PUSubMETCandInfoCollection> srcJetInfo_;
0043   edm::EDGetTokenT<reco::PUSubMETCandInfoCollection> srcJetInfoLeptonMatch_;
0044   edm::EDGetTokenT<reco::PUSubMETCandInfoCollection> srcPFCandInfo_;
0045   edm::EDGetTokenT<reco::PUSubMETCandInfoCollection> srcPFCandInfoLeptonMatch_;
0046   typedef std::vector<edm::InputTag> vInputTag;
0047   std::vector<edm::EDGetTokenT<reco::CandidateView> > srcLeptons_;
0048 
0049   edm::EDGetTokenT<CorrMETData> srcType0Correction_;
0050 
0051   double sfNoPUjets_;
0052   double sfNoPUjetOffsetEnCorr_;
0053   double sfPUjets_;
0054   double sfNoPUunclChargedCands_;
0055   double sfPUunclChargedCands_;
0056   double sfUnclNeutralCands_;
0057   double sfType0Correction_;
0058   double sfLeptonIsoCones_;
0059 
0060   std::string sfLeptonsName_;
0061   std::string sfNoPUjetsName_;
0062   std::string sfNoPUjetOffsetEnCorrName_;
0063   std::string sfPUjetsName_;
0064   std::string sfNoPUunclChargedCandsName_;
0065   std::string sfPUunclChargedCandsName_;
0066   std::string sfUnclNeutralCandsName_;
0067   std::string sfType0CorrectionName_;
0068   std::string sfLeptonIsoConesName_;
0069 
0070   PFMEtSignInterfaceBase* pfMEtSignInterface_;
0071   double sfMEtCovMin_;
0072   double sfMEtCovMax_;
0073 
0074   bool saveInputs_;
0075 
0076   int verbosity_;
0077 
0078   NoPileUpMEtUtilities utils_;
0079 };
0080 
0081 #endif