File indexing completed on 2024-04-06 12:22:18
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #include "L1TriggerConfig/L1GtConfigProducers/interface/L1GtParametersConfigOnlineProd.h"
0017
0018
0019 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0020
0021
0022 L1GtParametersConfigOnlineProd::L1GtParametersConfigOnlineProd(const edm::ParameterSet& parSet)
0023 : L1ConfigOnlineProdBase<L1GtParametersRcd, L1GtParameters>(parSet) {
0024
0025 }
0026
0027
0028 L1GtParametersConfigOnlineProd::~L1GtParametersConfigOnlineProd() {
0029
0030 }
0031
0032
0033
0034 std::unique_ptr<L1GtParameters> L1GtParametersConfigOnlineProd::newObject(const std::string& objectKey) {
0035 auto pL1GtParameters = std::make_unique<L1GtParameters>();
0036
0037
0038
0039 const std::string gtSchema = "CMS_GT";
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059 std::vector<std::string> columns;
0060 columns.push_back("EVM_INCLUDE_TCS");
0061 columns.push_back("EVM_INCLUDE_FDL");
0062 columns.push_back("DAQ_INCLUDE_FDL");
0063 columns.push_back("DAQ_INCLUDE_PSB0");
0064 columns.push_back("DAQ_INCLUDE_PSB1");
0065 columns.push_back("DAQ_INCLUDE_PSB2");
0066 columns.push_back("DAQ_INCLUDE_PSB3");
0067 columns.push_back("DAQ_INCLUDE_PSB4");
0068 columns.push_back("DAQ_INCLUDE_PSB5");
0069 columns.push_back("DAQ_INCLUDE_PSB6");
0070 columns.push_back("DAQ_INCLUDE_GMT");
0071 columns.push_back("DAQ_INCLUDE_TIM");
0072 columns.push_back("DAQ_NB_BC_PER_EVENT_FDL");
0073 columns.push_back("DAQ_NB_BC_PER_EVENT_PSB0");
0074 columns.push_back("DAQ_NB_BC_PER_EVENT_PSB1");
0075 columns.push_back("DAQ_NB_BC_PER_EVENT_PSB2");
0076 columns.push_back("DAQ_NB_BC_PER_EVENT_PSB3");
0077 columns.push_back("DAQ_NB_BC_PER_EVENT_PSB4");
0078 columns.push_back("DAQ_NB_BC_PER_EVENT_PSB5");
0079 columns.push_back("DAQ_NB_BC_PER_EVENT_PSB6");
0080 columns.push_back("DAQ_NB_BC_PER_EVENT_GMT");
0081 columns.push_back("DAQ_NB_BC_PER_EVENT_TIM");
0082 columns.push_back("BST_DATA_NB_BYTES");
0083
0084 l1t::OMDSReader::QueryResults results = m_omdsReader.basicQuery(
0085 columns, gtSchema, "GT_GTFE_SETUP", "GT_GTFE_SETUP.ID", m_omdsReader.singleAttribute(objectKey));
0086
0087
0088 if (results.queryFailed()) {
0089 edm::LogError("L1-O2O") << "Problem with L1GtParameters key:" << objectKey;
0090 return pL1GtParameters;
0091 }
0092
0093 bool activeBoardsEvmTCS = false;
0094 results.fillVariable("EVM_INCLUDE_TCS", activeBoardsEvmTCS);
0095
0096 bool activeBoardsEvmFDL = false;
0097 results.fillVariable("EVM_INCLUDE_FDL", activeBoardsEvmFDL);
0098
0099 bool activeBoardsDaqFDL = false;
0100 results.fillVariable("DAQ_INCLUDE_FDL", activeBoardsDaqFDL);
0101
0102 bool activeBoardsDaqPSB0 = false;
0103 results.fillVariable("DAQ_INCLUDE_PSB0", activeBoardsDaqPSB0);
0104
0105 bool activeBoardsDaqPSB1 = false;
0106 results.fillVariable("DAQ_INCLUDE_PSB1", activeBoardsDaqPSB1);
0107
0108 bool activeBoardsDaqPSB2 = false;
0109 results.fillVariable("DAQ_INCLUDE_PSB2", activeBoardsDaqPSB2);
0110
0111 bool activeBoardsDaqPSB3 = false;
0112 results.fillVariable("DAQ_INCLUDE_PSB3", activeBoardsDaqPSB3);
0113
0114 bool activeBoardsDaqPSB4;
0115 results.fillVariable("DAQ_INCLUDE_PSB4", activeBoardsDaqPSB4);
0116
0117 bool activeBoardsDaqPSB5 = false;
0118 results.fillVariable("DAQ_INCLUDE_PSB5", activeBoardsDaqPSB5);
0119
0120 bool activeBoardsDaqPSB6;
0121 results.fillVariable("DAQ_INCLUDE_PSB6", activeBoardsDaqPSB6);
0122
0123 bool activeBoardsDaqGMT;
0124 results.fillVariable("DAQ_INCLUDE_GMT", activeBoardsDaqGMT);
0125
0126 bool activeBoardsDaqTIM = false;
0127 results.fillVariable("DAQ_INCLUDE_TIM", activeBoardsDaqTIM);
0128
0129 std::string totalBxInEventStr;
0130 results.fillVariable("DAQ_NB_BC_PER_EVENT_FDL", totalBxInEventStr);
0131
0132
0133 std::string daqNrBxBoardStrFDL;
0134 results.fillVariable("DAQ_NB_BC_PER_EVENT_FDL", daqNrBxBoardStrFDL);
0135
0136 std::string daqNrBxBoardStrPSB0;
0137 results.fillVariable("DAQ_NB_BC_PER_EVENT_PSB0", daqNrBxBoardStrPSB0);
0138
0139 std::string daqNrBxBoardStrPSB1;
0140 results.fillVariable("DAQ_NB_BC_PER_EVENT_PSB1", daqNrBxBoardStrPSB1);
0141
0142 std::string daqNrBxBoardStrPSB2;
0143 results.fillVariable("DAQ_NB_BC_PER_EVENT_PSB2", daqNrBxBoardStrPSB2);
0144
0145 std::string daqNrBxBoardStrPSB3;
0146 results.fillVariable("DAQ_NB_BC_PER_EVENT_PSB3", daqNrBxBoardStrPSB3);
0147
0148 std::string daqNrBxBoardStrPSB4;
0149 results.fillVariable("DAQ_NB_BC_PER_EVENT_PSB4", daqNrBxBoardStrPSB4);
0150
0151 std::string daqNrBxBoardStrPSB5;
0152 results.fillVariable("DAQ_NB_BC_PER_EVENT_PSB5", daqNrBxBoardStrPSB5);
0153
0154 std::string daqNrBxBoardStrPSB6;
0155 results.fillVariable("DAQ_NB_BC_PER_EVENT_PSB6", daqNrBxBoardStrPSB6);
0156
0157 std::string daqNrBxBoardStrGMT;
0158 results.fillVariable("DAQ_NB_BC_PER_EVENT_GMT", daqNrBxBoardStrGMT);
0159
0160 std::string daqNrBxBoardStrTIM;
0161 results.fillVariable("DAQ_NB_BC_PER_EVENT_TIM", daqNrBxBoardStrTIM);
0162
0163 std::string bstLengthBytesStr;
0164 results.fillVariable("BST_DATA_NB_BYTES", bstLengthBytesStr);
0165
0166
0167
0168
0169 int totalBxInEventVal = std::stoi(totalBxInEventStr);
0170 pL1GtParameters->setGtTotalBxInEvent(totalBxInEventVal);
0171
0172
0173
0174
0175
0176
0177
0178 uint16_t daqActiveBoardsVal = 0;
0179
0180 int daqActiveBoardsLength = 16;
0181 std::vector<int> daqNrBxBoard(daqActiveBoardsLength, 0);
0182
0183 int iActiveBit = 0;
0184 if (activeBoardsDaqFDL) {
0185 daqActiveBoardsVal = daqActiveBoardsVal | (1 << iActiveBit);
0186 }
0187 daqNrBxBoard.at(iActiveBit) = std::stoi(daqNrBxBoardStrFDL);
0188
0189 iActiveBit = 1;
0190 if (activeBoardsDaqPSB0) {
0191 daqActiveBoardsVal = daqActiveBoardsVal | (1 << iActiveBit);
0192 }
0193 daqNrBxBoard.at(iActiveBit) = std::stoi(daqNrBxBoardStrPSB0);
0194
0195 iActiveBit = 2;
0196 if (activeBoardsDaqPSB1) {
0197 daqActiveBoardsVal = daqActiveBoardsVal | (1 << iActiveBit);
0198 }
0199 daqNrBxBoard.at(iActiveBit) = std::stoi(daqNrBxBoardStrPSB1);
0200
0201 iActiveBit = 3;
0202 if (activeBoardsDaqPSB2) {
0203 daqActiveBoardsVal = daqActiveBoardsVal | (1 << iActiveBit);
0204 }
0205 daqNrBxBoard.at(iActiveBit) = std::stoi(daqNrBxBoardStrPSB2);
0206
0207 iActiveBit = 4;
0208 if (activeBoardsDaqPSB3) {
0209 daqActiveBoardsVal = daqActiveBoardsVal | (1 << iActiveBit);
0210 }
0211 daqNrBxBoard.at(iActiveBit) = std::stoi(daqNrBxBoardStrPSB3);
0212
0213 iActiveBit = 5;
0214 if (activeBoardsDaqPSB4) {
0215 daqActiveBoardsVal = daqActiveBoardsVal | (1 << iActiveBit);
0216 }
0217 daqNrBxBoard.at(iActiveBit) = std::stoi(daqNrBxBoardStrPSB4);
0218
0219 iActiveBit = 6;
0220 if (activeBoardsDaqPSB5) {
0221 daqActiveBoardsVal = daqActiveBoardsVal | (1 << iActiveBit);
0222 }
0223 daqNrBxBoard.at(iActiveBit) = std::stoi(daqNrBxBoardStrPSB5);
0224
0225 iActiveBit = 7;
0226 if (activeBoardsDaqPSB6) {
0227 daqActiveBoardsVal = daqActiveBoardsVal | (1 << iActiveBit);
0228 }
0229 daqNrBxBoard.at(iActiveBit) = std::stoi(daqNrBxBoardStrPSB6);
0230
0231 iActiveBit = 8;
0232 if (activeBoardsDaqGMT) {
0233 daqActiveBoardsVal = daqActiveBoardsVal | (1 << iActiveBit);
0234 }
0235 daqNrBxBoard.at(iActiveBit) = std::stoi(daqNrBxBoardStrGMT);
0236
0237
0238
0239
0240
0241
0242
0243
0244
0245 uint16_t evmActiveBoardsVal = 0;
0246
0247 int evmActiveBoardsLength = 16;
0248 std::vector<int> evmNrBxBoard(evmActiveBoardsLength, 0);
0249
0250 iActiveBit = 0;
0251 if (activeBoardsEvmTCS) {
0252 evmActiveBoardsVal = evmActiveBoardsVal | (1 << iActiveBit);
0253 }
0254
0255 evmNrBxBoard.at(iActiveBit) = 1;
0256
0257 iActiveBit = 1;
0258 if (activeBoardsEvmFDL) {
0259 evmActiveBoardsVal = evmActiveBoardsVal | (1 << iActiveBit);
0260 }
0261
0262 evmNrBxBoard.at(iActiveBit) = std::stoi(daqNrBxBoardStrFDL);
0263
0264
0265 pL1GtParameters->setGtDaqActiveBoards(daqActiveBoardsVal);
0266 pL1GtParameters->setGtEvmActiveBoards(evmActiveBoardsVal);
0267 pL1GtParameters->setGtDaqNrBxBoard(daqNrBxBoard);
0268 pL1GtParameters->setGtEvmNrBxBoard(evmNrBxBoard);
0269
0270
0271 unsigned int bstLengthBytesVal = std::stoul(bstLengthBytesStr);
0272 pL1GtParameters->setGtBstLengthBytes(bstLengthBytesVal);
0273
0274 if (edm::isDebugEnabled()) {
0275 std::ostringstream myCoutStream;
0276 pL1GtParameters->print(myCoutStream);
0277 LogTrace("L1GtParametersConfigOnlineProd") << "\nThe following L1GtParameters record was read from OMDS: \n"
0278 << myCoutStream.str() << "\n"
0279 << std::endl;
0280 }
0281
0282 return pL1GtParameters;
0283 }
0284
0285 DEFINE_FWK_EVENTSETUP_MODULE(L1GtParametersConfigOnlineProd);