File indexing completed on 2024-09-07 04:37:19
0001 #ifndef PhysicsTools_NanoAOD_NanoAODBaseCrossCleaner_h
0002 #define PhysicsTools_NanoAOD_NanoAODBaseCrossCleaner_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 #include <memory>
0024
0025
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
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
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