46 : nameProcess_(iConfig.getParameter<
std::
string>(
"processName")),
47 autoProcessName_(nameProcess_ ==
"*"),
48 onlyStandAlone_(iConfig.getParameter<
bool>(
"onlyStandAlone")),
52 tagL1GlobalTriggerObjectMaps_(
"l1L1GtObjectMap"),
61 autoProcessNameL1ExtraMu_(
false),
62 autoProcessNameL1ExtraNoIsoEG_(
false),
63 autoProcessNameL1ExtraIsoEG_(
false),
64 autoProcessNameL1ExtraCenJet_(
false),
65 autoProcessNameL1ExtraForJet_(
false),
66 autoProcessNameL1ExtraTauJet_(
false),
67 autoProcessNameL1ExtraETM_(
false),
68 autoProcessNameL1ExtraHTM_(
false),
71 hltPrescaleProvider_(iConfig, consumesCollector(), *this),
72 hltConfigInit_(
false),
74 tagTriggerResults_(
"TriggerResults"),
75 tagTriggerEvent_(
"hltTriggerSummaryAOD"),
77 labelHltPrescaleTable_(),
78 hltPrescaleTableRun_(),
79 hltPrescaleTableLumi_(),
80 addPathModuleLabels_(
false),
81 packPathNames_(iConfig.existsAs<
bool>(
"packTriggerPathNames") ? iConfig.getParameter<
bool>(
"packTriggerPathNames")
83 packLabels_(iConfig.existsAs<
bool>(
"packTriggerLabels") ? iConfig.getParameter<
bool>(
"packTriggerLabels") :
true),
84 packPrescales_(iConfig.existsAs<
bool>(
"packTriggerPrescales") ? iConfig.getParameter<
bool>(
"packTriggerPrescales")
87 if (iConfig.
exists(
"addL1Algos"))
89 if (iConfig.
exists(
"l1GlobalTriggerObjectMaps"))
92 if (iConfig.
exists(
"l1ExtraMu")) {
103 if (iConfig.
exists(
"l1ExtraNoIsoEG")) {
114 if (iConfig.
exists(
"l1ExtraIsoEG")) {
125 if (iConfig.
exists(
"l1ExtraCenJet")) {
136 if (iConfig.
exists(
"l1ExtraForJet")) {
147 if (iConfig.
exists(
"l1ExtraTauJet")) {
158 if (iConfig.
exists(
"l1ExtraETM")) {
169 if (iConfig.
exists(
"l1ExtraHTM")) {
180 if (iConfig.
exists(
"mainBxOnly"))
182 if (iConfig.
exists(
"saveL1Refs"))
186 if (iConfig.
exists(
"triggerResults"))
193 if (iConfig.
exists(
"triggerEvent"))
197 if (iConfig.
exists(
"hltPrescaleLabel"))
199 if (iConfig.
exists(
"hltPrescaleTable")) {
208 if (iConfig.
exists(
"addPathModuleLabels"))
211 if (iConfig.
exists(
"exludeCollections"))
215 if (iConfig.
exists(
"l1ExtraMu"))
217 if (iConfig.
exists(
"l1ExtraNoIsoEG"))
219 if (iConfig.
exists(
"l1ExtraIsoEG"))
221 if (iConfig.
exists(
"l1ExtraCenJet"))
223 if (iConfig.
exists(
"l1ExtraForJet"))
225 if (iConfig.
exists(
"l1ExtraTauJet"))
227 if (iConfig.
exists(
"l1ExtraETM"))
229 if (iConfig.
exists(
"l1ExtraHTM"))
231 if (not(this->
autoProcessName_ and
bd.processName() == this->moduleDescription().processName())) {
235 if (iConfig.
exists(
"hltPrescaleTable")) {
243 produces<TriggerAlgorithmCollection>();
244 produces<TriggerConditionCollection>();
245 produces<TriggerPathCollection>();
246 produces<TriggerFilterCollection>();
247 produces<TriggerObjectCollection>();
250 produces<PackedTriggerPrescales>();
251 produces<PackedTriggerPrescales>(
"l1max");
252 produces<PackedTriggerPrescales>(
"l1min");
254 produces<TriggerObjectStandAloneCollection>();
273 if (processHistory.getConfigurationForProcess(iHist->processName(), processConfiguration) &&
283 <<
"' not produced according to process history of input data\n"
284 <<
"No trigger information produced";
287 LogInfo(
"autoProcessName") <<
"HLT process name' " <<
nameProcess_ <<
"' used for PAT trigger information";
294 <<
"' differs from HLT process name '" <<
nameProcess_ <<
"'";
300 <<
"' differs from HLT process name '" <<
nameProcess_ <<
"'";
323 LogError(
"hltConfig") <<
"HLT config extraction error with process name '" <<
nameProcess_ <<
"'";
325 LogError(
"hltConfig") <<
"HLT config size error";
341 if (handleHltPrescaleTable.
isValid()) {
343 handleHltPrescaleTable->
set(), handleHltPrescaleTable->
labels(), handleHltPrescaleTable->
table());
363 if (handleHltPrescaleTable.
isValid()) {
365 handleHltPrescaleTable->
set(), handleHltPrescaleTable->
labels(), handleHltPrescaleTable->
table());
376 auto triggerObjects = std::make_unique<TriggerObjectCollection>();
377 auto triggerObjectsStandAlone = std::make_unique<TriggerObjectStandAloneCollection>();
378 std::unique_ptr<PackedTriggerPrescales> packedPrescales, packedPrescalesL1min, packedPrescalesL1max;
390 if (!handleTriggerResults.
isValid()) {
392 <<
"' not in event\n"
393 <<
"No HLT information produced";
395 }
else if (!handleTriggerEvent.
isValid()) {
397 <<
"' not in event\n"
398 <<
"No HLT information produced";
414 if (handleHltPrescaleTable.
isValid()) {
416 handleHltPrescaleTable->
set(), handleHltPrescaleTable->
labels(), handleHltPrescaleTable->
table());
420 if (hltPrescaleTable.size() == 0) {
424 <<
"Using default from event setup";
430 LogDebug(
"hltPrescaleTable") <<
"HLT prescale table found in event setup";
432 LogWarning(
"hltPrescaleSet") <<
"HLTPrescaleTable from event setup has error";
436 unsigned set(hltPrescaleTable.set());
437 if (hltPrescaleTable.size() > 0) {
439 bool foundPrescaleLabel(
false);
440 for (
unsigned iLabel = 0; iLabel < hltPrescaleTable.labels().size(); ++iLabel) {
443 foundPrescaleLabel =
true;
447 if (!foundPrescaleLabel) {
452 }
else if (
iEvent.isRealData()) {
454 LogError(
"hltPrescaleTable") <<
"No HLT prescale table found\n"
455 <<
"Using default empty table with all prescales 1";
459 const unsigned sizePaths(
hltConfig.size());
460 const unsigned sizeFilters(handleTriggerEvent->
sizeFilters());
461 const unsigned sizeObjects(handleTriggerEvent->
sizeObjects());
463 std::map<std::string, int> moduleStates;
466 auto triggerPaths = std::make_unique<TriggerPathCollection>();
468 const std::vector<std::string>& pathNames =
hltConfig.triggerNames();
469 for (
size_t indexPath = 0; indexPath < sizePaths; ++indexPath) {
470 const std::string& namePath = pathNames.at(indexPath);
471 unsigned indexLastFilterPathModules(handleTriggerResults->
index(indexPath) + 1);
472 while (indexLastFilterPathModules > 0) {
473 --indexLastFilterPathModules;
474 const std::string& labelLastFilterPathModules(
hltConfig.moduleLabel(indexPath, indexLastFilterPathModules));
475 unsigned indexLastFilterFilters =
477 if (indexLastFilterFilters < sizeFilters) {
478 if (
hltConfig.moduleType(labelLastFilterPathModules) ==
"HLTBool")
486 handleTriggerResults->
wasrun(indexPath),
487 handleTriggerResults->
accept(indexPath),
488 handleTriggerResults->
error(indexPath),
489 indexLastFilterPathModules,
490 hltConfig.saveTagsModules(namePath).size());
492 const unsigned sizeModulesPath(
hltConfig.size(indexPath));
493 assert(indexLastFilterPathModules < sizeModulesPath);
494 std::map<unsigned, std::string> indicesModules;
495 for (
size_t iM = 0; iM < sizeModulesPath; ++iM) {
501 if (indexFilter < sizeFilters) {
504 const unsigned slotModule(
hltConfig.moduleIndex(indexPath, nameModule));
505 indicesModules.insert(std::pair<unsigned, std::string>(slotModule, nameModule));
509 for (L1SeedCollection::const_iterator iSeed = l1Seeds.begin(); iSeed != l1Seeds.end(); ++iSeed) {
515 for (std::map<unsigned, std::string>::const_iterator iM = indicesModules.begin(); iM != indicesModules.end();
517 if (iM->first < indexLastFilterPathModules) {
518 moduleStates[iM->second] = 1;
519 }
else if (iM->first == indexLastFilterPathModules) {
520 moduleStates[iM->second] = handleTriggerResults->
accept(indexPath);
521 }
else if (moduleStates.find(iM->second) == moduleStates.end()) {
522 moduleStates[iM->second] = -1;
533 std::multimap<trigger::size_type, int>
objectTypes;
534 std::multimap<trigger::size_type, std::string> filterLabels;
536 for (
size_t iF = 0; iF < sizeFilters; ++iF) {
541 for (
size_t iK = 0; iK <
keys.size(); ++iK) {
542 filterLabels.insert(std::pair<trigger::size_type, std::string>(
keys[iK], nameFilter));
550 triggerObjectsStandAlone->reserve(sizeObjects);
553 std::map<trigger::size_type, trigger::size_type> newObjectKeys;
554 for (
size_t iO = 0, iC = 0, nC = handleTriggerEvent->
sizeCollections(); iO < sizeObjects && iC < nC; ++iO) {
559 while (iO >= collectionKeys[iC])
563 typedef std::multimap<trigger::size_type, int>::const_iterator it_type;
564 for (std::pair<it_type, it_type> trange =
objectTypes.equal_range(iO); trange.first != trange.second;
566 triggerObject.addTriggerObjectType(trange.first->second);
572 bool excluded(
false);
583 typedef std::multimap<trigger::size_type, std::string>::const_iterator it_fl;
584 for (std::pair<it_fl, it_fl> frange = filterLabels.equal_range(iO); frange.first != frange.second;
587 const std::vector<ModuleLabelToPathAndFlags::PathAndFlags>&
paths =
589 for (std::vector<ModuleLabelToPathAndFlags::PathAndFlags>::const_iterator iP =
paths.begin(); iP !=
paths.end();
591 bool pathFired = handleTriggerResults->
wasrun(iP->pathIndex) && handleTriggerResults->
accept(iP->pathIndex);
592 triggerObjectStandAlone.
addPathName(iP->pathName, pathFired && iP->lastFilter, pathFired && iP->l3Filter);
596 triggerObjectsStandAlone->push_back(triggerObjectStandAlone);
605 auto triggerFilters = std::make_unique<TriggerFilterCollection>();
606 triggerFilters->reserve(sizeFilters);
607 for (
size_t iF = 0; iF < sizeFilters; ++iF) {
617 for (
size_t iK = 0; iK <
keys.size(); ++iK) {
619 if (newObjectKeys.find(
keys.at(iK)) != newObjectKeys.end()) {
620 if (newObjectKeys[
keys.at(iK)] == sizeObjects)
625 LogWarning(
"triggerObjectKey") <<
"TriggerFilter '" << nameFilter
626 <<
"' requests non-existing TriggerObject key " <<
keys.at(iK) <<
"\n"
627 <<
"Skipping object assignment";
631 std::map<std::string, int>::iterator iS(moduleStates.find(nameFilter));
632 if (iS != moduleStates.end()) {
647 packedPrescales = std::make_unique<PackedTriggerPrescales>(handleTriggerResults);
648 packedPrescalesL1min = std::make_unique<PackedTriggerPrescales>(handleTriggerResults);
649 packedPrescalesL1max = std::make_unique<PackedTriggerPrescales>(handleTriggerResults);
652 for (
unsigned int i = 0,
n =
names.size();
i <
n; ++
i) {
655 if (pvdet.first.empty()) {
656 packedPrescalesL1max->addPrescaledTrigger(
i, 1);
657 packedPrescalesL1min->addPrescaledTrigger(
i, 1);
659 int pmin = -1, pmax = -1;
660 for (
const auto&
p : pvdet.first) {
662 if (
p.second > 0 && (pmin == -1 || pmin >
p.second))
665 packedPrescalesL1max->addPrescaledTrigger(
i, pmax);
666 packedPrescalesL1min->addPrescaledTrigger(
i, pmin);
669 packedPrescales->addPrescaledTrigger(
i, pvdet.second);
683 std::map<L1GtObject, std::vector<unsigned> > l1ObjectTypeMap;
687 if (handleL1ExtraMu.
isValid()) {
688 std::vector<unsigned> muKeys;
689 for (
size_t l1Mu = 0; l1Mu < handleL1ExtraMu->size(); ++l1Mu) {
690 if (
mainBxOnly_ && handleL1ExtraMu->at(l1Mu).bx() != 0)
697 const reco::LeafCandidate leafCandidate(*(handleL1ExtraMu->at(l1Mu).reco::LeafCandidate::clone()));
705 triggerObjectsStandAlone->push_back(triggerObjectStandAlone);
706 if (handleL1ExtraMu->at(l1Mu).bx() == 0)
707 muKeys.push_back(triggerObjectsStandAlone->size() - 1);
709 l1ObjectTypeMap.insert(std::make_pair(
Mu, muKeys));
717 if (handleL1ExtraNoIsoEG.
isValid()) {
718 std::vector<unsigned> noIsoEGKeys;
719 for (
size_t l1NoIsoEG = 0; l1NoIsoEG < handleL1ExtraNoIsoEG->size(); ++l1NoIsoEG) {
720 if (
mainBxOnly_ && handleL1ExtraNoIsoEG->at(l1NoIsoEG).bx() != 0)
727 const reco::LeafCandidate leafCandidate(*(handleL1ExtraNoIsoEG->at(l1NoIsoEG).reco::LeafCandidate::clone()));
735 triggerObjectsStandAlone->push_back(triggerObjectStandAlone);
736 if (handleL1ExtraNoIsoEG->at(l1NoIsoEG).bx() == 0)
737 noIsoEGKeys.push_back(triggerObjectsStandAlone->size() - 1);
739 l1ObjectTypeMap.insert(std::make_pair(
NoIsoEG, noIsoEGKeys));
741 LogError(
"l1ExtraValid") <<
"l1extra::L1EmParticleCollection product with InputTag '"
747 if (handleL1ExtraIsoEG.
isValid()) {
748 std::vector<unsigned> isoEGKeys;
749 for (
size_t l1IsoEG = 0; l1IsoEG < handleL1ExtraIsoEG->size(); ++l1IsoEG) {
750 if (
mainBxOnly_ && handleL1ExtraIsoEG->at(l1IsoEG).bx() != 0)
757 const reco::LeafCandidate leafCandidate(*(handleL1ExtraIsoEG->at(l1IsoEG).reco::LeafCandidate::clone()));
765 triggerObjectsStandAlone->push_back(triggerObjectStandAlone);
766 if (handleL1ExtraIsoEG->at(l1IsoEG).bx() == 0)
767 isoEGKeys.push_back(triggerObjectsStandAlone->size() - 1);
769 l1ObjectTypeMap.insert(std::make_pair(
IsoEG, isoEGKeys));
777 if (handleL1ExtraCenJet.
isValid()) {
778 std::vector<unsigned> cenJetKeys;
779 for (
size_t l1CenJet = 0; l1CenJet < handleL1ExtraCenJet->size(); ++l1CenJet) {
780 if (
mainBxOnly_ && handleL1ExtraCenJet->at(l1CenJet).bx() != 0)
787 const reco::LeafCandidate leafCandidate(*(handleL1ExtraCenJet->at(l1CenJet).reco::LeafCandidate::clone()));
795 triggerObjectsStandAlone->push_back(triggerObjectStandAlone);
796 if (handleL1ExtraCenJet->at(l1CenJet).bx() == 0)
797 cenJetKeys.push_back(triggerObjectsStandAlone->size() - 1);
799 l1ObjectTypeMap.insert(std::make_pair(
CenJet, cenJetKeys));
801 LogError(
"l1ExtraValid") <<
"l1extra::L1JetParticleCollection product with InputTag '"
807 if (handleL1ExtraForJet.
isValid()) {
808 std::vector<unsigned> forJetKeys;
809 for (
size_t l1ForJet = 0; l1ForJet < handleL1ExtraForJet->size(); ++l1ForJet) {
810 if (
mainBxOnly_ && handleL1ExtraForJet->at(l1ForJet).bx() != 0)
817 const reco::LeafCandidate leafCandidate(*(handleL1ExtraForJet->at(l1ForJet).reco::LeafCandidate::clone()));
825 triggerObjectsStandAlone->push_back(triggerObjectStandAlone);
826 if (handleL1ExtraForJet->at(l1ForJet).bx() == 0)
827 forJetKeys.push_back(triggerObjectsStandAlone->size() - 1);
829 l1ObjectTypeMap.insert(std::make_pair(
ForJet, forJetKeys));
831 LogError(
"l1ExtraValid") <<
"l1extra::L1JetParticleCollection product with InputTag '"
837 if (handleL1ExtraTauJet.
isValid()) {
838 std::vector<unsigned> tauJetKeys;
839 for (
size_t l1TauJet = 0; l1TauJet < handleL1ExtraTauJet->size(); ++l1TauJet) {
840 if (
mainBxOnly_ && handleL1ExtraTauJet->at(l1TauJet).bx() != 0)
847 const reco::LeafCandidate leafCandidate(*(handleL1ExtraTauJet->at(l1TauJet).reco::LeafCandidate::clone()));
855 triggerObjectsStandAlone->push_back(triggerObjectStandAlone);
856 if (handleL1ExtraTauJet->at(l1TauJet).bx() == 0)
857 tauJetKeys.push_back(triggerObjectsStandAlone->size() - 1);
859 l1ObjectTypeMap.insert(std::make_pair(
TauJet, tauJetKeys));
861 LogError(
"l1ExtraValid") <<
"l1extra::L1JetParticleCollection product with InputTag '"
867 if (handleL1ExtraETM.
isValid()) {
868 std::vector<unsigned> etmKeys;
869 for (
size_t l1ETM = 0; l1ETM < handleL1ExtraETM->size(); ++l1ETM) {
870 if (
mainBxOnly_ && handleL1ExtraETM->at(l1ETM).bx() != 0)
877 const reco::LeafCandidate leafCandidate(*(handleL1ExtraETM->at(l1ETM).reco::LeafCandidate::clone()));
885 triggerObjectsStandAlone->push_back(triggerObjectStandAlone);
886 if (handleL1ExtraETM->at(l1ETM).bx() == 0)
887 etmKeys.push_back(triggerObjectsStandAlone->size() - 1);
889 l1ObjectTypeMap.insert(std::make_pair(
ETM, etmKeys));
891 LogError(
"l1ExtraValid") <<
"l1extra::L1EtMissParticleCollection product with InputTag '"
897 if (handleL1ExtraHTM.
isValid()) {
898 std::vector<unsigned> htmKeys;
899 for (
size_t l1HTM = 0; l1HTM < handleL1ExtraHTM->size(); ++l1HTM) {
900 if (
mainBxOnly_ && handleL1ExtraHTM->at(l1HTM).bx() != 0)
907 const reco::LeafCandidate leafCandidate(*(handleL1ExtraHTM->at(l1HTM).reco::LeafCandidate::clone()));
915 triggerObjectsStandAlone->push_back(triggerObjectStandAlone);
916 if (handleL1ExtraHTM->at(l1HTM).bx() == 0)
917 htmKeys.push_back(triggerObjectsStandAlone->size() - 1);
919 l1ObjectTypeMap.insert(std::make_pair(
HTM, htmKeys));
921 LogError(
"l1ExtraValid") <<
"l1extra::L1EtMissParticleCollection product with InputTag '"
931 auto triggerAlgos = std::make_unique<TriggerAlgorithmCollection>();
935 std::map<L1GtObject, trigger::TriggerObjectType> mapObjectTypes;
948 auto const& l1GtAlgorithms = handleL1GtTriggerMenu->
gtAlgorithmMap();
950 auto const& l1GtConditionsVector = handleL1GtTriggerMenu->
gtConditionMap();
953 for (
size_t iCv = 0; iCv < l1GtConditionsVector.size(); ++iCv) {
954 l1GtConditions.insert(l1GtConditionsVector.at(iCv).begin(), l1GtConditionsVector.at(iCv).end());
956 triggerAlgos->reserve(l1GtAlgorithms.size() + l1GtTechTriggers.size());
959 if (!handleL1GlobalTriggerObjectMaps.
isValid()) {
960 LogError(
"l1ObjectMap") <<
"L1GlobalTriggerObjectMaps product with InputTag '"
962 <<
"No L1 objects and GTL results available for physics algorithms";
969 LogError(
"l1ObjectMap") <<
"ParameterSet registry not available\n"
970 <<
"Skipping conditions for all L1 physics algorithm names in this run";
974 LogInfo(
"l1ObjectMap") <<
"ParameterSet registry not available\n"
975 <<
"Skipping conditions for all L1 physics algorithm names in this event";
979 for (
CItAlgo iAlgo = l1GtAlgorithms.begin(); iAlgo != l1GtAlgorithms.end(); ++iAlgo) {
982 LogError(
"l1Algo") <<
"L1 physics algorithm '" <<
algoName <<
"' has bit number "
983 << iAlgo->second.algoBitNumber()
991 LogError(
"l1Algo") <<
"L1 physics algorithm '" <<
algoName <<
"' not found in the L1 menu\n"
997 <<
"' does not have category 'AlgorithmTrigger' from 'L1GtUtils'\n"
1001 bool decisionBeforeMask;
1002 bool decisionAfterMask;
1008 <<
" from 'L1GtUtils'\n"
1013 iAlgo->second.algoAlias(),
1022 if (!handleL1GlobalTriggerObjectMaps.
isValid()) {
1023 triggerAlgos->push_back(triggerAlgo);
1028 <<
"' is missing in L1GlobalTriggerObjectMaps\n"
1029 <<
"Skipping conditions and GTL result";
1030 triggerAlgos->push_back(triggerAlgo);
1033 bool algorithmResult = handleL1GlobalTriggerObjectMaps->
algorithmResult(bit);
1035 if ((algorithmResult != decisionBeforeMask) &&
1036 (decisionBeforeMask ==
true)) {
1037 LogInfo(
"l1ObjectMap") <<
"L1 physics algorithm '" <<
algoName <<
"' with different decisions in\n"
1038 <<
"L1GlobalTriggerObjectMaps (GTL result) : " << algorithmResult <<
"\n"
1039 <<
"L1GlobalTriggerReadoutRecord (decision before mask): " << decisionBeforeMask;
1046 triggerAlgos->push_back(triggerAlgo);
1052 <<
"' not available in ParameterSet registry\n"
1053 <<
"Skipping conditions for this algorithm in this run";
1056 <<
"' not available in ParameterSet registry\n"
1057 <<
"Skipping conditions for this algorithm in this event";
1059 triggerAlgos->push_back(triggerAlgo);
1064 for (
unsigned iT = 0; iT < conditionNames.size(); ++iT) {
1074 LogError(
"l1CondMap") <<
"More condition names from ParameterSet registry than the "
1075 <<
conditions.nConditions() <<
" conditions in L1GlobalTriggerObjectMaps\n"
1076 <<
"Skipping condition " << conditionNames.at(iT) <<
" in algorithm " <<
algoName;
1080 if (l1GtConditions.find(triggerCond.name()) != l1GtConditions.end()) {
1081 triggerCond.
setCategory(l1GtConditions[triggerCond.name()]->condCategory());
1082 triggerCond.setType(l1GtConditions[triggerCond.name()]->condType());
1083 const std::vector<L1GtObject> l1ObjectTypes(l1GtConditions[triggerCond.name()]->objectType());
1084 for (
size_t iType = 0; iType < l1ObjectTypes.size(); ++iType) {
1085 triggerCond.addTriggerObjectType(mapObjectTypes[l1ObjectTypes.at(iType)]);
1090 for (
size_t iVV = 0; iVV < combinations.
nCombinations(); ++iVV) {
1093 if (iV >= l1ObjectTypes.size()) {
1094 LogError(
"l1CondMap") <<
"Index " << iV <<
" in combinations vector overshoots size "
1095 << l1ObjectTypes.size() <<
" of types vector in conditions map\n"
1096 <<
"Skipping object key in condition " << triggerCond.name();
1097 }
else if (l1ObjectTypeMap.find(l1ObjectTypes.at(iV)) != l1ObjectTypeMap.end()) {
1098 if (objectIndex >= l1ObjectTypeMap[l1ObjectTypes.at(iV)].size()) {
1100 <<
"Index " << objectIndex <<
" in combination overshoots number "
1101 << l1ObjectTypeMap[l1ObjectTypes.at(iV)].size() <<
"of according trigger objects\n"
1102 <<
"Skipping object key in condition " << triggerCond.name();
1104 const unsigned objectKey(l1ObjectTypeMap[l1ObjectTypes.at(iV)].at(objectIndex));
1105 triggerCond.addObjectKey(objectKey);
1107 triggerObjectsStandAlone->at(objectKey).addAlgorithmName(
1108 triggerAlgo.
name(), (triggerAlgo.
decision() && triggerCond.wasAccept()));
1109 triggerObjectsStandAlone->at(objectKey).addConditionName(triggerCond.name());
1114 LogWarning(
"l1CondMap") <<
"L1 conditions '" << triggerCond.name() <<
"' not found in the L1 menu\n"
1115 <<
"Remains incomplete";
1121 triggerAlgos->push_back(triggerAlgo);
1124 for (
CItAlgo iAlgo = l1GtTechTriggers.begin(); iAlgo != l1GtTechTriggers.end(); ++iAlgo) {
1127 LogError(
"l1Algo") <<
"L1 technical trigger '" <<
algoName <<
"' has bit number "
1128 << iAlgo->second.algoBitNumber()
1136 LogError(
"l1Algo") <<
"L1 technical trigger '" <<
algoName <<
"' not found in the L1 menu\n"
1142 <<
"' does not have category 'TechnicalTrigger' from 'L1GtUtils'\n"
1146 bool decisionBeforeMask;
1147 bool decisionAfterMask;
1153 <<
" from 'L1GtUtils'\n"
1158 iAlgo->second.algoAlias(),
1166 triggerAlgos->push_back(triggerAlgo);
1184 obj.packFilterLabels(
iEvent, *handleTriggerResults);
1195 const std::vector<std::string>& pathNames =
hltConfig.triggerNames();
1196 unsigned int sizePaths = pathNames.size();
1197 for (
unsigned int indexPath = 0; indexPath < sizePaths; ++indexPath) {
1198 const std::string& namePath = pathNames[indexPath];
1200 const std::vector<std::string>& nameModules =
hltConfig.moduleLabels(indexPath);
1201 unsigned int sizeModulesPath = nameModules.size();
1202 bool lastFilter =
true;
1203 unsigned int iM = sizeModulesPath;
1205 const std::string& nameFilter = nameModules[--iM];
1206 if (
hltConfig.moduleEDMType(nameFilter) !=
"EDFilter")
1208 if (
hltConfig.moduleType(nameFilter) ==
"HLTBool")