File indexing completed on 2023-03-17 11:16:06
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 ~NanoAODBaseCrossCleaner() override;
0052
0053 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0054
0055 private:
0056 void beginStream(edm::StreamID) override;
0057 void produce(edm::Event&, const edm::EventSetup&) override;
0058 void endStream() override;
0059 virtual void objectSelection(const edm::View<pat::Jet>& jets,
0060 const edm::View<pat::Muon>& muons,
0061 const edm::View<pat::Electron>& eles,
0062 const edm::View<pat::Tau>& taus,
0063 const edm::View<pat::Photon>& photons,
0064 std::vector<uint8_t>& jetBits,
0065 std::vector<uint8_t>& muonBits,
0066 std::vector<uint8_t>& eleBits,
0067 std::vector<uint8_t>& tauBits,
0068 std::vector<uint8_t>& photonBits){};
0069
0070
0071
0072
0073
0074
0075
0076 const std::string name_;
0077 const std::string doc_;
0078
0079 const edm::EDGetTokenT<edm::View<pat::Jet>> jets_;
0080 const edm::EDGetTokenT<edm::View<pat::Muon>> muons_;
0081 const edm::EDGetTokenT<edm::View<pat::Electron>> electrons_;
0082 edm::InputTag lowPtElectronsTag_;
0083 edm::EDGetTokenT<edm::View<pat::Electron>> lowPtElectrons_;
0084 const edm::EDGetTokenT<edm::View<pat::Tau>> taus_;
0085 const edm::EDGetTokenT<edm::View<pat::Photon>> photons_;
0086 const StringCutObjectSelector<pat::Jet> jetSel_;
0087 const StringCutObjectSelector<pat::Muon> muonSel_;
0088 const StringCutObjectSelector<pat::Electron> electronSel_;
0089 const StringCutObjectSelector<pat::Electron> lowPtElectronSel_;
0090 const StringCutObjectSelector<pat::Tau> tauSel_;
0091 const StringCutObjectSelector<pat::Photon> photonSel_;
0092 const std::string jetName_;
0093 const std::string muonName_;
0094 const std::string electronName_;
0095 const std::string lowPtElectronName_;
0096 const std::string tauName_;
0097 const std::string photonName_;
0098 };
0099
0100 #endif