File indexing completed on 2024-04-06 12:02:22
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #include "CondFormats/L1TObjects/interface/L1GtBoard.h"
0019
0020
0021 #include <iostream>
0022 #include <iomanip>
0023
0024
0025
0026
0027
0028
0029
0030 L1GtBoard::L1GtBoard() {
0031
0032 }
0033
0034 L1GtBoard::L1GtBoard(const L1GtBoardType& gtBoardTypeValue) : m_gtBoardType(gtBoardTypeValue) {
0035 m_gtBoardIndex = -1;
0036
0037 m_gtPositionDaqRecord = -1;
0038 m_gtPositionEvmRecord = -1;
0039
0040 m_gtBitDaqActiveBoards = -1;
0041 m_gtBitEvmActiveBoards = -1;
0042
0043 m_gtBoardSlot = -1;
0044 m_gtBoardHexName = 0;
0045
0046 m_gtQuadInPsb.reserve(NumberCablesBoard);
0047 }
0048
0049 L1GtBoard::L1GtBoard(const L1GtBoardType& gtBoardTypeValue, const int& gtBoardIndexValue)
0050 : m_gtBoardType(gtBoardTypeValue), m_gtBoardIndex(gtBoardIndexValue) {
0051 m_gtPositionDaqRecord = -1;
0052 m_gtPositionEvmRecord = -1;
0053
0054 m_gtBitDaqActiveBoards = -1;
0055 m_gtBitEvmActiveBoards = -1;
0056
0057 m_gtBoardSlot = -1;
0058 m_gtBoardHexName = 0;
0059
0060 m_gtQuadInPsb.reserve(NumberCablesBoard);
0061 }
0062
0063
0064 L1GtBoard::~L1GtBoard() {
0065
0066 }
0067
0068
0069 L1GtBoard::L1GtBoard(const L1GtBoard& gtb) {
0070 m_gtBoardType = gtb.m_gtBoardType;
0071 m_gtBoardIndex = gtb.m_gtBoardIndex;
0072
0073 m_gtPositionDaqRecord = gtb.m_gtPositionDaqRecord;
0074 m_gtPositionEvmRecord = gtb.m_gtPositionEvmRecord;
0075
0076 m_gtBitDaqActiveBoards = gtb.m_gtBitDaqActiveBoards;
0077 m_gtBitEvmActiveBoards = gtb.m_gtBitEvmActiveBoards;
0078
0079 m_gtBoardSlot = gtb.m_gtBoardSlot;
0080 m_gtBoardHexName = gtb.m_gtBoardHexName;
0081
0082 m_gtQuadInPsb = gtb.m_gtQuadInPsb;
0083
0084 m_gtInputPsbChannels = gtb.m_gtInputPsbChannels;
0085 }
0086
0087
0088 L1GtBoard& L1GtBoard::operator=(const L1GtBoard& gtb) {
0089 if (this != >b) {
0090 m_gtBoardType = gtb.m_gtBoardType;
0091 m_gtBoardIndex = gtb.m_gtBoardIndex;
0092
0093 m_gtPositionDaqRecord = gtb.m_gtPositionDaqRecord;
0094 m_gtPositionEvmRecord = gtb.m_gtPositionEvmRecord;
0095
0096 m_gtBitDaqActiveBoards = gtb.m_gtBitDaqActiveBoards;
0097 m_gtBitEvmActiveBoards = gtb.m_gtBitEvmActiveBoards;
0098
0099 m_gtBoardSlot = gtb.m_gtBoardSlot;
0100 m_gtBoardHexName = gtb.m_gtBoardHexName;
0101
0102 m_gtQuadInPsb = gtb.m_gtQuadInPsb;
0103 m_gtInputPsbChannels = gtb.m_gtInputPsbChannels;
0104 }
0105
0106 return *this;
0107 }
0108
0109
0110 bool L1GtBoard::operator==(const L1GtBoard& gtb) const {
0111 if (m_gtBoardType != gtb.m_gtBoardType) {
0112 return false;
0113 }
0114
0115 if (m_gtBoardIndex != gtb.m_gtBoardIndex) {
0116 return false;
0117 }
0118
0119 if (m_gtPositionDaqRecord != gtb.m_gtPositionDaqRecord) {
0120 return false;
0121 }
0122
0123 if (m_gtPositionEvmRecord != gtb.m_gtPositionEvmRecord) {
0124 return false;
0125 }
0126
0127 if (m_gtBitDaqActiveBoards != gtb.m_gtBitDaqActiveBoards) {
0128 return false;
0129 }
0130
0131 if (m_gtBitEvmActiveBoards != gtb.m_gtBitEvmActiveBoards) {
0132 return false;
0133 }
0134
0135 if (m_gtBoardSlot != gtb.m_gtBoardSlot) {
0136 return false;
0137 }
0138
0139 if (m_gtBoardHexName != gtb.m_gtBoardHexName) {
0140 return false;
0141 }
0142
0143 if (m_gtQuadInPsb != gtb.m_gtQuadInPsb) {
0144 return false;
0145 }
0146
0147 if (m_gtInputPsbChannels != gtb.m_gtInputPsbChannels) {
0148 return false;
0149 }
0150
0151
0152 return true;
0153 }
0154
0155
0156 bool L1GtBoard::operator!=(const L1GtBoard& result) const { return !(result == *this); }
0157
0158
0159 bool L1GtBoard::operator<(const L1GtBoard& gtb) const {
0160 if (m_gtBoardType < gtb.gtBoardType()) {
0161 return true;
0162 } else {
0163 if (m_gtBoardType == gtb.gtBoardType()) {
0164 if (m_gtBoardIndex < gtb.gtBoardIndex()) {
0165 return true;
0166 }
0167 }
0168 }
0169
0170 return false;
0171 }
0172
0173
0174 void L1GtBoard::setGtBoardType(const L1GtBoardType& gtBoardTypeValue) { m_gtBoardType = gtBoardTypeValue; }
0175
0176
0177 void L1GtBoard::setGtBoardIndex(const int& gtBoardIndexValue) { m_gtBoardIndex = gtBoardIndexValue; }
0178
0179
0180
0181 void L1GtBoard::setGtPositionDaqRecord(const int& gtPositionDaqRecordValue) {
0182 m_gtPositionDaqRecord = gtPositionDaqRecordValue;
0183 }
0184
0185
0186
0187 void L1GtBoard::setGtPositionEvmRecord(const int& gtPositionEvmRecordValue) {
0188 m_gtPositionEvmRecord = gtPositionEvmRecordValue;
0189 }
0190
0191
0192
0193 void L1GtBoard::setGtBitDaqActiveBoards(const int& gtBitDaqActiveBoardsValue) {
0194 m_gtBitDaqActiveBoards = gtBitDaqActiveBoardsValue;
0195 }
0196
0197
0198
0199 void L1GtBoard::setGtBitEvmActiveBoards(const int& gtBitEvmActiveBoardsValue) {
0200 m_gtBitEvmActiveBoards = gtBitEvmActiveBoardsValue;
0201 }
0202
0203
0204 void L1GtBoard::setGtBoardSlot(const int& gtBoardSlotValue) { m_gtBoardSlot = gtBoardSlotValue; }
0205
0206
0207 void L1GtBoard::setGtBoardHexName(const int& gtBoardHexNameValue) { m_gtBoardHexName = gtBoardHexNameValue; }
0208
0209
0210
0211 void L1GtBoard::setGtQuadInPsb(const std::vector<L1GtPsbQuad>& gtQuadInPsbValue) { m_gtQuadInPsb = gtQuadInPsbValue; }
0212
0213
0214
0215 void L1GtBoard::setGtInputPsbChannels(const std::map<int, std::vector<L1GtObject> >& gtInputPsbChannelsValue) {
0216 m_gtInputPsbChannels = gtInputPsbChannelsValue;
0217 }
0218
0219
0220 const uint16_t L1GtBoard::gtBoardId() const {
0221 uint16_t boardIdValue = 0;
0222
0223 if (m_gtBoardType == GTFE) {
0224 boardIdValue = boardIdValue | m_gtBoardSlot;
0225 } else {
0226 boardIdValue = boardIdValue | (m_gtBoardHexName << 8) | m_gtBoardSlot;
0227 }
0228
0229 return boardIdValue;
0230 }
0231
0232
0233 std::string L1GtBoard::gtBoardName() const {
0234 std::string gtBoardNameValue;
0235
0236
0237 switch (m_gtBoardType) {
0238 case GTFE: {
0239 gtBoardNameValue = "GTFE";
0240 } break;
0241 case FDL: {
0242 gtBoardNameValue = "FDL";
0243 } break;
0244 case PSB: {
0245 gtBoardNameValue = "PSB";
0246 } break;
0247 case GMT: {
0248 gtBoardNameValue = "GMT";
0249 } break;
0250 case TCS: {
0251 gtBoardNameValue = "TCS";
0252 } break;
0253 case TIM: {
0254 gtBoardNameValue = "TIM";
0255 } break;
0256 default: {
0257
0258
0259 gtBoardNameValue = "ERROR";
0260 } break;
0261 }
0262
0263 return gtBoardNameValue;
0264 }
0265
0266
0267 void L1GtBoard::print(std::ostream& myCout) const {
0268 uint16_t boardId = gtBoardId();
0269 std::string boardName = gtBoardName();
0270
0271 myCout << "Board ID: " << std::hex << boardId << std::dec << std::endl
0272 << "Board Name: " << boardName << "_" << m_gtBoardIndex << std::endl
0273 << "Position in DAQ Record: " << m_gtPositionDaqRecord << std::endl
0274 << "Position in EVM Record: " << m_gtPositionEvmRecord << std::endl
0275 << "Active_Boards bit in DAQ Record: " << m_gtBitDaqActiveBoards << std::endl
0276 << "Active_Boards bit in EVM Record: " << m_gtBitEvmActiveBoards << std::endl
0277 << "Board HexName: " << std::hex << m_gtBoardHexName << std::dec << std::endl;
0278
0279 if (m_gtBoardType == PSB) {
0280 myCout << "PSB Input per Cable: DEPRECATED" << std::endl;
0281 }
0282
0283 for (std::vector<L1GtPsbQuad>::const_iterator cIt = m_gtQuadInPsb.begin(); cIt != m_gtQuadInPsb.end(); ++cIt) {
0284 std::string objType;
0285
0286 if (*cIt == TechTr) {
0287 objType = "TechTr";
0288 } else if (*cIt == IsoEGQ) {
0289 objType = "IsoEGQ";
0290 } else if (*cIt == NoIsoEGQ) {
0291 objType = "NoIsoEGQ";
0292 } else if (*cIt == CenJetQ) {
0293 objType = "CenJetQ";
0294 } else if (*cIt == ForJetQ) {
0295 objType = "ForJetQ";
0296 } else if (*cIt == TauJetQ) {
0297 objType = "TauJetQ";
0298 } else if (*cIt == ESumsQ) {
0299 objType = "ESumsQ";
0300 } else if (*cIt == JetCountsQ) {
0301 objType = "JetCountsQ";
0302 } else if (*cIt == MQB1) {
0303 objType = "MQB1";
0304 } else if (*cIt == MQB2) {
0305 objType = "MQB2";
0306 } else if (*cIt == MQF3) {
0307 objType = "MQF3";
0308 } else if (*cIt == MQF4) {
0309 objType = "MQF4";
0310 } else if (*cIt == MQB5) {
0311 objType = "MQB5";
0312 } else if (*cIt == MQB6) {
0313 objType = "MQB6";
0314 } else if (*cIt == MQF7) {
0315 objType = "MQF7";
0316 } else if (*cIt == MQF8) {
0317 objType = "MQF8";
0318 } else if (*cIt == MQB9) {
0319 objType = "MQB9";
0320 } else if (*cIt == MQB10) {
0321 objType = "MQB10";
0322 } else if (*cIt == MQF11) {
0323 objType = "MQF11";
0324 } else if (*cIt == MQF12) {
0325 objType = "MQF12";
0326 } else if (*cIt == Free) {
0327 objType = "Free";
0328 } else if (*cIt == HfQ) {
0329 objType = "HfQ";
0330 } else {
0331 myCout << "\n\nError: no such member " << (*cIt) << " in enum L1GtPsbQuad\n\n" << std::endl;
0332 objType = "ERROR";
0333 }
0334
0335 myCout << " " << objType << " ";
0336 }
0337 myCout << std::endl;
0338
0339 if (m_gtBoardType == PSB) {
0340 myCout << "Input objects pro channel:";
0341 }
0342
0343 for (std::map<int, std::vector<L1GtObject> >::const_iterator cIt = m_gtInputPsbChannels.begin();
0344 cIt != m_gtInputPsbChannels.end();
0345 ++cIt) {
0346 myCout << "\n Channel " << cIt->first << " (" << (cIt->second).size() << " objects): ";
0347
0348 for (std::vector<L1GtObject>::const_iterator itObj = (cIt->second).begin(); itObj != (cIt->second).end(); ++itObj) {
0349 switch (*itObj) {
0350 case Mu: {
0351 myCout << " Mu ";
0352 }
0353
0354 break;
0355 case NoIsoEG: {
0356 myCout << " NoIsoEG ";
0357 }
0358
0359 break;
0360 case IsoEG: {
0361 myCout << " IsoEG ";
0362 }
0363
0364 break;
0365 case CenJet: {
0366 myCout << " CenJet ";
0367 }
0368
0369 break;
0370 case ForJet: {
0371 myCout << " ForJet ";
0372 }
0373
0374 break;
0375 case TauJet: {
0376 myCout << " TauJet ";
0377 }
0378
0379 break;
0380 case ETM: {
0381 myCout << " ETM ";
0382 }
0383
0384 break;
0385 case ETT: {
0386 myCout << " ETT ";
0387 }
0388
0389 break;
0390 case HTT: {
0391 myCout << " HTT ";
0392 }
0393
0394 break;
0395 case HTM: {
0396 myCout << " HTM ";
0397 }
0398
0399 break;
0400 case JetCounts: {
0401 myCout << " JetCounts ";
0402 }
0403
0404 break;
0405 case HfBitCounts: {
0406 myCout << " HfBitCounts ";
0407 }
0408
0409 break;
0410 case HfRingEtSums: {
0411 myCout << " HfRingEtSums ";
0412 }
0413
0414 break;
0415 case TechTrig: {
0416 myCout << " TechTrig ";
0417 }
0418
0419 break;
0420 case Castor: {
0421 myCout << " Castor ";
0422 }
0423
0424 break;
0425 case BPTX: {
0426 myCout << " BPTX ";
0427 }
0428
0429 break;
0430 case GtExternal: {
0431 myCout << " GtExternal ";
0432 }
0433
0434 break;
0435 default: {
0436 myCout << " ERROR: Unknown type " << (*itObj);
0437 } break;
0438 }
0439 }
0440 }
0441
0442 myCout << std::endl;
0443 }
0444
0445
0446 std::ostream& operator<<(std::ostream& os, const L1GtBoard& result) {
0447 result.print(os);
0448 return os;
0449 }
0450
0451
0452 const int L1GtBoard::NumberCablesBoard = 4;