Go to the documentation of this file.00001
00017
00018 #include "L1TriggerConfig/L1GtConfigProducers/interface/L1GtParametersConfigOnlineProd.h"
00019
00020
00021 #include "boost/lexical_cast.hpp"
00022
00023
00024 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00025
00026
00027 L1GtParametersConfigOnlineProd::L1GtParametersConfigOnlineProd(const edm::ParameterSet& parSet) :
00028 L1ConfigOnlineProdBase<L1GtParametersRcd, L1GtParameters> (parSet) {
00029
00030
00031
00032 }
00033
00034
00035 L1GtParametersConfigOnlineProd::~L1GtParametersConfigOnlineProd() {
00036
00037
00038
00039 }
00040
00041
00042
00043 boost::shared_ptr<L1GtParameters> L1GtParametersConfigOnlineProd::newObject(
00044 const std::string& objectKey) {
00045
00046
00047 boost::shared_ptr<L1GtParameters> pL1GtParameters = boost::shared_ptr<L1GtParameters>(
00048 new L1GtParameters());
00049
00050
00051
00052 const std::string gtSchema = "CMS_GT";
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072 std::vector<std::string> columns;
00073 columns.push_back("EVM_INCLUDE_TCS");
00074 columns.push_back("EVM_INCLUDE_FDL");
00075 columns.push_back("DAQ_INCLUDE_FDL");
00076 columns.push_back("DAQ_INCLUDE_PSB0");
00077 columns.push_back("DAQ_INCLUDE_PSB1");
00078 columns.push_back("DAQ_INCLUDE_PSB2");
00079 columns.push_back("DAQ_INCLUDE_PSB3");
00080 columns.push_back("DAQ_INCLUDE_PSB4");
00081 columns.push_back("DAQ_INCLUDE_PSB5");
00082 columns.push_back("DAQ_INCLUDE_PSB6");
00083 columns.push_back("DAQ_INCLUDE_GMT");
00084 columns.push_back("DAQ_INCLUDE_TIM");
00085 columns.push_back("DAQ_NB_BC_PER_EVENT_FDL");
00086 columns.push_back("DAQ_NB_BC_PER_EVENT_PSB0");
00087 columns.push_back("DAQ_NB_BC_PER_EVENT_PSB1");
00088 columns.push_back("DAQ_NB_BC_PER_EVENT_PSB2");
00089 columns.push_back("DAQ_NB_BC_PER_EVENT_PSB3");
00090 columns.push_back("DAQ_NB_BC_PER_EVENT_PSB4");
00091 columns.push_back("DAQ_NB_BC_PER_EVENT_PSB5");
00092 columns.push_back("DAQ_NB_BC_PER_EVENT_PSB6");
00093 columns.push_back("DAQ_NB_BC_PER_EVENT_GMT");
00094 columns.push_back("DAQ_NB_BC_PER_EVENT_TIM");
00095 columns.push_back("BST_DATA_NB_BYTES");
00096
00097
00098 l1t::OMDSReader::QueryResults results = m_omdsReader.basicQuery(
00099 columns, gtSchema, "GT_GTFE_SETUP", "GT_GTFE_SETUP.ID", m_omdsReader.singleAttribute(
00100 objectKey));
00101
00102
00103 if (results.queryFailed()) {
00104 edm::LogError("L1-O2O") << "Problem with L1GtParameters key:" << objectKey;
00105 return pL1GtParameters;
00106 }
00107
00108 bool activeBoardsEvmTCS = false;
00109 results.fillVariable("EVM_INCLUDE_TCS", activeBoardsEvmTCS);
00110
00111 bool activeBoardsEvmFDL = false;
00112 results.fillVariable("EVM_INCLUDE_FDL", activeBoardsEvmFDL);
00113
00114 bool activeBoardsDaqFDL = false;
00115 results.fillVariable("DAQ_INCLUDE_FDL", activeBoardsDaqFDL);
00116
00117 bool activeBoardsDaqPSB0 = false;
00118 results.fillVariable("DAQ_INCLUDE_PSB0", activeBoardsDaqPSB0);
00119
00120 bool activeBoardsDaqPSB1 = false;
00121 results.fillVariable("DAQ_INCLUDE_PSB1", activeBoardsDaqPSB1);
00122
00123 bool activeBoardsDaqPSB2 = false;
00124 results.fillVariable("DAQ_INCLUDE_PSB2", activeBoardsDaqPSB2);
00125
00126 bool activeBoardsDaqPSB3 = false;
00127 results.fillVariable("DAQ_INCLUDE_PSB3", activeBoardsDaqPSB3);
00128
00129 bool activeBoardsDaqPSB4;
00130 results.fillVariable("DAQ_INCLUDE_PSB4", activeBoardsDaqPSB4);
00131
00132 bool activeBoardsDaqPSB5 = false;
00133 results.fillVariable("DAQ_INCLUDE_PSB5", activeBoardsDaqPSB5);
00134
00135 bool activeBoardsDaqPSB6;
00136 results.fillVariable("DAQ_INCLUDE_PSB6", activeBoardsDaqPSB6);
00137
00138 bool activeBoardsDaqGMT;
00139 results.fillVariable("DAQ_INCLUDE_GMT", activeBoardsDaqGMT);
00140
00141 bool activeBoardsDaqTIM = false;
00142 results.fillVariable("DAQ_INCLUDE_TIM", activeBoardsDaqTIM);
00143
00144 std::string totalBxInEventStr;
00145 results.fillVariable("DAQ_NB_BC_PER_EVENT_FDL", totalBxInEventStr);
00146
00147
00148 std::string daqNrBxBoardStrFDL;
00149 results.fillVariable("DAQ_NB_BC_PER_EVENT_FDL", daqNrBxBoardStrFDL);
00150
00151 std::string daqNrBxBoardStrPSB0;
00152 results.fillVariable("DAQ_NB_BC_PER_EVENT_PSB0", daqNrBxBoardStrPSB0);
00153
00154 std::string daqNrBxBoardStrPSB1;
00155 results.fillVariable("DAQ_NB_BC_PER_EVENT_PSB1", daqNrBxBoardStrPSB1);
00156
00157 std::string daqNrBxBoardStrPSB2;
00158 results.fillVariable("DAQ_NB_BC_PER_EVENT_PSB2", daqNrBxBoardStrPSB2);
00159
00160 std::string daqNrBxBoardStrPSB3;
00161 results.fillVariable("DAQ_NB_BC_PER_EVENT_PSB3", daqNrBxBoardStrPSB3);
00162
00163 std::string daqNrBxBoardStrPSB4;
00164 results.fillVariable("DAQ_NB_BC_PER_EVENT_PSB4", daqNrBxBoardStrPSB4);
00165
00166 std::string daqNrBxBoardStrPSB5;
00167 results.fillVariable("DAQ_NB_BC_PER_EVENT_PSB5", daqNrBxBoardStrPSB5);
00168
00169 std::string daqNrBxBoardStrPSB6;
00170 results.fillVariable("DAQ_NB_BC_PER_EVENT_PSB6", daqNrBxBoardStrPSB6);
00171
00172 std::string daqNrBxBoardStrGMT;
00173 results.fillVariable("DAQ_NB_BC_PER_EVENT_GMT", daqNrBxBoardStrGMT);
00174
00175 std::string daqNrBxBoardStrTIM;
00176 results.fillVariable("DAQ_NB_BC_PER_EVENT_TIM", daqNrBxBoardStrTIM);
00177
00178 std::string bstLengthBytesStr;
00179 results.fillVariable("BST_DATA_NB_BYTES", bstLengthBytesStr);
00180
00181
00182
00183
00184 int totalBxInEventVal = boost::lexical_cast<int>(totalBxInEventStr);
00185 pL1GtParameters->setGtTotalBxInEvent(totalBxInEventVal);
00186
00187
00188
00189
00190
00191
00192
00193 boost::uint16_t daqActiveBoardsVal = 0;
00194
00195 int daqActiveBoardsLength = 16;
00196 std::vector<int> daqNrBxBoard(daqActiveBoardsLength, 0);
00197
00198 int iActiveBit = 0;
00199 if (activeBoardsDaqFDL) {
00200 daqActiveBoardsVal = daqActiveBoardsVal | ( 1 << iActiveBit );
00201 }
00202 daqNrBxBoard.at(iActiveBit) = boost::lexical_cast<int>(daqNrBxBoardStrFDL);
00203
00204 iActiveBit = 1;
00205 if (activeBoardsDaqPSB0) {
00206 daqActiveBoardsVal = daqActiveBoardsVal | ( 1 << iActiveBit );
00207 }
00208 daqNrBxBoard.at(iActiveBit) = boost::lexical_cast<int>(daqNrBxBoardStrPSB0);
00209
00210 iActiveBit = 2;
00211 if (activeBoardsDaqPSB1) {
00212 daqActiveBoardsVal = daqActiveBoardsVal | ( 1 << iActiveBit );
00213 }
00214 daqNrBxBoard.at(iActiveBit) = boost::lexical_cast<int>(daqNrBxBoardStrPSB1);
00215
00216 iActiveBit = 3;
00217 if (activeBoardsDaqPSB2) {
00218 daqActiveBoardsVal = daqActiveBoardsVal | ( 1 << iActiveBit );
00219 }
00220 daqNrBxBoard.at(iActiveBit) = boost::lexical_cast<int>(daqNrBxBoardStrPSB2);
00221
00222 iActiveBit = 4;
00223 if (activeBoardsDaqPSB3) {
00224 daqActiveBoardsVal = daqActiveBoardsVal | ( 1 << iActiveBit );
00225 }
00226 daqNrBxBoard.at(iActiveBit) = boost::lexical_cast<int>(daqNrBxBoardStrPSB3);
00227
00228 iActiveBit = 5;
00229 if (activeBoardsDaqPSB4) {
00230 daqActiveBoardsVal = daqActiveBoardsVal | ( 1 << iActiveBit );
00231 }
00232 daqNrBxBoard.at(iActiveBit) = boost::lexical_cast<int>(daqNrBxBoardStrPSB4);
00233
00234 iActiveBit = 6;
00235 if (activeBoardsDaqPSB5) {
00236 daqActiveBoardsVal = daqActiveBoardsVal | ( 1 << iActiveBit );
00237 }
00238 daqNrBxBoard.at(iActiveBit) = boost::lexical_cast<int>(daqNrBxBoardStrPSB5);
00239
00240 iActiveBit = 7;
00241 if (activeBoardsDaqPSB6) {
00242 daqActiveBoardsVal = daqActiveBoardsVal | ( 1 << iActiveBit );
00243 }
00244 daqNrBxBoard.at(iActiveBit) = boost::lexical_cast<int>(daqNrBxBoardStrPSB6);
00245
00246 iActiveBit = 8;
00247 if (activeBoardsDaqGMT) {
00248 daqActiveBoardsVal = daqActiveBoardsVal | ( 1 << iActiveBit );
00249 }
00250 daqNrBxBoard.at(iActiveBit) = boost::lexical_cast<int>(daqNrBxBoardStrGMT);
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260 boost::uint16_t evmActiveBoardsVal = 0;
00261
00262 int evmActiveBoardsLength = 16;
00263 std::vector<int> evmNrBxBoard(evmActiveBoardsLength, 0);
00264
00265 iActiveBit = 0;
00266 if (activeBoardsEvmTCS) {
00267 evmActiveBoardsVal = evmActiveBoardsVal | ( 1 << iActiveBit );
00268 }
00269
00270 evmNrBxBoard.at(iActiveBit) = 1;
00271
00272 iActiveBit = 1;
00273 if (activeBoardsEvmFDL) {
00274 evmActiveBoardsVal = evmActiveBoardsVal | ( 1 << iActiveBit );
00275 }
00276
00277 evmNrBxBoard.at(iActiveBit) = boost::lexical_cast<int>(daqNrBxBoardStrFDL);
00278
00279
00280
00281 pL1GtParameters->setGtDaqActiveBoards(daqActiveBoardsVal);
00282 pL1GtParameters->setGtEvmActiveBoards(evmActiveBoardsVal);
00283 pL1GtParameters->setGtDaqNrBxBoard(daqNrBxBoard);
00284 pL1GtParameters->setGtEvmNrBxBoard(evmNrBxBoard);
00285
00286
00287 unsigned int bstLengthBytesVal = boost::lexical_cast<unsigned int>(bstLengthBytesStr);
00288 pL1GtParameters->setGtBstLengthBytes(bstLengthBytesVal);
00289
00290 if (edm::isDebugEnabled()) {
00291 std::ostringstream myCoutStream;
00292 pL1GtParameters->print(myCoutStream);
00293 LogTrace("L1GtParametersConfigOnlineProd")
00294 << "\nThe following L1GtParameters record was read from OMDS: \n"
00295 << myCoutStream.str() << "\n" << std::endl;
00296 }
00297
00298 return pL1GtParameters;
00299 }
00300
00301 DEFINE_FWK_EVENTSETUP_MODULE( L1GtParametersConfigOnlineProd);