File indexing completed on 2023-03-17 10:50:22
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #include "DataFormats/L1TGlobal/interface/GlobalObjectMap.h"
0017
0018
0019 #include <iostream>
0020 #include <iomanip>
0021 #include <iterator>
0022
0023 #include <algorithm>
0024
0025
0026 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0027
0028
0029
0030
0031
0032
0033 const CombinationsInCond* GlobalObjectMap::getCombinationsInCond(const std::string& condNameVal) const {
0034 for (size_t i = 0; i < m_operandTokenVector.size(); ++i) {
0035 if ((m_operandTokenVector[i]).tokenName == condNameVal) {
0036 return &(m_combinationVector.at((m_operandTokenVector[i]).tokenNumber));
0037 }
0038 }
0039
0040
0041 edm::LogError("GlobalObjectMap") << "\n\n ERROR: The requested condition with tokenName = " << condNameVal
0042 << "\n does not exists in the operand token vector."
0043 << "\n Returning zero pointer for getCombinationsInCond\n\n"
0044 << std::endl;
0045
0046 return nullptr;
0047 }
0048
0049
0050 const CombinationsInCond* GlobalObjectMap::getCombinationsInCond(const int condNumberVal) const {
0051 for (size_t i = 0; i < m_operandTokenVector.size(); ++i) {
0052 if ((m_operandTokenVector[i]).tokenNumber == condNumberVal) {
0053 return &(m_combinationVector.at((m_operandTokenVector[i]).tokenNumber));
0054 }
0055 }
0056
0057
0058 edm::LogError("GlobalObjectMap") << "\n\n ERROR: The requested condition with tokenNumber = " << condNumberVal
0059 << "\n does not exists in the operand token vector."
0060 << "\n Returning zero pointer for getCombinationsInCond\n\n"
0061 << std::endl;
0062
0063 return nullptr;
0064 }
0065
0066 const bool GlobalObjectMap::getConditionResult(const std::string& condNameVal) const {
0067 for (size_t i = 0; i < m_operandTokenVector.size(); ++i) {
0068 if ((m_operandTokenVector[i]).tokenName == condNameVal) {
0069 return (m_operandTokenVector[i]).tokenResult;
0070 }
0071 }
0072
0073
0074 edm::LogError("GlobalObjectMap") << "\n\n ERROR: The requested condition with name = " << condNameVal
0075 << "\n does not exists in the operand token vector."
0076 << "\n Returning false for getConditionResult\n\n"
0077 << std::endl;
0078 return false;
0079 }
0080
0081 void GlobalObjectMap::reset() {
0082
0083 m_algoName.clear();
0084
0085
0086 m_algoBitNumber = -1;
0087
0088
0089 m_algoGtlResult = false;
0090
0091
0092 m_operandTokenVector.clear();
0093
0094
0095 m_combinationVector.clear();
0096 }
0097
0098 void GlobalObjectMap::print(std::ostream& myCout) const {
0099 myCout << "GlobalObjectMap: print " << std::endl;
0100
0101 myCout << " Algorithm name: " << m_algoName << std::endl;
0102 myCout << " Bit number: " << m_algoBitNumber << std::endl;
0103 myCout << " GTL result: " << m_algoGtlResult << std::endl;
0104
0105 int operandTokenVectorSize = m_operandTokenVector.size();
0106
0107 myCout << " Operand token vector size: " << operandTokenVectorSize;
0108
0109 if (operandTokenVectorSize == 0) {
0110 myCout << " - not properly initialized! " << std::endl;
0111 } else {
0112 myCout << std::endl;
0113
0114 for (int i = 0; i < operandTokenVectorSize; ++i) {
0115 myCout << " " << std::setw(5) << (m_operandTokenVector[i]).tokenNumber << "\t" << std::setw(25)
0116 << (m_operandTokenVector[i]).tokenName << "\t" << (m_operandTokenVector[i]).tokenResult << std::endl;
0117 }
0118 }
0119
0120 myCout << " CombinationVector size: " << m_combinationVector.size() << std::endl;
0121
0122 myCout << " conditions: " << std::endl;
0123
0124 std::vector<CombinationsInCond>::const_iterator itVVV;
0125 int iCond = 0;
0126 for (itVVV = m_combinationVector.begin(); itVVV != m_combinationVector.end(); itVVV++) {
0127 std::string condName = (m_operandTokenVector[iCond]).tokenName;
0128 bool condResult = (m_operandTokenVector[iCond]).tokenResult;
0129
0130 myCout << " Condition " << condName << " evaluated to " << condResult << std::endl;
0131
0132 myCout << " List of combinations passing all requirements for this condition:" << std::endl;
0133
0134 myCout << " ";
0135
0136 if ((*itVVV).empty()) {
0137 myCout << "(none)";
0138 } else {
0139 CombinationsInCond::const_iterator itVV;
0140 for (itVV = (*itVVV).begin(); itVV != (*itVVV).end(); itVV++) {
0141 myCout << "( ";
0142
0143 std::copy((*itVV).begin(), (*itVV).end(), std::ostream_iterator<int>(myCout, " "));
0144
0145 myCout << "); ";
0146 }
0147 }
0148 iCond++;
0149 myCout << "\n\n";
0150 }
0151 }