36 m_l1SeedsLogicalExpression(parSet.getParameter<
string>(
"L1SeedsLogicalExpression")),
37 m_l1GtObjectMapTag(parSet.getParameter<
edm::InputTag> (
"L1ObjectMapInputTag")),
39 m_l1GlobalTag(parSet.getParameter<
edm::InputTag> (
"L1GlobalInputTag")),
41 m_l1MuonCollectionsTag(parSet.getParameter<
edm::InputTag>(
"L1MuonInputTag")),
42 m_l1MuonTag(m_l1MuonCollectionsTag),
44 m_l1EGammaCollectionsTag(parSet.getParameter<
edm::InputTag>(
"L1EGammaInputTag")),
45 m_l1EGammaTag(m_l1EGammaCollectionsTag),
47 m_l1JetCollectionsTag(parSet.getParameter<
edm::InputTag>(
"L1JetInputTag")),
48 m_l1JetTag(m_l1JetCollectionsTag),
50 m_l1TauCollectionsTag(parSet.getParameter<
edm::InputTag>(
"L1TauInputTag")),
51 m_l1TauTag(m_l1TauCollectionsTag),
53 m_l1EtSumCollectionsTag(parSet.getParameter<
edm::InputTag>(
"L1EtSumInputTag")),
54 m_l1EtSumTag(m_l1EtSumCollectionsTag),
56 m_l1GlobalDecision(
false),
62 throw cms::Exception(
"FailModule") <<
"\nTrying to seed with an empty L1SeedsLogicalExpression.\n" << std::endl;
106 desc.
add<
string>(
"L1SeedsLogicalExpression",
"");
114 descriptions.
add(
"hltL1TSeed", desc);
157 <<
"\nHLTL1TSeed::hltFilter " 158 <<
"\n Dump TriggerFilterObjectWithRefs\n" << endl;
160 vector<l1t::MuonRef> seedsL1Mu;
162 const size_t sizeSeedsL1Mu = seedsL1Mu.size();
168 <<
"\n L1Mu seeds: " << sizeSeedsL1Mu << endl << endl;
170 for (
size_t i = 0;
i != sizeSeedsL1Mu;
i++) {
176 <<
"\tL1Mu " <<
"\t" <<
"q = " << obj->hwCharge()
177 <<
"\t" <<
"pt = " << obj->pt() <<
"\t" <<
"eta = " << obj->eta()
178 <<
"\t" <<
"phi = " << obj->phi();
181 vector<l1t::EGammaRef> seedsL1EG;
183 const size_t sizeSeedsL1EG = seedsL1EG.size();
186 <<
"\n L1EG seeds: " << sizeSeedsL1EG << endl << endl;
188 for (
size_t i = 0;
i != sizeSeedsL1EG;
i++) {
194 <<
"\tL1EG " <<
"\t" <<
"pt = " 195 << obj->pt() <<
"\t" <<
"eta = " << obj->eta()
196 <<
"\t" <<
"phi = " << obj->phi();
199 vector<l1t::JetRef> seedsL1Jet;
201 const size_t sizeSeedsL1Jet = seedsL1Jet.size();
204 <<
"\n L1Jet seeds: " << sizeSeedsL1Jet << endl << endl;
206 for (
size_t i = 0;
i != sizeSeedsL1Jet;
i++) {
211 LogTrace(
"HLTL1TSeed") <<
"\tL1Jet " <<
"\t" <<
"pt = " 212 << obj->pt() <<
"\t" <<
"eta = " << obj->eta()
213 <<
"\t" <<
"phi = " << obj->phi();
216 vector<l1t::TauRef> seedsL1Tau;
218 const size_t sizeSeedsL1Tau = seedsL1Tau.size();
221 <<
"\n L1Tau seeds: " << sizeSeedsL1Tau << endl << endl;
223 for (
size_t i = 0;
i != sizeSeedsL1Tau;
i++) {
229 <<
"\tL1Tau " <<
"\t" <<
"pt = " 230 << obj->pt() <<
"\t" <<
"eta = " << obj->eta()
231 <<
"\t" <<
"phi = " << obj->phi();
234 vector<l1t::EtSumRef> seedsL1EtSumETT;
236 const size_t sizeSeedsL1EtSumETT = seedsL1EtSumETT.size();
238 <<
"\n L1EtSum ETT seeds: " << sizeSeedsL1EtSumETT << endl << endl;
240 for (
size_t i = 0;
i != sizeSeedsL1EtSumETT;
i++) {
244 <<
"\tL1EtSum ETT" <<
"\t" <<
"pt = " 245 << obj->pt() <<
"\t" <<
"eta = " << obj->eta()
246 <<
"\t" <<
"phi = " << obj->phi();
249 vector<l1t::EtSumRef> seedsL1EtSumHTT;
251 const size_t sizeSeedsL1EtSumHTT = seedsL1EtSumHTT.size();
253 <<
"\n L1EtSum HTT seeds: " << sizeSeedsL1EtSumHTT << endl << endl;
255 for (
size_t i = 0;
i != sizeSeedsL1EtSumHTT;
i++) {
259 <<
"\tL1EtSum HTT" <<
"\t" <<
"pt = " 260 << obj->pt() <<
"\t" <<
"eta = " << obj->eta()
261 <<
"\t" <<
"phi = " << obj->phi();
264 vector<l1t::EtSumRef> seedsL1EtSumETM;
266 const size_t sizeSeedsL1EtSumETM = seedsL1EtSumETM.size();
268 <<
"\n L1EtSum ETM seeds: " << sizeSeedsL1EtSumETM << endl << endl;
270 for (
size_t i = 0;
i != sizeSeedsL1EtSumETM;
i++) {
274 <<
"\tL1EtSum ETM" <<
"\t" <<
"pt = " 275 << obj->pt() <<
"\t" <<
"eta = " << obj->eta()
276 <<
"\t" <<
"phi = " << obj->phi();
279 vector<l1t::EtSumRef> seedsL1EtSumETMHF;
281 const size_t sizeSeedsL1EtSumETMHF = seedsL1EtSumETMHF.size();
283 <<
"\n L1EtSum ETMHF seeds: " << sizeSeedsL1EtSumETMHF << endl << endl;
285 for (
size_t i = 0;
i != sizeSeedsL1EtSumETMHF;
i++) {
289 <<
"\tL1EtSum ETMHF" <<
"\t" <<
"pt = " 290 << obj->pt() <<
"\t" <<
"eta = " << obj->eta()
291 <<
"\t" <<
"phi = " << obj->phi();
294 vector<l1t::EtSumRef> seedsL1EtSumHTM;
296 const size_t sizeSeedsL1EtSumHTM = seedsL1EtSumHTM.size();
298 <<
"\n L1EtSum HTM seeds: " << sizeSeedsL1EtSumHTM << endl << endl;
300 for (
size_t i = 0;
i != sizeSeedsL1EtSumHTM;
i++) {
304 <<
"\tL1EtSum HTM" <<
"\t" <<
"pt = " 305 << obj->pt() <<
"\t" <<
"eta = " << obj->eta()
306 <<
"\t" <<
"phi = " << obj->phi();
309 vector<l1t::EtSumRef> seedsL1EtSumCentrality;
311 const size_t sizeSeedsL1EtSumCentrality = seedsL1EtSumCentrality.size();
313 <<
"\n L1EtSum Centrality seeds: " << sizeSeedsL1EtSumCentrality << endl << endl;
315 for (
size_t i = 0;
i != sizeSeedsL1EtSumCentrality;
i++) {
319 <<
"\tL1EtSum Centrality Bits: " << std::bitset<8>(obj->hwPt()) <<
" (hwPt = " << obj->hwPt() <<
")" ;
322 vector<l1t::EtSumRef> seedsL1EtSumMinBiasHFP0;
324 const size_t sizeSeedsL1EtSumMinBiasHFP0 = seedsL1EtSumMinBiasHFP0.size();
326 <<
"\n L1EtSum MinBiasHFP0 seeds: " << sizeSeedsL1EtSumMinBiasHFP0 << endl << endl;
328 for (
size_t i = 0;
i != sizeSeedsL1EtSumMinBiasHFP0;
i++) {
332 <<
"\tL1EtSum MinBiasHFP0: hwPt = " << obj->hwPt();
335 vector<l1t::EtSumRef> seedsL1EtSumMinBiasHFM0;
337 const size_t sizeSeedsL1EtSumMinBiasHFM0 = seedsL1EtSumMinBiasHFM0.size();
339 <<
"\n L1EtSum MinBiasHFM0 seeds: " << sizeSeedsL1EtSumMinBiasHFM0 << endl << endl;
341 for (
size_t i = 0;
i != sizeSeedsL1EtSumMinBiasHFM0;
i++) {
345 <<
"\tL1EtSum MinBiasHFM0: hwPt = " << obj->hwPt();
348 vector<l1t::EtSumRef> seedsL1EtSumMinBiasHFP1;
350 const size_t sizeSeedsL1EtSumMinBiasHFP1 = seedsL1EtSumMinBiasHFP1.size();
352 <<
"\n L1EtSum MinBiasHFP1 seeds: " << sizeSeedsL1EtSumMinBiasHFP1 << endl << endl;
354 for (
size_t i = 0;
i != sizeSeedsL1EtSumMinBiasHFP1;
i++) {
358 <<
"\tL1EtSum MinBiasHFP1: hwPt = " << obj->hwPt();
361 vector<l1t::EtSumRef> seedsL1EtSumMinBiasHFM1;
363 const size_t sizeSeedsL1EtSumMinBiasHFM1 = seedsL1EtSumMinBiasHFM1.size();
365 <<
"\n L1EtSum MinBiasHFM1 seeds: " << sizeSeedsL1EtSumMinBiasHFM1 << endl << endl;
367 for (
size_t i = 0;
i != sizeSeedsL1EtSumMinBiasHFM1;
i++) {
371 <<
"\tL1EtSum MinBiasHFM1: hwPt = " << obj->hwPt();
374 vector<l1t::EtSumRef> seedsL1EtSumTowerCount;
376 const size_t sizeSeedsL1EtSumTowerCount = seedsL1EtSumTowerCount.size();
378 <<
"\n L1EtSum TowerCount seeds: " << sizeSeedsL1EtSumTowerCount << endl << endl;
380 for (
size_t i = 0;
i != sizeSeedsL1EtSumTowerCount;
i++) {
384 <<
"\tL1EtSum TowerCount: hwPt = " << obj->hwPt();
387 vector<l1t::EtSumRef> seedsL1EtSumAsymEt;
389 const size_t sizeSeedsL1EtSumAsymEt = seedsL1EtSumAsymEt.size();
391 <<
"\n L1EtSum AsymEt seeds: " << sizeSeedsL1EtSumAsymEt << endl << endl;
393 for (
size_t i = 0;
i != sizeSeedsL1EtSumAsymEt;
i++) {
397 <<
"\tL1EtSum AsymEt: hwPt = " << obj->hwPt();
400 vector<l1t::EtSumRef> seedsL1EtSumAsymHt;
402 const size_t sizeSeedsL1EtSumAsymHt = seedsL1EtSumAsymHt.size();
404 <<
"\n L1EtSum AsymHt seeds: " << sizeSeedsL1EtSumAsymHt << endl << endl;
406 for (
size_t i = 0;
i != sizeSeedsL1EtSumAsymHt;
i++) {
410 <<
"\tL1EtSum AsymHt: hwPt = " << obj->hwPt();
413 vector<l1t::EtSumRef> seedsL1EtSumAsymEtHF;
415 const size_t sizeSeedsL1EtSumAsymEtHF = seedsL1EtSumAsymEtHF.size();
417 <<
"\n L1EtSum AsymEtHF seeds: " << sizeSeedsL1EtSumAsymEtHF << endl << endl;
419 for (
size_t i = 0;
i != sizeSeedsL1EtSumAsymEtHF;
i++) {
423 <<
"\tL1EtSum AsymEtHF: hwPt = " << obj->hwPt();
426 vector<l1t::EtSumRef> seedsL1EtSumAsymHtHF;
428 const size_t sizeSeedsL1EtSumAsymHtHF = seedsL1EtSumAsymHtHF.size();
430 <<
"\n L1EtSum AsymHtHF seeds: " << sizeSeedsL1EtSumAsymHtHF << endl << endl;
432 for (
size_t i = 0;
i != sizeSeedsL1EtSumAsymHtHF;
i++) {
436 <<
"\tL1EtSum AsymHtHF: hwPt = " << obj->hwPt();
439 LogTrace(
"HLTL1TSeed") <<
" \n\n" << endl;
456 std::list<int> listMuon;
458 std::list<int> listEG;
460 std::list<int> listJet;
461 std::list<int> listTau;
463 std::list<int> listETM;
464 std::list<int> listETT;
465 std::list<int> listHTT;
466 std::list<int> listHTM;
467 std::list<int> listETMHF;
469 std::list<int> listJetCounts;
471 std::list<int> listCentrality;
472 std::list<int> listMinBiasHFP0;
473 std::list<int> listMinBiasHFM0;
474 std::list<int> listMinBiasHFP1;
475 std::list<int> listMinBiasHFM1;
476 std::list<int> listTotalEtEm;
477 std::list<int> listMissingEtHF;
478 std::list<int> listTowerCount;
479 std::list<int> listAsymEt;
480 std::list<int> listAsymHt;
481 std::list<int> listAsymEtHF;
482 std::list<int> listAsymHtHF;
488 if (!uGtAlgoBlocks.
isValid()) {
491 <<
" Warning: GlobalAlgBlkBxCollection with input tag " 493 <<
" requested in configuration, but not found in the event." << std::endl;
499 if(uGtAlgoBlocks->
size() == 0) {
502 <<
" Warning: GlobalAlgBlkBxCollection with input tag " 504 <<
" is empty." << std::endl;
513 if (!gtObjectMapRecord.
isValid()) {
516 <<
" Warning: GlobalObjectMapRecord with input tag " 518 <<
" requested in configuration, but not found in the event." << std::endl;
525 const std::vector<GlobalObjectMap>& objMaps = gtObjectMapRecord->
gtObjectMap();
529 <<
"\n---------------------------------------------------------------------------------------------------------------------";
532 <<
"\n\tAlgorithms in L1TriggerObjectMapRecord and GT results ( emulated | initial | prescaled | final ) " << endl;
535 <<
"\n\tmap" <<
"\tAlgoBit" << std::setw(40) <<
"algoName" <<
"\t (emul|ini|pre|fin)" << endl;
538 <<
"---------------------------------------------------------------------------------------------------------------------";
540 for (
size_t imap =0; imap < objMaps.size(); imap++) {
542 int bit = objMaps[imap].algoBitNumber();
544 int emulDecision = objMaps[imap].algoGtlResult();
547 int initDecision = (uGtAlgoBlocks->
at(0,0)).getAlgoDecisionInitial(bit);
548 int presDecision = (uGtAlgoBlocks->
at(0,0)).getAlgoDecisionInterm(bit);
549 int finlDecision = (uGtAlgoBlocks->
at(0,0)).getAlgoDecisionFinal(bit);
551 if(emulDecision != initDecision) {
554 <<
"L1T decision (emulated vs. unpacked initial) is not the same:" 555 <<
"\n\tbit = " << std::setw(3) << bit
556 << std::setw(40) << objMaps[imap].algoName()
557 <<
"\t emulated decision = " << emulDecision <<
"\t unpacked initial decision = " << initDecision
558 <<
"\nThis should not happen. Include the L1TGtEmulCompare module in the sequence."<< endl;
564 <<
"\t" << std::setw(3) << imap
565 <<
"\tbit = " << std::setw(3) << bit
566 << std::setw(40) << objMaps[imap].algoName()
567 <<
"\t ( " << emulDecision <<
" | " << initDecision <<
" | " << presDecision <<
" | " << finlDecision <<
" ) ";
581 return (uGtAlgoBlocks->
at(0,0)).getFinalOR();
588 std::vector<GlobalLogicParser::OperandToken>& algOpTokenVector =
591 for (
auto &
i : algOpTokenVector) {
595 i.tokenResult =
false;
601 for (
auto &
i : algOpTokenVector) {
607 if(objMap ==
nullptr) {
610 <<
", requested as seed by a HLT path, cannot be matched to a L1 algo name in any GlobalObjectMap\n" 611 <<
"Please check if algorithm " << algoName <<
" is present in the L1 menu\n" << std::endl;
619 bool finalAlgoDecision = (uGtAlgoBlocks->
at(0,0)).getAlgoDecisionFinal(bit);
620 i.tokenResult = finalAlgoDecision;
634 <<
"\n Result for logical expression after update of algOpTokens: " << seedsResult <<
"\n" 641 for (std::vector<GlobalLogicParser::OperandToken>::const_iterator
647 <<
"\n ---------------- algo seed name = " << algoSeedName << endl;
651 if(objMap ==
nullptr) {
655 throw cms::Exception(
"FailModule") <<
"\nAlgorithm " << algoSeedName
656 <<
", requested as seed by a HLT path, cannot be matched to a L1 algo name in any GlobalObjectMap\n" 657 <<
"Please check if algorithm " << algoSeedName <<
" is present in the L1 menu\n" << std::endl;
665 bool algoSeedResultMaskAndPresc = uGtAlgoBlocks->
at(0,0).getAlgoDecisionFinal(algoSeedBitNumber);
668 <<
"\n\tAlgo seed " << algoSeedName <<
" result emulated | final = " << algoSeedResult <<
" | " << algoSeedResultMaskAndPresc << endl;
672 if(!algoSeedResultMaskAndPresc)
continue;
677 if(!algoSeedResult)
continue;
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();
684 <<
"\n\talgoName =" << objMap->
algoName()
685 <<
"\talgoBitNumber = " << algoSeedBitNumber
686 <<
"\talgoGtlResult = " << algoSeedResult << endl << endl;
689 if (opTokenVecObjMap.size() != condObjTypeVec.size() ) {
691 <<
"\nWarning: GlobalObjectMapRecord with input tag " 693 <<
"\nhas object map for bit number " << algoSeedBitNumber <<
" which contains different size vectors of operand tokens and of condition object types!" << std::endl;
695 assert(opTokenVecObjMap.size() == condObjTypeVec.size());
698 if (opTokenVecObjMap.size() != condCombinations.size()) {
700 <<
"\nWarning: GlobalObjectMapRecord with input tag " 702 <<
"\nhas object map for bit number " << algoSeedBitNumber <<
" which contains different size vectors of operand tokens and of condition object combinations!" << std::endl;
704 assert(opTokenVecObjMap.size() == condCombinations.size());
709 for (
size_t condNumber = 0; condNumber < opTokenVecObjMap.size(); condNumber++) {
711 std::vector<l1t::GlobalObject> condObjType = condObjTypeVec[condNumber];
713 for (
auto & jOb : condObjType) {
716 << setw(15) <<
"\tcondObjType = " << jOb << endl;
720 const std::string condName = opTokenVecObjMap[condNumber].tokenName;
721 bool condResult = opTokenVecObjMap[condNumber].tokenResult;
734 << setw(15) <<
"\tcondCombinations = " << condComb->size() << endl;
736 for (
auto const & itComb : (*condComb)) {
739 << setw(15) <<
"\tnew combination" << endl;
743 for (
auto itObject = itComb.begin(); itObject != itComb.end(); itObject++) {
747 if(condObjType.empty()) {
750 <<
"\talgoName = " << objMap->
algoName() <<
" is object-less L1 algorithm, so do not attempt to store any objects to the list of seeds.\n" 764 <<
"\tAdd object of type " << objTypeVal <<
" and index " << (*itObject) <<
" to the seed list." 773 switch (objTypeVal) {
775 listMuon.push_back(*itObject);
780 listEG.push_back(*itObject);
784 listJet.push_back(*itObject);
788 listTau.push_back(*itObject);
792 listETM.push_back(*itObject);
796 listETT.push_back(*itObject);
800 listHTT.push_back(*itObject);
804 listHTM.push_back(*itObject);
808 listETMHF.push_back(*itObject);
812 listTowerCount.push_back(*itObject);
816 listMinBiasHFP0.push_back(*itObject);
820 listMinBiasHFM0.push_back(*itObject);
824 listMinBiasHFP1.push_back(*itObject);
828 listMinBiasHFM1.push_back(*itObject);
832 listTotalEtEm.push_back(*itObject);
836 listAsymEt.push_back(*itObject);
840 listAsymHt.push_back(*itObject);
844 listAsymEtHF.push_back(*itObject);
848 listAsymHtHF.push_back(*itObject);
859 listCentrality.push_back(*itObject);
872 <<
"\n HLTL1TSeed::hltFilter " 873 <<
"\n Unknown object of type " << objTypeVal
874 <<
" and index " << (*itObject) <<
" in the seed list." 919 listJetCounts.sort();
920 listJetCounts.unique();
922 listCentrality.sort();
923 listCentrality.unique();
925 listMinBiasHFP0.sort();
926 listMinBiasHFP0.unique();
928 listMinBiasHFM0.sort();
929 listMinBiasHFM0.unique();
931 listMinBiasHFP1.sort();
932 listMinBiasHFP1.unique();
934 listMinBiasHFM1.sort();
935 listMinBiasHFM1.unique();
937 listTotalEtEm.sort();
938 listTotalEtEm.unique();
940 listMissingEtHF.sort();
941 listMissingEtHF.unique();
943 listTowerCount.sort();
944 listTowerCount.unique();
953 listAsymEtHF.unique();
956 listAsymHtHF.unique();
962 if (!listMuon.empty()) {
969 <<
"\nWarning: L1MuonBxCollection with input tag " 971 <<
"\nrequested in configuration, but not found in the event." 972 <<
"\nNo muons added to filterproduct." 977 for (std::list<int>::const_iterator itObj = listMuon.begin(); itObj != listMuon.end(); ++itObj) {
993 if (!listEG.empty()) {
999 <<
"\nWarning: L1EGammaBxCollection with input tag " <<
m_l1EGammaTag 1000 <<
"\nrequested in configuration, but not found in the event." 1001 <<
"\nNo egammas added to filterproduct." 1006 for (std::list<int>::const_iterator itObj = listEG.begin(); itObj != listEG.end(); ++itObj) {
1021 if (!listJet.empty()) {
1028 <<
"\nWarning: L1JetBxCollection with input tag " <<
m_l1JetTag 1029 <<
"\nrequested in configuration, but not found in the event." 1030 <<
"\nNo jets added to filterproduct." 1035 for (std::list<int>::const_iterator itObj = listJet.begin(); itObj != listJet.end(); ++itObj) {
1050 if (!listTau.empty()) {
1057 <<
"\nWarning: L1TauBxCollection with input tag " <<
m_l1TauTag 1058 <<
"\nrequested in configuration, but not found in the event." 1059 <<
"\nNo taus added to filterproduct." 1064 for (std::list<int>::const_iterator itObj = listTau.begin(); itObj != listTau.end(); ++itObj) {
1083 <<
"\nWarning: L1EtSumBxCollection with input tag " 1085 <<
"\nrequested in configuration, but not found in the event." 1086 <<
"\nNo etsums added to filterproduct." 1092 for (iter = etsums->
begin(0); iter != etsums->
end(0); ++iter){
1096 switch(iter->getType()) {
1099 if(!listETT.empty())
1103 if(!listHTT.empty())
1107 if(!listETM.empty())
1111 if(!listHTM.empty())
1115 if(!listETMHF.empty())
1119 if(!listCentrality.empty())
1123 if(!listMinBiasHFP0.empty())
1127 if(!listMinBiasHFM0.empty())
1131 if(!listMinBiasHFP1.empty())
1135 if(!listMinBiasHFM1.empty())
1139 if(!listTotalEtEm.empty())
1143 if(!listTowerCount.empty())
1147 if(!listAsymEt.empty())
1151 if(!listAsymHt.empty())
1155 if(!listAsymEtHF.empty())
1159 if(!listAsymHtHF.empty())
1163 LogTrace(
"HLTL1TSeed") <<
" L1EtSum seed of currently unsuported HLT TriggerType. l1t::EtSum type: " << iter->getType() <<
"\n";
1191 <<
"\nHLTL1Seed:seedsL1TriggerObjectMaps returning " << seedsResult << endl << endl;
BXVector< EGamma > EGammaBxCollection
const_iterator end(int bx) const
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
unsigned size(int bx) const
edm::Ref< TauBxCollection > TauRef
const GlobalObjectMap * getObjectMap(const std::string &algoNameVal) const
return the object map for the algorithm algoNameVal
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::Ref< EGammaBxCollection > EGammaRef
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 ...
unsigned int key(const_iterator &iter) const
bool algoGtlResult() const
const std::vector< GlobalObjectMap > & gtObjectMap() const
get / set the vector of object maps
BXVector< Tau > TauBxCollection
std::vector< GlobalLogicParser::OperandToken > expressionSeedsOperandList()
edm::Ref< MuonBxCollection > MuonRef
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref<C>)
edm::Ref< JetBxCollection > JetRef
BXVector< EtSum > EtSumBxCollection
#define DEFINE_FWK_MODULE(type)
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
std::vector< const std::vector< GlobalLogicParser::TokenRPN > * > m_l1AlgoSeedsRpn
vector of Rpn vectors for the required algorithms for seeding
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::Ref< EtSumBxCollection > EtSumRef
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
bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) override
filter the event
bool m_l1GlobalDecision
flag to pass if L1TGlobal accept
std::vector< SingleCombInCond > CombinationsInCond
all the object combinations evaluated to true in the condition
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
parameter description
const_iterator begin(int bx) const
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
edm::EDGetTokenT< l1t::MuonBxCollection > m_l1MuonToken
std::vector< T >::const_iterator const_iterator
edm::EDGetTokenT< l1t::TauBxCollection > m_l1TauToken
edm::EDGetTokenT< GlobalObjectMapRecord > m_l1GtObjectMapToken
const T & at(int bx, unsigned i) const