35 m_l1SeedsLogicalExpression(parSet.getParameter<
string>(
"L1SeedsLogicalExpression")),
36 m_l1GtObjectMapTag(parSet.getParameter<
edm::
InputTag>(
"L1ObjectMapInputTag")),
38 m_l1GlobalTag(parSet.getParameter<
edm::
InputTag>(
"L1GlobalInputTag")),
40 m_l1MuonCollectionsTag(parSet.getParameter<
edm::
InputTag>(
"L1MuonInputTag")),
41 m_l1MuonTag(m_l1MuonCollectionsTag),
43 m_l1MuonShowerCollectionsTag(
44 parSet.getParameter<
edm::
InputTag>(
"L1MuonShowerInputTag")),
45 m_l1MuonShowerTag(m_l1MuonShowerCollectionsTag),
47 m_l1EGammaCollectionsTag(parSet.getParameter<
edm::
InputTag>(
"L1EGammaInputTag")),
48 m_l1EGammaTag(m_l1EGammaCollectionsTag),
50 m_l1JetCollectionsTag(parSet.getParameter<
edm::
InputTag>(
"L1JetInputTag")),
51 m_l1JetTag(m_l1JetCollectionsTag),
53 m_l1TauCollectionsTag(parSet.getParameter<
edm::
InputTag>(
"L1TauInputTag")),
54 m_l1TauTag(m_l1TauCollectionsTag),
56 m_l1EtSumCollectionsTag(parSet.getParameter<
edm::
InputTag>(
"L1EtSumInputTag")),
57 m_l1EtSumTag(m_l1EtSumCollectionsTag),
59 m_l1GlobalDecision(
false),
62 throw cms::Exception(
"FailModule") <<
"\nTrying to seed with an empty L1SeedsLogicalExpression.\n" << std::endl;
98 desc.add<
string>(
"L1SeedsLogicalExpression",
"");
107 descriptions.
add(
"hltL1TSeed",
desc);
149 LogTrace(
"HLTL1TSeed") <<
"\nHLTL1TSeed::hltFilter " 150 <<
"\n Dump TriggerFilterObjectWithRefs\n" 153 vector<l1t::MuonRef> seedsL1Mu;
155 const size_t sizeSeedsL1Mu = seedsL1Mu.size();
159 LogTrace(
"HLTL1TSeed") <<
"\n L1Mu seeds: " << sizeSeedsL1Mu << endl << endl;
161 for (
size_t i = 0;
i != sizeSeedsL1Mu;
i++) {
169 <<
"pt = " <<
obj->pt() <<
"\t" 170 <<
"eta = " <<
obj->eta() <<
"\t" 171 <<
"phi = " <<
obj->phi();
174 vector<l1t::MuonShowerRef> seedsL1MuShower;
176 const size_t sizeSeedsL1MuShower = seedsL1MuShower.size();
180 LogTrace(
"HLTL1TSeed") <<
"\n L1MuShower seeds: " << sizeSeedsL1MuShower << endl << endl;
182 for (
size_t i = 0;
i != sizeSeedsL1MuShower;
i++) {
185 LogTrace(
"HLTL1TSeed") <<
"\tL1MuShower " 187 <<
"pt = " <<
obj->pt() <<
"\t" 188 <<
"eta = " <<
obj->eta() <<
"\t" 189 <<
"phi = " <<
obj->phi();
192 vector<l1t::EGammaRef> seedsL1EG;
194 const size_t sizeSeedsL1EG = seedsL1EG.size();
196 LogTrace(
"HLTL1TSeed") <<
"\n L1EG seeds: " << sizeSeedsL1EG << endl << endl;
198 for (
size_t i = 0;
i != sizeSeedsL1EG;
i++) {
203 <<
"pt = " <<
obj->pt() <<
"\t" 204 <<
"eta = " <<
obj->eta() <<
"\t" 205 <<
"phi = " <<
obj->phi();
208 vector<l1t::JetRef> seedsL1Jet;
210 const size_t sizeSeedsL1Jet = seedsL1Jet.size();
212 LogTrace(
"HLTL1TSeed") <<
"\n L1Jet seeds: " << sizeSeedsL1Jet << endl << endl;
214 for (
size_t i = 0;
i != sizeSeedsL1Jet;
i++) {
217 LogTrace(
"HLTL1TSeed") <<
"\tL1Jet " 219 <<
"pt = " <<
obj->pt() <<
"\t" 220 <<
"eta = " <<
obj->eta() <<
"\t" 221 <<
"phi = " <<
obj->phi();
224 vector<l1t::TauRef> seedsL1Tau;
226 const size_t sizeSeedsL1Tau = seedsL1Tau.size();
228 LogTrace(
"HLTL1TSeed") <<
"\n L1Tau seeds: " << sizeSeedsL1Tau << endl << endl;
230 for (
size_t i = 0;
i != sizeSeedsL1Tau;
i++) {
233 LogTrace(
"HLTL1TSeed") <<
"\tL1Tau " 235 <<
"pt = " <<
obj->pt() <<
"\t" 236 <<
"eta = " <<
obj->eta() <<
"\t" 237 <<
"phi = " <<
obj->phi();
240 vector<l1t::EtSumRef> seedsL1EtSumETT;
242 const size_t sizeSeedsL1EtSumETT = seedsL1EtSumETT.size();
243 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum ETT seeds: " << sizeSeedsL1EtSumETT << endl << endl;
245 for (
size_t i = 0;
i != sizeSeedsL1EtSumETT;
i++) {
248 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum ETT" 250 <<
"pt = " <<
obj->pt() <<
"\t" 251 <<
"eta = " <<
obj->eta() <<
"\t" 252 <<
"phi = " <<
obj->phi();
255 vector<l1t::EtSumRef> seedsL1EtSumHTT;
257 const size_t sizeSeedsL1EtSumHTT = seedsL1EtSumHTT.size();
258 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum HTT seeds: " << sizeSeedsL1EtSumHTT << endl << endl;
260 for (
size_t i = 0;
i != sizeSeedsL1EtSumHTT;
i++) {
263 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum HTT" 265 <<
"pt = " <<
obj->pt() <<
"\t" 266 <<
"eta = " <<
obj->eta() <<
"\t" 267 <<
"phi = " <<
obj->phi();
270 vector<l1t::EtSumRef> seedsL1EtSumETM;
272 const size_t sizeSeedsL1EtSumETM = seedsL1EtSumETM.size();
273 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum ETM seeds: " << sizeSeedsL1EtSumETM << endl << endl;
275 for (
size_t i = 0;
i != sizeSeedsL1EtSumETM;
i++) {
278 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum ETM" 280 <<
"pt = " <<
obj->pt() <<
"\t" 281 <<
"eta = " <<
obj->eta() <<
"\t" 282 <<
"phi = " <<
obj->phi();
285 vector<l1t::EtSumRef> seedsL1EtSumETMHF;
287 const size_t sizeSeedsL1EtSumETMHF = seedsL1EtSumETMHF.size();
288 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum ETMHF seeds: " << sizeSeedsL1EtSumETMHF << endl << endl;
290 for (
size_t i = 0;
i != sizeSeedsL1EtSumETMHF;
i++) {
293 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum ETMHF" 295 <<
"pt = " <<
obj->pt() <<
"\t" 296 <<
"eta = " <<
obj->eta() <<
"\t" 297 <<
"phi = " <<
obj->phi();
300 vector<l1t::EtSumRef> seedsL1EtSumHTM;
302 const size_t sizeSeedsL1EtSumHTM = seedsL1EtSumHTM.size();
303 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum HTM seeds: " << sizeSeedsL1EtSumHTM << endl << endl;
305 for (
size_t i = 0;
i != sizeSeedsL1EtSumHTM;
i++) {
308 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum HTM" 310 <<
"pt = " <<
obj->pt() <<
"\t" 311 <<
"eta = " <<
obj->eta() <<
"\t" 312 <<
"phi = " <<
obj->phi();
315 vector<l1t::EtSumRef> seedsL1EtSumCentrality;
317 const size_t sizeSeedsL1EtSumCentrality = seedsL1EtSumCentrality.size();
318 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum Centrality seeds: " << sizeSeedsL1EtSumCentrality << endl << endl;
320 for (
size_t i = 0;
i != sizeSeedsL1EtSumCentrality;
i++) {
323 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum Centrality Bits: " << std::bitset<8>(
obj->hwPt())
324 <<
" (hwPt = " <<
obj->hwPt() <<
")";
327 vector<l1t::EtSumRef> seedsL1EtSumMinBiasHFP0;
329 const size_t sizeSeedsL1EtSumMinBiasHFP0 = seedsL1EtSumMinBiasHFP0.size();
330 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum MinBiasHFP0 seeds: " << sizeSeedsL1EtSumMinBiasHFP0 << endl << endl;
332 for (
size_t i = 0;
i != sizeSeedsL1EtSumMinBiasHFP0;
i++) {
335 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum MinBiasHFP0: hwPt = " <<
obj->hwPt();
338 vector<l1t::EtSumRef> seedsL1EtSumMinBiasHFM0;
340 const size_t sizeSeedsL1EtSumMinBiasHFM0 = seedsL1EtSumMinBiasHFM0.size();
341 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum MinBiasHFM0 seeds: " << sizeSeedsL1EtSumMinBiasHFM0 << endl << endl;
343 for (
size_t i = 0;
i != sizeSeedsL1EtSumMinBiasHFM0;
i++) {
346 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum MinBiasHFM0: hwPt = " <<
obj->hwPt();
349 vector<l1t::EtSumRef> seedsL1EtSumMinBiasHFP1;
351 const size_t sizeSeedsL1EtSumMinBiasHFP1 = seedsL1EtSumMinBiasHFP1.size();
352 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum MinBiasHFP1 seeds: " << sizeSeedsL1EtSumMinBiasHFP1 << endl << endl;
354 for (
size_t i = 0;
i != sizeSeedsL1EtSumMinBiasHFP1;
i++) {
357 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum MinBiasHFP1: hwPt = " <<
obj->hwPt();
360 vector<l1t::EtSumRef> seedsL1EtSumMinBiasHFM1;
362 const size_t sizeSeedsL1EtSumMinBiasHFM1 = seedsL1EtSumMinBiasHFM1.size();
363 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum MinBiasHFM1 seeds: " << sizeSeedsL1EtSumMinBiasHFM1 << endl << endl;
365 for (
size_t i = 0;
i != sizeSeedsL1EtSumMinBiasHFM1;
i++) {
368 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum MinBiasHFM1: hwPt = " <<
obj->hwPt();
371 vector<l1t::EtSumRef> seedsL1EtSumTowerCount;
373 const size_t sizeSeedsL1EtSumTowerCount = seedsL1EtSumTowerCount.size();
374 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum TowerCount seeds: " << sizeSeedsL1EtSumTowerCount << endl << endl;
376 for (
size_t i = 0;
i != sizeSeedsL1EtSumTowerCount;
i++) {
379 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum TowerCount: hwPt = " <<
obj->hwPt();
382 vector<l1t::EtSumRef> seedsL1EtSumAsymEt;
384 const size_t sizeSeedsL1EtSumAsymEt = seedsL1EtSumAsymEt.size();
385 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum AsymEt seeds: " << sizeSeedsL1EtSumAsymEt << endl << endl;
387 for (
size_t i = 0;
i != sizeSeedsL1EtSumAsymEt;
i++) {
390 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum AsymEt: hwPt = " <<
obj->hwPt();
393 vector<l1t::EtSumRef> seedsL1EtSumAsymHt;
395 const size_t sizeSeedsL1EtSumAsymHt = seedsL1EtSumAsymHt.size();
396 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum AsymHt seeds: " << sizeSeedsL1EtSumAsymHt << endl << endl;
398 for (
size_t i = 0;
i != sizeSeedsL1EtSumAsymHt;
i++) {
401 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum AsymHt: hwPt = " <<
obj->hwPt();
404 vector<l1t::EtSumRef> seedsL1EtSumAsymEtHF;
406 const size_t sizeSeedsL1EtSumAsymEtHF = seedsL1EtSumAsymEtHF.size();
407 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum AsymEtHF seeds: " << sizeSeedsL1EtSumAsymEtHF << endl << endl;
409 for (
size_t i = 0;
i != sizeSeedsL1EtSumAsymEtHF;
i++) {
412 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum AsymEtHF: hwPt = " <<
obj->hwPt();
415 vector<l1t::EtSumRef> seedsL1EtSumAsymHtHF;
417 const size_t sizeSeedsL1EtSumAsymHtHF = seedsL1EtSumAsymHtHF.size();
418 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum AsymHtHF seeds: " << sizeSeedsL1EtSumAsymHtHF << endl << endl;
420 for (
size_t i = 0;
i != sizeSeedsL1EtSumAsymHtHF;
i++) {
423 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum AsymHtHF: hwPt = " <<
obj->hwPt();
426 LogTrace(
"HLTL1TSeed") <<
" \n\n" << endl;
438 std::list<int> listMuon;
439 std::list<int> listMuonShower;
441 std::list<int> listEG;
443 std::list<int> listJet;
444 std::list<int> listTau;
446 std::list<int> listETM;
447 std::list<int> listETT;
448 std::list<int> listHTT;
449 std::list<int> listHTM;
450 std::list<int> listETMHF;
452 std::list<int> listJetCounts;
454 std::list<int> listCentrality;
455 std::list<int> listMinBiasHFP0;
456 std::list<int> listMinBiasHFM0;
457 std::list<int> listMinBiasHFP1;
458 std::list<int> listMinBiasHFM1;
459 std::list<int> listTotalEtEm;
460 std::list<int> listMissingEtHF;
461 std::list<int> listTowerCount;
462 std::list<int> listAsymEt;
463 std::list<int> listAsymHt;
464 std::list<int> listAsymEtHF;
465 std::list<int> listAsymHtHF;
471 if (!uGtAlgoBlocks.
isValid()) {
473 <<
" requested in configuration, but not found in the event." << std::endl;
479 if (uGtAlgoBlocks->
isEmpty(0)) {
481 <<
" is empty for BX=0.";
489 if (!gtObjectMapRecord.
isValid()) {
491 <<
" requested in configuration, but not found in the event." << std::endl;
497 const std::vector<GlobalObjectMap>& objMaps = gtObjectMapRecord->
gtObjectMap();
499 LogTrace(
"HLTL1TSeed") <<
"\nHLTL1Seed" 500 <<
"\n--------------------------------------------------------------------------------------" 501 "-------------------------------";
504 <<
"\n\tAlgorithms in L1TriggerObjectMapRecord and GT results ( emulated | initial | prescaled | final ) " 508 <<
"\tAlgoBit" << std::setw(40) <<
"algoName" 509 <<
"\t (emul|ini|pre|fin)" << endl;
511 LogTrace(
"HLTL1TSeed") <<
"----------------------------------------------------------------------------------------" 512 "-----------------------------";
514 for (
size_t imap = 0; imap < objMaps.size(); imap++) {
515 int bit = objMaps[imap].algoBitNumber();
517 int emulDecision = objMaps[imap].algoGtlResult();
520 int initDecision = (uGtAlgoBlocks->
at(0, 0)).getAlgoDecisionInitial(
bit);
521 int presDecision = (uGtAlgoBlocks->
at(0, 0)).getAlgoDecisionInterm(
bit);
522 int finlDecision = (uGtAlgoBlocks->
at(0, 0)).getAlgoDecisionFinal(
bit);
524 if (emulDecision != initDecision) {
525 LogTrace(
"HLTL1TSeed") <<
"L1T decision (emulated vs. unpacked initial) is not the same:" 526 <<
"\n\tbit = " << std::setw(3) <<
bit << std::setw(40) << objMaps[imap].algoName()
527 <<
"\t emulated decision = " << emulDecision
528 <<
"\t unpacked initial decision = " << initDecision
529 <<
"\nThis should not happen. Include the L1TGtEmulCompare module in the sequence." 533 LogTrace(
"HLTL1TSeed") <<
"\t" << std::setw(3) << imap <<
"\tbit = " << std::setw(3) <<
bit << std::setw(40)
534 << objMaps[imap].algoName() <<
"\t ( " << emulDecision <<
" | " << initDecision <<
" | " 535 << presDecision <<
" | " << finlDecision <<
" ) ";
545 return (uGtAlgoBlocks->
at(0, 0)).getFinalOR();
552 for (
auto&
i : algOpTokenVector) {
555 i.tokenResult =
false;
560 for (
auto&
i : algOpTokenVector) {
565 if (objMap ==
nullptr) {
568 <<
", requested as seed by a HLT path, cannot be matched to a L1 algo name in any GlobalObjectMap\n" 569 <<
"Please check if algorithm " <<
algoName <<
" is present in the L1 menu\n" 576 bool finalAlgoDecision = (uGtAlgoBlocks->
at(0, 0)).getAlgoDecisionFinal(
bit);
577 i.tokenResult = finalAlgoDecision;
587 <<
"\n Result for logical expression after update of algOpTokens: " << seedsResult <<
"\n" 594 for (std::vector<GlobalLogicParser::OperandToken>::const_iterator itSeed =
m_l1AlgoSeeds.begin();
599 LogTrace(
"HLTL1TSeed") <<
"\n ---------------- algo seed name = " << algoSeedName << endl;
603 if (objMap ==
nullptr) {
607 <<
"\nAlgorithm " << algoSeedName
608 <<
", requested as seed by a HLT path, cannot be matched to a L1 algo name in any GlobalObjectMap\n" 609 <<
"Please check if algorithm " << algoSeedName <<
" is present in the L1 menu\n" 617 bool algoSeedResultMaskAndPresc = uGtAlgoBlocks->
at(0, 0).getAlgoDecisionFinal(algoSeedBitNumber);
619 LogTrace(
"HLTL1TSeed") <<
"\n\tAlgo seed " << algoSeedName <<
" result emulated | final = " << algoSeedResult
620 <<
" | " << algoSeedResultMaskAndPresc << endl;
624 if (!algoSeedResultMaskAndPresc)
633 const std::vector<GlobalLogicParser::OperandToken>& opTokenVecObjMap = objMap->
operandTokenVector();
634 const std::vector<L1TObjectTypeInCond>& condObjTypeVec = objMap->
objectTypeVector();
635 const std::vector<CombinationsInCond>& condCombinations = objMap->
combinationVector();
637 LogTrace(
"HLTL1TSeed") <<
"\n\talgoName =" << objMap->
algoName() <<
"\talgoBitNumber = " << algoSeedBitNumber
638 <<
"\talgoGtlResult = " << algoSeedResult << endl
641 if (opTokenVecObjMap.size() != condObjTypeVec.size()) {
644 <<
"\nhas object map for bit number " << algoSeedBitNumber
645 <<
" which contains different size vectors of operand tokens and of condition object types!" << std::endl;
647 assert(opTokenVecObjMap.size() == condObjTypeVec.size());
650 if (opTokenVecObjMap.size() != condCombinations.size()) {
653 <<
"\nhas object map for bit number " << algoSeedBitNumber
654 <<
" which contains different size vectors of operand tokens and of condition object combinations!" 657 assert(opTokenVecObjMap.size() == condCombinations.size());
662 for (
size_t condNumber = 0; condNumber < opTokenVecObjMap.size(); condNumber++) {
663 std::vector<l1t::GlobalObject> condObjType = condObjTypeVec[condNumber];
665 for (
auto& jOb : condObjType) {
666 LogTrace(
"HLTL1TSeed") << setw(15) <<
"\tcondObjType = " << jOb << endl;
669 const std::string condName = opTokenVecObjMap[condNumber].tokenName;
670 bool condResult = opTokenVecObjMap[condNumber].tokenResult;
682 LogTrace(
"HLTL1TSeed") << setw(15) <<
"\tcondCombinations = " << condComb->size() << endl;
684 for (
auto const& itComb : (*condComb)) {
685 LogTrace(
"HLTL1TSeed") << setw(15) <<
"\tnew combination" << endl;
689 for (
auto itObject = itComb.begin(); itObject != itComb.end(); itObject++) {
692 if (condObjType.empty()) {
694 <<
"\talgoName = " << objMap->
algoName()
695 <<
" is object-less L1 algorithm, so do not attempt to store any objects to the list of seeds.\n" 707 LogTrace(
"HLTL1TSeed") <<
"\tAdd object of type " << objTypeVal <<
" and index " << (*itObject)
708 <<
" to the seed list." << std::endl;
715 switch (objTypeVal) {
717 listMuon.push_back(*itObject);
720 listMuonShower.push_back(*itObject);
723 listEG.push_back(*itObject);
726 listJet.push_back(*itObject);
729 listTau.push_back(*itObject);
732 listETM.push_back(*itObject);
735 listETT.push_back(*itObject);
738 listHTT.push_back(*itObject);
741 listHTM.push_back(*itObject);
744 listETMHF.push_back(*itObject);
747 listTowerCount.push_back(*itObject);
750 listMinBiasHFP0.push_back(*itObject);
753 listMinBiasHFM0.push_back(*itObject);
756 listMinBiasHFP1.push_back(*itObject);
759 listMinBiasHFM1.push_back(*itObject);
762 listTotalEtEm.push_back(*itObject);
765 listAsymEt.push_back(*itObject);
768 listAsymHt.push_back(*itObject);
771 listAsymEtHF.push_back(*itObject);
774 listAsymHtHF.push_back(*itObject);
784 listCentrality.push_back(*itObject);
795 LogTrace(
"HLTL1TSeed") <<
"\n HLTL1TSeed::hltFilter " 796 <<
"\n Unknown object of type " << objTypeVal <<
" and index " << (*itObject)
797 <<
" in the seed list." << std::endl;
815 listMuonShower.sort();
816 listMuonShower.unique();
842 listJetCounts.sort();
843 listJetCounts.unique();
845 listCentrality.sort();
846 listCentrality.unique();
848 listMinBiasHFP0.sort();
849 listMinBiasHFP0.unique();
851 listMinBiasHFM0.sort();
852 listMinBiasHFM0.unique();
854 listMinBiasHFP1.sort();
855 listMinBiasHFP1.unique();
857 listMinBiasHFM1.sort();
858 listMinBiasHFM1.unique();
860 listTotalEtEm.sort();
861 listTotalEtEm.unique();
863 listMissingEtHF.sort();
864 listMissingEtHF.unique();
866 listTowerCount.sort();
867 listTowerCount.unique();
876 listAsymEtHF.unique();
879 listAsymHtHF.unique();
885 if (!listMuon.empty()) {
889 if (!
muons.isValid()) {
891 <<
"\nrequested in configuration, but not found in the event." 892 <<
"\nNo muons added to filterproduct." << endl;
894 for (std::list<int>::const_iterator itObj = listMuon.begin(); itObj != listMuon.end(); ++itObj) {
905 if (!listMuonShower.empty()) {
911 <<
"\nrequested in configuration, but not found in the event." 912 <<
"\nNo muon showers added to filterproduct." << endl;
914 for (std::list<int>::const_iterator itObj = listMuonShower.begin(); itObj != listMuonShower.end(); ++itObj) {
916 unsigned int index = muonShowers->
begin(0) - muonShowers->
begin() + *itObj;
925 if (!listEG.empty()) {
930 <<
"\nrequested in configuration, but not found in the event." 931 <<
"\nNo egammas added to filterproduct." << endl;
933 for (std::list<int>::const_iterator itObj = listEG.begin(); itObj != listEG.end(); ++itObj) {
944 if (!listJet.empty()) {
948 if (!
jets.isValid()) {
950 <<
"\nrequested in configuration, but not found in the event." 951 <<
"\nNo jets added to filterproduct." << endl;
953 for (std::list<int>::const_iterator itObj = listJet.begin(); itObj != listJet.end(); ++itObj) {
955 unsigned int index =
jets->begin(0) -
jets->begin() + *itObj;
964 if (!listTau.empty()) {
968 if (!
taus.isValid()) {
970 <<
"\nrequested in configuration, but not found in the event." 971 <<
"\nNo taus added to filterproduct." << endl;
973 for (std::list<int>::const_iterator itObj = listTau.begin(); itObj != listTau.end(); ++itObj) {
975 unsigned int index =
taus->begin(0) -
taus->begin() + *itObj;
988 <<
"\nrequested in configuration, but not found in the event." 989 <<
"\nNo etsums added to filterproduct." << endl;
993 for (iter = etsums->
begin(0); iter != etsums->
end(0); ++iter) {
996 switch (iter->getType()) {
998 if (!listETT.empty())
1002 if (!listHTT.empty())
1006 if (!listETM.empty())
1010 if (!listHTM.empty())
1014 if (!listETMHF.empty())
1018 if (!listCentrality.empty())
1022 if (!listMinBiasHFP0.empty())
1026 if (!listMinBiasHFM0.empty())
1030 if (!listMinBiasHFP1.empty())
1034 if (!listMinBiasHFM1.empty())
1038 if (!listTotalEtEm.empty())
1042 if (!listTowerCount.empty())
1046 if (!listAsymEt.empty())
1050 if (!listAsymHt.empty())
1054 if (!listAsymEtHF.empty())
1058 if (!listAsymHtHF.empty())
1062 LogTrace(
"HLTL1TSeed") <<
" L1EtSum seed of currently unsuported HLT TriggerType. l1t::EtSum type: " 1063 << iter->getType() <<
"\n";
1088 LogTrace(
"HLTL1TSeed") <<
"\nHLTL1Seed:seedsL1TriggerObjectMaps returning " << seedsResult << endl << endl;
const std::vector< L1TObjectTypeInCond > & objectTypeVector() const
BXVector< EGamma > EGammaBxCollection
std::string m_l1SeedsLogicalExpression
void getObjects(Vids &ids, VRphoton &refs) const
various physics-level getters:
edm::EDGetTokenT< l1t::EtSumBxCollection > m_l1EtSumToken
edm::Ref< EGammaBxCollection > EGammaRef
std::vector< const std::vector< GlobalLogicParser::TokenRPN > * > m_l1AlgoSeedsRpn
vector of Rpn vectors for the required algorithms for seeding
unsigned int key(const_iterator &iter) const
edm::InputTag m_l1MuonTag
edm::InputTag m_l1MuonShowerTag
HLTL1TSeed(const edm::ParameterSet &)
constructor
enum start value shifted to 81 so as to avoid clashes with PDG codes
bool seedsL1TriggerObjectMaps(edm::Event &, trigger::TriggerFilterObjectWithRefs &)
seeding is done via L1 trigger object maps, considering the objects which fired in L1 ...
void dumpTriggerFilterObjectWithRefs(trigger::TriggerFilterObjectWithRefs &) const
detailed print of filter content
const std::vector< CombinationsInCond > & combinationVector() const
edm::Ref< JetBxCollection > JetRef
edm::Ref< EtSumBxCollection > EtSumRef
bool isEmpty(int bx) const
BXVector< Tau > TauBxCollection
std::vector< GlobalLogicParser::OperandToken > expressionSeedsOperandList()
const CombinationsInCond * getCombinationsInCond(const std::string &condNameVal) const
return all the combinations passing the requirements imposed in condition condNameVal ...
const_iterator begin(int bx) const
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref<C>)
std::vector< T >::const_iterator const_iterator
BXVector< EtSum > EtSumBxCollection
bool algoGtlResult() const
edm::InputTag m_l1GtObjectMapTag
InputTag for L1 Global Trigger object maps. This is done per menu. Should be part of Run...
~HLTL1TSeed() override
destructor
edm::EDGetTokenT< l1t::JetBxCollection > m_l1JetToken
std::vector< OperandToken > & operandTokenVector()
return the vector of operand tokens
GlobalLogicParser m_l1AlgoLogicParser
logic parser for m_l1SeedsLogicalExpression
edm::EDGetTokenT< l1t::EGammaBxCollection > m_l1EGammaToken
edm::InputTag m_l1EtSumTag
edm::Ref< TauBxCollection > TauRef
#define DEFINE_FWK_MODULE(type)
BXVector< MuonShower > MuonShowerBxCollection
const T & at(int bx, unsigned i) const
const std::vector< GlobalLogicParser::OperandToken > & operandTokenVector() const
edm::Ref< MuonShowerBxCollection > MuonShowerRef
const std::vector< GlobalObjectMap > & gtObjectMap() const
get / set the vector of object maps
BXVector< Muon > MuonBxCollection
bool m_isDebugEnabled
cache edm::isDebugEnabled()
std::vector< GlobalLogicParser::OperandToken > m_l1AlgoSeeds
list of required algorithms for seeding
BXVector< Jet > JetBxCollection
const GlobalObjectMap * getObjectMap(const std::string &algoNameVal) const
return the object map for the algorithm algoNameVal
edm::InputTag m_l1EGammaTag
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
void add(std::string const &label, ParameterSetDescription const &psetDescription)
const std::string & algoName() const
destructor
int algoBitNumber() const
get / set bit number for algorithm in the object map
edm::InputTag m_l1GlobalTag
InputTag for L1 Global Trigger.
edm::EDGetTokenT< GlobalAlgBlkBxCollection > m_l1GlobalToken
const_iterator end(int bx) const
edm::Ref< MuonBxCollection > MuonRef
bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) override
filter the event
bool m_l1GlobalDecision
flag to pass if L1TGlobal accept
Log< level::Warning, false > LogWarning
virtual const bool expressionResult() const
std::vector< SingleCombInCond > CombinationsInCond
all the object combinations evaluated to true in the condition
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
parameter description
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
std::vector< std::vector< const std::vector< l1t::GlobalObject > * > > m_l1AlgoSeedsObjType
vector of object-type vectors for each condition in the required algorithms for seeding ...
edm::EDGetTokenT< l1t::MuonBxCollection > m_l1MuonToken
edm::EDGetTokenT< l1t::TauBxCollection > m_l1TauToken
edm::EDGetTokenT< l1t::MuonShowerBxCollection > m_l1MuonShowerToken
edm::EDGetTokenT< GlobalObjectMapRecord > m_l1GtObjectMapToken