File indexing completed on 2023-03-17 11:14:21
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #include "CondTools/L1Trigger/interface/L1ConfigOnlineProdBase.h"
0023
0024 #include "CondFormats/L1TObjects/interface/L1CaloEtScale.h"
0025 #include "CondFormats/DataRecord/interface/L1EmEtScaleRcd.h"
0026
0027
0028
0029
0030
0031 class L1EmEtScaleOnlineProd : public L1ConfigOnlineProdBase<L1EmEtScaleRcd, L1CaloEtScale> {
0032 public:
0033 L1EmEtScaleOnlineProd(const edm::ParameterSet&);
0034 ~L1EmEtScaleOnlineProd() override;
0035
0036 std::unique_ptr<L1CaloEtScale> newObject(const std::string& objectKey) override;
0037
0038 private:
0039
0040 };
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053 L1EmEtScaleOnlineProd::L1EmEtScaleOnlineProd(const edm::ParameterSet& iConfig)
0054 : L1ConfigOnlineProdBase<L1EmEtScaleRcd, L1CaloEtScale>(iConfig) {
0055
0056
0057
0058
0059 }
0060
0061 L1EmEtScaleOnlineProd::~L1EmEtScaleOnlineProd() {
0062
0063
0064 }
0065
0066 std::unique_ptr<L1CaloEtScale> L1EmEtScaleOnlineProd::newObject(const std::string& objectKey) {
0067
0068
0069 std::vector<std::string> queryStrings;
0070 queryStrings.push_back("ET_GEV_BIN_LOW_0");
0071 queryStrings.push_back("ET_GEV_BIN_LOW_1");
0072 queryStrings.push_back("ET_GEV_BIN_LOW_2");
0073 queryStrings.push_back("ET_GEV_BIN_LOW_3");
0074 queryStrings.push_back("ET_GEV_BIN_LOW_4");
0075 queryStrings.push_back("ET_GEV_BIN_LOW_5");
0076 queryStrings.push_back("ET_GEV_BIN_LOW_6");
0077 queryStrings.push_back("ET_GEV_BIN_LOW_7");
0078 queryStrings.push_back("ET_GEV_BIN_LOW_8");
0079 queryStrings.push_back("ET_GEV_BIN_LOW_9");
0080 queryStrings.push_back("ET_GEV_BIN_LOW_10");
0081 queryStrings.push_back("ET_GEV_BIN_LOW_11");
0082 queryStrings.push_back("ET_GEV_BIN_LOW_12");
0083 queryStrings.push_back("ET_GEV_BIN_LOW_13");
0084 queryStrings.push_back("ET_GEV_BIN_LOW_14");
0085 queryStrings.push_back("ET_GEV_BIN_LOW_15");
0086 queryStrings.push_back("ET_GEV_BIN_LOW_16");
0087 queryStrings.push_back("ET_GEV_BIN_LOW_17");
0088 queryStrings.push_back("ET_GEV_BIN_LOW_18");
0089 queryStrings.push_back("ET_GEV_BIN_LOW_19");
0090 queryStrings.push_back("ET_GEV_BIN_LOW_20");
0091 queryStrings.push_back("ET_GEV_BIN_LOW_21");
0092 queryStrings.push_back("ET_GEV_BIN_LOW_22");
0093 queryStrings.push_back("ET_GEV_BIN_LOW_23");
0094 queryStrings.push_back("ET_GEV_BIN_LOW_24");
0095 queryStrings.push_back("ET_GEV_BIN_LOW_25");
0096 queryStrings.push_back("ET_GEV_BIN_LOW_26");
0097 queryStrings.push_back("ET_GEV_BIN_LOW_27");
0098 queryStrings.push_back("ET_GEV_BIN_LOW_28");
0099 queryStrings.push_back("ET_GEV_BIN_LOW_29");
0100 queryStrings.push_back("ET_GEV_BIN_LOW_30");
0101 queryStrings.push_back("ET_GEV_BIN_LOW_31");
0102 queryStrings.push_back("ET_GEV_BIN_LOW_32");
0103 queryStrings.push_back("ET_GEV_BIN_LOW_33");
0104 queryStrings.push_back("ET_GEV_BIN_LOW_34");
0105 queryStrings.push_back("ET_GEV_BIN_LOW_35");
0106 queryStrings.push_back("ET_GEV_BIN_LOW_36");
0107 queryStrings.push_back("ET_GEV_BIN_LOW_37");
0108 queryStrings.push_back("ET_GEV_BIN_LOW_38");
0109 queryStrings.push_back("ET_GEV_BIN_LOW_39");
0110 queryStrings.push_back("ET_GEV_BIN_LOW_40");
0111 queryStrings.push_back("ET_GEV_BIN_LOW_41");
0112 queryStrings.push_back("ET_GEV_BIN_LOW_42");
0113 queryStrings.push_back("ET_GEV_BIN_LOW_43");
0114 queryStrings.push_back("ET_GEV_BIN_LOW_44");
0115 queryStrings.push_back("ET_GEV_BIN_LOW_45");
0116 queryStrings.push_back("ET_GEV_BIN_LOW_46");
0117 queryStrings.push_back("ET_GEV_BIN_LOW_47");
0118 queryStrings.push_back("ET_GEV_BIN_LOW_48");
0119 queryStrings.push_back("ET_GEV_BIN_LOW_49");
0120 queryStrings.push_back("ET_GEV_BIN_LOW_50");
0121 queryStrings.push_back("ET_GEV_BIN_LOW_51");
0122 queryStrings.push_back("ET_GEV_BIN_LOW_52");
0123 queryStrings.push_back("ET_GEV_BIN_LOW_53");
0124 queryStrings.push_back("ET_GEV_BIN_LOW_54");
0125 queryStrings.push_back("ET_GEV_BIN_LOW_55");
0126 queryStrings.push_back("ET_GEV_BIN_LOW_56");
0127 queryStrings.push_back("ET_GEV_BIN_LOW_57");
0128 queryStrings.push_back("ET_GEV_BIN_LOW_58");
0129 queryStrings.push_back("ET_GEV_BIN_LOW_59");
0130 queryStrings.push_back("ET_GEV_BIN_LOW_60");
0131 queryStrings.push_back("ET_GEV_BIN_LOW_61");
0132 queryStrings.push_back("ET_GEV_BIN_LOW_62");
0133 queryStrings.push_back("ET_GEV_BIN_LOW_63");
0134
0135 const l1t::OMDSReader::QueryResults scaleKeyResults = m_omdsReader.singleAttribute(objectKey);
0136
0137 l1t::OMDSReader::QueryResults scaleResults = m_omdsReader.basicQuery(
0138 queryStrings,
0139 "CMS_GT",
0140 "L1T_SCALE_CALO_ET_THRESHOLD",
0141 "L1T_SCALE_CALO_ET_THRESHOLD.ID",
0142 m_omdsReader.basicQuery(
0143 "L1T_SCALE_CALO_ET_THRESHOLD_ID", "CMS_RCT", "L1CALOEMETTHRESH", "L1CALOEMETTHRESH.NAME", scaleKeyResults));
0144
0145 if (scaleResults.queryFailed() || scaleResults.numberRows() != 1)
0146 {
0147 edm::LogError("L1-O2O") << "Problem with L1EmEtScale key.";
0148 return std::unique_ptr<L1CaloEtScale>();
0149 }
0150 std::vector<double> m_thresholds;
0151
0152 for (std::vector<std::string>::iterator thresh = queryStrings.begin(); thresh != queryStrings.end(); ++thresh) {
0153 float tempScale = 0.0;
0154 scaleResults.fillVariable(*thresh, tempScale);
0155 m_thresholds.push_back(tempScale);
0156 }
0157
0158 l1t::OMDSReader::QueryResults lsbResults =
0159 m_omdsReader.basicQuery("INPUTLSB", "CMS_RCT", "L1CALOEMETTHRESH", "L1CALOEMETTHRESH.NAME", scaleKeyResults);
0160 if (lsbResults.queryFailed() || lsbResults.numberRows() != 1)
0161 {
0162 edm::LogError("L1-O2O") << "Problem with L1EmEtScale key.";
0163 return std::unique_ptr<L1CaloEtScale>();
0164 }
0165
0166 double m_lsb = 0.;
0167 lsbResults.fillVariable(m_lsb);
0168
0169
0170
0171
0172
0173
0174
0175 return std::make_unique<L1CaloEtScale>(m_lsb, m_thresholds);
0176 }
0177
0178
0179
0180
0181 DEFINE_FWK_EVENTSETUP_MODULE(L1EmEtScaleOnlineProd);