Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:23:42

0001 #ifndef PhysicsTools_NanoAOD_NanoAODBaseCrossCleaner_h
0002 #define PhysicsTools_NanoAOD_NanoAODBaseCrossCleaner_h
0003 
0004 // -*- C++ -*-
0005 //
0006 // Package:    PhysicsTools/NanoAOD
0007 // Class:      NanoAODBaseCrossCleaner
0008 //
0009 /**\class NanoAODBaseCrossCleaner NanoAODBaseCrossCleaner.cc PhysicsTools/NanoAODBaseCrossCleaner/plugins/NanoAODBaseCrossCleaner.cc
0010 
0011  Description: [one line class summary]
0012 
0013  Implementation:
0014      [Notes on implementation]
0015 */
0016 //
0017 // Original Author:  Andrea Rizzi
0018 //         Created:  Mon, 28 Aug 2017 09:26:39 GMT
0019 //
0020 //
0021 
0022 // system include files
0023 #include <memory>
0024 
0025 // user include files
0026 #include "FWCore/Framework/interface/Frameworkfwd.h"
0027 #include "FWCore/Framework/interface/stream/EDProducer.h"
0028 
0029 #include "FWCore/Framework/interface/Event.h"
0030 #include "FWCore/Framework/interface/MakerMacros.h"
0031 
0032 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0033 #include "FWCore/Utilities/interface/StreamID.h"
0034 
0035 #include "DataFormats/PatCandidates/interface/Muon.h"
0036 #include "DataFormats/PatCandidates/interface/Jet.h"
0037 #include "DataFormats/PatCandidates/interface/Electron.h"
0038 #include "DataFormats/PatCandidates/interface/Photon.h"
0039 #include "DataFormats/PatCandidates/interface/Tau.h"
0040 
0041 #include "DataFormats/Common/interface/View.h"
0042 #include "CommonTools/Utils/interface/StringCutObjectSelector.h"
0043 
0044 //
0045 // class declaration
0046 //
0047 
0048 class NanoAODBaseCrossCleaner : public edm::stream::EDProducer<> {
0049 public:
0050   explicit NanoAODBaseCrossCleaner(const edm::ParameterSet&);
0051 
0052   static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0053 
0054 private:
0055   void produce(edm::Event&, const edm::EventSetup&) override;
0056   virtual void objectSelection(const edm::View<pat::Jet>& jets,
0057                                const edm::View<pat::Muon>& muons,
0058                                const edm::View<pat::Electron>& eles,
0059                                const edm::View<pat::Tau>& taus,
0060                                const edm::View<pat::Photon>& photons,
0061                                std::vector<uint8_t>& jetBits,
0062                                std::vector<uint8_t>& muonBits,
0063                                std::vector<uint8_t>& eleBits,
0064                                std::vector<uint8_t>& tauBits,
0065                                std::vector<uint8_t>& photonBits){};
0066 
0067   // ----------member data ---------------------------
0068   const std::string name_;
0069   const std::string doc_;
0070 
0071   const edm::EDGetTokenT<edm::View<pat::Jet>> jets_;
0072   const edm::EDGetTokenT<edm::View<pat::Muon>> muons_;
0073   const edm::EDGetTokenT<edm::View<pat::Electron>> electrons_;
0074   edm::InputTag lowPtElectronsTag_;
0075   edm::EDGetTokenT<edm::View<pat::Electron>> lowPtElectrons_;
0076   const edm::EDGetTokenT<edm::View<pat::Tau>> taus_;
0077   const edm::EDGetTokenT<edm::View<pat::Photon>> photons_;
0078   const StringCutObjectSelector<pat::Jet> jetSel_;
0079   const StringCutObjectSelector<pat::Muon> muonSel_;
0080   const StringCutObjectSelector<pat::Electron> electronSel_;
0081   const StringCutObjectSelector<pat::Electron> lowPtElectronSel_;
0082   const StringCutObjectSelector<pat::Tau> tauSel_;
0083   const StringCutObjectSelector<pat::Photon> photonSel_;
0084   const std::string jetName_;
0085   const std::string muonName_;
0086   const std::string electronName_;
0087   const std::string lowPtElectronName_;
0088   const std::string tauName_;
0089   const std::string photonName_;
0090 };
0091 
0092 #endif