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_l1EtSumZdcCollectionsTag(parSet.getParameter<
edm::
InputTag>(
"L1EtSumZdcInputTag")),
60 m_l1EtSumZdcTag(m_l1EtSumZdcCollectionsTag),
62 m_l1GlobalDecision(
false),
65 throw cms::Exception(
"FailModule") <<
"\nTrying to seed with an empty L1SeedsLogicalExpression.\n" << std::endl;
101 desc.add<
string>(
"L1SeedsLogicalExpression",
"");
111 descriptions.
add(
"hltL1TSeed",
desc);
156 LogTrace(
"HLTL1TSeed") <<
"\nHLTL1TSeed::hltFilter " 157 <<
"\n Dump TriggerFilterObjectWithRefs\n" 160 vector<l1t::MuonRef> seedsL1Mu;
162 const size_t sizeSeedsL1Mu = seedsL1Mu.size();
166 LogTrace(
"HLTL1TSeed") <<
"\n L1Mu seeds: " << sizeSeedsL1Mu << endl << endl;
168 for (
size_t i = 0;
i != sizeSeedsL1Mu;
i++) {
176 <<
"pt = " <<
obj->pt() <<
"\t" 177 <<
"eta = " <<
obj->eta() <<
"\t" 178 <<
"phi = " <<
obj->phi();
181 vector<l1t::MuonShowerRef> seedsL1MuShower;
183 const size_t sizeSeedsL1MuShower = seedsL1MuShower.size();
187 LogTrace(
"HLTL1TSeed") <<
"\n L1MuShower seeds: " << sizeSeedsL1MuShower << endl << endl;
189 for (
size_t i = 0;
i != sizeSeedsL1MuShower;
i++) {
192 LogTrace(
"HLTL1TSeed") <<
"\tL1MuShower " 194 <<
"pt = " <<
obj->pt() <<
"\t" 195 <<
"eta = " <<
obj->eta() <<
"\t" 196 <<
"phi = " <<
obj->phi();
199 vector<l1t::EGammaRef> seedsL1EG;
201 const size_t sizeSeedsL1EG = seedsL1EG.size();
203 LogTrace(
"HLTL1TSeed") <<
"\n L1EG seeds: " << sizeSeedsL1EG << endl << endl;
205 for (
size_t i = 0;
i != sizeSeedsL1EG;
i++) {
210 <<
"pt = " <<
obj->pt() <<
"\t" 211 <<
"eta = " <<
obj->eta() <<
"\t" 212 <<
"phi = " <<
obj->phi();
215 vector<l1t::JetRef> seedsL1Jet;
217 const size_t sizeSeedsL1Jet = seedsL1Jet.size();
219 LogTrace(
"HLTL1TSeed") <<
"\n L1Jet seeds: " << sizeSeedsL1Jet << endl << endl;
221 for (
size_t i = 0;
i != sizeSeedsL1Jet;
i++) {
224 LogTrace(
"HLTL1TSeed") <<
"\tL1Jet " 226 <<
"pt = " <<
obj->pt() <<
"\t" 227 <<
"eta = " <<
obj->eta() <<
"\t" 228 <<
"phi = " <<
obj->phi();
231 vector<l1t::TauRef> seedsL1Tau;
233 const size_t sizeSeedsL1Tau = seedsL1Tau.size();
235 LogTrace(
"HLTL1TSeed") <<
"\n L1Tau seeds: " << sizeSeedsL1Tau << endl << endl;
237 for (
size_t i = 0;
i != sizeSeedsL1Tau;
i++) {
240 LogTrace(
"HLTL1TSeed") <<
"\tL1Tau " 242 <<
"pt = " <<
obj->pt() <<
"\t" 243 <<
"eta = " <<
obj->eta() <<
"\t" 244 <<
"phi = " <<
obj->phi();
247 vector<l1t::EtSumRef> seedsL1EtSumETT;
249 const size_t sizeSeedsL1EtSumETT = seedsL1EtSumETT.size();
250 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum ETT seeds: " << sizeSeedsL1EtSumETT << endl << endl;
252 for (
size_t i = 0;
i != sizeSeedsL1EtSumETT;
i++) {
255 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum ETT" 257 <<
"pt = " <<
obj->pt() <<
"\t" 258 <<
"eta = " <<
obj->eta() <<
"\t" 259 <<
"phi = " <<
obj->phi();
262 vector<l1t::EtSumRef> seedsL1EtSumHTT;
264 const size_t sizeSeedsL1EtSumHTT = seedsL1EtSumHTT.size();
265 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum HTT seeds: " << sizeSeedsL1EtSumHTT << endl << endl;
267 for (
size_t i = 0;
i != sizeSeedsL1EtSumHTT;
i++) {
270 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum HTT" 272 <<
"pt = " <<
obj->pt() <<
"\t" 273 <<
"eta = " <<
obj->eta() <<
"\t" 274 <<
"phi = " <<
obj->phi();
277 vector<l1t::EtSumRef> seedsL1EtSumETM;
279 const size_t sizeSeedsL1EtSumETM = seedsL1EtSumETM.size();
280 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum ETM seeds: " << sizeSeedsL1EtSumETM << endl << endl;
282 for (
size_t i = 0;
i != sizeSeedsL1EtSumETM;
i++) {
285 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum ETM" 287 <<
"pt = " <<
obj->pt() <<
"\t" 288 <<
"eta = " <<
obj->eta() <<
"\t" 289 <<
"phi = " <<
obj->phi();
292 vector<l1t::EtSumRef> seedsL1EtSumETMHF;
294 const size_t sizeSeedsL1EtSumETMHF = seedsL1EtSumETMHF.size();
295 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum ETMHF seeds: " << sizeSeedsL1EtSumETMHF << endl << endl;
297 for (
size_t i = 0;
i != sizeSeedsL1EtSumETMHF;
i++) {
300 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum ETMHF" 302 <<
"pt = " <<
obj->pt() <<
"\t" 303 <<
"eta = " <<
obj->eta() <<
"\t" 304 <<
"phi = " <<
obj->phi();
307 vector<l1t::EtSumRef> seedsL1EtSumHTM;
309 const size_t sizeSeedsL1EtSumHTM = seedsL1EtSumHTM.size();
310 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum HTM seeds: " << sizeSeedsL1EtSumHTM << endl << endl;
312 for (
size_t i = 0;
i != sizeSeedsL1EtSumHTM;
i++) {
315 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum HTM" 317 <<
"pt = " <<
obj->pt() <<
"\t" 318 <<
"eta = " <<
obj->eta() <<
"\t" 319 <<
"phi = " <<
obj->phi();
322 vector<l1t::EtSumRef> seedsL1EtSumCentrality;
324 const size_t sizeSeedsL1EtSumCentrality = seedsL1EtSumCentrality.size();
325 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum Centrality seeds: " << sizeSeedsL1EtSumCentrality << endl << endl;
327 for (
size_t i = 0;
i != sizeSeedsL1EtSumCentrality;
i++) {
330 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum Centrality Bits: " << std::bitset<8>(
obj->hwPt())
331 <<
" (hwPt = " <<
obj->hwPt() <<
")";
334 vector<l1t::EtSumRef> seedsL1EtSumMinBiasHFP0;
336 const size_t sizeSeedsL1EtSumMinBiasHFP0 = seedsL1EtSumMinBiasHFP0.size();
337 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum MinBiasHFP0 seeds: " << sizeSeedsL1EtSumMinBiasHFP0 << endl << endl;
339 for (
size_t i = 0;
i != sizeSeedsL1EtSumMinBiasHFP0;
i++) {
342 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum MinBiasHFP0: hwPt = " <<
obj->hwPt();
345 vector<l1t::EtSumRef> seedsL1EtSumMinBiasHFM0;
347 const size_t sizeSeedsL1EtSumMinBiasHFM0 = seedsL1EtSumMinBiasHFM0.size();
348 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum MinBiasHFM0 seeds: " << sizeSeedsL1EtSumMinBiasHFM0 << endl << endl;
350 for (
size_t i = 0;
i != sizeSeedsL1EtSumMinBiasHFM0;
i++) {
353 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum MinBiasHFM0: hwPt = " <<
obj->hwPt();
356 vector<l1t::EtSumRef> seedsL1EtSumMinBiasHFP1;
358 const size_t sizeSeedsL1EtSumMinBiasHFP1 = seedsL1EtSumMinBiasHFP1.size();
359 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum MinBiasHFP1 seeds: " << sizeSeedsL1EtSumMinBiasHFP1 << endl << endl;
361 for (
size_t i = 0;
i != sizeSeedsL1EtSumMinBiasHFP1;
i++) {
364 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum MinBiasHFP1: hwPt = " <<
obj->hwPt();
367 vector<l1t::EtSumRef> seedsL1EtSumMinBiasHFM1;
369 const size_t sizeSeedsL1EtSumMinBiasHFM1 = seedsL1EtSumMinBiasHFM1.size();
370 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum MinBiasHFM1 seeds: " << sizeSeedsL1EtSumMinBiasHFM1 << endl << endl;
372 for (
size_t i = 0;
i != sizeSeedsL1EtSumMinBiasHFM1;
i++) {
375 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum MinBiasHFM1: hwPt = " <<
obj->hwPt();
378 vector<l1t::EtSumRef> seedsL1EtSumTowerCount;
380 const size_t sizeSeedsL1EtSumTowerCount = seedsL1EtSumTowerCount.size();
381 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum TowerCount seeds: " << sizeSeedsL1EtSumTowerCount << endl << endl;
383 for (
size_t i = 0;
i != sizeSeedsL1EtSumTowerCount;
i++) {
386 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum TowerCount: hwPt = " <<
obj->hwPt();
389 vector<l1t::EtSumRef> seedsL1EtSumAsymEt;
391 const size_t sizeSeedsL1EtSumAsymEt = seedsL1EtSumAsymEt.size();
392 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum AsymEt seeds: " << sizeSeedsL1EtSumAsymEt << endl << endl;
394 for (
size_t i = 0;
i != sizeSeedsL1EtSumAsymEt;
i++) {
397 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum AsymEt: hwPt = " <<
obj->hwPt();
400 vector<l1t::EtSumRef> seedsL1EtSumAsymHt;
402 const size_t sizeSeedsL1EtSumAsymHt = seedsL1EtSumAsymHt.size();
403 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum AsymHt seeds: " << sizeSeedsL1EtSumAsymHt << endl << endl;
405 for (
size_t i = 0;
i != sizeSeedsL1EtSumAsymHt;
i++) {
408 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum AsymHt: hwPt = " <<
obj->hwPt();
411 vector<l1t::EtSumRef> seedsL1EtSumAsymEtHF;
413 const size_t sizeSeedsL1EtSumAsymEtHF = seedsL1EtSumAsymEtHF.size();
414 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum AsymEtHF seeds: " << sizeSeedsL1EtSumAsymEtHF << endl << endl;
416 for (
size_t i = 0;
i != sizeSeedsL1EtSumAsymEtHF;
i++) {
419 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum AsymEtHF: hwPt = " <<
obj->hwPt();
422 vector<l1t::EtSumRef> seedsL1EtSumAsymHtHF;
424 const size_t sizeSeedsL1EtSumAsymHtHF = seedsL1EtSumAsymHtHF.size();
425 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum AsymHtHF seeds: " << sizeSeedsL1EtSumAsymHtHF << endl << endl;
427 for (
size_t i = 0;
i != sizeSeedsL1EtSumAsymHtHF;
i++) {
430 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum AsymHtHF: hwPt = " <<
obj->hwPt();
433 vector<l1t::EtSumRef> seedsL1EtSumZDCP;
435 const size_t sizeSeedsL1EtSumZDCP = seedsL1EtSumZDCP.size();
436 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum ZDCP seeds: " << sizeSeedsL1EtSumZDCP << endl << endl;
438 for (
size_t i = 0;
i != sizeSeedsL1EtSumZDCP;
i++) {
441 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum ZDCP" 443 <<
"pt = " <<
obj->pt() <<
"\t" 444 <<
"eta = " <<
obj->eta() <<
"\t" 445 <<
"phi = " <<
obj->phi();
448 vector<l1t::EtSumRef> seedsL1EtSumZDCM;
450 const size_t sizeSeedsL1EtSumZDCM = seedsL1EtSumZDCM.size();
451 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum ZDCM seeds: " << sizeSeedsL1EtSumZDCM << endl << endl;
453 for (
size_t i = 0;
i != sizeSeedsL1EtSumZDCM;
i++) {
456 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum ZDCM" 458 <<
"pt = " <<
obj->pt() <<
"\t" 459 <<
"eta = " <<
obj->eta() <<
"\t" 460 <<
"phi = " <<
obj->phi();
463 LogTrace(
"HLTL1TSeed") <<
" \n\n" << endl;
475 std::list<int> listMuon;
476 std::list<int> listMuonShower;
478 std::list<int> listEG;
480 std::list<int> listJet;
481 std::list<int> listTau;
483 std::list<int> listETM;
484 std::list<int> listETT;
485 std::list<int> listHTT;
486 std::list<int> listHTM;
487 std::list<int> listETMHF;
489 std::list<int> listJetCounts;
491 std::list<int> listCentrality;
492 std::list<int> listMinBiasHFP0;
493 std::list<int> listMinBiasHFM0;
494 std::list<int> listMinBiasHFP1;
495 std::list<int> listMinBiasHFM1;
496 std::list<int> listTotalEtEm;
497 std::list<int> listMissingEtHF;
498 std::list<int> listTowerCount;
499 std::list<int> listAsymEt;
500 std::list<int> listAsymHt;
501 std::list<int> listAsymEtHF;
502 std::list<int> listAsymHtHF;
503 std::list<int> listZDCP;
504 std::list<int> listZDCM;
510 if (!uGtAlgoBlocks.
isValid()) {
512 <<
" requested in configuration, but not found in the event." << std::endl;
518 if (uGtAlgoBlocks->
size() == 0) {
520 <<
" is empty for all BXs.";
525 if (uGtAlgoBlocks->
isEmpty(0)) {
527 <<
" is empty for BX=0.";
535 if (!gtObjectMapRecord.
isValid()) {
537 <<
" requested in configuration, but not found in the event." << std::endl;
543 const std::vector<GlobalObjectMap>& objMaps = gtObjectMapRecord->
gtObjectMap();
545 LogTrace(
"HLTL1TSeed") <<
"\nHLTL1Seed" 546 <<
"\n--------------------------------------------------------------------------------------" 547 "-------------------------------";
550 <<
"\n\tAlgorithms in L1TriggerObjectMapRecord and GT results ( emulated | initial | prescaled | final ) " 554 <<
"\tAlgoBit" << std::setw(40) <<
"algoName" 555 <<
"\t (emul|ini|pre|fin)" << endl;
557 LogTrace(
"HLTL1TSeed") <<
"----------------------------------------------------------------------------------------" 558 "-----------------------------";
560 for (
size_t imap = 0; imap < objMaps.size(); imap++) {
561 int bit = objMaps[imap].algoBitNumber();
563 int emulDecision = objMaps[imap].algoGtlResult();
566 int initDecision = (uGtAlgoBlocks->
at(0, 0)).getAlgoDecisionInitial(
bit);
567 int presDecision = (uGtAlgoBlocks->
at(0, 0)).getAlgoDecisionInterm(
bit);
568 int finlDecision = (uGtAlgoBlocks->
at(0, 0)).getAlgoDecisionFinal(
bit);
570 if (emulDecision != initDecision) {
571 LogTrace(
"HLTL1TSeed") <<
"L1T decision (emulated vs. unpacked initial) is not the same:" 572 <<
"\n\tbit = " << std::setw(3) <<
bit << std::setw(40) << objMaps[imap].algoName()
573 <<
"\t emulated decision = " << emulDecision
574 <<
"\t unpacked initial decision = " << initDecision
575 <<
"\nThis should not happen. Include the L1TGtEmulCompare module in the sequence." 579 LogTrace(
"HLTL1TSeed") <<
"\t" << std::setw(3) << imap <<
"\tbit = " << std::setw(3) <<
bit << std::setw(40)
580 << objMaps[imap].algoName() <<
"\t ( " << emulDecision <<
" | " << initDecision <<
" | " 581 << presDecision <<
" | " << finlDecision <<
" ) ";
591 return (uGtAlgoBlocks->
at(0, 0)).getFinalOR();
598 for (
auto&
i : algOpTokenVector) {
601 i.tokenResult =
false;
606 for (
auto&
i : algOpTokenVector) {
611 if (objMap ==
nullptr) {
614 <<
", requested as seed by a HLT path, cannot be matched to a L1 algo name in any GlobalObjectMap\n" 615 <<
"Please check if algorithm " <<
algoName <<
" is present in the L1 menu\n" 622 bool finalAlgoDecision = (uGtAlgoBlocks->
at(0, 0)).getAlgoDecisionFinal(
bit);
623 i.tokenResult = finalAlgoDecision;
633 <<
"\n Result for logical expression after update of algOpTokens: " << seedsResult <<
"\n" 640 for (std::vector<GlobalLogicParser::OperandToken>::const_iterator itSeed =
m_l1AlgoSeeds.begin();
645 LogTrace(
"HLTL1TSeed") <<
"\n ---------------- algo seed name = " << algoSeedName << endl;
649 if (objMap ==
nullptr) {
653 <<
"\nAlgorithm " << algoSeedName
654 <<
", requested as seed by a HLT path, cannot be matched to a L1 algo name in any GlobalObjectMap\n" 655 <<
"Please check if algorithm " << algoSeedName <<
" is present in the L1 menu\n" 663 bool algoSeedResultMaskAndPresc = uGtAlgoBlocks->
at(0, 0).getAlgoDecisionFinal(algoSeedBitNumber);
665 LogTrace(
"HLTL1TSeed") <<
"\n\tAlgo seed " << algoSeedName <<
" result emulated | final = " << algoSeedResult
666 <<
" | " << algoSeedResultMaskAndPresc << endl;
670 if (!algoSeedResultMaskAndPresc)
679 const std::vector<GlobalLogicParser::OperandToken>& opTokenVecObjMap = objMap->
operandTokenVector();
680 const std::vector<L1TObjectTypeInCond>& condObjTypeVec = objMap->
objectTypeVector();
681 const std::vector<CombinationsInCond>& condCombinations = objMap->
combinationVector();
683 LogTrace(
"HLTL1TSeed") <<
"\n\talgoName =" << objMap->
algoName() <<
"\talgoBitNumber = " << algoSeedBitNumber
684 <<
"\talgoGtlResult = " << algoSeedResult << endl
687 if (opTokenVecObjMap.size() != condObjTypeVec.size()) {
690 <<
"\nhas object map for bit number " << algoSeedBitNumber
691 <<
" which contains different size vectors of operand tokens and of condition object types!" << std::endl;
693 assert(opTokenVecObjMap.size() == condObjTypeVec.size());
696 if (opTokenVecObjMap.size() != condCombinations.size()) {
699 <<
"\nhas object map for bit number " << algoSeedBitNumber
700 <<
" which contains different size vectors of operand tokens and of condition object combinations!" 703 assert(opTokenVecObjMap.size() == condCombinations.size());
708 for (
size_t condNumber = 0; condNumber < opTokenVecObjMap.size(); condNumber++) {
709 std::vector<l1t::GlobalObject> condObjType = condObjTypeVec[condNumber];
711 for (
auto& jOb : condObjType) {
712 LogTrace(
"HLTL1TSeed") << setw(15) <<
"\tcondObjType = " << jOb << endl;
715 const std::string condName = opTokenVecObjMap[condNumber].tokenName;
716 bool condResult = opTokenVecObjMap[condNumber].tokenResult;
728 LogTrace(
"HLTL1TSeed") << setw(15) <<
"\tcondCombinations = " << condComb->size() << endl;
730 for (
auto const& itComb : (*condComb)) {
731 LogTrace(
"HLTL1TSeed") << setw(15) <<
"\tnew combination" << endl;
735 for (
auto itObject = itComb.begin(); itObject != itComb.end(); itObject++) {
738 if (condObjType.empty()) {
740 <<
"\talgoName = " << objMap->
algoName()
741 <<
" is object-less L1 algorithm, so do not attempt to store any objects to the list of seeds.\n" 753 LogTrace(
"HLTL1TSeed") <<
"\tAdd object of type " << objTypeVal <<
" and index " << (*itObject)
754 <<
" to the seed list." << std::endl;
761 switch (objTypeVal) {
763 listMuon.push_back(*itObject);
766 listMuonShower.push_back(*itObject);
769 listEG.push_back(*itObject);
772 listJet.push_back(*itObject);
775 listTau.push_back(*itObject);
778 listETM.push_back(*itObject);
781 listETT.push_back(*itObject);
784 listHTT.push_back(*itObject);
787 listHTM.push_back(*itObject);
790 listETMHF.push_back(*itObject);
793 listTowerCount.push_back(*itObject);
796 listMinBiasHFP0.push_back(*itObject);
799 listMinBiasHFM0.push_back(*itObject);
802 listMinBiasHFP1.push_back(*itObject);
805 listMinBiasHFM1.push_back(*itObject);
808 listTotalEtEm.push_back(*itObject);
811 listAsymEt.push_back(*itObject);
814 listAsymHt.push_back(*itObject);
817 listAsymEtHF.push_back(*itObject);
820 listAsymHtHF.push_back(*itObject);
823 listZDCP.push_back(*itObject);
826 listZDCM.push_back(*itObject);
836 listCentrality.push_back(*itObject);
847 LogTrace(
"HLTL1TSeed") <<
"\n HLTL1TSeed::hltFilter " 848 <<
"\n Unknown object of type " << objTypeVal <<
" and index " << (*itObject)
849 <<
" in the seed list." << std::endl;
867 listMuonShower.sort();
868 listMuonShower.unique();
894 listJetCounts.sort();
895 listJetCounts.unique();
897 listCentrality.sort();
898 listCentrality.unique();
900 listMinBiasHFP0.sort();
901 listMinBiasHFP0.unique();
903 listMinBiasHFM0.sort();
904 listMinBiasHFM0.unique();
906 listMinBiasHFP1.sort();
907 listMinBiasHFP1.unique();
909 listMinBiasHFM1.sort();
910 listMinBiasHFM1.unique();
912 listTotalEtEm.sort();
913 listTotalEtEm.unique();
915 listMissingEtHF.sort();
916 listMissingEtHF.unique();
918 listTowerCount.sort();
919 listTowerCount.unique();
928 listAsymEtHF.unique();
931 listAsymHtHF.unique();
943 if (!listMuon.empty()) {
947 if (!
muons.isValid()) {
949 <<
"\nrequested in configuration, but not found in the event." 950 <<
"\nNo muons added to filterproduct." << endl;
952 for (std::list<int>::const_iterator itObj = listMuon.begin(); itObj != listMuon.end(); ++itObj) {
954 if (*itObj < 0
or unsigned(*itObj) >=
muons->size(0)) {
956 <<
"Invalid index from the L1ObjectMap (L1uGT emulator), will be ignored (l1t::MuonBxCollection):" 957 <<
" index=" << *itObj <<
" (size of unpacked L1T objects in BX0 = " <<
muons->size(0) <<
")";
971 if (!listMuonShower.empty()) {
977 <<
"\nrequested in configuration, but not found in the event." 978 <<
"\nNo muon showers added to filterproduct." << endl;
980 for (std::list<int>::const_iterator itObj = listMuonShower.begin(); itObj != listMuonShower.end(); ++itObj) {
982 if (*itObj < 0
or unsigned(*itObj) >= muonShowers->
size(0)) {
984 <<
"Invalid index from the L1ObjectMap (L1uGT emulator), will be ignored (l1t::MuonShowerBxCollection):" 985 <<
" index=" << *itObj <<
" (size of unpacked L1T objects in BX0 = " << muonShowers->
size(0) <<
")";
990 unsigned int index = muonShowers->
begin(0) - muonShowers->
begin() + *itObj;
999 if (!listEG.empty()) {
1004 <<
"\nrequested in configuration, but not found in the event." 1005 <<
"\nNo egammas added to filterproduct." << endl;
1007 for (std::list<int>::const_iterator itObj = listEG.begin(); itObj != listEG.end(); ++itObj) {
1009 if (*itObj < 0
or unsigned(*itObj) >= egammas->
size(0)) {
1011 <<
"Invalid index from the L1ObjectMap (L1uGT emulator), will be ignored (l1t::EGammaBxCollection):" 1012 <<
" index=" << *itObj <<
" (size of unpacked L1T objects in BX0 = " << egammas->
size(0) <<
")";
1026 if (!listJet.empty()) {
1030 if (!
jets.isValid()) {
1032 <<
"\nrequested in configuration, but not found in the event." 1033 <<
"\nNo jets added to filterproduct." << endl;
1035 for (std::list<int>::const_iterator itObj = listJet.begin(); itObj != listJet.end(); ++itObj) {
1037 if (*itObj < 0
or unsigned(*itObj) >=
jets->size(0)) {
1039 <<
"Invalid index from the L1ObjectMap (L1uGT emulator), will be ignored (l1t::JetBxCollection):" 1040 <<
" index=" << *itObj <<
" (size of unpacked L1T objects in BX0 = " <<
jets->size(0) <<
")";
1045 unsigned int index =
jets->begin(0) -
jets->begin() + *itObj;
1054 if (!listTau.empty()) {
1058 if (!
taus.isValid()) {
1060 <<
"\nrequested in configuration, but not found in the event." 1061 <<
"\nNo taus added to filterproduct." << endl;
1063 for (std::list<int>::const_iterator itObj = listTau.begin(); itObj != listTau.end(); ++itObj) {
1065 if (*itObj < 0
or unsigned(*itObj) >=
taus->size(0)) {
1067 <<
"Invalid index from the L1ObjectMap (L1uGT emulator), will be ignored (l1t::TauBxCollection):" 1068 <<
" index=" << *itObj <<
" (size of unpacked L1T objects in BX0 = " <<
taus->size(0) <<
")";
1073 unsigned int index =
taus->begin(0) -
taus->begin() + *itObj;
1086 <<
"\nrequested in configuration, but not found in the event." 1087 <<
"\nNo etsums added to filterproduct." << endl;
1091 for (iter = etsums->
begin(0); iter != etsums->
end(0); ++iter) {
1094 switch (iter->getType()) {
1096 if (!listETT.empty())
1100 if (!listHTT.empty())
1104 if (!listETM.empty())
1108 if (!listHTM.empty())
1112 if (!listETMHF.empty())
1116 if (!listCentrality.empty())
1120 if (!listMinBiasHFP0.empty())
1124 if (!listMinBiasHFM0.empty())
1128 if (!listMinBiasHFP1.empty())
1132 if (!listMinBiasHFM1.empty())
1136 if (!listTotalEtEm.empty())
1140 if (!listTowerCount.empty())
1144 if (!listAsymEt.empty())
1148 if (!listAsymHt.empty())
1152 if (!listAsymEtHF.empty())
1156 if (!listAsymHtHF.empty())
1160 LogTrace(
"HLTL1TSeed") <<
" L1EtSum seed of currently unsuported HLT TriggerType. l1t::EtSum type: " 1161 << iter->getType() <<
"\n";
1177 <<
"\nrequested in configuration, but not found in the event." 1178 <<
"\nNo etsums (ZDC) added to filterproduct.";
1182 for (iter = etsumzdcs->
begin(0); iter != etsumzdcs->
end(0); ++iter) {
1185 switch (iter->getType()) {
1187 if (!listZDCP.empty())
1191 if (!listZDCM.empty())
1196 <<
" L1EtSum (ZDC) seed of currently unsuported HLT TriggerType. l1t::EtSum type: " 1197 << iter->getType() <<
"\n";
1222 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
muons
the two sets of parameters below are mutually exclusive, depending if RECO or ALCARECO is used the us...
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
unsigned size(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
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
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)
edm::EDGetTokenT< l1t::EtSumBxCollection > m_l1EtSumZdcToken
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::InputTag m_l1EtSumZdcTag
edm::EDGetTokenT< l1t::TauBxCollection > m_l1TauToken
edm::EDGetTokenT< l1t::MuonShowerBxCollection > m_l1MuonShowerToken
edm::EDGetTokenT< GlobalObjectMapRecord > m_l1GtObjectMapToken