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->
size() == 0) {
481 <<
" is empty for all BXs.";
486 if (uGtAlgoBlocks->
isEmpty(0)) {
488 <<
" is empty for BX=0.";
496 if (!gtObjectMapRecord.
isValid()) {
498 <<
" requested in configuration, but not found in the event." << std::endl;
504 const std::vector<GlobalObjectMap>& objMaps = gtObjectMapRecord->
gtObjectMap();
506 LogTrace(
"HLTL1TSeed") <<
"\nHLTL1Seed" 507 <<
"\n--------------------------------------------------------------------------------------" 508 "-------------------------------";
511 <<
"\n\tAlgorithms in L1TriggerObjectMapRecord and GT results ( emulated | initial | prescaled | final ) " 515 <<
"\tAlgoBit" << std::setw(40) <<
"algoName" 516 <<
"\t (emul|ini|pre|fin)" << endl;
518 LogTrace(
"HLTL1TSeed") <<
"----------------------------------------------------------------------------------------" 519 "-----------------------------";
521 for (
size_t imap = 0; imap < objMaps.size(); imap++) {
522 int bit = objMaps[imap].algoBitNumber();
524 int emulDecision = objMaps[imap].algoGtlResult();
527 int initDecision = (uGtAlgoBlocks->
at(0, 0)).getAlgoDecisionInitial(
bit);
528 int presDecision = (uGtAlgoBlocks->
at(0, 0)).getAlgoDecisionInterm(
bit);
529 int finlDecision = (uGtAlgoBlocks->
at(0, 0)).getAlgoDecisionFinal(
bit);
531 if (emulDecision != initDecision) {
532 LogTrace(
"HLTL1TSeed") <<
"L1T decision (emulated vs. unpacked initial) is not the same:" 533 <<
"\n\tbit = " << std::setw(3) <<
bit << std::setw(40) << objMaps[imap].algoName()
534 <<
"\t emulated decision = " << emulDecision
535 <<
"\t unpacked initial decision = " << initDecision
536 <<
"\nThis should not happen. Include the L1TGtEmulCompare module in the sequence." 540 LogTrace(
"HLTL1TSeed") <<
"\t" << std::setw(3) << imap <<
"\tbit = " << std::setw(3) <<
bit << std::setw(40)
541 << objMaps[imap].algoName() <<
"\t ( " << emulDecision <<
" | " << initDecision <<
" | " 542 << presDecision <<
" | " << finlDecision <<
" ) ";
552 return (uGtAlgoBlocks->
at(0, 0)).getFinalOR();
559 for (
auto&
i : algOpTokenVector) {
562 i.tokenResult =
false;
567 for (
auto&
i : algOpTokenVector) {
572 if (objMap ==
nullptr) {
575 <<
", requested as seed by a HLT path, cannot be matched to a L1 algo name in any GlobalObjectMap\n" 576 <<
"Please check if algorithm " <<
algoName <<
" is present in the L1 menu\n" 583 bool finalAlgoDecision = (uGtAlgoBlocks->
at(0, 0)).getAlgoDecisionFinal(
bit);
584 i.tokenResult = finalAlgoDecision;
594 <<
"\n Result for logical expression after update of algOpTokens: " << seedsResult <<
"\n" 601 for (std::vector<GlobalLogicParser::OperandToken>::const_iterator itSeed =
m_l1AlgoSeeds.begin();
606 LogTrace(
"HLTL1TSeed") <<
"\n ---------------- algo seed name = " << algoSeedName << endl;
610 if (objMap ==
nullptr) {
614 <<
"\nAlgorithm " << algoSeedName
615 <<
", requested as seed by a HLT path, cannot be matched to a L1 algo name in any GlobalObjectMap\n" 616 <<
"Please check if algorithm " << algoSeedName <<
" is present in the L1 menu\n" 624 bool algoSeedResultMaskAndPresc = uGtAlgoBlocks->
at(0, 0).getAlgoDecisionFinal(algoSeedBitNumber);
626 LogTrace(
"HLTL1TSeed") <<
"\n\tAlgo seed " << algoSeedName <<
" result emulated | final = " << algoSeedResult
627 <<
" | " << algoSeedResultMaskAndPresc << endl;
631 if (!algoSeedResultMaskAndPresc)
640 const std::vector<GlobalLogicParser::OperandToken>& opTokenVecObjMap = objMap->
operandTokenVector();
641 const std::vector<L1TObjectTypeInCond>& condObjTypeVec = objMap->
objectTypeVector();
642 const std::vector<CombinationsInCond>& condCombinations = objMap->
combinationVector();
644 LogTrace(
"HLTL1TSeed") <<
"\n\talgoName =" << objMap->
algoName() <<
"\talgoBitNumber = " << algoSeedBitNumber
645 <<
"\talgoGtlResult = " << algoSeedResult << endl
648 if (opTokenVecObjMap.size() != condObjTypeVec.size()) {
651 <<
"\nhas object map for bit number " << algoSeedBitNumber
652 <<
" which contains different size vectors of operand tokens and of condition object types!" << std::endl;
654 assert(opTokenVecObjMap.size() == condObjTypeVec.size());
657 if (opTokenVecObjMap.size() != condCombinations.size()) {
660 <<
"\nhas object map for bit number " << algoSeedBitNumber
661 <<
" which contains different size vectors of operand tokens and of condition object combinations!" 664 assert(opTokenVecObjMap.size() == condCombinations.size());
669 for (
size_t condNumber = 0; condNumber < opTokenVecObjMap.size(); condNumber++) {
670 std::vector<l1t::GlobalObject> condObjType = condObjTypeVec[condNumber];
672 for (
auto& jOb : condObjType) {
673 LogTrace(
"HLTL1TSeed") << setw(15) <<
"\tcondObjType = " << jOb << endl;
676 const std::string condName = opTokenVecObjMap[condNumber].tokenName;
677 bool condResult = opTokenVecObjMap[condNumber].tokenResult;
689 LogTrace(
"HLTL1TSeed") << setw(15) <<
"\tcondCombinations = " << condComb->size() << endl;
691 for (
auto const& itComb : (*condComb)) {
692 LogTrace(
"HLTL1TSeed") << setw(15) <<
"\tnew combination" << endl;
696 for (
auto itObject = itComb.begin(); itObject != itComb.end(); itObject++) {
699 if (condObjType.empty()) {
701 <<
"\talgoName = " << objMap->
algoName()
702 <<
" is object-less L1 algorithm, so do not attempt to store any objects to the list of seeds.\n" 714 LogTrace(
"HLTL1TSeed") <<
"\tAdd object of type " << objTypeVal <<
" and index " << (*itObject)
715 <<
" to the seed list." << std::endl;
722 switch (objTypeVal) {
724 listMuon.push_back(*itObject);
727 listMuonShower.push_back(*itObject);
730 listEG.push_back(*itObject);
733 listJet.push_back(*itObject);
736 listTau.push_back(*itObject);
739 listETM.push_back(*itObject);
742 listETT.push_back(*itObject);
745 listHTT.push_back(*itObject);
748 listHTM.push_back(*itObject);
751 listETMHF.push_back(*itObject);
754 listTowerCount.push_back(*itObject);
757 listMinBiasHFP0.push_back(*itObject);
760 listMinBiasHFM0.push_back(*itObject);
763 listMinBiasHFP1.push_back(*itObject);
766 listMinBiasHFM1.push_back(*itObject);
769 listTotalEtEm.push_back(*itObject);
772 listAsymEt.push_back(*itObject);
775 listAsymHt.push_back(*itObject);
778 listAsymEtHF.push_back(*itObject);
781 listAsymHtHF.push_back(*itObject);
791 listCentrality.push_back(*itObject);
802 LogTrace(
"HLTL1TSeed") <<
"\n HLTL1TSeed::hltFilter " 803 <<
"\n Unknown object of type " << objTypeVal <<
" and index " << (*itObject)
804 <<
" in the seed list." << std::endl;
822 listMuonShower.sort();
823 listMuonShower.unique();
849 listJetCounts.sort();
850 listJetCounts.unique();
852 listCentrality.sort();
853 listCentrality.unique();
855 listMinBiasHFP0.sort();
856 listMinBiasHFP0.unique();
858 listMinBiasHFM0.sort();
859 listMinBiasHFM0.unique();
861 listMinBiasHFP1.sort();
862 listMinBiasHFP1.unique();
864 listMinBiasHFM1.sort();
865 listMinBiasHFM1.unique();
867 listTotalEtEm.sort();
868 listTotalEtEm.unique();
870 listMissingEtHF.sort();
871 listMissingEtHF.unique();
873 listTowerCount.sort();
874 listTowerCount.unique();
883 listAsymEtHF.unique();
886 listAsymHtHF.unique();
892 if (!listMuon.empty()) {
896 if (!
muons.isValid()) {
898 <<
"\nrequested in configuration, but not found in the event." 899 <<
"\nNo muons added to filterproduct." << endl;
901 for (std::list<int>::const_iterator itObj = listMuon.begin(); itObj != listMuon.end(); ++itObj) {
912 if (!listMuonShower.empty()) {
918 <<
"\nrequested in configuration, but not found in the event." 919 <<
"\nNo muon showers added to filterproduct." << endl;
921 for (std::list<int>::const_iterator itObj = listMuonShower.begin(); itObj != listMuonShower.end(); ++itObj) {
923 unsigned int index = muonShowers->
begin(0) - muonShowers->
begin() + *itObj;
932 if (!listEG.empty()) {
937 <<
"\nrequested in configuration, but not found in the event." 938 <<
"\nNo egammas added to filterproduct." << endl;
940 for (std::list<int>::const_iterator itObj = listEG.begin(); itObj != listEG.end(); ++itObj) {
951 if (!listJet.empty()) {
955 if (!
jets.isValid()) {
957 <<
"\nrequested in configuration, but not found in the event." 958 <<
"\nNo jets added to filterproduct." << endl;
960 for (std::list<int>::const_iterator itObj = listJet.begin(); itObj != listJet.end(); ++itObj) {
962 unsigned int index =
jets->begin(0) -
jets->begin() + *itObj;
971 if (!listTau.empty()) {
975 if (!
taus.isValid()) {
977 <<
"\nrequested in configuration, but not found in the event." 978 <<
"\nNo taus added to filterproduct." << endl;
980 for (std::list<int>::const_iterator itObj = listTau.begin(); itObj != listTau.end(); ++itObj) {
982 unsigned int index =
taus->begin(0) -
taus->begin() + *itObj;
995 <<
"\nrequested in configuration, but not found in the event." 996 <<
"\nNo etsums added to filterproduct." << endl;
1000 for (iter = etsums->
begin(0); iter != etsums->
end(0); ++iter) {
1003 switch (iter->getType()) {
1005 if (!listETT.empty())
1009 if (!listHTT.empty())
1013 if (!listETM.empty())
1017 if (!listHTM.empty())
1021 if (!listETMHF.empty())
1025 if (!listCentrality.empty())
1029 if (!listMinBiasHFP0.empty())
1033 if (!listMinBiasHFM0.empty())
1037 if (!listMinBiasHFP1.empty())
1041 if (!listMinBiasHFM1.empty())
1045 if (!listTotalEtEm.empty())
1049 if (!listTowerCount.empty())
1053 if (!listAsymEt.empty())
1057 if (!listAsymHt.empty())
1061 if (!listAsymEtHF.empty())
1065 if (!listAsymHtHF.empty())
1069 LogTrace(
"HLTL1TSeed") <<
" L1EtSum seed of currently unsuported HLT TriggerType. l1t::EtSum type: " 1070 << iter->getType() <<
"\n";
1095 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
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
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