File indexing completed on 2023-10-25 09:56:49
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 #include <iostream>
0022
0023
0024 #include "CondTools/L1Trigger/interface/L1ConfigOnlineProdBase.h"
0025
0026 #include "CondFormats/L1TObjects/interface/L1RCTChannelMask.h"
0027 #include "CondFormats/DataRecord/interface/L1RCTChannelMaskRcd.h"
0028
0029
0030
0031
0032
0033
0034
0035
0036 class L1RCTChannelMaskOnlineProd : public L1ConfigOnlineProdBase<L1RCTChannelMaskRcd, L1RCTChannelMask> {
0037 public:
0038 L1RCTChannelMaskOnlineProd(const edm::ParameterSet& iConfig)
0039 : L1ConfigOnlineProdBase<L1RCTChannelMaskRcd, L1RCTChannelMask>(iConfig) {}
0040 ~L1RCTChannelMaskOnlineProd() override {}
0041
0042 std::unique_ptr<L1RCTChannelMask> newObject(const std::string& objectKey) override;
0043
0044 private:
0045
0046 };
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060 std::unique_ptr<L1RCTChannelMask> L1RCTChannelMaskOnlineProd::newObject(const std::string& objectKey) {
0061 std::cout << " Current key is " << objectKey << std::endl;
0062
0063 std::string rctSchema = "CMS_RCT";
0064
0065 std::vector<std::string> dc_maskStrings;
0066 dc_maskStrings.push_back("HCAL_MASK_CR00_EVEN");
0067 dc_maskStrings.push_back("HCAL_MASK_CR00_ODD");
0068 dc_maskStrings.push_back("HCAL_MASK_CR01_EVEN");
0069 dc_maskStrings.push_back("HCAL_MASK_CR01_ODD");
0070 dc_maskStrings.push_back("HCAL_MASK_CR02_EVEN");
0071 dc_maskStrings.push_back("HCAL_MASK_CR02_ODD");
0072 dc_maskStrings.push_back("HCAL_MASK_CR03_EVEN");
0073 dc_maskStrings.push_back("HCAL_MASK_CR03_ODD");
0074 dc_maskStrings.push_back("HCAL_MASK_CR04_EVEN");
0075 dc_maskStrings.push_back("HCAL_MASK_CR04_ODD");
0076 dc_maskStrings.push_back("HCAL_MASK_CR05_EVEN");
0077 dc_maskStrings.push_back("HCAL_MASK_CR05_ODD");
0078 dc_maskStrings.push_back("HCAL_MASK_CR06_EVEN");
0079 dc_maskStrings.push_back("HCAL_MASK_CR06_ODD");
0080 dc_maskStrings.push_back("HCAL_MASK_CR07_EVEN");
0081 dc_maskStrings.push_back("HCAL_MASK_CR07_ODD");
0082 dc_maskStrings.push_back("HCAL_MASK_CR08_EVEN");
0083 dc_maskStrings.push_back("HCAL_MASK_CR08_ODD");
0084 dc_maskStrings.push_back("HCAL_MASK_CR09_EVEN");
0085 dc_maskStrings.push_back("HCAL_MASK_CR09_ODD");
0086 dc_maskStrings.push_back("HCAL_MASK_CR10_EVEN");
0087 dc_maskStrings.push_back("HCAL_MASK_CR10_ODD");
0088 dc_maskStrings.push_back("HCAL_MASK_CR11_EVEN");
0089 dc_maskStrings.push_back("HCAL_MASK_CR11_ODD");
0090 dc_maskStrings.push_back("HCAL_MASK_CR12_EVEN");
0091 dc_maskStrings.push_back("HCAL_MASK_CR12_ODD");
0092 dc_maskStrings.push_back("HCAL_MASK_CR13_EVEN");
0093 dc_maskStrings.push_back("HCAL_MASK_CR13_ODD");
0094 dc_maskStrings.push_back("HCAL_MASK_CR14_EVEN");
0095 dc_maskStrings.push_back("HCAL_MASK_CR14_ODD");
0096 dc_maskStrings.push_back("HCAL_MASK_CR15_EVEN");
0097 dc_maskStrings.push_back("HCAL_MASK_CR15_ODD");
0098 dc_maskStrings.push_back("HCAL_MASK_CR16_EVEN");
0099 dc_maskStrings.push_back("HCAL_MASK_CR16_ODD");
0100 dc_maskStrings.push_back("HCAL_MASK_CR17_EVEN");
0101 dc_maskStrings.push_back("HCAL_MASK_CR17_ODD");
0102 dc_maskStrings.push_back("ECAL_MASK_CR00_EVEN");
0103 dc_maskStrings.push_back("ECAL_MASK_CR00_ODD");
0104 dc_maskStrings.push_back("ECAL_MASK_CR01_EVEN");
0105 dc_maskStrings.push_back("ECAL_MASK_CR01_ODD");
0106 dc_maskStrings.push_back("ECAL_MASK_CR02_EVEN");
0107 dc_maskStrings.push_back("ECAL_MASK_CR02_ODD");
0108 dc_maskStrings.push_back("ECAL_MASK_CR03_EVEN");
0109 dc_maskStrings.push_back("ECAL_MASK_CR03_ODD");
0110 dc_maskStrings.push_back("ECAL_MASK_CR04_EVEN");
0111 dc_maskStrings.push_back("ECAL_MASK_CR04_ODD");
0112 dc_maskStrings.push_back("ECAL_MASK_CR05_EVEN");
0113 dc_maskStrings.push_back("ECAL_MASK_CR05_ODD");
0114 dc_maskStrings.push_back("ECAL_MASK_CR06_EVEN");
0115 dc_maskStrings.push_back("ECAL_MASK_CR06_ODD");
0116 dc_maskStrings.push_back("ECAL_MASK_CR07_EVEN");
0117 dc_maskStrings.push_back("ECAL_MASK_CR07_ODD");
0118 dc_maskStrings.push_back("ECAL_MASK_CR08_EVEN");
0119 dc_maskStrings.push_back("ECAL_MASK_CR08_ODD");
0120 dc_maskStrings.push_back("ECAL_MASK_CR09_EVEN");
0121 dc_maskStrings.push_back("ECAL_MASK_CR09_ODD");
0122 dc_maskStrings.push_back("ECAL_MASK_CR10_EVEN");
0123 dc_maskStrings.push_back("ECAL_MASK_CR10_ODD");
0124 dc_maskStrings.push_back("ECAL_MASK_CR11_EVEN");
0125 dc_maskStrings.push_back("ECAL_MASK_CR11_ODD");
0126 dc_maskStrings.push_back("ECAL_MASK_CR12_EVEN");
0127 dc_maskStrings.push_back("ECAL_MASK_CR12_ODD");
0128 dc_maskStrings.push_back("ECAL_MASK_CR13_EVEN");
0129 dc_maskStrings.push_back("ECAL_MASK_CR13_ODD");
0130 dc_maskStrings.push_back("ECAL_MASK_CR14_EVEN");
0131 dc_maskStrings.push_back("ECAL_MASK_CR14_ODD");
0132 dc_maskStrings.push_back("ECAL_MASK_CR15_EVEN");
0133 dc_maskStrings.push_back("ECAL_MASK_CR15_ODD");
0134 dc_maskStrings.push_back("ECAL_MASK_CR16_EVEN");
0135 dc_maskStrings.push_back("ECAL_MASK_CR16_ODD");
0136 dc_maskStrings.push_back("ECAL_MASK_CR17_EVEN");
0137 dc_maskStrings.push_back("ECAL_MASK_CR17_ODD");
0138
0139 l1t::OMDSReader::QueryResults dcMaskResults =
0140 m_omdsReader.basicQuery(dc_maskStrings,
0141 rctSchema,
0142 "RCT_DEADCHANNEL_SUMMARY",
0143 "RCT_DEADCHANNEL_SUMMARY.ID",
0144 m_omdsReader.basicQuery("DC_SUM_ID",
0145 rctSchema,
0146 "RCT_RUN_SETTINGS_KEY",
0147 "RCT_RUN_SETTINGS_KEY.ID",
0148 m_omdsReader.singleAttribute(objectKey)));
0149
0150 if (dcMaskResults.queryFailed() || dcMaskResults.numberRows() != 1)
0151 {
0152 edm::LogError("L1-O2O") << "Problem with L1RCTChannelMask key.";
0153
0154 std::cout << " Returened rows " << dcMaskResults.numberRows() << std::endl;
0155 return std::unique_ptr<L1RCTChannelMask>();
0156 }
0157
0158 L1RCTChannelMask* m = new L1RCTChannelMask;
0159
0160 long long hcal_temp = 0LL;
0161 int ecal_temp = 0;
0162 for (int i = 0; i < 36; i++) {
0163 dcMaskResults.fillVariable(dc_maskStrings.at(i), hcal_temp);
0164 for (int j = 0; j < 32; j++)
0165 if (j < 28)
0166 m->hcalMask[i / 2][i % 2][j] = ((hcal_temp >> j) & 1) == 1;
0167 else
0168 m->hfMask[i / 2][i % 2][j - 28] = ((hcal_temp >> j) & 1) == 1;
0169 }
0170 for (int i = 36; i < 72; i++) {
0171 dcMaskResults.fillVariable(dc_maskStrings.at(i), ecal_temp);
0172 for (int j = 0; j < 28; j++) {
0173 int k = i - 36;
0174 m->ecalMask[k / 2][k % 2][j] = ((ecal_temp >> j) & 1) == 1;
0175 }
0176 }
0177
0178
0179
0180 std::vector<std::string> cardMaskStrings;
0181 cardMaskStrings.push_back("RC0");
0182 cardMaskStrings.push_back("RC1");
0183 cardMaskStrings.push_back("RC2");
0184 cardMaskStrings.push_back("RC3");
0185 cardMaskStrings.push_back("RC4");
0186 cardMaskStrings.push_back("RC5");
0187 cardMaskStrings.push_back("RC6");
0188 cardMaskStrings.push_back("JSC");
0189
0190 std::vector<std::string> crateIDStrings;
0191 crateIDStrings.push_back("RCT_CRATE_0");
0192 crateIDStrings.push_back("RCT_CRATE_1");
0193 crateIDStrings.push_back("RCT_CRATE_2");
0194 crateIDStrings.push_back("RCT_CRATE_3");
0195 crateIDStrings.push_back("RCT_CRATE_4");
0196 crateIDStrings.push_back("RCT_CRATE_5");
0197 crateIDStrings.push_back("RCT_CRATE_6");
0198 crateIDStrings.push_back("RCT_CRATE_7");
0199 crateIDStrings.push_back("RCT_CRATE_8");
0200 crateIDStrings.push_back("RCT_CRATE_9");
0201 crateIDStrings.push_back("RCT_CRATE_10");
0202 crateIDStrings.push_back("RCT_CRATE_11");
0203 crateIDStrings.push_back("RCT_CRATE_12");
0204 crateIDStrings.push_back("RCT_CRATE_13");
0205 crateIDStrings.push_back("RCT_CRATE_14");
0206 crateIDStrings.push_back("RCT_CRATE_15");
0207 crateIDStrings.push_back("RCT_CRATE_16");
0208 crateIDStrings.push_back("RCT_CRATE_17");
0209
0210 l1t::OMDSReader::QueryResults crate_conf = m_omdsReader.basicQuery("CRATE_CONF",
0211 rctSchema,
0212 "RCT_RUN_SETTINGS_KEY",
0213 "RCT_RUN_SETTINGS_KEY.ID",
0214 m_omdsReader.singleAttribute(objectKey));
0215
0216 int crateNum = 0;
0217 for (std::vector<std::string>::iterator crate = crateIDStrings.begin(); crate != crateIDStrings.end(); ++crate) {
0218
0219 l1t::OMDSReader::QueryResults cardConfResults = m_omdsReader.basicQuery(
0220 cardMaskStrings,
0221 rctSchema,
0222 "CRATE_CONF_DUMMY",
0223 "CRATE_CONF_DUMMY.CRATE_CONF",
0224 m_omdsReader.basicQuery(*crate, rctSchema, "RCT_CRATE_CONF", "RCT_CRATE_CONF.RCT_KEY", crate_conf));
0225 bool extantCard[8];
0226 int cardNum = 0;
0227 for (std::vector<std::string>::iterator card = cardMaskStrings.begin(); card != cardMaskStrings.end(); ++card) {
0228 cardConfResults.fillVariable(*card, extantCard[cardNum]);
0229
0230 if (!extantCard[cardNum]) {
0231 switch (cardNum) {
0232 case 6:
0233
0234 for (int k = 0; k < 4; k++) {
0235 m->ecalMask[crateNum][0][(cardNum / 2) * 8 + k] |= !extantCard[cardNum];
0236 m->ecalMask[crateNum][1][(cardNum / 2) * 8 + k] |= !extantCard[cardNum];
0237 m->hcalMask[crateNum][0][(cardNum / 2) * 8 + k] |= !extantCard[cardNum];
0238 m->hcalMask[crateNum][1][(cardNum / 2) * 8 + k] |= !extantCard[cardNum];
0239 }
0240 break;
0241 case 7:
0242
0243 for (int k = 0; k < 4; k++) {
0244 m->hfMask[crateNum][0][k] |= !extantCard[cardNum];
0245 m->hfMask[crateNum][1][k] |= !extantCard[cardNum];
0246 }
0247 break;
0248 default:
0249
0250 for (int k = 0; k < 8; k++) {
0251 m->hcalMask[crateNum][cardNum % 2][(cardNum / 2) * 8 + k] |= !extantCard[cardNum];
0252 m->ecalMask[crateNum][cardNum % 2][(cardNum / 2) * 8 + k] |= !extantCard[cardNum];
0253 }
0254 }
0255 }
0256 cardNum++;
0257 }
0258 crateNum++;
0259 }
0260
0261
0262
0263
0264
0265
0266
0267
0268
0269
0270
0271
0272
0273
0274
0275
0276
0277
0278 return std::unique_ptr<L1RCTChannelMask>(m);
0279 }
0280
0281
0282
0283
0284
0285
0286 DEFINE_FWK_EVENTSETUP_MODULE(L1RCTChannelMaskOnlineProd);