Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #include <string>
0002 #include <memory>
0003 
0004 #include "FWCore/Framework/interface/Frameworkfwd.h"
0005 #include "FWCore/Framework/interface/global/EDProducer.h"
0006 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0007 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0008 #include "FWCore/Framework/interface/Event.h"
0009 
0010 #include "DataFormats/Common/interface/RefToPtr.h"
0011 #include "DataFormats/Candidate/interface/Candidate.h"
0012 #include "DataFormats/Candidate/interface/CandidateFwd.h"
0013 #include "DataFormats/PatCandidates/interface/Jet.h"
0014 
0015 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
0016 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
0017 #include "DataFormats/Candidate/interface/CompositeCandidate.h"
0018 #include "DataFormats/Candidate/interface/ShallowCloneCandidate.h"
0019 #include "DataFormats/Candidate/interface/LeafCandidate.h"
0020 #include "DataFormats/Math/interface/Point3D.h"
0021 
0022 namespace pat {
0023   class BadPFCandidateJetsEEnoiseProducer : public edm::global::EDProducer<> {
0024   public:
0025     explicit BadPFCandidateJetsEEnoiseProducer(const edm::ParameterSet&);
0026     ~BadPFCandidateJetsEEnoiseProducer() override;
0027     static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0028     void produce(edm::StreamID, edm::Event&, const edm::EventSetup&) const override;
0029 
0030   private:
0031     edm::EDGetTokenT<edm::View<pat::Jet>> jetsrc_;
0032     double ptThreshold_;
0033     double minEtaThreshold_;
0034     double maxEtaThreshold_;
0035     bool userawPt_;
0036   };
0037 }  // namespace pat
0038 
0039 pat::BadPFCandidateJetsEEnoiseProducer::BadPFCandidateJetsEEnoiseProducer(const edm::ParameterSet& iConfig)
0040     : jetsrc_(consumes<edm::View<pat::Jet>>(iConfig.getParameter<edm::InputTag>("jetsrc"))),
0041       ptThreshold_(iConfig.getParameter<double>("ptThreshold")),
0042       minEtaThreshold_(iConfig.getParameter<double>("minEtaThreshold")),
0043       maxEtaThreshold_(iConfig.getParameter<double>("maxEtaThreshold")),
0044       userawPt_(iConfig.getParameter<bool>("userawPt")) {
0045   produces<std::vector<pat::Jet>>("good");
0046   produces<std::vector<pat::Jet>>("bad");
0047 }
0048 
0049 pat::BadPFCandidateJetsEEnoiseProducer::~BadPFCandidateJetsEEnoiseProducer() {}
0050 
0051 void pat::BadPFCandidateJetsEEnoiseProducer::produce(edm::StreamID,
0052                                                      edm::Event& iEvent,
0053                                                      const edm::EventSetup& iSetup) const {
0054   auto goodJets = std::make_unique<std::vector<pat::Jet>>();
0055   auto badJets = std::make_unique<std::vector<pat::Jet>>();
0056 
0057   edm::Handle<edm::View<pat::Jet>> jetcandidates;
0058   iEvent.getByToken(jetsrc_, jetcandidates);
0059 
0060   int njets = jetcandidates->size();
0061 
0062   // find the bad jets
0063   for (int jetindex = 0; jetindex < njets; ++jetindex) {
0064     edm::Ptr<pat::Jet> candjet = jetcandidates->ptrAt(jetindex);
0065 
0066     // Corrected Pt or Uncorrected Pt (It is defined from cfi file)
0067     double ptJet = userawPt_ ? candjet->correctedJet("Uncorrected").pt() : candjet->pt();
0068     double absEtaJet = std::abs(candjet->eta());
0069 
0070     if (ptJet > ptThreshold_ || absEtaJet < minEtaThreshold_ || absEtaJet > maxEtaThreshold_) {
0071       // save good jets
0072       goodJets->emplace_back(candjet);
0073     } else {
0074       // save bad jets
0075       badJets->emplace_back(candjet);
0076     }
0077   }
0078   iEvent.put(std::move(goodJets), "good");
0079   iEvent.put(std::move(badJets), "bad");
0080 }
0081 
0082 void pat::BadPFCandidateJetsEEnoiseProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0083   edm::ParameterSetDescription desc;
0084   desc.add<edm::InputTag>("jetsrc", edm::InputTag("slimmedJets"));
0085   desc.add<bool>("userawPt", true);
0086   desc.add<double>("ptThreshold", 50.0);
0087   desc.add<double>("minEtaThreshold", 2.65);
0088   desc.add<double>("maxEtaThreshold", 3.139);
0089 
0090   descriptions.add("BadPFCandidateJetsEEnoiseProducer", desc);
0091 }
0092 
0093 using pat::BadPFCandidateJetsEEnoiseProducer;
0094 
0095 #include "FWCore/Framework/interface/MakerMacros.h"
0096 DEFINE_FWK_MODULE(BadPFCandidateJetsEEnoiseProducer);