Go to the documentation of this file.00001
00017
00018 #include "L1TriggerConfig/L1GtConfigProducers/interface/L1GtTriggerMenuTester.h"
00019
00020
00021 #include <iomanip>
00022 #include <boost/algorithm/string/erase.hpp>
00023
00024
00025
00026 #include "FWCore/Framework/interface/EDAnalyzer.h"
00027
00028 #include "FWCore/Framework/interface/Event.h"
00029 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00030
00031 #include "FWCore/Framework/interface/EventSetup.h"
00032 #include "FWCore/Framework/interface/ESHandle.h"
00033
00034 #include "CondFormats/L1TObjects/interface/L1GtTriggerMenu.h"
00035 #include "CondFormats/DataRecord/interface/L1GtTriggerMenuRcd.h"
00036
00037 #include "CondFormats/L1TObjects/interface/L1GtPrescaleFactors.h"
00038
00039 #include "CondFormats/DataRecord/interface/L1GtPrescaleFactorsAlgoTrigRcd.h"
00040 #include "CondFormats/DataRecord/interface/L1GtPrescaleFactorsTechTrigRcd.h"
00041
00042 #include "CondFormats/L1TObjects/interface/L1GtTriggerMask.h"
00043
00044 #include "CondFormats/DataRecord/interface/L1GtTriggerMaskAlgoTrigRcd.h"
00045 #include "CondFormats/DataRecord/interface/L1GtTriggerMaskTechTrigRcd.h"
00046
00047 #include "CondFormats/DataRecord/interface/L1GtTriggerMaskVetoAlgoTrigRcd.h"
00048 #include "CondFormats/DataRecord/interface/L1GtTriggerMaskVetoTechTrigRcd.h"
00049
00050 #include "DataFormats/L1GlobalTrigger/interface/L1GtLogicParser.h"
00051
00052
00053
00054
00055 L1GtTriggerMenuTester::L1GtTriggerMenuTester(const edm::ParameterSet& parSet) {
00056
00057 }
00058
00059
00060 L1GtTriggerMenuTester::~L1GtTriggerMenuTester() {
00061
00062 }
00063
00064
00065 void L1GtTriggerMenuTester::analyze(const edm::Event& iEvent,
00066 const edm::EventSetup& evSetup) {
00067
00068 edm::ESHandle< L1GtTriggerMenu> l1GtMenu;
00069 evSetup.get< L1GtTriggerMenuRcd>().get(l1GtMenu);
00070 (const_cast<L1GtTriggerMenu*>(l1GtMenu.product()))->buildGtConditionMap();
00071
00072
00073
00074 int printVerbosity = 0;
00075 l1GtMenu->print(std::cout, printVerbosity);
00076 std::cout << std::flush << std::endl;
00077
00078 printVerbosity = 1;
00079 l1GtMenu->print(std::cout, printVerbosity);
00080 std::cout << std::flush << std::endl;
00081
00082 printVerbosity = 2;
00083 l1GtMenu->print(std::cout, printVerbosity);
00084 std::cout << std::flush << std::endl;
00085
00086
00087
00088
00089
00090
00091 edm::ESHandle< L1GtPrescaleFactors> l1GtPfAlgo;
00092 evSetup.get< L1GtPrescaleFactorsAlgoTrigRcd>().get(l1GtPfAlgo);
00093
00094 int indexPfSet = 0;
00095
00096 std::vector<int> prescaleFactorsAlgoTrig =
00097 (l1GtPfAlgo->gtPrescaleFactors()).at(indexPfSet);
00098
00099
00100
00101 edm::ESHandle< L1GtPrescaleFactors> l1GtPfTech;
00102 evSetup.get< L1GtPrescaleFactorsTechTrigRcd>().get(l1GtPfTech);
00103
00104 std::vector<int> prescaleFactorsTechTrig =
00105 (l1GtPfTech->gtPrescaleFactors()).at(indexPfSet);
00106
00107
00108
00109 edm::ESHandle< L1GtTriggerMask> l1GtTmAlgo;
00110 evSetup.get< L1GtTriggerMaskAlgoTrigRcd>().get(l1GtTmAlgo);
00111
00112 std::vector<unsigned int> triggerMaskAlgoTrig = l1GtTmAlgo->gtTriggerMask();
00113
00114
00115
00116 edm::ESHandle< L1GtTriggerMask> l1GtTmTech;
00117 evSetup.get< L1GtTriggerMaskTechTrigRcd>().get(l1GtTmTech);
00118
00119 std::vector<unsigned int> triggerMaskTechTrig = l1GtTmTech->gtTriggerMask();
00120
00121
00122
00123 edm::ESHandle< L1GtTriggerMask> l1GtTmVetoAlgo;
00124 evSetup.get< L1GtTriggerMaskVetoAlgoTrigRcd>().get(l1GtTmVetoAlgo);
00125
00126 std::vector<unsigned int> triggerMaskVetoAlgoTrig = l1GtTmVetoAlgo->gtTriggerMask();
00127
00128
00129
00130 edm::ESHandle< L1GtTriggerMask> l1GtTmVetoTech;
00131 evSetup.get< L1GtTriggerMaskVetoTechTrigRcd>().get(l1GtTmVetoTech);
00132
00133 std::vector<unsigned int> triggerMaskVetoTechTrig = l1GtTmVetoTech->gtTriggerMask();
00134
00135
00136 int physicsDaqPartition = 0;
00137
00138
00139
00140 typedef std::map<int, const L1GtAlgorithm*>::const_iterator CItBit;
00141
00142
00143 const AlgorithmMap& algorithmMap = l1GtMenu->gtAlgorithmMap();
00144
00145
00146 std::map<int, const L1GtAlgorithm*> algoBitToAlgo;
00147
00148 typedef std::map<std::string, const L1GtAlgorithm*>::const_iterator CItAlgoP;
00149
00150 std::map<std::string, const L1GtAlgorithm*> jetAlgoTrig;
00151 std::map<std::string, const L1GtAlgorithm*> egammaAlgoTrig;
00152 std::map<std::string, const L1GtAlgorithm*> esumAlgoTrig;
00153 std::map<std::string, const L1GtAlgorithm*> muonAlgoTrig;
00154 std::map<std::string, const L1GtAlgorithm*> crossAlgoTrig;
00155 std::map<std::string, const L1GtAlgorithm*> bkgdAlgoTrig;
00156
00157 int algoTrigNumberTotal = 128;
00158
00159 int algoTrigNumber = 0;
00160 int freeAlgoTrigNumber = 0;
00161
00162 int jetAlgoTrigNumber = 0;
00163 int egammaAlgoTrigNumber = 0;
00164 int esumAlgoTrigNumber = 0;
00165 int muonAlgoTrigNumber = 0;
00166 int crossAlgoTrigNumber = 0;
00167 int bkgdAlgoTrigNumber = 0;
00168
00169 for (CItAlgo itAlgo = algorithmMap.begin(); itAlgo != algorithmMap.end(); itAlgo++) {
00170
00171 const int bitNumber = (itAlgo->second).algoBitNumber();
00172 const std::string& algName = (itAlgo->second).algoName();
00173
00174 algoBitToAlgo[bitNumber] = &(itAlgo->second);
00175
00176 algoTrigNumber++;
00177
00178
00179
00180 const ConditionMap& conditionMap =
00181 (l1GtMenu->gtConditionMap()).at((itAlgo->second).algoChipNumber());
00182
00183 const std::vector<L1GtLogicParser::TokenRPN>& rpnVector = (itAlgo->second).algoRpnVector();
00184 const L1GtLogicParser::OperationType condOperand = L1GtLogicParser::OP_OPERAND;
00185
00186 std::list<L1GtObject> listObjects;
00187
00188 for (size_t i = 0; i < rpnVector.size(); ++i) {
00189
00190 if ((rpnVector[i]).operation == condOperand) {
00191
00192 const std::string& cndName = (rpnVector[i]).operand;
00193
00194
00195
00196 bool foundCond = false;
00197
00198 CItCond itCond = conditionMap.find(cndName);
00199 if (itCond != conditionMap.end()) {
00200 foundCond = true;
00201
00202
00203
00204 const std::vector<L1GtObject>& objType =
00205 (itCond->second)->objectType();
00206
00207 for (std::vector<L1GtObject>::const_iterator itObject =
00208 objType.begin(); itObject != objType.end(); itObject++) {
00209 listObjects.push_back(*itObject);
00210
00211 std::cout << (*itObject) << std::endl;
00212 }
00213
00214
00215 if ((itCond->second)->condCategory() == CondExternal) {
00216 listObjects.push_back(GtExternal);
00217 }
00218
00219 }
00220
00221 if (!foundCond) {
00222
00223
00224 throw cms::Exception("FailModule") << "\nCondition "
00225 << cndName << " not found in the condition map"
00226 << " for chip number "
00227 << ((itAlgo->second).algoChipNumber()) << std::endl;
00228 }
00229
00230 }
00231
00232 }
00233
00234
00235 listObjects.sort();
00236 listObjects.unique();
00237
00238
00239
00240 bool jetGroup = false;
00241 bool egammaGroup = false;
00242 bool esumGroup = false;
00243 bool muonGroup = false;
00244 bool crossGroup = false;
00245 bool bkgdGroup = false;
00246
00247 for (std::list<L1GtObject>::const_iterator itObj = listObjects.begin(); itObj != listObjects.end(); ++itObj) {
00248
00249
00250 switch (*itObj) {
00251 case Mu: {
00252 muonGroup = true;
00253 }
00254
00255 break;
00256 case NoIsoEG: {
00257 egammaGroup = true;
00258 }
00259
00260 break;
00261 case IsoEG: {
00262 egammaGroup = true;
00263 }
00264
00265 break;
00266 case CenJet: {
00267 jetGroup = true;
00268 }
00269
00270 break;
00271 case ForJet: {
00272 jetGroup = true;
00273 }
00274
00275 break;
00276 case TauJet: {
00277 jetGroup = true;
00278 }
00279
00280 break;
00281 case ETM: {
00282 esumGroup = true;
00283
00284 }
00285
00286 break;
00287 case ETT: {
00288 esumGroup = true;
00289
00290 }
00291
00292 break;
00293 case HTT: {
00294 esumGroup = true;
00295
00296 }
00297
00298 break;
00299 case HTM: {
00300 esumGroup = true;
00301
00302 }
00303
00304 break;
00305 case JetCounts: {
00306
00307 }
00308
00309 break;
00310 case HfBitCounts: {
00311 bkgdGroup = true;
00312 }
00313
00314 break;
00315 case HfRingEtSums: {
00316 bkgdGroup = true;
00317 }
00318
00319 break;
00320 case GtExternal: {
00321 bkgdGroup = true;
00322 }
00323
00324 break;
00325 case TechTrig:
00326 case Castor:
00327 case BPTX:
00328 default: {
00329
00330
00331 std::cout << "\n Unknown object of type " << *itObj
00332 << std::endl;
00333 }
00334 break;
00335 }
00336
00337 }
00338
00339
00340 int sumGroup = jetGroup + egammaGroup + esumGroup + muonGroup
00341 + crossGroup + bkgdGroup;
00342
00343 if (sumGroup > 1) {
00344 crossAlgoTrig[algName] = &(itAlgo->second);
00345 } else {
00346
00347 if (jetGroup) {
00348 jetAlgoTrig[algName] = &(itAlgo->second);
00349
00350 } else if (egammaGroup) {
00351 egammaAlgoTrig[algName] = &(itAlgo->second);
00352
00353 } else if (esumGroup && (listObjects.size() > 1)) {
00354 crossAlgoTrig[algName] = &(itAlgo->second);
00355
00356 } else if (esumGroup) {
00357 esumAlgoTrig[algName] = &(itAlgo->second);
00358
00359 } else if (muonGroup) {
00360 muonAlgoTrig[algName] = &(itAlgo->second);
00361
00362 } else if (bkgdGroup) {
00363 bkgdAlgoTrig[algName] = &(itAlgo->second);
00364
00365 } else {
00366
00367 }
00368
00369 }
00370
00371 std::cout << algName << " sum: " << sumGroup << " size: " << listObjects.size() << std::endl;
00372
00373 }
00374
00375 freeAlgoTrigNumber = algoTrigNumberTotal - algoTrigNumber;
00376
00377 jetAlgoTrigNumber = jetAlgoTrig.size();
00378 egammaAlgoTrigNumber = egammaAlgoTrig.size();
00379 esumAlgoTrigNumber = esumAlgoTrig.size();
00380 muonAlgoTrigNumber = muonAlgoTrig.size();
00381 crossAlgoTrigNumber = crossAlgoTrig.size();
00382 bkgdAlgoTrigNumber = bkgdAlgoTrig.size();
00383
00384
00385
00386
00387 std::map<int, const L1GtAlgorithm*> techBitToAlgo;
00388 const AlgorithmMap& technicalTriggerMap = l1GtMenu->gtTechnicalTriggerMap();
00389
00390 int techTrigNumberTotal = 64;
00391
00392 int techTrigNumber = 0;
00393 int freeTechTrigNumber = 0;
00394
00395 for (CItAlgo itAlgo = technicalTriggerMap.begin(); itAlgo != technicalTriggerMap.end(); itAlgo++) {
00396
00397 int bitNumber = (itAlgo->second).algoBitNumber();
00398 techBitToAlgo[bitNumber] = &(itAlgo->second);
00399
00400 techTrigNumber++;
00401 }
00402
00403 freeTechTrigNumber = techTrigNumberTotal - techTrigNumber;
00404
00405
00406
00407
00408 std::cout << "\n ********** L1 Trigger Menu - printing ********** \n\n"
00409 << "\n---++ L1 menu identification\n"
00410 << "\n|L1 Trigger Menu Interface: |!" << l1GtMenu->gtTriggerMenuInterface() << " |"
00411 << "\n|L1 Trigger Menu Name: |!" << l1GtMenu->gtTriggerMenuName() << " |"
00412 << "\n|L1 Trigger Menu Implementation: |!" << l1GtMenu->gtTriggerMenuImplementation() << " |"
00413 << "\n|Associated L1 scale DB key: |!" << l1GtMenu->gtScaleDbKey() << " |" << "\n\n"
00414 << std::flush << std::endl;
00415
00416
00417 std::cout << "\n---++ Overview\n" << std::endl;
00418 std::cout << " * Number of algorithm triggers: " << algoTrigNumber << " defined, 128 possible." << std::endl;
00419 std::cout << " * Number of technical triggers: " << techTrigNumber << " defined, 64 possible.<BR><BR>" << std::endl;
00420
00421 std::cout << " * Number of free bits for algorithm triggers: " << freeAlgoTrigNumber << std::endl;
00422 std::cout << " * Number of free bits for technical triggers: " << freeTechTrigNumber << "<BR>" << std::endl;
00423
00424 std::cout << "\nNumber of algorithm triggers per trigger group\n" << std::endl;
00425 std::cout << " | *Trigger group* | *Number of bits used*|"<< std::endl;
00426 std::cout << " | Jet algorithm triggers: | " << jetAlgoTrigNumber << "|"<< std::endl;
00427 std::cout << " | EGamma algorithm triggers: | " << egammaAlgoTrigNumber << "|"<< std::endl;
00428 std::cout << " | Energy sum algorithm triggers: | " << esumAlgoTrigNumber << "|"<< std::endl;
00429 std::cout << " | Muon algorithm triggers: | " << muonAlgoTrigNumber << "|"<< std::endl;
00430 std::cout << " | Cross algorithm triggers: | " << crossAlgoTrigNumber << "|"<< std::endl;
00431 std::cout << " | Background algorithm triggers: | " << bkgdAlgoTrigNumber << "|"<< std::endl;
00432
00433 std::cout << "\n---++ List of algorithm triggers sorted by trigger groups\n" << std::endl;
00434
00435
00436 std::cout << "\n---+++ Jet algorithm triggers\n" << std::endl;
00437 std::cout << "| *AlgoTrig Name* | *AlgoTrig Alias* | *Prescale status* | *Seed for HLT path(s)* | *Expected rate* | *Comments* | " << std::endl;
00438
00439 for (CItAlgoP itAlgo = jetAlgoTrig.begin(); itAlgo != jetAlgoTrig.end(); itAlgo++) {
00440
00441 const std::string& aName = (itAlgo->second)->algoName();
00442 const std::string& aAlias = (itAlgo->second)->algoAlias();
00443
00444 std::string aNameNoU = aName;
00445 boost::erase_all(aNameNoU, "_");
00446
00447 std::cout
00448 << "|" << std::left << aName << " |" << aAlias << " | " << " | " << " | " << ( " | [[#"+aNameNoU ) << "][link]] " << " | "
00449 << std::endl;
00450 }
00451
00452 std::cout << "\nJet algorithm triggers: " << jetAlgoTrigNumber << " bits defined."<< std::endl;
00453
00454
00455
00456 std::cout << "\n---+++ EGamma algorithm triggers\n" << std::endl;
00457 std::cout << "| *AlgoTrig Name* | *AlgoTrig Alias* | *Prescale status* | *Seed for HLT path(s)* | *Expected rate* | *Comments* | " << std::endl;
00458
00459 for (CItAlgoP itAlgo = egammaAlgoTrig.begin(); itAlgo != egammaAlgoTrig.end(); itAlgo++) {
00460
00461 const std::string& aName = (itAlgo->second)->algoName();
00462 const std::string& aAlias = (itAlgo->second)->algoAlias();
00463
00464 std::string aNameNoU = aName;
00465 boost::erase_all(aNameNoU, "_");
00466
00467 std::cout
00468 << "|" << std::left << aName << " |" << aAlias << " | " << " | " << " | " << ( " | [[#"+aNameNoU ) << "][link]] " << " | "
00469 << std::endl;
00470 }
00471
00472 std::cout << "\nEGamma algorithm triggers: " << egammaAlgoTrigNumber << " bits defined."<< std::endl;
00473
00474
00475
00476
00477 std::cout << "\n---+++ Energy sum algorithm triggers\n" << std::endl;
00478 std::cout << "| *AlgoTrig Name* | *AlgoTrig Alias* | *Prescale status* | *Seed for HLT path(s)* | *Expected rate* | *Comments* | " << std::endl;
00479
00480 for (CItAlgoP itAlgo = esumAlgoTrig.begin(); itAlgo != esumAlgoTrig.end(); itAlgo++) {
00481
00482 const std::string& aName = (itAlgo->second)->algoName();
00483 const std::string& aAlias = (itAlgo->second)->algoAlias();
00484
00485 std::string aNameNoU = aName;
00486 boost::erase_all(aNameNoU, "_");
00487
00488 std::cout
00489 << "|" << std::left << aName << " |" << aAlias << " | " << " | " << " | " << ( " | [[#"+aNameNoU ) << "][link]] " << " | "
00490 << std::endl;
00491 }
00492
00493 std::cout << "\nEnergy sum algorithm triggers: " << esumAlgoTrigNumber << " bits defined."<< std::endl;
00494
00495
00496
00497 std::cout << "\n---+++ Muon algorithm triggers\n" << std::endl;
00498 std::cout << "| *AlgoTrig Name* | *AlgoTrig Alias* | *Prescale status* | *Seed for HLT path(s)* | *Expected rate* | *Comments* | " << std::endl;
00499
00500 for (CItAlgoP itAlgo = muonAlgoTrig.begin(); itAlgo != muonAlgoTrig.end(); itAlgo++) {
00501
00502 const std::string& aName = (itAlgo->second)->algoName();
00503 const std::string& aAlias = (itAlgo->second)->algoAlias();
00504
00505 std::string aNameNoU = aName;
00506 boost::erase_all(aNameNoU, "_");
00507
00508 std::cout
00509 << "|" << std::left << aName << " |" << aAlias << " | " << " | " << " | " << ( " | [[#"+aNameNoU ) << "][link]] " << " | "
00510 << std::endl;
00511 }
00512
00513 std::cout << "\nMuon algorithm triggers: " << muonAlgoTrigNumber << " bits defined."<< std::endl;
00514
00515
00516
00517 std::cout << "\n---+++ Cross algorithm triggers\n" << std::endl;
00518 std::cout << "| *AlgoTrig Name* | *AlgoTrig Alias* | *Prescale status* | *Seed for HLT path(s)* | *Expected rate* | *Comments* | " << std::endl;
00519
00520 for (CItAlgoP itAlgo = crossAlgoTrig.begin(); itAlgo != crossAlgoTrig.end(); itAlgo++) {
00521
00522 const std::string& aName = (itAlgo->second)->algoName();
00523 const std::string& aAlias = (itAlgo->second)->algoAlias();
00524
00525 std::string aNameNoU = aName;
00526 boost::erase_all(aNameNoU, "_");
00527
00528 std::cout
00529 << "|" << std::left << aName << " |" << aAlias << " | " << " | " << " | " << ( " | [[#"+aNameNoU ) << "][link]] " << " | "
00530 << std::endl;
00531 }
00532
00533 std::cout << "\nCross algorithm triggers: " << crossAlgoTrigNumber << " bits defined."<< std::endl;
00534
00535
00536
00537 std::cout << "\n---+++ Background algorithm triggers\n" << std::endl;
00538 std::cout << "| *AlgoTrig Name* | *AlgoTrig Alias* | *Prescale status* | *Seed for HLT path(s)* | *Expected rate* | *Comments* | " << std::endl;
00539
00540 for (CItAlgoP itAlgo = bkgdAlgoTrig.begin(); itAlgo != bkgdAlgoTrig.end(); itAlgo++) {
00541
00542 const std::string& aName = (itAlgo->second)->algoName();
00543 const std::string& aAlias = (itAlgo->second)->algoAlias();
00544
00545 std::string aNameNoU = aName;
00546 boost::erase_all(aNameNoU, "_");
00547
00548 std::cout
00549 << "|" << std::left << aName << " |" << aAlias << " | " << " | " << " | " << ( " | [[#"+aNameNoU ) << "][link]] " << " | "
00550 << std::endl;
00551 }
00552
00553 std::cout << "\nBackground algorithm triggers: " << bkgdAlgoTrigNumber << " bits defined."<< std::endl;
00554
00555
00556
00557 std::cout << "\n---+++ Comments\n" << std::endl;
00558
00559
00560
00561 std::cout << "\n---++++ Jet algorithm triggers - comments\n" << std::endl;
00562 std::cout
00563 << "| *Algorithm trigger name* | *Uncorrected energy* | *Typical prescale factor* | *HLT path* | *Requested by* | *POG/PAG group* | *Comments* | "
00564 << std::endl;
00565
00566 for (CItAlgoP itAlgo = jetAlgoTrig.begin(); itAlgo != jetAlgoTrig.end(); itAlgo++) {
00567
00568 const std::string& aName = (itAlgo->second)->algoName();
00569
00570 std::string aNameNoU = aName;
00571 boost::erase_all(aNameNoU, "_");
00572
00573 std::cout << ("#" + aNameNoU) << std::endl;
00574 std::cout << "| " << std::left << aName << " | | | | | | | "
00575 << std::endl;
00576
00577 }
00578
00579
00580
00581 std::cout << "\n---++++ EGamma algorithm triggers - comments\n" << std::endl;
00582 std::cout
00583 << "| *Algorithm trigger name* | *Typical prescale factor* | *HLT path* | *Requested by* | *POG/PAG group* | *Comments* | "
00584 << std::endl;
00585
00586 for (CItAlgoP itAlgo = egammaAlgoTrig.begin(); itAlgo != egammaAlgoTrig.end(); itAlgo++) {
00587
00588 const std::string& aName = (itAlgo->second)->algoName();
00589
00590 std::string aNameNoU = aName;
00591 boost::erase_all(aNameNoU, "_");
00592
00593 std::cout << ("#" + aNameNoU) << std::endl;
00594 std::cout << "| " << std::left << aName << " | | | | | | "
00595 << std::endl;
00596
00597 }
00598
00599
00600
00601 std::cout << "\n---++++ Energy sum algorithm triggers - comments\n" << std::endl;
00602 std::cout
00603 << "| *Algorithm trigger name* | *Typical prescale factor* | *HLT path* | *Requested by* | *POG/PAG group* | *Comments* | "
00604 << std::endl;
00605
00606 for (CItAlgoP itAlgo = esumAlgoTrig.begin(); itAlgo != esumAlgoTrig.end(); itAlgo++) {
00607
00608 const std::string& aName = (itAlgo->second)->algoName();
00609
00610 std::string aNameNoU = aName;
00611 boost::erase_all(aNameNoU, "_");
00612
00613 std::cout << ("#" + aNameNoU) << std::endl;
00614 std::cout << "| " << std::left << aName << " | | | | | | "
00615 << std::endl;
00616
00617 }
00618
00619
00620
00621 std::cout << "\n---++++ Muon algorithm triggers - comments\n" << std::endl;
00622 std::cout
00623 << "| *Algorithm trigger name* | *Typical prescale factor* | *HLT path* | *Requested by* | *POG/PAG group* | *Comments* | "
00624 << std::endl;
00625
00626 for (CItAlgoP itAlgo = muonAlgoTrig.begin(); itAlgo != muonAlgoTrig.end(); itAlgo++) {
00627
00628 const std::string& aName = (itAlgo->second)->algoName();
00629
00630 std::string aNameNoU = aName;
00631 boost::erase_all(aNameNoU, "_");
00632
00633 std::cout << ("#" + aNameNoU) << std::endl;
00634 std::cout << "| " << std::left << aName << " | | | | | | "
00635 << std::endl;
00636
00637 }
00638
00639
00640
00641 std::cout << "\n---++++ Cross algorithm triggers - comments\n" << std::endl;
00642 std::cout
00643 << "| *Algorithm trigger name* | *Typical prescale factor* | *HLT path* | *Requested by* | *POG/PAG group* | *Comments* | "
00644 << std::endl;
00645
00646 for (CItAlgoP itAlgo = crossAlgoTrig.begin(); itAlgo != crossAlgoTrig.end(); itAlgo++) {
00647
00648 const std::string& aName = (itAlgo->second)->algoName();
00649
00650 std::string aNameNoU = aName;
00651 boost::erase_all(aNameNoU, "_");
00652
00653 std::cout << ("#" + aNameNoU) << std::endl;
00654 std::cout << "| " << std::left << aName << " | | | | | | "
00655 << std::endl;
00656
00657 }
00658
00659
00660 std::cout << "\n---++++ Background algorithm triggers - comments\n" << std::endl;
00661 std::cout
00662 << "| *Algorithm trigger name* | *Typical prescale factor* | *HLT path* | *Requested by* | *POG/PAG group* | *Comments* | "
00663 << std::endl;
00664
00665 for (CItAlgoP itAlgo = bkgdAlgoTrig.begin(); itAlgo != bkgdAlgoTrig.end(); itAlgo++) {
00666
00667 const std::string& aName = (itAlgo->second)->algoName();
00668
00669 std::string aNameNoU = aName;
00670 boost::erase_all(aNameNoU, "_");
00671
00672 std::cout << ("#" + aNameNoU) << std::endl;
00673 std::cout << "| " << std::left << aName << " | | | | | | "
00674 << std::endl;
00675
00676 }
00677
00678
00679
00680
00681
00682 std::cout << "\n---++ List of algorithm triggers sorted by bits\n" << std::endl;
00683
00684 std::cout
00685 << "| *Algorithm* | *Alias* | *Bit number* | *Prescale factor* | *Mask* |"
00686 << std::endl;
00687
00688 for (CItBit itBit = algoBitToAlgo.begin(); itBit != algoBitToAlgo.end(); itBit++) {
00689
00690 int bitNumber = itBit->first;
00691 std::string aName = (itBit->second)->algoName();
00692 std::string aAlias = (itBit->second)->algoAlias();
00693
00694 unsigned int triggerMaskAlgo =
00695 (triggerMaskAlgoTrig.at(bitNumber)) & (1 << physicsDaqPartition);
00696
00697 std::cout
00698 << "|" << std::left << aName << " |" << aAlias << " | " << std::right << bitNumber
00699 << "| " << prescaleFactorsAlgoTrig.at(bitNumber)
00700 << "| " << triggerMaskAlgo
00701 << " |"
00702 << std::endl;
00703 }
00704
00705
00706
00707
00708 std::cout << "\n---++ List of technical triggers\n" << std::endl;
00709
00710 std::cout
00711 << "| *Technical trigger* | *Bit number* | *Prescale factor* | *Mask* | *Veto mask* |"
00712 << std::endl;
00713
00714 for (CItBit itBit = techBitToAlgo.begin(); itBit != techBitToAlgo.end(); itBit++) {
00715
00716 int bitNumber = itBit->first;
00717 std::string aName = (itBit->second)->algoName();
00718 std::string aAlias = (itBit->second)->algoAlias();
00719
00720 unsigned int triggerMaskTech =
00721 (triggerMaskTechTrig.at(bitNumber)) & (1 << physicsDaqPartition);
00722 unsigned int triggerMaskVetoTech =
00723 (triggerMaskVetoTechTrig.at(bitNumber)) & (1 << physicsDaqPartition);
00724
00725 std::cout
00726 << "|!" << std::left << aName << " | " << std::right << bitNumber
00727 << "| " << prescaleFactorsTechTrig.at(bitNumber)
00728 << "| " << triggerMaskTech
00729 << "| " << triggerMaskVetoTech
00730 << " |"
00731 << std::endl;
00732 }
00733
00734 std::cout
00735 << "\nNOTE: only the prescale factors from set index zero are printed!"
00736 << std::endl;
00737
00738 }