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." << std::endl;
490 if (!gtObjectMapRecord.
isValid()) {
492 <<
" requested in configuration, but not found in the event." << std::endl;
498 const std::vector<GlobalObjectMap>& objMaps = gtObjectMapRecord->
gtObjectMap();
500 LogTrace(
"HLTL1TSeed") <<
"\nHLTL1Seed" 501 <<
"\n--------------------------------------------------------------------------------------" 502 "-------------------------------";
505 <<
"\n\tAlgorithms in L1TriggerObjectMapRecord and GT results ( emulated | initial | prescaled | final ) " 509 <<
"\tAlgoBit" << std::setw(40) <<
"algoName" 510 <<
"\t (emul|ini|pre|fin)" << endl;
512 LogTrace(
"HLTL1TSeed") <<
"----------------------------------------------------------------------------------------" 513 "-----------------------------";
515 for (
size_t imap = 0; imap < objMaps.size(); imap++) {
516 int bit = objMaps[imap].algoBitNumber();
518 int emulDecision = objMaps[imap].algoGtlResult();
521 int initDecision = (uGtAlgoBlocks->
at(0, 0)).getAlgoDecisionInitial(bit);
522 int presDecision = (uGtAlgoBlocks->
at(0, 0)).getAlgoDecisionInterm(bit);
523 int finlDecision = (uGtAlgoBlocks->
at(0, 0)).getAlgoDecisionFinal(bit);
525 if (emulDecision != initDecision) {
526 LogTrace(
"HLTL1TSeed") <<
"L1T decision (emulated vs. unpacked initial) is not the same:" 527 <<
"\n\tbit = " << std::setw(3) << bit << std::setw(40) << objMaps[imap].algoName()
528 <<
"\t emulated decision = " << emulDecision
529 <<
"\t unpacked initial decision = " << initDecision
530 <<
"\nThis should not happen. Include the L1TGtEmulCompare module in the sequence." 534 LogTrace(
"HLTL1TSeed") <<
"\t" << std::setw(3) << imap <<
"\tbit = " << std::setw(3) << bit << std::setw(40)
535 << objMaps[imap].algoName() <<
"\t ( " << emulDecision <<
" | " << initDecision <<
" | " 536 << presDecision <<
" | " << finlDecision <<
" ) ";
546 return (uGtAlgoBlocks->
at(0, 0)).getFinalOR();
553 for (
auto&
i : algOpTokenVector) {
556 i.tokenResult =
false;
561 for (
auto&
i : algOpTokenVector) {
566 if (objMap ==
nullptr) {
569 <<
", requested as seed by a HLT path, cannot be matched to a L1 algo name in any GlobalObjectMap\n" 570 <<
"Please check if algorithm " <<
algoName <<
" is present in the L1 menu\n" 577 bool finalAlgoDecision = (uGtAlgoBlocks->
at(0, 0)).getAlgoDecisionFinal(bit);
578 i.tokenResult = finalAlgoDecision;
588 <<
"\n Result for logical expression after update of algOpTokens: " << seedsResult <<
"\n" 595 for (std::vector<GlobalLogicParser::OperandToken>::const_iterator itSeed =
m_l1AlgoSeeds.begin();
600 LogTrace(
"HLTL1TSeed") <<
"\n ---------------- algo seed name = " << algoSeedName << endl;
604 if (objMap ==
nullptr) {
608 <<
"\nAlgorithm " << algoSeedName
609 <<
", requested as seed by a HLT path, cannot be matched to a L1 algo name in any GlobalObjectMap\n" 610 <<
"Please check if algorithm " << algoSeedName <<
" is present in the L1 menu\n" 618 bool algoSeedResultMaskAndPresc = uGtAlgoBlocks->
at(0, 0).getAlgoDecisionFinal(algoSeedBitNumber);
620 LogTrace(
"HLTL1TSeed") <<
"\n\tAlgo seed " << algoSeedName <<
" result emulated | final = " << algoSeedResult
621 <<
" | " << algoSeedResultMaskAndPresc << endl;
625 if (!algoSeedResultMaskAndPresc)
634 const std::vector<GlobalLogicParser::OperandToken>& opTokenVecObjMap = objMap->
operandTokenVector();
635 const std::vector<L1TObjectTypeInCond>& condObjTypeVec = objMap->
objectTypeVector();
636 const std::vector<CombinationsInCond>& condCombinations = objMap->
combinationVector();
638 LogTrace(
"HLTL1TSeed") <<
"\n\talgoName =" << objMap->
algoName() <<
"\talgoBitNumber = " << algoSeedBitNumber
639 <<
"\talgoGtlResult = " << algoSeedResult << endl
642 if (opTokenVecObjMap.size() != condObjTypeVec.size()) {
645 <<
"\nhas object map for bit number " << algoSeedBitNumber
646 <<
" which contains different size vectors of operand tokens and of condition object types!" << std::endl;
648 assert(opTokenVecObjMap.size() == condObjTypeVec.size());
651 if (opTokenVecObjMap.size() != condCombinations.size()) {
654 <<
"\nhas object map for bit number " << algoSeedBitNumber
655 <<
" which contains different size vectors of operand tokens and of condition object combinations!" 658 assert(opTokenVecObjMap.size() == condCombinations.size());
663 for (
size_t condNumber = 0; condNumber < opTokenVecObjMap.size(); condNumber++) {
664 std::vector<l1t::GlobalObject> condObjType = condObjTypeVec[condNumber];
666 for (
auto& jOb : condObjType) {
667 LogTrace(
"HLTL1TSeed") << setw(15) <<
"\tcondObjType = " << jOb << endl;
670 const std::string condName = opTokenVecObjMap[condNumber].tokenName;
671 bool condResult = opTokenVecObjMap[condNumber].tokenResult;
683 LogTrace(
"HLTL1TSeed") << setw(15) <<
"\tcondCombinations = " << condComb->size() << endl;
685 for (
auto const& itComb : (*condComb)) {
686 LogTrace(
"HLTL1TSeed") << setw(15) <<
"\tnew combination" << endl;
690 for (
auto itObject = itComb.begin(); itObject != itComb.end(); itObject++) {
693 if (condObjType.empty()) {
695 <<
"\talgoName = " << objMap->
algoName()
696 <<
" is object-less L1 algorithm, so do not attempt to store any objects to the list of seeds.\n" 708 LogTrace(
"HLTL1TSeed") <<
"\tAdd object of type " << objTypeVal <<
" and index " << (*itObject)
709 <<
" to the seed list." << std::endl;
716 switch (objTypeVal) {
718 listMuon.push_back(*itObject);
721 listMuonShower.push_back(*itObject);
724 listEG.push_back(*itObject);
727 listJet.push_back(*itObject);
730 listTau.push_back(*itObject);
733 listETM.push_back(*itObject);
736 listETT.push_back(*itObject);
739 listHTT.push_back(*itObject);
742 listHTM.push_back(*itObject);
745 listETMHF.push_back(*itObject);
748 listTowerCount.push_back(*itObject);
751 listMinBiasHFP0.push_back(*itObject);
754 listMinBiasHFM0.push_back(*itObject);
757 listMinBiasHFP1.push_back(*itObject);
760 listMinBiasHFM1.push_back(*itObject);
763 listTotalEtEm.push_back(*itObject);
766 listAsymEt.push_back(*itObject);
769 listAsymHt.push_back(*itObject);
772 listAsymEtHF.push_back(*itObject);
775 listAsymHtHF.push_back(*itObject);
785 listCentrality.push_back(*itObject);
796 LogTrace(
"HLTL1TSeed") <<
"\n HLTL1TSeed::hltFilter " 797 <<
"\n Unknown object of type " << objTypeVal <<
" and index " << (*itObject)
798 <<
" in the seed list." << std::endl;
816 listMuonShower.sort();
817 listMuonShower.unique();
843 listJetCounts.sort();
844 listJetCounts.unique();
846 listCentrality.sort();
847 listCentrality.unique();
849 listMinBiasHFP0.sort();
850 listMinBiasHFP0.unique();
852 listMinBiasHFM0.sort();
853 listMinBiasHFM0.unique();
855 listMinBiasHFP1.sort();
856 listMinBiasHFP1.unique();
858 listMinBiasHFM1.sort();
859 listMinBiasHFM1.unique();
861 listTotalEtEm.sort();
862 listTotalEtEm.unique();
864 listMissingEtHF.sort();
865 listMissingEtHF.unique();
867 listTowerCount.sort();
868 listTowerCount.unique();
877 listAsymEtHF.unique();
880 listAsymHtHF.unique();
886 if (!listMuon.empty()) {
890 if (!
muons.isValid()) {
892 <<
"\nrequested in configuration, but not found in the event." 893 <<
"\nNo muons added to filterproduct." << endl;
895 for (std::list<int>::const_iterator itObj = listMuon.begin(); itObj != listMuon.end(); ++itObj) {
906 if (!listMuonShower.empty()) {
912 <<
"\nrequested in configuration, but not found in the event." 913 <<
"\nNo muon showers added to filterproduct." << endl;
915 for (std::list<int>::const_iterator itObj = listMuonShower.begin(); itObj != listMuonShower.end(); ++itObj) {
917 unsigned int index = muonShowers->
begin(0) - muonShowers->
begin() + *itObj;
926 if (!listEG.empty()) {
931 <<
"\nrequested in configuration, but not found in the event." 932 <<
"\nNo egammas added to filterproduct." << endl;
934 for (std::list<int>::const_iterator itObj = listEG.begin(); itObj != listEG.end(); ++itObj) {
945 if (!listJet.empty()) {
949 if (!
jets.isValid()) {
951 <<
"\nrequested in configuration, but not found in the event." 952 <<
"\nNo jets added to filterproduct." << endl;
954 for (std::list<int>::const_iterator itObj = listJet.begin(); itObj != listJet.end(); ++itObj) {
956 unsigned int index =
jets->begin(0) -
jets->begin() + *itObj;
965 if (!listTau.empty()) {
969 if (!
taus.isValid()) {
971 <<
"\nrequested in configuration, but not found in the event." 972 <<
"\nNo taus added to filterproduct." << endl;
974 for (std::list<int>::const_iterator itObj = listTau.begin(); itObj != listTau.end(); ++itObj) {
976 unsigned int index =
taus->begin(0) -
taus->begin() + *itObj;
989 <<
"\nrequested in configuration, but not found in the event." 990 <<
"\nNo etsums added to filterproduct." << endl;
994 for (iter = etsums->
begin(0); iter != etsums->
end(0); ++iter) {
997 switch (iter->getType()) {
999 if (!listETT.empty())
1003 if (!listHTT.empty())
1007 if (!listETM.empty())
1011 if (!listHTM.empty())
1015 if (!listETMHF.empty())
1019 if (!listCentrality.empty())
1023 if (!listMinBiasHFP0.empty())
1027 if (!listMinBiasHFM0.empty())
1031 if (!listMinBiasHFP1.empty())
1035 if (!listMinBiasHFM1.empty())
1039 if (!listTotalEtEm.empty())
1043 if (!listTowerCount.empty())
1047 if (!listAsymEt.empty())
1051 if (!listAsymHt.empty())
1055 if (!listAsymEtHF.empty())
1059 if (!listAsymHtHF.empty())
1063 LogTrace(
"HLTL1TSeed") <<
" L1EtSum seed of currently unsuported HLT TriggerType. l1t::EtSum type: " 1064 << iter->getType() <<
"\n";
1089 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 ...
#define DEFINE_FWK_MODULE(type)
void dumpTriggerFilterObjectWithRefs(trigger::TriggerFilterObjectWithRefs &) const
detailed print of filter content
const std::vector< CombinationsInCond > & combinationVector() const
edm::Ref< JetBxCollection > JetRef
edm::Ref< EtSumBxCollection > EtSumRef
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
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