File indexing completed on 2024-04-06 12:26:48
0001 #ifndef RecoMET_METPUSubtraction_PFMETProducerMVA_h
0002 #define RecoMET_METPUSubtraction_PFMETProducerMVA_h
0003
0004
0005
0006
0007
0008
0009
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/Framework/interface/EventSetup.h"
0017 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0018
0019 #include "DataFormats/Candidate/interface/Candidate.h"
0020 #include "DataFormats/Candidate/interface/CandidateFwd.h"
0021 #include "DataFormats/JetReco/interface/PFJet.h"
0022 #include "DataFormats/JetReco/interface/PFJetCollection.h"
0023 #include "DataFormats/Math/interface/deltaR.h"
0024 #include "DataFormats/METReco/interface/CommonMETData.h"
0025 #include "DataFormats/METReco/interface/PFMET.h"
0026 #include "DataFormats/METReco/interface/PFMETCollection.h"
0027 #include "DataFormats/MuonReco/interface/Muon.h"
0028 #include "DataFormats/PatCandidates/interface/PackedCandidate.h"
0029 #include "DataFormats/PatCandidates/interface/Tau.h"
0030 #include "DataFormats/VertexReco/interface/Vertex.h"
0031
0032 #include "JetMETCorrections/JetCorrector/interface/JetCorrector.h"
0033
0034 #include "RecoMET/METAlgorithms/interface/METAlgo.h"
0035 #include "RecoMET/METAlgorithms/interface/PFSpecificAlgo.h"
0036 #include "RecoMET/METPUSubtraction/interface/PFMETAlgorithmMVA.h"
0037 #include "RecoMET/METPUSubtraction/interface/MvaMEtUtilities.h"
0038
0039 #include "RecoJets/JetProducers/interface/PileupJetIdAlgo.h"
0040 #include <TLorentzVector.h>
0041
0042 namespace reco {
0043 class PFMETProducerMVA : public edm::stream::EDProducer<> {
0044 public:
0045 PFMETProducerMVA(const edm::ParameterSet&);
0046 ~PFMETProducerMVA() override;
0047
0048 private:
0049 void produce(edm::Event&, const edm::EventSetup&) override;
0050
0051
0052 std::vector<reco::PUSubMETCandInfo> computeLeptonInfo(
0053 const std::vector<edm::EDGetTokenT<reco::CandidateView> >& srcLeptons_,
0054 const reco::CandidateView& pfCandidates,
0055 const reco::Vertex* hardScatterVertex,
0056 int& lId,
0057 bool& lHasPhotons,
0058 edm::Event& iEvent);
0059
0060 std::vector<reco::PUSubMETCandInfo> computeJetInfo(const reco::PFJetCollection&,
0061 const edm::Handle<reco::PFJetCollection>&,
0062 const edm::ValueMap<float>&,
0063 const reco::VertexCollection&,
0064 const reco::Vertex*,
0065 const reco::JetCorrector& iCorr,
0066 edm::Event& iEvent,
0067 const edm::EventSetup& iSetup,
0068 std::vector<reco::PUSubMETCandInfo>& iLeptons,
0069 std::vector<reco::PUSubMETCandInfo>& iCands);
0070
0071 std::vector<reco::PUSubMETCandInfo> computePFCandidateInfo(const reco::CandidateView&, const reco::Vertex*);
0072 std::vector<reco::Vertex::Point> computeVertexInfo(const reco::VertexCollection&);
0073 double chargedEnFrac(const reco::Candidate* iCand,
0074 const reco::CandidateView& pfCandidates,
0075 const reco::Vertex* hardScatterVertex);
0076
0077 bool passPFLooseId(const reco::PFJet* iJet);
0078 bool istau(const reco::Candidate* iCand);
0079 double chargedFracInCone(const reco::Candidate* iCand,
0080 const reco::CandidateView& pfCandidates,
0081 const reco::Vertex* hardScatterVertex,
0082 double iDRMax = 0.2);
0083
0084
0085 edm::EDGetTokenT<reco::PFJetCollection> srcCorrJets_;
0086 edm::EDGetTokenT<reco::PFJetCollection> srcUncorrJets_;
0087 edm::EDGetTokenT<edm::ValueMap<float> > srcJetIds_;
0088
0089 edm::EDGetTokenT<edm::View<reco::Candidate> > srcPFCandidatesView_;
0090 edm::EDGetTokenT<reco::VertexCollection> srcVertices_;
0091 edm::EDGetTokenT<reco::JetCorrector> mJetCorrector_;
0092 typedef std::vector<edm::InputTag> vInputTag;
0093 std::vector<edm::EDGetTokenT<reco::CandidateView> > srcLeptons_;
0094 int minNumLeptons_;
0095
0096 bool useType1_;
0097
0098 double globalThreshold_;
0099
0100 double minCorrJetPt_;
0101
0102 METAlgo metAlgo_;
0103 PFSpecificAlgo pfMEtSpecificAlgo_;
0104 PFMETAlgorithmMVA mvaMEtAlgo_;
0105 bool mvaMEtAlgo_isInitialized_;
0106
0107
0108 int verbosity_;
0109 };
0110 }
0111
0112 #endif