Definition at line 115 of file TriggerObjectTableProducer.cc.
119 std::vector<std::pair<const pat::TriggerObjectStandAlone *, const SelectedObject *>> selected;
120 for (
const auto &
obj : *
src) {
122 if (
sel.match(
obj) && (
sel.skipObjectsNotPassingQualityBits ? (
int(
sel.qualityBits(
obj)) > 0) :
true)) {
123 selected.emplace_back(&
obj, &
sel);
130 std::map<const pat::TriggerObjectStandAlone *, int> selected_bits;
131 for (
unsigned int i = 0;
i < selected.size(); ++
i) {
132 const auto &
obj = *selected[
i].first;
133 const auto &
sel = *selected[
i].second;
136 for (
unsigned int j = 0;
j <
i; ++
j) {
137 const auto &obj2 = *selected[
j].first;
138 const auto &sel2 = *selected[
j].second;
140 selected_bits[&obj2] |= selected_bits[&
obj];
141 selected.erase(selected.begin() +
i);
158 std::vector<pair<pat::TriggerObjectStandAlone, int>> l1Objects;
164 l1Objects.emplace_back(l1obj, it->hwIso());
170 switch (it->getType()) {
173 l1obj.setCollection(
"L1ETM");
178 l1obj.setCollection(
"L1ETMHF");
183 l1obj.setCollection(
"L1ETT");
188 l1obj.setCollection(
"L1ETEm");
193 l1obj.setCollection(
"L1HTT");
198 l1obj.setCollection(
"L1HTTHF");
203 l1obj.setCollection(
"L1HTM");
208 l1obj.setCollection(
"L1HTMHF");
215 l1Objects.emplace_back(l1obj, it->hwIso());
222 l1Objects.emplace_back(l1obj, it->hwIso());
229 l1obj.setCharge(it->charge());
230 l1Objects.emplace_back(l1obj, it->hwIso());
237 l1Objects.emplace_back(l1obj, it->hwIso());
240 unsigned int nobj = selected.size();
241 std::vector<float>
pt(nobj, 0),
eta(nobj, 0),
phi(nobj, 0), l1pt(nobj, 0), l1pt_2(nobj, 0), l2pt(nobj, 0);
242 std::vector<int>
id(nobj, 0), bits(nobj, 0), l1iso(nobj, 0), l1charge(nobj, 0);
243 for (
unsigned int i = 0;
i < nobj; ++
i) {
244 const auto &
obj = *selected[
i].first;
245 const auto &
sel = *selected[
i].second;
250 bits[
i] = selected_bits[&
obj];
252 float best =
sel.l1DR2;
253 for (
const auto &l1obj : l1Objects) {
254 const auto &
seed = l1obj.first;
256 if (dr2 < best &&
sel.l1cut(
seed)) {
258 l1iso[
i] = l1obj.second;
259 l1charge[
i] =
seed.charge();
263 if (
sel.l1DR2_2 > 0) {
264 float best =
sel.l1DR2_2;
265 for (
const auto &l1obj : l1Objects) {
266 const auto &
seed = l1obj.first;
268 if (dr2 < best &&
sel.l1cut_2(
seed)) {
269 l1pt_2[
i] =
seed.pt();
274 float best =
sel.l2DR2;
275 for (
const auto &
seed : *
src) {
277 if (dr2 < best &&
sel.l2cut(
seed)) {
284 auto tab = std::make_unique<nanoaod::FlatTable>(nobj,
name_,
false,
false);
285 tab->addColumn<
int>(
"id",
id,
idDoc_);
286 tab->addColumn<
float>(
"pt",
pt,
"pt", 12);
287 tab->addColumn<
float>(
"eta",
eta,
"eta", 12);
288 tab->addColumn<
float>(
"phi",
phi,
"phi", 12);
289 tab->addColumn<
float>(
"l1pt", l1pt,
"pt of associated L1 seed", 8);
290 tab->addColumn<
int>(
"l1iso", l1iso,
"iso of associated L1 seed");
291 tab->addColumn<
int>(
"l1charge", l1charge,
"charge of associated L1 seed");
292 tab->addColumn<
float>(
"l1pt_2", l1pt_2,
"pt of associated secondary L1 seed", 8);
293 tab->addColumn<
float>(
"l2pt", l2pt,
"pt of associated 'L2' seed (i.e. HLT before tracking/PF)", 10);
294 tab->addColumn<
int>(
"filterBits", bits,
"extra bits of associated information: " +
bitsDoc_);
References funct::abs(), bitsDoc_, HLTMuonOfflineAnalyzer_cfi::deltaR2, MillePedeFileConverter_cfg::e, PVValHelper::eta, mps_fire::i, triggerObjects_cff::id, idDoc_, iEvent, createfilelist::int, dqmiolumiharvest::j, L1Analysis::kMissingEt, L1Analysis::kMissingEtHF, L1Analysis::kMissingHt, L1Analysis::kMissingHtHF, L1Analysis::kTotalEt, L1Analysis::kTotalEtEm, L1Analysis::kTotalHt, L1Analysis::kTotalHtHF, triggerObjects_cff::l1EG, l1EG_, triggerObjects_cff::l1Jet, l1Jet_, triggerObjects_cff::l1Muon, l1Muon_, triggerObjects_cff::l1Sum, l1Sum_, triggerObjects_cff::l1Tau, l1Tau_, eostools::move(), name_, getGTfromDQMFile::obj, phi, DiDispStaMuonMonitor_cfi::pt, fileCollector::seed, EgammaValidation_Wenu_cff::sel, sels_, pat::TriggerObject::setCollection(), TrackRefitter_38T_cff::src, src_, trigger::TriggerL1EG, trigger::TriggerL1ETM, trigger::TriggerL1ETT, trigger::TriggerL1HTM, trigger::TriggerL1HTT, trigger::TriggerL1Jet, trigger::TriggerL1Mu, and trigger::TriggerL1Tau.