38 lowPtElectronSel_(
params.getParameter<
std::
string>(
"lowPtElectronSel")),
44 lowPtElectronName_(
params.getParameter<
std::
string>(
"lowPtElectronName")),
49 produces<nanoaod::FlatTable>(
"jets");
50 produces<nanoaod::FlatTable>(
"muons");
51 produces<nanoaod::FlatTable>(
"electrons");
52 produces<nanoaod::FlatTable>(
"lowPtElectrons");
53 produces<nanoaod::FlatTable>(
"taus");
54 produces<nanoaod::FlatTable>(
"photons");
66 std::vector<uint8_t>
jets;
67 jets.reserve(jetsProd.size());
68 for (
const auto&
j : jetsProd) {
71 auto jetsTable = std::make_unique<nanoaod::FlatTable>(jetsProd.size(),
jetName_,
false,
true);
74 std::vector<uint8_t>
muons;
75 muons.reserve(muonsProd.size());
76 for (
const auto&
m : muonsProd) {
79 auto muonsTable = std::make_unique<nanoaod::FlatTable>(muonsProd.size(),
muonName_,
false,
true);
82 std::vector<uint8_t>
eles;
83 eles.reserve(electronsProd.size());
84 for (
const auto&
e : electronsProd) {
87 auto electronsTable = std::make_unique<nanoaod::FlatTable>(electronsProd.size(),
electronName_,
false,
true);
90 std::vector<uint8_t> lowPtEles;
91 lowPtEles.reserve(lowPtelectronsProd.size());
92 for (
const auto&
e : lowPtelectronsProd) {
95 auto lowPtElectronsTable = std::make_unique<nanoaod::FlatTable>(lowPtEles.size(),
lowPtElectronName_,
false,
true);
98 std::vector<uint8_t>
taus;
99 for (
const auto&
t : tausProd) {
102 auto tausTable = std::make_unique<nanoaod::FlatTable>(tausProd.size(),
tauName_,
false,
true);
106 for (
const auto&
p : photonsProd) {
109 auto photonsTable = std::make_unique<nanoaod::FlatTable>(photonsProd.size(),
photonName_,
false,
true);
116 lowPtElectronsTable->addColumn<uint8_t>(
name_, lowPtEles,
doc_);
131 desc.add<
std::string>(
"name")->setComment(
"suffix name of the output flat table");
133 "a bitmap defining the objects that remain after selection and cross cleaning");
134 desc.add<
edm::InputTag>(
"jets")->setComment(
"a jet collection derived from pat::Jet");
135 desc.add<
edm::InputTag>(
"muons")->setComment(
"a muon collection derived from pat::Muon");
136 desc.add<
edm::InputTag>(
"electrons")->setComment(
"an electron collection derived from pat::Electron");
138 ->setComment(
"an optional electron collection derived from pat::Electron, empty=>not used");
139 desc.add<
edm::InputTag>(
"taus")->setComment(
"a tau collection derived from pat::Tau");
140 desc.add<
edm::InputTag>(
"photons")->setComment(
"a photon collection derived from pat::Photon");
142 desc.add<
std::string>(
"jetSel")->setComment(
"function on pat::Jet defining the selection of jets");
143 desc.add<
std::string>(
"muonSel")->setComment(
"function on pat::Muon defining the selection of muons");
144 desc.add<
std::string>(
"electronSel")->setComment(
"function on pat::Electron defining the selection of electrons");
146 ->setComment(
"function on pat::Electron defining the selection on alternative electrons collection");
147 desc.add<
std::string>(
"tauSel")->setComment(
"function on pat::Tau defining the selection on taus");
148 desc.add<
std::string>(
"photonSel")->setComment(
"function on pat::Photon defining the selection on photons");
150 desc.add<
std::string>(
"jetName")->setComment(
"name of the jet mask flat table output");
151 desc.add<
std::string>(
"muonName")->setComment(
"name of the muon mask flat table output");
152 desc.add<
std::string>(
"electronName")->setComment(
"name of the electron mask flat table output");
153 desc.add<
std::string>(
"lowPtElectronName")->setComment(
"name of the alternative electron mask flat table output");
154 desc.add<
std::string>(
"tauName")->setComment(
"name of the tau mask flat table output");
155 desc.add<
std::string>(
"photonName")->setComment(
"name of the photon mask flat table output");
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
const edm::EDGetTokenT< edm::View< pat::Photon > > photons_
const edm::EDGetTokenT< edm::View< pat::Jet > > jets_
muons
the two sets of parameters below are mutually exclusive, depending if RECO or ALCARECO is used the us...
const StringCutObjectSelector< pat::Jet > jetSel_
const StringCutObjectSelector< pat::Muon > muonSel_
const edm::EDGetTokenT< edm::View< pat::Tau > > taus_
const StringCutObjectSelector< pat::Photon > photonSel_
const std::string tauName_
edm::EDGetTokenT< edm::View< pat::Electron > > lowPtElectrons_
#define DEFINE_FWK_MODULE(type)
void produce(edm::Event &, const edm::EventSetup &) override
const std::string jetName_
const std::string lowPtElectronName_
const StringCutObjectSelector< pat::Tau > tauSel_
const std::string muonName_
const std::string photonName_
const edm::EDGetTokenT< edm::View< pat::Electron > > electrons_
const std::string electronName_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
const StringCutObjectSelector< pat::Electron > electronSel_
const edm::EDGetTokenT< edm::View< pat::Muon > > muons_
virtual void objectSelection(const edm::View< pat::Jet > &jets, const edm::View< pat::Muon > &muons, const edm::View< pat::Electron > &eles, const edm::View< pat::Tau > &taus, const edm::View< pat::Photon > &photons, std::vector< uint8_t > &jetBits, std::vector< uint8_t > &muonBits, std::vector< uint8_t > &eleBits, std::vector< uint8_t > &tauBits, std::vector< uint8_t > &photonBits)
NanoAODBaseCrossCleaner(const edm::ParameterSet &)
const StringCutObjectSelector< pat::Electron > lowPtElectronSel_