Go to the documentation of this file.00001
00026
00027 #include "DataFormats/L1GlobalTrigger/interface/L1GtTriggerMenuLite.h"
00028
00029
00030 #include <iostream>
00031 #include <iomanip>
00032
00033
00034
00035
00036
00037
00038
00039 L1GtTriggerMenuLite::L1GtTriggerMenuLite() :
00040 m_triggerMenuInterface("NULL"), m_triggerMenuName("NULL"),
00041 m_triggerMenuImplementation("NULL"), m_scaleDbKey("NULL") {
00042
00043
00044
00045 }
00046
00047 L1GtTriggerMenuLite::L1GtTriggerMenuLite(
00048 const std::string& triggerMenuNameVal,
00049 const L1TriggerMap& algorithmMapVal,
00050 const L1TriggerMap& algorithmAliasMapVal,
00051 const L1TriggerMap& technicalTriggerMapVal,
00052 const std::vector<unsigned int>& triggerMaskAlgoTrigVal,
00053 const std::vector<unsigned int>& triggerMaskTechTrigVal,
00054 const std::vector<std::vector<int> >& prescaleFactorsAlgoTrigVal,
00055 const std::vector<std::vector<int> >& prescaleFactorsTechTrigVal)
00056 :
00057 m_triggerMenuInterface("NULL"),
00058 m_triggerMenuName(triggerMenuNameVal),
00059 m_triggerMenuImplementation("NULL"),
00060 m_scaleDbKey("NULL"),
00061 m_algorithmMap(algorithmMapVal),
00062 m_algorithmAliasMap(algorithmAliasMapVal),
00063 m_technicalTriggerMap(technicalTriggerMapVal),
00064 m_triggerMaskAlgoTrig(triggerMaskAlgoTrigVal),
00065 m_triggerMaskTechTrig(triggerMaskTechTrigVal),
00066 m_prescaleFactorsAlgoTrig(prescaleFactorsAlgoTrigVal),
00067 m_prescaleFactorsTechTrig(prescaleFactorsTechTrigVal)
00068
00069
00070 {
00071
00072
00073
00074 }
00075
00076
00077 L1GtTriggerMenuLite::L1GtTriggerMenuLite(const L1GtTriggerMenuLite& rhs) {
00078
00079 m_triggerMenuInterface = rhs.m_triggerMenuInterface;
00080 m_triggerMenuName = rhs.m_triggerMenuName;
00081 m_triggerMenuImplementation = rhs.m_triggerMenuImplementation;
00082 m_scaleDbKey = rhs.m_scaleDbKey;
00083
00084
00085 m_algorithmMap = rhs.m_algorithmMap;
00086 m_algorithmAliasMap = rhs.m_algorithmAliasMap;
00087
00088
00089
00090 m_technicalTriggerMap = rhs.m_technicalTriggerMap;
00091
00092
00093 m_triggerMaskAlgoTrig = rhs.m_triggerMaskAlgoTrig;
00094 m_triggerMaskTechTrig = rhs.m_triggerMaskTechTrig;
00095
00096
00097 m_prescaleFactorsAlgoTrig = rhs.m_prescaleFactorsAlgoTrig;
00098 m_prescaleFactorsTechTrig = rhs.m_prescaleFactorsTechTrig;
00099
00100 }
00101
00102
00103 L1GtTriggerMenuLite::~L1GtTriggerMenuLite()
00104 {
00105
00106 m_algorithmMap.clear();
00107 m_algorithmAliasMap.clear();
00108 m_technicalTriggerMap.clear();
00109
00110 }
00111
00112
00113 L1GtTriggerMenuLite& L1GtTriggerMenuLite::operator=(
00114 const L1GtTriggerMenuLite& rhs) {
00115
00116 if (this != &rhs) {
00117
00118 m_triggerMenuInterface = rhs.m_triggerMenuInterface;
00119 m_triggerMenuName = rhs.m_triggerMenuName;
00120 m_triggerMenuImplementation = rhs.m_triggerMenuImplementation;
00121 m_scaleDbKey = rhs.m_scaleDbKey;
00122
00123 m_algorithmMap = rhs.m_algorithmMap;
00124 m_algorithmAliasMap = rhs.m_algorithmAliasMap;
00125
00126 m_technicalTriggerMap = rhs.m_technicalTriggerMap;
00127
00128 m_triggerMaskAlgoTrig = rhs.m_triggerMaskAlgoTrig;
00129 m_triggerMaskTechTrig = rhs.m_triggerMaskTechTrig;
00130
00131 m_prescaleFactorsAlgoTrig = rhs.m_prescaleFactorsAlgoTrig;
00132 m_prescaleFactorsTechTrig = rhs.m_prescaleFactorsTechTrig;
00133 }
00134
00135
00136 return *this;
00137
00138 }
00139
00140
00141 bool L1GtTriggerMenuLite::operator==(const L1GtTriggerMenuLite& rhs) const {
00142
00143 if (m_triggerMenuInterface != rhs.m_triggerMenuInterface) {
00144 return false;
00145 }
00146
00147 if (m_triggerMenuName != rhs.m_triggerMenuName) {
00148 return false;
00149 }
00150
00151 if (m_triggerMenuImplementation != rhs.m_triggerMenuImplementation) {
00152 return false;
00153 }
00154
00155 if (m_scaleDbKey != rhs.m_scaleDbKey) {
00156 return false;
00157 }
00158
00159 if (m_algorithmMap != rhs.m_algorithmMap) {
00160 return false;
00161 }
00162
00163 if (m_algorithmAliasMap != rhs.m_algorithmAliasMap) {
00164 return false;
00165 }
00166
00167 if (m_technicalTriggerMap != rhs.m_technicalTriggerMap) {
00168 return false;
00169 }
00170
00171 if (m_triggerMaskAlgoTrig != rhs.m_triggerMaskAlgoTrig) {
00172 return false;
00173 }
00174
00175 if (m_triggerMaskTechTrig != rhs.m_triggerMaskTechTrig) {
00176 return false;
00177 }
00178
00179 if (m_prescaleFactorsAlgoTrig != rhs.m_prescaleFactorsAlgoTrig) {
00180 return false;
00181 }
00182
00183 if (m_prescaleFactorsTechTrig != rhs.m_prescaleFactorsTechTrig) {
00184 return false;
00185 }
00186
00187
00188 return true;
00189
00190 }
00191
00192
00193 bool L1GtTriggerMenuLite::operator!=(const L1GtTriggerMenuLite& otherObj) const {
00194
00195 return !(otherObj == *this);
00196
00197 }
00198
00199
00200 bool L1GtTriggerMenuLite::isProductEqual(const L1GtTriggerMenuLite& otherObj) const {
00201
00202 return (otherObj == *this);
00203 }
00204
00205
00206
00207 void L1GtTriggerMenuLite::setGtTriggerMenuInterface(
00208 const std::string& menuInterface) {
00209 m_triggerMenuInterface = menuInterface;
00210 }
00211
00212 void L1GtTriggerMenuLite::setGtTriggerMenuName(const std::string& menuName) {
00213 m_triggerMenuName = menuName;
00214 }
00215
00216 void L1GtTriggerMenuLite::setGtTriggerMenuImplementation(
00217 const std::string& menuImplementation) {
00218 m_triggerMenuImplementation = menuImplementation;
00219 }
00220
00221
00222 void L1GtTriggerMenuLite::setGtScaleDbKey(const std::string& scaleKey) {
00223 m_scaleDbKey = scaleKey;
00224 }
00225
00226
00227 void L1GtTriggerMenuLite::setGtAlgorithmMap(const L1TriggerMap& algoMap) {
00228 m_algorithmMap = algoMap;
00229 }
00230
00231
00232 void L1GtTriggerMenuLite::setGtAlgorithmAliasMap(const L1TriggerMap& algoMap) {
00233 m_algorithmAliasMap = algoMap;
00234 }
00235
00236
00237 void L1GtTriggerMenuLite::setGtTechnicalTriggerMap(const L1TriggerMap& ttMap) {
00238 m_technicalTriggerMap = ttMap;
00239 }
00240
00241
00242 void L1GtTriggerMenuLite::setGtTriggerMaskAlgoTrig(
00243 const std::vector<unsigned int>& maskValue) {
00244
00245 m_triggerMaskAlgoTrig = maskValue;
00246
00247 }
00248
00249
00250 void L1GtTriggerMenuLite::setGtTriggerMaskTechTrig(const std::vector<unsigned int>& maskValue)
00251 {
00252
00253 m_triggerMaskTechTrig = maskValue;
00254
00255 }
00256
00257
00258
00259 void L1GtTriggerMenuLite::setGtPrescaleFactorsAlgoTrig(
00260 const std::vector<std::vector<int> >& factorValue) {
00261
00262 m_prescaleFactorsAlgoTrig = factorValue;
00263
00264 }
00265
00266 void L1GtTriggerMenuLite::setGtPrescaleFactorsTechTrig(
00267 const std::vector<std::vector<int> >& factorValue) {
00268
00269 m_prescaleFactorsTechTrig = factorValue;
00270
00271 }
00272
00273
00274 void L1GtTriggerMenuLite::print(std::ostream& myCout, int& printVerbosity) const {
00275
00276
00277
00278 switch (printVerbosity) {
00279
00280 case 0: {
00281
00282 size_t nrDefinedAlgo = m_algorithmMap.size();
00283 size_t nrDefinedTech = m_technicalTriggerMap.size();
00284
00285
00286
00287 myCout << "\n ********** L1 Trigger Menu - printing ********** \n"
00288 << "\nL1 Trigger Menu Interface: " << m_triggerMenuInterface
00289 << "\nL1 Trigger Menu Name: " << m_triggerMenuName
00290 << "\nL1 Trigger Menu Implementation: " << m_triggerMenuImplementation
00291 << "\nAssociated Scale DB Key: " << m_scaleDbKey << "\n\n"
00292 << "\nL1 Physics Algorithms: " << nrDefinedAlgo << " algorithms defined." << "\n\n"
00293 << "Bit Number "
00294 << std::right << std::setw(35) << "Algorithm Name" << " "
00295 << std::right << std::setw(35) << "Algorithm Alias" << " "
00296 << std::right << std::setw(12) << "Trigger Mask";
00297 for (unsigned iSet = 0; iSet < m_prescaleFactorsAlgoTrig.size(); iSet++) {
00298 myCout << std::right << std::setw(10) << "PF Set "
00299 << std::right << std::setw(2) << iSet;
00300 }
00301
00302 myCout << std::endl;
00303
00304
00305 for (CItL1Trig itTrig = m_algorithmMap.begin(); itTrig
00306 != m_algorithmMap.end(); itTrig++) {
00307
00308 const unsigned int bitNumber = itTrig->first;
00309 const std::string& aName = itTrig->second;
00310
00311 std::string aAlias;
00312 CItL1Trig itAlias = m_algorithmAliasMap.find(bitNumber);
00313 if (itAlias != m_algorithmAliasMap.end()) {
00314 aAlias = itAlias->second;
00315 }
00316
00317 myCout << std::setw(6) << bitNumber << " "
00318 << std::right << std::setw(35) << aName << " "
00319 << std::right << std::setw(35) << aAlias << " "
00320 << std::right << std::setw(12) << m_triggerMaskAlgoTrig[bitNumber];
00321 for (unsigned iSet = 0; iSet < m_prescaleFactorsAlgoTrig.size(); iSet++) {
00322 myCout << std::right << std::setw(12) << m_prescaleFactorsAlgoTrig[iSet][bitNumber];
00323 }
00324
00325 myCout << std::endl;
00326 }
00327
00328 myCout << "\nL1 Technical Triggers: " << nrDefinedTech
00329 << " technical triggers defined." << "\n\n" << std::endl;
00330 if (nrDefinedTech) {
00331 myCout
00332 << std::right << std::setw(6) << "Bit Number "
00333 << std::right << std::setw(45) << " Technical trigger name " << " "
00334 << std::right << std::setw(12) << "Trigger Mask";
00335 for (unsigned iSet = 0; iSet < m_prescaleFactorsTechTrig.size(); iSet++) {
00336 myCout << std::right << std::setw(10) << "PF Set "
00337 << std::right << std::setw(2) << iSet;
00338 }
00339
00340 myCout << std::endl;
00341 }
00342
00343 for (CItL1Trig itTrig = m_technicalTriggerMap.begin(); itTrig
00344 != m_technicalTriggerMap.end(); itTrig++) {
00345
00346 unsigned int bitNumber = itTrig->first;
00347 std::string aName = itTrig->second;
00348
00349 myCout << std::setw(6) << bitNumber << " "
00350 << std::right << std::setw(45) << aName
00351 << std::right << std::setw(12) << m_triggerMaskTechTrig[bitNumber];
00352 for (unsigned iSet = 0; iSet < m_prescaleFactorsTechTrig.size(); iSet++) {
00353 myCout << std::right << std::setw(12) << m_prescaleFactorsTechTrig[iSet][bitNumber];
00354 }
00355
00356 myCout << std::endl;
00357
00358 }
00359
00360
00361
00362 }
00363 break;
00364 default: {
00365 myCout << "\n ********** L1 Trigger Menu - printing ********** \n\n"
00366 << "Verbosity level: " << printVerbosity << " not implemented.\n\n"
00367 << std::endl;
00368 }
00369 break;
00370 }
00371
00372 }
00373
00374
00375 std::ostream& operator<<(std::ostream& streamRec,
00376 const L1GtTriggerMenuLite& result) {
00377 int verbosityLevel = 0;
00378
00379 result.print(streamRec, verbosityLevel);
00380 return streamRec;
00381
00382 }
00383
00384
00385 const std::string* L1GtTriggerMenuLite::gtAlgorithmAlias(
00386 const unsigned int bitNumber, int& errorCode) const {
00387
00388 const std::string* gtAlgorithmAlias = 0;
00389
00390 for (CItL1Trig itTrig = m_algorithmAliasMap.begin(); itTrig
00391 != m_algorithmAliasMap.end(); itTrig++) {
00392
00393 if (itTrig->first == bitNumber) {
00394
00395 gtAlgorithmAlias = &(itTrig->second);
00396
00397 errorCode = 0;
00398 return gtAlgorithmAlias;
00399 }
00400 }
00401
00402 errorCode = 1;
00403 return gtAlgorithmAlias;
00404
00405 }
00406
00407
00408
00409 const std::string* L1GtTriggerMenuLite::gtAlgorithmName(
00410 const unsigned int bitNumber, int& errorCode) const {
00411
00412 const std::string* gtAlgorithmName = 0;
00413
00414 for (CItL1Trig itTrig = m_algorithmMap.begin(); itTrig
00415 != m_algorithmMap.end(); itTrig++) {
00416
00417 if (itTrig->first == bitNumber) {
00418
00419 gtAlgorithmName = &(itTrig->second);
00420
00421 errorCode = 0;
00422 return gtAlgorithmName;
00423 }
00424 }
00425
00426 errorCode = 1;
00427 return gtAlgorithmName;
00428
00429 }
00430
00431 const std::string* L1GtTriggerMenuLite::gtTechTrigName(
00432 const unsigned int bitNumber, int& errorCode) const {
00433
00434 const std::string* gtTechTrigName = 0;
00435
00436 for (CItL1Trig itTrig = m_technicalTriggerMap.begin(); itTrig
00437 != m_technicalTriggerMap.end(); itTrig++) {
00438
00439 if (itTrig->first == bitNumber) {
00440
00441 gtTechTrigName = &(itTrig->second);
00442
00443 errorCode = 0;
00444 return gtTechTrigName;
00445 }
00446 }
00447
00448 errorCode = 1;
00449 return gtTechTrigName;
00450
00451 }
00452
00453
00454
00455 const unsigned int L1GtTriggerMenuLite::gtBitNumber(
00456 const std::string& trigName, int& errorCode) const {
00457
00458 unsigned int bitNr = 999;
00459
00460
00461 for (CItL1Trig itTrig = m_algorithmAliasMap.begin(); itTrig
00462 != m_algorithmAliasMap.end(); itTrig++) {
00463
00464 if (itTrig->second == trigName) {
00465
00466 bitNr = itTrig->first;
00467
00468 errorCode = 0;
00469 return bitNr;
00470 }
00471 }
00472
00473
00474 for (CItL1Trig itTrig = m_algorithmMap.begin(); itTrig
00475 != m_algorithmMap.end(); itTrig++) {
00476
00477 if (itTrig->second == trigName) {
00478
00479 bitNr = itTrig->first;
00480 errorCode = 0;
00481 return bitNr;
00482 }
00483 }
00484
00485
00486 for (CItL1Trig itTrig = m_technicalTriggerMap.begin(); itTrig
00487 != m_technicalTriggerMap.end(); itTrig++) {
00488
00489 if (itTrig->second == trigName) {
00490
00491 bitNr = itTrig->first;
00492 errorCode = 0;
00493 return bitNr;
00494 }
00495 }
00496
00497 errorCode = 1;
00498 return bitNr;
00499
00500 }
00501
00502
00503
00504 const bool L1GtTriggerMenuLite::gtTriggerResult(const std::string& trigName,
00505 const std::vector<bool>& decWord, int& errorCode) const {
00506
00507 bool trigResult = false;
00508
00509
00510
00511 for (CItL1Trig itTrig = m_algorithmAliasMap.begin(); itTrig
00512 != m_algorithmAliasMap.end(); itTrig++) {
00513
00514 if (itTrig->second == trigName) {
00515 unsigned int bitNumber = itTrig->first;
00516
00517 if ((bitNumber >= decWord.size())) {
00518 trigResult = false;
00519 errorCode = 10;
00520 } else {
00521 trigResult = decWord[bitNumber];
00522 errorCode = 0;
00523 }
00524
00525 return trigResult;
00526 }
00527 }
00528
00529
00530
00531 for (CItL1Trig itTrig = m_algorithmMap.begin(); itTrig
00532 != m_algorithmMap.end(); itTrig++) {
00533
00534 if (itTrig->second == trigName) {
00535 unsigned int bitNumber = itTrig->first;
00536
00537 if ((bitNumber >= decWord.size())) {
00538 trigResult = false;
00539 errorCode = 10;
00540 } else {
00541 trigResult = decWord[bitNumber];
00542 errorCode = 0;
00543 }
00544
00545 return trigResult;
00546 }
00547 }
00548
00549
00550
00551 for (CItL1Trig itTrig = m_technicalTriggerMap.begin(); itTrig
00552 != m_technicalTriggerMap.end(); itTrig++) {
00553
00554 if (itTrig->second == trigName) {
00555 unsigned int bitNumber = itTrig->first;
00556
00557 if ((bitNumber >= decWord.size())) {
00558 trigResult = false;
00559 errorCode = 10;
00560 } else {
00561 trigResult = decWord[bitNumber];
00562 errorCode = 0;
00563 }
00564
00565 return trigResult;
00566 }
00567 }
00568
00569
00570
00571 errorCode = 1;
00572 return false;
00573
00574 }
00575