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_l1EGammaCollectionsTag(parSet.getParameter<edm::
InputTag>(
"L1EGammaInputTag")),
44 m_l1EGammaTag(m_l1EGammaCollectionsTag),
46 m_l1JetCollectionsTag(parSet.getParameter<edm::
InputTag>(
"L1JetInputTag")),
47 m_l1JetTag(m_l1JetCollectionsTag),
49 m_l1TauCollectionsTag(parSet.getParameter<edm::
InputTag>(
"L1TauInputTag")),
50 m_l1TauTag(m_l1TauCollectionsTag),
52 m_l1EtSumCollectionsTag(parSet.getParameter<edm::
InputTag>(
"L1EtSumInputTag")),
53 m_l1EtSumTag(m_l1EtSumCollectionsTag),
55 m_l1GlobalDecision(
false),
58 throw cms::Exception(
"FailModule") <<
"\nTrying to seed with an empty L1SeedsLogicalExpression.\n" << std::endl;
94 desc.
add<
string>(
"L1SeedsLogicalExpression",
"");
102 descriptions.
add(
"hltL1TSeed", desc);
141 LogTrace(
"HLTL1TSeed") <<
"\nHLTL1TSeed::hltFilter "
142 <<
"\n Dump TriggerFilterObjectWithRefs\n"
145 vector<l1t::MuonRef> seedsL1Mu;
147 const size_t sizeSeedsL1Mu = seedsL1Mu.size();
151 LogTrace(
"HLTL1TSeed") <<
"\n L1Mu seeds: " << sizeSeedsL1Mu << endl << endl;
153 for (
size_t i = 0;
i != sizeSeedsL1Mu;
i++) {
161 <<
"pt = " << obj->pt() <<
"\t"
162 <<
"eta = " << obj->eta() <<
"\t"
163 <<
"phi = " << obj->phi();
166 vector<l1t::EGammaRef> seedsL1EG;
168 const size_t sizeSeedsL1EG = seedsL1EG.size();
170 LogTrace(
"HLTL1TSeed") <<
"\n L1EG seeds: " << sizeSeedsL1EG << endl << endl;
172 for (
size_t i = 0;
i != sizeSeedsL1EG;
i++) {
177 <<
"pt = " << obj->pt() <<
"\t"
178 <<
"eta = " << obj->eta() <<
"\t"
179 <<
"phi = " << obj->phi();
182 vector<l1t::JetRef> seedsL1Jet;
184 const size_t sizeSeedsL1Jet = seedsL1Jet.size();
186 LogTrace(
"HLTL1TSeed") <<
"\n L1Jet seeds: " << sizeSeedsL1Jet << endl << endl;
188 for (
size_t i = 0;
i != sizeSeedsL1Jet;
i++) {
191 LogTrace(
"HLTL1TSeed") <<
"\tL1Jet "
193 <<
"pt = " << obj->pt() <<
"\t"
194 <<
"eta = " << obj->eta() <<
"\t"
195 <<
"phi = " << obj->phi();
198 vector<l1t::TauRef> seedsL1Tau;
200 const size_t sizeSeedsL1Tau = seedsL1Tau.size();
202 LogTrace(
"HLTL1TSeed") <<
"\n L1Tau seeds: " << sizeSeedsL1Tau << endl << endl;
204 for (
size_t i = 0;
i != sizeSeedsL1Tau;
i++) {
207 LogTrace(
"HLTL1TSeed") <<
"\tL1Tau "
209 <<
"pt = " << obj->pt() <<
"\t"
210 <<
"eta = " << obj->eta() <<
"\t"
211 <<
"phi = " << obj->phi();
214 vector<l1t::EtSumRef> seedsL1EtSumETT;
216 const size_t sizeSeedsL1EtSumETT = seedsL1EtSumETT.size();
217 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum ETT seeds: " << sizeSeedsL1EtSumETT << endl << endl;
219 for (
size_t i = 0;
i != sizeSeedsL1EtSumETT;
i++) {
222 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum ETT"
224 <<
"pt = " << obj->pt() <<
"\t"
225 <<
"eta = " << obj->eta() <<
"\t"
226 <<
"phi = " << obj->phi();
229 vector<l1t::EtSumRef> seedsL1EtSumHTT;
231 const size_t sizeSeedsL1EtSumHTT = seedsL1EtSumHTT.size();
232 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum HTT seeds: " << sizeSeedsL1EtSumHTT << endl << endl;
234 for (
size_t i = 0;
i != sizeSeedsL1EtSumHTT;
i++) {
237 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum HTT"
239 <<
"pt = " << obj->pt() <<
"\t"
240 <<
"eta = " << obj->eta() <<
"\t"
241 <<
"phi = " << obj->phi();
244 vector<l1t::EtSumRef> seedsL1EtSumETM;
246 const size_t sizeSeedsL1EtSumETM = seedsL1EtSumETM.size();
247 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum ETM seeds: " << sizeSeedsL1EtSumETM << endl << endl;
249 for (
size_t i = 0;
i != sizeSeedsL1EtSumETM;
i++) {
252 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum ETM"
254 <<
"pt = " << obj->pt() <<
"\t"
255 <<
"eta = " << obj->eta() <<
"\t"
256 <<
"phi = " << obj->phi();
259 vector<l1t::EtSumRef> seedsL1EtSumETMHF;
261 const size_t sizeSeedsL1EtSumETMHF = seedsL1EtSumETMHF.size();
262 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum ETMHF seeds: " << sizeSeedsL1EtSumETMHF << endl << endl;
264 for (
size_t i = 0;
i != sizeSeedsL1EtSumETMHF;
i++) {
267 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum ETMHF"
269 <<
"pt = " << obj->pt() <<
"\t"
270 <<
"eta = " << obj->eta() <<
"\t"
271 <<
"phi = " << obj->phi();
274 vector<l1t::EtSumRef> seedsL1EtSumHTM;
276 const size_t sizeSeedsL1EtSumHTM = seedsL1EtSumHTM.size();
277 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum HTM seeds: " << sizeSeedsL1EtSumHTM << endl << endl;
279 for (
size_t i = 0;
i != sizeSeedsL1EtSumHTM;
i++) {
282 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum HTM"
284 <<
"pt = " << obj->pt() <<
"\t"
285 <<
"eta = " << obj->eta() <<
"\t"
286 <<
"phi = " << obj->phi();
289 vector<l1t::EtSumRef> seedsL1EtSumCentrality;
291 const size_t sizeSeedsL1EtSumCentrality = seedsL1EtSumCentrality.size();
292 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum Centrality seeds: " << sizeSeedsL1EtSumCentrality << endl << endl;
294 for (
size_t i = 0;
i != sizeSeedsL1EtSumCentrality;
i++) {
297 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum Centrality Bits: " << std::bitset<8>(obj->hwPt())
298 <<
" (hwPt = " << obj->hwPt() <<
")";
301 vector<l1t::EtSumRef> seedsL1EtSumMinBiasHFP0;
303 const size_t sizeSeedsL1EtSumMinBiasHFP0 = seedsL1EtSumMinBiasHFP0.size();
304 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum MinBiasHFP0 seeds: " << sizeSeedsL1EtSumMinBiasHFP0 << endl << endl;
306 for (
size_t i = 0;
i != sizeSeedsL1EtSumMinBiasHFP0;
i++) {
309 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum MinBiasHFP0: hwPt = " << obj->hwPt();
312 vector<l1t::EtSumRef> seedsL1EtSumMinBiasHFM0;
314 const size_t sizeSeedsL1EtSumMinBiasHFM0 = seedsL1EtSumMinBiasHFM0.size();
315 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum MinBiasHFM0 seeds: " << sizeSeedsL1EtSumMinBiasHFM0 << endl << endl;
317 for (
size_t i = 0;
i != sizeSeedsL1EtSumMinBiasHFM0;
i++) {
320 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum MinBiasHFM0: hwPt = " << obj->hwPt();
323 vector<l1t::EtSumRef> seedsL1EtSumMinBiasHFP1;
325 const size_t sizeSeedsL1EtSumMinBiasHFP1 = seedsL1EtSumMinBiasHFP1.size();
326 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum MinBiasHFP1 seeds: " << sizeSeedsL1EtSumMinBiasHFP1 << endl << endl;
328 for (
size_t i = 0;
i != sizeSeedsL1EtSumMinBiasHFP1;
i++) {
331 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum MinBiasHFP1: hwPt = " << obj->hwPt();
334 vector<l1t::EtSumRef> seedsL1EtSumMinBiasHFM1;
336 const size_t sizeSeedsL1EtSumMinBiasHFM1 = seedsL1EtSumMinBiasHFM1.size();
337 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum MinBiasHFM1 seeds: " << sizeSeedsL1EtSumMinBiasHFM1 << endl << endl;
339 for (
size_t i = 0;
i != sizeSeedsL1EtSumMinBiasHFM1;
i++) {
342 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum MinBiasHFM1: hwPt = " << obj->hwPt();
345 vector<l1t::EtSumRef> seedsL1EtSumTowerCount;
347 const size_t sizeSeedsL1EtSumTowerCount = seedsL1EtSumTowerCount.size();
348 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum TowerCount seeds: " << sizeSeedsL1EtSumTowerCount << endl << endl;
350 for (
size_t i = 0;
i != sizeSeedsL1EtSumTowerCount;
i++) {
353 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum TowerCount: hwPt = " << obj->hwPt();
356 vector<l1t::EtSumRef> seedsL1EtSumAsymEt;
358 const size_t sizeSeedsL1EtSumAsymEt = seedsL1EtSumAsymEt.size();
359 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum AsymEt seeds: " << sizeSeedsL1EtSumAsymEt << endl << endl;
361 for (
size_t i = 0;
i != sizeSeedsL1EtSumAsymEt;
i++) {
364 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum AsymEt: hwPt = " << obj->hwPt();
367 vector<l1t::EtSumRef> seedsL1EtSumAsymHt;
369 const size_t sizeSeedsL1EtSumAsymHt = seedsL1EtSumAsymHt.size();
370 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum AsymHt seeds: " << sizeSeedsL1EtSumAsymHt << endl << endl;
372 for (
size_t i = 0;
i != sizeSeedsL1EtSumAsymHt;
i++) {
375 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum AsymHt: hwPt = " << obj->hwPt();
378 vector<l1t::EtSumRef> seedsL1EtSumAsymEtHF;
380 const size_t sizeSeedsL1EtSumAsymEtHF = seedsL1EtSumAsymEtHF.size();
381 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum AsymEtHF seeds: " << sizeSeedsL1EtSumAsymEtHF << endl << endl;
383 for (
size_t i = 0;
i != sizeSeedsL1EtSumAsymEtHF;
i++) {
386 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum AsymEtHF: hwPt = " << obj->hwPt();
389 vector<l1t::EtSumRef> seedsL1EtSumAsymHtHF;
391 const size_t sizeSeedsL1EtSumAsymHtHF = seedsL1EtSumAsymHtHF.size();
392 LogTrace(
"HLTL1TSeed") <<
"\n L1EtSum AsymHtHF seeds: " << sizeSeedsL1EtSumAsymHtHF << endl << endl;
394 for (
size_t i = 0;
i != sizeSeedsL1EtSumAsymHtHF;
i++) {
397 LogTrace(
"HLTL1TSeed") <<
"\tL1EtSum AsymHtHF: hwPt = " << obj->hwPt();
400 LogTrace(
"HLTL1TSeed") <<
" \n\n" << endl;
412 std::list<int> listMuon;
414 std::list<int> listEG;
416 std::list<int> listJet;
417 std::list<int> listTau;
419 std::list<int> listETM;
420 std::list<int> listETT;
421 std::list<int> listHTT;
422 std::list<int> listHTM;
423 std::list<int> listETMHF;
425 std::list<int> listJetCounts;
427 std::list<int> listCentrality;
428 std::list<int> listMinBiasHFP0;
429 std::list<int> listMinBiasHFM0;
430 std::list<int> listMinBiasHFP1;
431 std::list<int> listMinBiasHFM1;
432 std::list<int> listTotalEtEm;
433 std::list<int> listMissingEtHF;
434 std::list<int> listTowerCount;
435 std::list<int> listAsymEt;
436 std::list<int> listAsymHt;
437 std::list<int> listAsymEtHF;
438 std::list<int> listAsymHtHF;
444 if (!uGtAlgoBlocks.
isValid()) {
446 <<
" requested in configuration, but not found in the event." << std::endl;
452 if (uGtAlgoBlocks->size() == 0) {
454 <<
" is empty." << std::endl;
463 if (!gtObjectMapRecord.
isValid()) {
465 <<
" requested in configuration, but not found in the event." << std::endl;
471 const std::vector<GlobalObjectMap>& objMaps = gtObjectMapRecord->gtObjectMap();
473 LogTrace(
"HLTL1TSeed") <<
"\nHLTL1Seed"
474 <<
"\n--------------------------------------------------------------------------------------"
475 "-------------------------------";
478 <<
"\n\tAlgorithms in L1TriggerObjectMapRecord and GT results ( emulated | initial | prescaled | final ) "
482 <<
"\tAlgoBit" << std::setw(40) <<
"algoName"
483 <<
"\t (emul|ini|pre|fin)" << endl;
485 LogTrace(
"HLTL1TSeed") <<
"----------------------------------------------------------------------------------------"
486 "-----------------------------";
488 for (
size_t imap = 0; imap < objMaps.size(); imap++) {
489 int bit = objMaps[imap].algoBitNumber();
491 int emulDecision = objMaps[imap].algoGtlResult();
494 int initDecision = (uGtAlgoBlocks->at(0, 0)).getAlgoDecisionInitial(bit);
495 int presDecision = (uGtAlgoBlocks->at(0, 0)).getAlgoDecisionInterm(bit);
496 int finlDecision = (uGtAlgoBlocks->at(0, 0)).getAlgoDecisionFinal(bit);
498 if (emulDecision != initDecision) {
499 LogTrace(
"HLTL1TSeed") <<
"L1T decision (emulated vs. unpacked initial) is not the same:"
500 <<
"\n\tbit = " << std::setw(3) << bit << std::setw(40) << objMaps[imap].algoName()
501 <<
"\t emulated decision = " << emulDecision
502 <<
"\t unpacked initial decision = " << initDecision
503 <<
"\nThis should not happen. Include the L1TGtEmulCompare module in the sequence."
507 LogTrace(
"HLTL1TSeed") <<
"\t" << std::setw(3) << imap <<
"\tbit = " << std::setw(3) << bit << std::setw(40)
508 << objMaps[imap].algoName() <<
"\t ( " << emulDecision <<
" | " << initDecision <<
" | "
509 << presDecision <<
" | " << finlDecision <<
" ) ";
519 return (uGtAlgoBlocks->at(0, 0)).getFinalOR();
526 for (
auto&
i : algOpTokenVector) {
529 i.tokenResult =
false;
534 for (
auto&
i : algOpTokenVector) {
537 const GlobalObjectMap* objMap = gtObjectMapRecord->getObjectMap(algoName);
539 if (objMap ==
nullptr) {
541 <<
"\nAlgorithm " << algoName
542 <<
", requested as seed by a HLT path, cannot be matched to a L1 algo name in any GlobalObjectMap\n"
543 <<
"Please check if algorithm " << algoName <<
" is present in the L1 menu\n"
550 bool finalAlgoDecision = (uGtAlgoBlocks->at(0, 0)).getAlgoDecisionFinal(bit);
551 i.tokenResult = finalAlgoDecision;
561 <<
"\n Result for logical expression after update of algOpTokens: " << seedsResult <<
"\n"
568 for (std::vector<GlobalLogicParser::OperandToken>::const_iterator itSeed =
m_l1AlgoSeeds.begin();
573 LogTrace(
"HLTL1TSeed") <<
"\n ---------------- algo seed name = " << algoSeedName << endl;
575 const GlobalObjectMap* objMap = gtObjectMapRecord->getObjectMap(algoSeedName);
577 if (objMap ==
nullptr) {
581 <<
"\nAlgorithm " << algoSeedName
582 <<
", requested as seed by a HLT path, cannot be matched to a L1 algo name in any GlobalObjectMap\n"
583 <<
"Please check if algorithm " << algoSeedName <<
" is present in the L1 menu\n"
591 bool algoSeedResultMaskAndPresc = uGtAlgoBlocks->at(0, 0).getAlgoDecisionFinal(algoSeedBitNumber);
593 LogTrace(
"HLTL1TSeed") <<
"\n\tAlgo seed " << algoSeedName <<
" result emulated | final = " << algoSeedResult
594 <<
" | " << algoSeedResultMaskAndPresc << endl;
598 if (!algoSeedResultMaskAndPresc)
607 const std::vector<GlobalLogicParser::OperandToken>& opTokenVecObjMap = objMap->
operandTokenVector();
608 const std::vector<L1TObjectTypeInCond>& condObjTypeVec = objMap->
objectTypeVector();
609 const std::vector<CombinationsInCond>& condCombinations = objMap->
combinationVector();
611 LogTrace(
"HLTL1TSeed") <<
"\n\talgoName =" << objMap->
algoName() <<
"\talgoBitNumber = " << algoSeedBitNumber
612 <<
"\talgoGtlResult = " << algoSeedResult << endl
615 if (opTokenVecObjMap.size() != condObjTypeVec.size()) {
618 <<
"\nhas object map for bit number " << algoSeedBitNumber
619 <<
" which contains different size vectors of operand tokens and of condition object types!" << std::endl;
621 assert(opTokenVecObjMap.size() == condObjTypeVec.size());
624 if (opTokenVecObjMap.size() != condCombinations.size()) {
627 <<
"\nhas object map for bit number " << algoSeedBitNumber
628 <<
" which contains different size vectors of operand tokens and of condition object combinations!"
631 assert(opTokenVecObjMap.size() == condCombinations.size());
636 for (
size_t condNumber = 0; condNumber < opTokenVecObjMap.size(); condNumber++) {
637 std::vector<l1t::GlobalObject> condObjType = condObjTypeVec[condNumber];
639 for (
auto& jOb : condObjType) {
640 LogTrace(
"HLTL1TSeed") << setw(15) <<
"\tcondObjType = " << jOb << endl;
643 const std::string condName = opTokenVecObjMap[condNumber].tokenName;
644 bool condResult = opTokenVecObjMap[condNumber].tokenResult;
656 LogTrace(
"HLTL1TSeed") << setw(15) <<
"\tcondCombinations = " << condComb->size() << endl;
658 for (
auto const& itComb : (*condComb)) {
659 LogTrace(
"HLTL1TSeed") << setw(15) <<
"\tnew combination" << endl;
663 for (
auto itObject = itComb.begin(); itObject != itComb.end(); itObject++) {
666 if (condObjType.empty()) {
668 <<
"\talgoName = " << objMap->
algoName()
669 <<
" is object-less L1 algorithm, so do not attempt to store any objects to the list of seeds.\n"
681 LogTrace(
"HLTL1TSeed") <<
"\tAdd object of type " << objTypeVal <<
" and index " << (*itObject)
682 <<
" to the seed list." << std::endl;
689 switch (objTypeVal) {
691 listMuon.push_back(*itObject);
696 listEG.push_back(*itObject);
699 listJet.push_back(*itObject);
702 listTau.push_back(*itObject);
705 listETM.push_back(*itObject);
708 listETT.push_back(*itObject);
711 listHTT.push_back(*itObject);
714 listHTM.push_back(*itObject);
717 listETMHF.push_back(*itObject);
720 listTowerCount.push_back(*itObject);
723 listMinBiasHFP0.push_back(*itObject);
726 listMinBiasHFM0.push_back(*itObject);
729 listMinBiasHFP1.push_back(*itObject);
732 listMinBiasHFM1.push_back(*itObject);
735 listTotalEtEm.push_back(*itObject);
738 listAsymEt.push_back(*itObject);
741 listAsymHt.push_back(*itObject);
744 listAsymEtHF.push_back(*itObject);
747 listAsymHtHF.push_back(*itObject);
757 listCentrality.push_back(*itObject);
768 LogTrace(
"HLTL1TSeed") <<
"\n HLTL1TSeed::hltFilter "
769 <<
"\n Unknown object of type " << objTypeVal <<
" and index " << (*itObject)
770 <<
" in the seed list." << std::endl;
812 listJetCounts.sort();
813 listJetCounts.unique();
815 listCentrality.sort();
816 listCentrality.unique();
818 listMinBiasHFP0.sort();
819 listMinBiasHFP0.unique();
821 listMinBiasHFM0.sort();
822 listMinBiasHFM0.unique();
824 listMinBiasHFP1.sort();
825 listMinBiasHFP1.unique();
827 listMinBiasHFM1.sort();
828 listMinBiasHFM1.unique();
830 listTotalEtEm.sort();
831 listTotalEtEm.unique();
833 listMissingEtHF.sort();
834 listMissingEtHF.unique();
836 listTowerCount.sort();
837 listTowerCount.unique();
846 listAsymEtHF.unique();
849 listAsymHtHF.unique();
855 if (!listMuon.empty()) {
861 <<
"\nrequested in configuration, but not found in the event."
862 <<
"\nNo muons added to filterproduct." << endl;
864 for (std::list<int>::const_iterator itObj = listMuon.begin(); itObj != listMuon.end(); ++itObj) {
866 unsigned int index = muons->begin(0) - muons->begin() + *itObj;
875 if (!listEG.empty()) {
880 <<
"\nrequested in configuration, but not found in the event."
881 <<
"\nNo egammas added to filterproduct." << endl;
883 for (std::list<int>::const_iterator itObj = listEG.begin(); itObj != listEG.end(); ++itObj) {
885 unsigned int index = egammas->begin(0) - egammas->begin() + *itObj;
894 if (!listJet.empty()) {
900 <<
"\nrequested in configuration, but not found in the event."
901 <<
"\nNo jets added to filterproduct." << endl;
903 for (std::list<int>::const_iterator itObj = listJet.begin(); itObj != listJet.end(); ++itObj) {
905 unsigned int index = jets->begin(0) - jets->begin() + *itObj;
914 if (!listTau.empty()) {
920 <<
"\nrequested in configuration, but not found in the event."
921 <<
"\nNo taus added to filterproduct." << endl;
923 for (std::list<int>::const_iterator itObj = listTau.begin(); itObj != listTau.end(); ++itObj) {
925 unsigned int index = taus->begin(0) - taus->begin() + *itObj;
938 <<
"\nrequested in configuration, but not found in the event."
939 <<
"\nNo etsums added to filterproduct." << endl;
943 for (iter = etsums->begin(0); iter != etsums->end(0); ++iter) {
946 switch (iter->getType()) {
948 if (!listETT.empty())
952 if (!listHTT.empty())
956 if (!listETM.empty())
960 if (!listHTM.empty())
964 if (!listETMHF.empty())
968 if (!listCentrality.empty())
972 if (!listMinBiasHFP0.empty())
976 if (!listMinBiasHFM0.empty())
980 if (!listMinBiasHFP1.empty())
984 if (!listMinBiasHFM1.empty())
988 if (!listTotalEtEm.empty())
992 if (!listTowerCount.empty())
996 if (!listAsymEt.empty())
1000 if (!listAsymHt.empty())
1004 if (!listAsymEtHF.empty())
1008 if (!listAsymHtHF.empty())
1012 LogTrace(
"HLTL1TSeed") <<
" L1EtSum seed of currently unsuported HLT TriggerType. l1t::EtSum type: "
1013 << iter->getType() <<
"\n";
1038 LogTrace(
"HLTL1TSeed") <<
"\nHLTL1Seed:seedsL1TriggerObjectMaps returning " << seedsResult << endl << endl;
BXVector< EGamma > EGammaBxCollection
std::string m_l1SeedsLogicalExpression
virtual const bool expressionResult() const
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
const std::vector< L1TObjectTypeInCond > & objectTypeVector() const
edm::InputTag m_l1MuonTag
HLTL1TSeed(const edm::ParameterSet &)
constructor
bool getByToken(EDGetToken token, Handle< PROD > &result) const
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)
edm::Ref< JetBxCollection > JetRef
edm::Ref< EtSumBxCollection > EtSumRef
bool algoGtlResult() const
BXVector< Tau > TauBxCollection
std::vector< GlobalLogicParser::OperandToken > expressionSeedsOperandList()
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
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
int algoBitNumber() const
get / set bit number for algorithm in the object map
ParameterDescriptionBase * add(U const &iLabel, T const &value)
const std::vector< CombinationsInCond > & combinationVector() const
BXVector< Muon > MuonBxCollection
const std::vector< GlobalLogicParser::OperandToken > & operandTokenVector() const
bool m_isDebugEnabled
cache edm::isDebugEnabled()
std::vector< GlobalLogicParser::OperandToken > m_l1AlgoSeeds
list of required algorithms for seeding
const std::string & algoName() const
destructor
BXVector< Jet > JetBxCollection
edm::InputTag m_l1EGammaTag
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
void add(std::string const &label, ParameterSetDescription const &psetDescription)
edm::InputTag m_l1GlobalTag
InputTag for L1 Global Trigger.
edm::EDGetTokenT< GlobalAlgBlkBxCollection > m_l1GlobalToken
const CombinationsInCond * getCombinationsInCond(const std::string &condNameVal) const
return all the combinations passing the requirements imposed in condition condNameVal ...
void dumpTriggerFilterObjectWithRefs(trigger::TriggerFilterObjectWithRefs &) const
detailed print of filter content
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
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
tuple size
Write out results.
edm::EDGetTokenT< l1t::TauBxCollection > m_l1TauToken
edm::EDGetTokenT< GlobalObjectMapRecord > m_l1GtObjectMapToken