00001
00017
00018 #include "L1Trigger/GlobalTriggerAnalyzer/interface/L1GtAnalyzer.h"
00019
00020
00021 #include <memory>
00022 #include <iomanip>
00023
00024
00025 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetupFwd.h"
00026 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetup.h"
00027
00028 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutRecord.h"
00029 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerRecord.h"
00030 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerObjectMapRecord.h"
00031
00032 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerObjectMap.h"
00033
00034 #include "DataFormats/L1GlobalTrigger/interface/L1GtTriggerMenuLite.h"
00035
00036 #include "DataFormats/Common/interface/ConditionsInEdm.h"
00037
00038 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTReadoutCollection.h"
00039
00040 #include "L1Trigger/GlobalTrigger/interface/L1GlobalTrigger.h"
00041 #include "L1Trigger/GlobalTrigger/interface/L1GlobalTriggerPSB.h"
00042 #include "L1Trigger/GlobalTrigger/interface/L1GlobalTriggerGTL.h"
00043 #include "L1Trigger/GlobalTrigger/interface/L1GlobalTriggerFDL.h"
00044
00045 #include "FWCore/Framework/interface/ESHandle.h"
00046 #include "FWCore/Framework/interface/LuminosityBlock.h"
00047
00048 #include "CondFormats/L1TObjects/interface/L1GtTriggerMenu.h"
00049 #include "CondFormats/DataRecord/interface/L1GtTriggerMenuRcd.h"
00050
00051 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00052
00053 #include "L1Trigger/GlobalTriggerAnalyzer/interface/L1GtUtils.h"
00054
00055
00056 L1GtAnalyzer::L1GtAnalyzer(const edm::ParameterSet& parSet) :
00057
00058
00059 m_l1GtDaqReadoutRecordInputTag(parSet.getParameter<edm::InputTag>(
00060 "L1GtDaqReadoutRecordInputTag")),
00061
00062
00063 m_l1GtRecordInputTag(parSet.getParameter<edm::InputTag>(
00064 "L1GtRecordInputTag")),
00065
00066
00067 m_l1GtObjectMapTag(parSet.getParameter<edm::InputTag>(
00068 "L1GtObjectMapTag")),
00069
00070
00071 m_l1GmtInputTag(parSet.getParameter<edm::InputTag>(
00072 "L1GmtInputTag")),
00073
00074
00075 m_l1GtTmLInputTag(parSet.getParameter<edm::InputTag> (
00076 "L1GtTmLInputTag")),
00077
00078
00079 m_condInEdmInputTag(parSet.getParameter<edm::InputTag> (
00080 "CondInEdmInputTag")),
00081
00082
00083 m_nameAlgTechTrig(parSet.getParameter<std::string> ("AlgorithmName")),
00084 m_condName(parSet.getParameter<std::string> ("ConditionName")),
00085 m_bitNumber(parSet.getParameter<unsigned int> ("BitNumber")),
00086
00087 m_l1GtUtilsConfiguration(parSet.getParameter<unsigned int> ("L1GtUtilsConfiguration")),
00088 m_l1GtTmLInputTagProv(parSet.getParameter<bool> ("L1GtTmLInputTagProv")),
00089 m_l1GtUtilsConfigureBeginRun(parSet.getParameter<bool> ("L1GtUtilsConfigureBeginRun"))
00090
00091 {
00092 LogDebug("L1GtAnalyzer")
00093 << "\n Input parameters for L1 GT test analyzer"
00094 << "\n L1 GT DAQ product: "
00095 << m_l1GtDaqReadoutRecordInputTag
00096 << "\n L1 GT lite product: "
00097 << m_l1GtRecordInputTag
00098 << "\n L1 GT object map collection: "
00099 << m_l1GtObjectMapTag
00100 << "\n Muon collection from GMT: "
00101 << m_l1GmtInputTag
00102 << "\n L1 trigger menu lite product: "
00103 << m_l1GtTmLInputTag
00104 << "\n Algorithm name or alias, technical trigger name: " << m_nameAlgTechTrig
00105 << "\n Condition, if a physics algorithm is requested: " << m_condName
00106 << "\n Bit number for an algorithm or technical trigger: " << m_bitNumber
00107 << "\n Requested L1 trigger configuration: " << m_l1GtUtilsConfiguration
00108 << "\n Retrieve input tag from provenance for L1 trigger menu lite in the L1GtUtils: "
00109 << m_l1GtTmLInputTagProv
00110 << "\n Configure L1GtUtils in beginRun(...): "
00111 << m_l1GtUtilsConfigureBeginRun
00112 << " \n" << std::endl;
00113
00114 }
00115
00116
00117 L1GtAnalyzer::~L1GtAnalyzer() {
00118
00119
00120
00121 }
00122
00123
00124 void L1GtAnalyzer::beginJob()
00125 {
00126
00127
00128
00129 }
00130
00131 void L1GtAnalyzer::beginRun(const edm::Run& iRun,
00132 const edm::EventSetup& evSetup) {
00133
00134 analyzeConditionsInRunBlock(iRun, evSetup);
00135
00136
00137
00138 if (m_l1GtUtilsConfigureBeginRun) {
00139
00140
00141
00142 bool useL1EventSetup = false;
00143 bool useL1GtTriggerMenuLite = false;
00144
00145 switch (m_l1GtUtilsConfiguration) {
00146 case 0: {
00147 useL1EventSetup = false;
00148 useL1GtTriggerMenuLite = true;
00149
00150 }
00151 break;
00152 case 100000: {
00153 useL1EventSetup = true;
00154 useL1GtTriggerMenuLite = true;
00155
00156 }
00157 break;
00158 case 200000: {
00159 useL1EventSetup = true;
00160 useL1GtTriggerMenuLite = false;
00161
00162 }
00163 break;
00164 default: {
00165
00166 }
00167 break;
00168 }
00169
00170 if (m_l1GtTmLInputTagProv) {
00171
00172 m_l1GtUtils.getL1GtRunCache(iRun, evSetup, useL1EventSetup,
00173 useL1GtTriggerMenuLite);
00174
00175 } else {
00176
00177
00178 m_l1GtUtils.getL1GtRunCache(iRun, evSetup, useL1EventSetup,
00179 useL1GtTriggerMenuLite, m_l1GtTmLInputTag);
00180 }
00181
00182 }
00183
00184 }
00185
00186
00187 void L1GtAnalyzer::beginLuminosityBlock(const edm::LuminosityBlock& iLumi,
00188 const edm::EventSetup& evSetup) {
00189
00190 analyzeConditionsInLumiBlock(iLumi, evSetup);
00191
00192 }
00193
00194
00195
00196
00197
00198
00199 void L1GtAnalyzer::analyzeDecisionReadoutRecord(const edm::Event& iEvent, const edm::EventSetup& evSetup)
00200 {
00201
00202 LogDebug("L1GtAnalyzer")
00203 << "\n**** L1GtAnalyzer::analyzeDecisionReadoutRecord ****\n"
00204 << std::endl;
00205
00206
00207
00208 std::ostringstream myCoutStream;
00209
00210
00211 edm::Handle<L1GlobalTriggerReadoutRecord> gtReadoutRecord;
00212 iEvent.getByLabel(m_l1GtDaqReadoutRecordInputTag, gtReadoutRecord);
00213
00214 if (!gtReadoutRecord.isValid()) {
00215
00216 LogDebug("L1GtAnalyzer") << "\nL1GlobalTriggerReadoutRecord with \n "
00217 << m_l1GtDaqReadoutRecordInputTag
00218 << "\nrequested in configuration, but not found in the event."
00219 << "\nExit the method.\n" << std::endl;
00220
00221 return;
00222 }
00223
00224
00225 bool gtDecision = gtReadoutRecord->decision();
00226 DecisionWord gtDecisionWord = gtReadoutRecord->decisionWord();
00227
00228
00229 edm::LogVerbatim("L1GtAnalyzer")
00230 << "\n GlobalTrigger decision: " << gtDecision << std::endl;
00231
00232
00233 gtReadoutRecord->printGtDecision(myCoutStream);
00234
00235
00236 gtReadoutRecord->printTechnicalTrigger(myCoutStream);
00237
00238 LogDebug("L1GtAnalyzer") << myCoutStream.str() << std::endl;
00239
00240 myCoutStream.str("");
00241 myCoutStream.clear();
00242
00243 }
00244
00245
00246 void L1GtAnalyzer::analyzeDecisionLiteRecord(const edm::Event& iEvent,
00247 const edm::EventSetup& evSetup) {
00248
00249 LogDebug("L1GtAnalyzer")
00250 << "\n**** L1GtAnalyzer::analyzeDecisionLiteRecord ****\n"
00251 << std::endl;
00252
00253 edm::Handle<L1GlobalTriggerRecord> gtRecord;
00254 iEvent.getByLabel(m_l1GtRecordInputTag, gtRecord);
00255
00256 if (!gtRecord.isValid()) {
00257
00258 LogDebug("L1GtAnalyzer") << "\nL1GlobalTriggerRecord with \n "
00259 << m_l1GtRecordInputTag
00260 << "\nrequested in configuration, but not found in the event."
00261 << "\nExit the method.\n" << std::endl;
00262
00263 return;
00264
00265 }
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289 }
00290
00291 void L1GtAnalyzer::analyzeL1GtUtilsCore(const edm::Event& iEvent,
00292 const edm::EventSetup& evSetup) {
00293
00294
00295
00296
00297 std::ostringstream myCoutStream;
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309 int iErrorCode = -1;
00310 int l1ConfCode = -1;
00311
00312 const bool l1Conf = m_l1GtUtils.availableL1Configuration(iErrorCode, l1ConfCode);
00313
00314 myCoutStream << "\nL1 configuration code: \n"
00315 << "\n Legend: "
00316 << "\n 0 - Retrieve L1 trigger configuration from L1GtTriggerMenuLite only"
00317 << "\n 10000 L1GtTriggerMenuLite product is valid"
00318 << "\n 99999 L1GtTriggerMenuLite product not valid. Error."
00319 << "\n"
00320 << "\n 100000 - Fall through: try first L1GtTriggerMenuLite; if not valid,try event setup."
00321 << "\n 110000 L1GtTriggerMenuLite product is valid"
00322 << "\n 120000 L1GtTriggerMenuLite product not valid, event setup valid."
00323 << "\n 199999 L1GtTriggerMenuLite product not valid, event setup not valid. Error."
00324 << "\n"
00325 << "\n 200000 - Retrieve L1 trigger configuration from event setup only."
00326 << "\n 210000 Event setup valid."
00327 << "\n 299999 Event setup not valid. Error."
00328 << "\n"
00329 << "\n 300000 - No L1 trigger configuration requested to be retrieved. Error"
00330 << "\n Must call before using L1GtUtils methods: "
00331 << "\n getL1GtRunCache(const edm::Event& iEvent, const edm::EventSetup& evSetup,"
00332 << "\n const bool useL1EventSetup, const bool useL1GtTriggerMenuLite)"
00333 << "\n"
00334 << std::endl;
00335
00336
00337 if (l1Conf) {
00338 myCoutStream << "\nL1 configuration code:" << l1ConfCode
00339 << "\nValid L1 trigger configuration." << std::endl;
00340
00341 myCoutStream << "\nL1 trigger menu name and implementation:" << "\n"
00342 << m_l1GtUtils.l1TriggerMenu() << "\n"
00343 << m_l1GtUtils.l1TriggerMenuImplementation() << std::endl;
00344
00345 } else {
00346 myCoutStream << "\nL1 configuration code:" << l1ConfCode
00347 << "\nNo valid L1 trigger configuration available."
00348 << "\nSee text above for error code interpretation"
00349 << "\nNo return here, in order to test each method, protected against configuration error."
00350 << std::endl;
00351 }
00352
00353
00354
00355 myCoutStream
00356 << "\n******** Results found with input tags retrieved from provenance ******** \n"
00357 << std::endl;
00358
00359
00360
00361
00362
00363
00364
00365
00366 iErrorCode = -1;
00367
00368 bool decisionBeforeMaskAlgTechTrig = m_l1GtUtils.decisionBeforeMask(iEvent,
00369 m_nameAlgTechTrig, iErrorCode);
00370
00371 bool decisionAfterMaskAlgTechTrig = m_l1GtUtils.decisionAfterMask(iEvent,
00372 m_nameAlgTechTrig, iErrorCode);
00373
00374 bool decisionAlgTechTrig = m_l1GtUtils.decision(iEvent, m_nameAlgTechTrig,
00375 iErrorCode);
00376
00377 int prescaleFactorAlgTechTrig = m_l1GtUtils.prescaleFactor(iEvent,
00378 m_nameAlgTechTrig, iErrorCode);
00379
00380 int triggerMaskAlgTechTrig = m_l1GtUtils.triggerMask(iEvent,
00381 m_nameAlgTechTrig, iErrorCode);
00382
00383 myCoutStream << "\n\nMethods:"
00384 << "\n decisionBeforeMask(iEvent, m_nameAlgTechTrig, iErrorCode)"
00385 << "\n decisionAfterMask(iEvent, m_nameAlgTechTrig, iErrorCode)"
00386 << "\n decision(iEvent, m_nameAlgTechTrig, iErrorCode)"
00387 << "\n prescaleFactor(iEvent, m_nameAlgTechTrig, iErrorCode)"
00388 << "\n triggerMask(iEvent, m_nameAlgTechTrig, iErrorCode)"
00389 << "\n triggerMask(m_nameAlgTechTrig,iErrorCode)"
00390 << "\n\n" << std::endl;
00391
00392
00393 if (iErrorCode == 0) {
00394 myCoutStream << "\nDecision before trigger mask for "
00395 << m_nameAlgTechTrig << ": " << decisionBeforeMaskAlgTechTrig
00396 << std::endl;
00397 myCoutStream << "Decision after trigger mask for " << m_nameAlgTechTrig
00398 << ": " << decisionAfterMaskAlgTechTrig << std::endl;
00399 myCoutStream << "Decision (after trigger mask) for "
00400 << m_nameAlgTechTrig << ": " << decisionAlgTechTrig
00401 << std::endl;
00402
00403 myCoutStream << "Prescale factor for " << m_nameAlgTechTrig
00404 << ": " << prescaleFactorAlgTechTrig
00405 << std::endl;
00406
00407 myCoutStream << "Trigger mask for " << m_nameAlgTechTrig
00408 << ": " << triggerMaskAlgTechTrig
00409 << std::endl;
00410
00411 } else if (iErrorCode == 1) {
00412 myCoutStream << "\n" << m_nameAlgTechTrig
00413 << " does not exist in the L1 menu "
00414 << m_l1GtUtils.l1TriggerMenu() << "\n" << std::endl;
00415
00416 } else {
00417 myCoutStream << "\nError: "
00418 << "\n An error was encountered when retrieving decision, mask and prescale factor for "
00419 << m_nameAlgTechTrig << "\n L1 Menu: "
00420 << m_l1GtUtils.l1TriggerMenu() << "\n Error code: "
00421 << iErrorCode << std::endl;
00422
00423 }
00424
00425
00426
00427 iErrorCode = -1;
00428 triggerMaskAlgTechTrig = m_l1GtUtils.triggerMask(m_nameAlgTechTrig,
00429 iErrorCode);
00430
00431 if (iErrorCode == 0) {
00432 myCoutStream << "\nTrigger mask for " << m_nameAlgTechTrig
00433 << "(faster method): " << triggerMaskAlgTechTrig
00434 << std::endl;
00435
00436 } else if (iErrorCode == 1) {
00437 myCoutStream << "\n" << m_nameAlgTechTrig
00438 << " does not exist in the L1 menu "
00439 << m_l1GtUtils.l1TriggerMenu() << "\n" << std::endl;
00440
00441 } else {
00442 myCoutStream << "\nError: "
00443 << "\n An error was encountered when fast retrieving trigger mask for "
00444 << m_nameAlgTechTrig << "\n L1 Menu: "
00445 << m_l1GtUtils.l1TriggerMenu() << "\n Error code: "
00446 << iErrorCode << std::endl;
00447
00448 }
00449
00450
00451
00452
00453
00454
00455 L1GtUtils::TriggerCategory trigCategory = L1GtUtils::AlgorithmTrigger;
00456
00457 myCoutStream << "\nMethods:"
00458 << "\n prescaleFactorSetIndex(iEvent, trigCategory, iErrorCode)"
00459 << "\n prescaleFactorSet(iEvent, trigCategory,iErrorCode)\n"
00460 << std::endl;
00461
00462 iErrorCode = -1;
00463 const int pfSetIndexAlgorithmTrigger = m_l1GtUtils.prescaleFactorSetIndex(
00464 iEvent, trigCategory, iErrorCode);
00465
00466 if (iErrorCode == 0) {
00467 myCoutStream
00468 << "\nAlgorithm triggers: index for prescale factor set = "
00469 << pfSetIndexAlgorithmTrigger << "\nfor run " << iEvent.run()
00470 << ", luminosity block " << iEvent.luminosityBlock()
00471 << ", with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
00472 << std::endl;
00473
00474
00475 } else {
00476 myCoutStream
00477 << "\nError encountered when retrieving the prescale factor set index"
00478 << "\n for algorithm triggers, for run " << iEvent.run()
00479 << ", luminosity block " << iEvent.luminosityBlock()
00480 << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
00481 << "\n Error code: " << iErrorCode << "\n" << std::endl;
00482 }
00483
00484 iErrorCode = -1;
00485 const std::vector<int>& pfSetAlgorithmTrigger =
00486 m_l1GtUtils.prescaleFactorSet(iEvent, trigCategory, iErrorCode);
00487
00488 if (iErrorCode == 0) {
00489 myCoutStream << "\nAlgorithm triggers: prescale factor set index = "
00490 << pfSetIndexAlgorithmTrigger << "\nfor run " << iEvent.run()
00491 << ", luminosity block " << iEvent.luminosityBlock()
00492 << ", with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
00493 << std::endl;
00494
00495 int iBit = -1;
00496 for (std::vector<int>::const_iterator cItBit =
00497 pfSetAlgorithmTrigger.begin(); cItBit
00498 != pfSetAlgorithmTrigger.end(); ++cItBit) {
00499
00500 iBit++;
00501 myCoutStream << "Bit number " << std::right << std::setw(4) << iBit
00502 << ": prescale factor = " << (*cItBit) << std::endl;
00503
00504 }
00505
00506 } else {
00507 myCoutStream
00508 << "\nError encountered when retrieving the prescale factor set "
00509 << "\n for algorithm triggers, for run " << iEvent.run()
00510 << ", luminosity block " << iEvent.luminosityBlock()
00511 << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
00512 << "\n Error code: " << iErrorCode << "\n" << std::endl;
00513 }
00514
00515
00516
00517 myCoutStream << "\nMethod:"
00518 << "\n triggerMaskSet(trigCategory, iErrorCode)"
00519 << std::endl;
00520
00521 iErrorCode = -1;
00522 const std::vector<unsigned int>& tmSetAlgorithmTrigger =
00523 m_l1GtUtils.triggerMaskSet(trigCategory, iErrorCode);
00524
00525 if (iErrorCode == 0) {
00526 myCoutStream << "\nAlgorithm triggers: trigger mask set for run "
00527 << iEvent.run() << ", luminosity block "
00528 << iEvent.luminosityBlock() << ", with L1 menu \n "
00529 << m_l1GtUtils.l1TriggerMenu() << "\n" << std::endl;
00530
00531 int iBit = -1;
00532 for (std::vector<unsigned int>::const_iterator cItBit =
00533 tmSetAlgorithmTrigger.begin(); cItBit
00534 != tmSetAlgorithmTrigger.end(); ++cItBit) {
00535
00536 iBit++;
00537 myCoutStream << "Bit number " << std::right << std::setw(4) << iBit
00538 << ": trigger mask = " << (*cItBit) << std::endl;
00539
00540 }
00541
00542 } else {
00543 myCoutStream
00544 << "\nError encountered when retrieving the trigger mask set "
00545 << "\n for algorithm triggers, for run " << iEvent.run()
00546 << ", luminosity block " << iEvent.luminosityBlock()
00547 << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
00548 << "\n Error code: " << iErrorCode << "\n" << std::endl;
00549 }
00550
00551
00552
00553
00554
00555
00556
00557 trigCategory = L1GtUtils::TechnicalTrigger;
00558
00559 myCoutStream << "\nMethods:"
00560 << "\n prescaleFactorSetIndex(iEvent, trigCategory, iErrorCode)"
00561 << "\n prescaleFactorSet(iEvent, trigCategory,iErrorCode)\n"
00562 << std::endl;
00563
00564 iErrorCode = -1;
00565 const int pfSetIndexTechnicalTrigger = m_l1GtUtils.prescaleFactorSetIndex(
00566 iEvent, trigCategory, iErrorCode);
00567
00568 if (iErrorCode == 0) {
00569 myCoutStream
00570 << "\nTechnical triggers: index for prescale factor set = "
00571 << pfSetIndexTechnicalTrigger << "\nfor run " << iEvent.run()
00572 << ", luminosity block " << iEvent.luminosityBlock()
00573 << ", with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
00574 << "\nMethod: prescaleFactorSetIndex(iEvent, trigCategory, iErrorCode)\n"
00575 << std::endl;
00576
00577 } else {
00578 myCoutStream
00579 << "\nError encountered when retrieving the prescale factor set index"
00580 << "\n for technical triggers, for run " << iEvent.run()
00581 << ", luminosity block " << iEvent.luminosityBlock()
00582 << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
00583 << "\n Error code: " << iErrorCode << "\n" << std::endl;
00584 }
00585
00586 iErrorCode = -1;
00587 const std::vector<int>& pfSetTechnicalTrigger =
00588 m_l1GtUtils.prescaleFactorSet(iEvent, trigCategory, iErrorCode);
00589
00590 if (iErrorCode == 0) {
00591 myCoutStream << "\nTechnical triggers: prescale factor set index = "
00592 << pfSetIndexTechnicalTrigger << "\nfor run " << iEvent.run()
00593 << ", luminosity block " << iEvent.luminosityBlock()
00594 << ", with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
00595 << "\nMethod: prescaleFactorSet(iEvent, trigCategory,iErrorCode)\n"
00596 << std::endl;
00597
00598 int iBit = -1;
00599 for (std::vector<int>::const_iterator cItBit =
00600 pfSetTechnicalTrigger.begin(); cItBit
00601 != pfSetTechnicalTrigger.end(); ++cItBit) {
00602
00603 iBit++;
00604 myCoutStream << "Bit number " << std::right << std::setw(4) << iBit
00605 << ": prescale factor = " << (*cItBit) << std::endl;
00606
00607 }
00608
00609 } else {
00610 myCoutStream
00611 << "\nError encountered when retrieving the prescale factor set "
00612 << "\n for technical triggers, for run " << iEvent.run()
00613 << ", luminosity block " << iEvent.luminosityBlock()
00614 << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
00615 << "\n Error code: " << iErrorCode << "\n" << std::endl;
00616 }
00617
00618
00619
00620 myCoutStream << "\nMethod:"
00621 << "\n triggerMaskSet(trigCategory, iErrorCode)"
00622 << std::endl;
00623
00624 iErrorCode = -1;
00625 const std::vector<unsigned int>& tmSetTechnicalTrigger =
00626 m_l1GtUtils.triggerMaskSet(trigCategory, iErrorCode);
00627
00628 if (iErrorCode == 0) {
00629 myCoutStream << "\nTechnical triggers: trigger mask set for run "
00630 << iEvent.run() << ", luminosity block "
00631 << iEvent.luminosityBlock() << ", with L1 menu \n "
00632 << m_l1GtUtils.l1TriggerMenu() << "\n" << std::endl;
00633
00634 int iBit = -1;
00635 for (std::vector<unsigned int>::const_iterator cItBit =
00636 tmSetTechnicalTrigger.begin(); cItBit
00637 != tmSetTechnicalTrigger.end(); ++cItBit) {
00638
00639 iBit++;
00640 myCoutStream << "Bit number " << std::right << std::setw(4) << iBit
00641 << ": trigger mask = " << (*cItBit) << std::endl;
00642
00643 }
00644
00645 } else {
00646 myCoutStream
00647 << "\nError encountered when retrieving the trigger mask set "
00648 << "\n for technical triggers, for run " << iEvent.run()
00649 << ", luminosity block " << iEvent.luminosityBlock()
00650 << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
00651 << "\n Error code: " << iErrorCode << "\n" << std::endl;
00652 }
00653
00654
00655
00656
00657
00658
00659
00660
00661
00662 myCoutStream
00663 << "\n******** Results found with input tags provided in the configuration file ******** \n"
00664 << "\n L1GlobalTriggerRecord: " << m_l1GtRecordInputTag
00665 << "\n L1GlobalTriggerReadoutRecord: "
00666 << m_l1GtDaqReadoutRecordInputTag << std::endl;
00667
00668
00669
00670
00671
00672 iErrorCode = -1;
00673
00674 bool decisionBeforeMaskAlgTechTrigITag = m_l1GtUtils.decisionBeforeMask(iEvent,
00675 m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag,
00676 m_nameAlgTechTrig, iErrorCode);
00677
00678 bool decisionAfterMaskAlgTechTrigITag = m_l1GtUtils.decisionAfterMask(iEvent,
00679 m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag,
00680 m_nameAlgTechTrig, iErrorCode);
00681
00682 bool decisionAlgTechTrigITag = m_l1GtUtils.decision(iEvent,
00683 m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag,
00684 m_nameAlgTechTrig, iErrorCode);
00685
00686 int prescaleFactorAlgTechTrigITag = m_l1GtUtils.prescaleFactor(iEvent,
00687 m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag,
00688 m_nameAlgTechTrig, iErrorCode);
00689
00690 int triggerMaskAlgTechTrigITag = m_l1GtUtils.triggerMask(iEvent,
00691 m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag,
00692 m_nameAlgTechTrig, iErrorCode);
00693
00694 myCoutStream << "\n\nMethods:"
00695 << "\n decisionBeforeMask(iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag, m_nameAlgTechTrig, iErrorCode)"
00696 << "\n decisionAfterMask(iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag, m_nameAlgTechTrig, iErrorCode)"
00697 << "\n decision(iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag, m_nameAlgTechTrig, iErrorCode)"
00698 << "\n prescaleFactor(iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag, m_nameAlgTechTrig, iErrorCode)"
00699 << "\n triggerMask(iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag, m_nameAlgTechTrig, iErrorCode)"
00700 << "\n\n"
00701 << std::endl;
00702
00703
00704 if (iErrorCode == 0) {
00705 myCoutStream << "\nDecision before trigger mask for "
00706 << m_nameAlgTechTrig << ": " << decisionBeforeMaskAlgTechTrigITag
00707 << std::endl;
00708 myCoutStream << "Decision after trigger mask for " << m_nameAlgTechTrig
00709 << ": " << decisionAfterMaskAlgTechTrigITag << std::endl;
00710 myCoutStream << "Decision (after trigger mask) for "
00711 << m_nameAlgTechTrig << ": " << decisionAlgTechTrigITag
00712 << std::endl;
00713
00714 myCoutStream << "Prescale factor for " << m_nameAlgTechTrig
00715 << ": " << prescaleFactorAlgTechTrigITag
00716 << std::endl;
00717
00718 myCoutStream << "Trigger mask for " << m_nameAlgTechTrig
00719 << ": " << triggerMaskAlgTechTrigITag
00720 << std::endl;
00721
00722 } else if (iErrorCode == 1) {
00723 myCoutStream << "\n" << m_nameAlgTechTrig
00724 << " does not exist in the L1 menu "
00725 << m_l1GtUtils.l1TriggerMenu() << "\n" << std::endl;
00726
00727 } else {
00728 myCoutStream << "\nError: "
00729 << "\n An error was encountered when retrieving decision, mask and prescale factor for "
00730 << m_nameAlgTechTrig << "\n L1 Menu: "
00731 << m_l1GtUtils.l1TriggerMenu() << "\n Error code: "
00732 << iErrorCode << std::endl;
00733
00734 }
00735
00736
00737
00738
00739
00740
00741
00742 trigCategory = L1GtUtils::AlgorithmTrigger;
00743
00744 myCoutStream << "\nMethods:"
00745 << "\n prescaleFactorSetIndex(iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag, trigCategory, iErrorCode)"
00746 << "\n prescaleFactorSet(iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag, trigCategory,iErrorCode)\n"
00747 << std::endl;
00748
00749 iErrorCode = -1;
00750 const int pfSetIndexAlgorithmTriggerITag = m_l1GtUtils.prescaleFactorSetIndex(
00751 iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag,
00752 trigCategory, iErrorCode);
00753
00754 if (iErrorCode == 0) {
00755 myCoutStream
00756 << "\nAlgorithm triggers: index for prescale factor set = "
00757 << pfSetIndexAlgorithmTriggerITag << "\nfor run " << iEvent.run()
00758 << ", luminosity block " << iEvent.luminosityBlock()
00759 << ", with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
00760 << std::endl;
00761
00762
00763 } else {
00764 myCoutStream
00765 << "\nError encountered when retrieving the prescale factor set index"
00766 << "\n for algorithm triggers, for run " << iEvent.run()
00767 << ", luminosity block " << iEvent.luminosityBlock()
00768 << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
00769 << "\n Error code: " << iErrorCode << "\n" << std::endl;
00770 }
00771
00772 iErrorCode = -1;
00773 const std::vector<int>& pfSetAlgorithmTriggerITag =
00774 m_l1GtUtils.prescaleFactorSet(iEvent, m_l1GtRecordInputTag,
00775 m_l1GtDaqReadoutRecordInputTag, trigCategory, iErrorCode);
00776
00777 if (iErrorCode == 0) {
00778 myCoutStream << "\nAlgorithm triggers: prescale factor set index = "
00779 << pfSetIndexAlgorithmTriggerITag << "\nfor run " << iEvent.run()
00780 << ", luminosity block " << iEvent.luminosityBlock()
00781 << ", with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
00782 << std::endl;
00783
00784 int iBit = -1;
00785 for (std::vector<int>::const_iterator cItBit =
00786 pfSetAlgorithmTriggerITag.begin(); cItBit
00787 != pfSetAlgorithmTriggerITag.end(); ++cItBit) {
00788
00789 iBit++;
00790 myCoutStream << "Bit number " << std::right << std::setw(4) << iBit
00791 << ": prescale factor = " << (*cItBit) << std::endl;
00792
00793 }
00794
00795 } else {
00796 myCoutStream
00797 << "\nError encountered when retrieving the prescale factor set "
00798 << "\n for algorithm triggers, for run " << iEvent.run()
00799 << ", luminosity block " << iEvent.luminosityBlock()
00800 << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
00801 << "\n Error code: " << iErrorCode << "\n" << std::endl;
00802 }
00803
00804
00805
00806
00807
00808
00809
00810
00811
00812 trigCategory = L1GtUtils::TechnicalTrigger;
00813
00814 myCoutStream << "\nMethods:"
00815 << "\n prescaleFactorSetIndex(iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag, trigCategory, iErrorCode)"
00816 << "\n prescaleFactorSet(iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag, trigCategory,iErrorCode)\n"
00817 << std::endl;
00818
00819 iErrorCode = -1;
00820 const int pfSetIndexTechnicalTriggerITag = m_l1GtUtils.prescaleFactorSetIndex(
00821 iEvent, m_l1GtRecordInputTag, m_l1GtDaqReadoutRecordInputTag,
00822 trigCategory, iErrorCode);
00823
00824 if (iErrorCode == 0) {
00825 myCoutStream
00826 << "\nTechnical triggers: index for prescale factor set = "
00827 << pfSetIndexTechnicalTriggerITag << "\nfor run " << iEvent.run()
00828 << ", luminosity block " << iEvent.luminosityBlock()
00829 << ", with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
00830 << std::endl;
00831
00832 } else {
00833 myCoutStream
00834 << "\nError encountered when retrieving the prescale factor set index"
00835 << "\n for technical triggers, for run " << iEvent.run()
00836 << ", luminosity block " << iEvent.luminosityBlock()
00837 << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
00838 << "\n Error code: " << iErrorCode << "\n" << std::endl;
00839 }
00840
00841 iErrorCode = -1;
00842 const std::vector<int>& pfSetTechnicalTriggerITag =
00843 m_l1GtUtils.prescaleFactorSet(iEvent, m_l1GtRecordInputTag,
00844 m_l1GtDaqReadoutRecordInputTag, trigCategory, iErrorCode);
00845
00846 if (iErrorCode == 0) {
00847 myCoutStream << "\nTechnical triggers: prescale factor set index = "
00848 << pfSetIndexTechnicalTriggerITag << "\nfor run " << iEvent.run()
00849 << ", luminosity block " << iEvent.luminosityBlock()
00850 << ", with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
00851 << std::endl;
00852
00853 int iBit = -1;
00854 for (std::vector<int>::const_iterator cItBit =
00855 pfSetTechnicalTriggerITag.begin(); cItBit
00856 != pfSetTechnicalTriggerITag.end(); ++cItBit) {
00857
00858 iBit++;
00859 myCoutStream << "Bit number " << std::right << std::setw(4) << iBit
00860 << ": prescale factor = " << (*cItBit) << std::endl;
00861
00862 }
00863
00864 } else {
00865 myCoutStream
00866 << "\nError encountered when retrieving the prescale factor set "
00867 << "\n for technical triggers, for run " << iEvent.run()
00868 << ", luminosity block " << iEvent.luminosityBlock()
00869 << " with L1 menu \n " << m_l1GtUtils.l1TriggerMenu()
00870 << "\n Error code: " << iErrorCode << "\n" << std::endl;
00871 }
00872
00873
00874
00875
00876
00877
00878
00879 LogDebug("L1GtAnalyzer") << myCoutStream.str() << std::endl;
00880
00881 myCoutStream.str("");
00882 myCoutStream.clear();
00883
00884 }
00885
00886 void L1GtAnalyzer::analyzeL1GtUtilsMenuLite(const edm::Event& iEvent,
00887 const edm::EventSetup& evSetup) {
00888
00889 LogDebug("L1GtAnalyzer")
00890 << "\n**** L1GtAnalyzer::analyzeL1GtUtilsMenuLite ****\n"
00891 << std::endl;
00892
00893
00894
00895
00896
00897
00898 bool useL1EventSetup = false;
00899 bool useL1GtTriggerMenuLite = true;
00900
00901 if (m_l1GtTmLInputTagProv) {
00902
00903
00904 m_l1GtUtils.getL1GtRunCache(iEvent, evSetup, useL1EventSetup,
00905 useL1GtTriggerMenuLite);
00906
00907 } else {
00908
00909
00910 m_l1GtUtils.getL1GtRunCache(iEvent, evSetup, useL1EventSetup,
00911 useL1GtTriggerMenuLite, m_l1GtTmLInputTag);
00912 }
00913
00914 analyzeL1GtUtilsCore(iEvent, evSetup);
00915
00916 }
00917
00918 void L1GtAnalyzer::analyzeL1GtUtilsEventSetup(const edm::Event& iEvent,
00919 const edm::EventSetup& evSetup) {
00920
00921 LogDebug("L1GtAnalyzer")
00922 << "\n**** L1GtAnalyzer::analyzeL1GtUtilsEventSetup ****\n"
00923 << std::endl;
00924
00925
00926
00927
00928
00929
00930 bool useL1EventSetup = true;
00931 bool useL1GtTriggerMenuLite = false;
00932
00933 m_l1GtUtils.getL1GtRunCache(iEvent, evSetup, useL1EventSetup,
00934 useL1GtTriggerMenuLite);
00935
00936 analyzeL1GtUtilsCore(iEvent, evSetup);
00937
00938 }
00939
00940 void L1GtAnalyzer::analyzeL1GtUtils(const edm::Event& iEvent,
00941 const edm::EventSetup& evSetup) {
00942
00943 LogDebug("L1GtAnalyzer")
00944 << "\n**** L1GtAnalyzer::analyzeL1GtUtils: fall-through case ****\n"
00945 << std::endl;
00946
00947
00948
00949
00950
00951
00952 bool useL1EventSetup = true;
00953 bool useL1GtTriggerMenuLite = true;
00954
00955 if (m_l1GtTmLInputTagProv) {
00956
00957
00958 m_l1GtUtils.getL1GtRunCache(iEvent, evSetup, useL1EventSetup,
00959 useL1GtTriggerMenuLite);
00960
00961 } else {
00962
00963
00964 m_l1GtUtils.getL1GtRunCache(iEvent, evSetup, useL1EventSetup,
00965 useL1GtTriggerMenuLite, m_l1GtTmLInputTag);
00966
00967 }
00968
00969 analyzeL1GtUtilsCore(iEvent, evSetup);
00970
00971 }
00972
00973
00974 void L1GtAnalyzer::analyzeObjectMap(const edm::Event& iEvent,
00975 const edm::EventSetup& evSetup) {
00976
00977 LogDebug("L1GtAnalyzer")
00978 << "\n**** L1GtAnalyzer::analyzeObjectMap object map product ****\n"
00979 << std::endl;
00980
00981
00982
00983 std::ostringstream myCoutStream;
00984
00985
00986
00987 edm::Handle<L1GlobalTriggerObjectMapRecord> gtObjectMapRecord;
00988 iEvent.getByLabel(m_l1GtObjectMapTag, gtObjectMapRecord);
00989
00990 if (!gtObjectMapRecord.isValid()) {
00991 LogDebug("L1GtAnalyzer")
00992 << "\nWarning: L1GlobalTriggerObjectMapRecord with input tag "
00993 << m_l1GtObjectMapTag
00994 << "\nrequested in configuration, but not found in the event."
00995 << "\nExit the method.\n" << std::endl;
00996
00997 return;
00998 }
00999
01000
01001 const std::vector<L1GlobalTriggerObjectMap>& objMapVec =
01002 gtObjectMapRecord->gtObjectMap();
01003
01004
01005 for (std::vector<L1GlobalTriggerObjectMap>::const_iterator it =
01006 objMapVec.begin(); it != objMapVec.end(); ++it) {
01007
01008 (*it).print(myCoutStream);
01009 }
01010
01011
01012 const CombinationsInCond* comb = gtObjectMapRecord->getCombinationsInCond(
01013 m_nameAlgTechTrig, m_condName);
01014
01015
01016 if (comb != 0) {
01017 myCoutStream << "\n Number of combinations passing ("
01018 << m_nameAlgTechTrig << ", " << m_condName << "): "
01019 << comb->size() << std::endl;
01020 } else {
01021 myCoutStream << "\n No combination passes (" << m_nameAlgTechTrig
01022 << ", " << m_condName << ") " << std::endl;
01023
01024 }
01025
01026
01027 const bool result = gtObjectMapRecord->getConditionResult(
01028 m_nameAlgTechTrig, m_condName);
01029
01030 myCoutStream << "\n Result for condition " << m_condName
01031 << " in algorithm " << m_nameAlgTechTrig << ": " << result
01032 << std::endl;
01033
01034
01035 LogDebug("L1GtAnalyzer")
01036 << "Test gtObjectMapRecord in L1GlobalTrigger \n\n"
01037 << myCoutStream.str() << "\n\n" << std::endl;
01038 myCoutStream.str("");
01039 myCoutStream.clear();
01040
01041 }
01042
01043
01044 void L1GtAnalyzer::analyzeL1GtTriggerMenuLite(const edm::Event& iEvent,
01045 const edm::EventSetup& evSetup) {
01046
01047 LogDebug("L1GtAnalyzer")
01048 << "\n**** L1GtAnalyzer::analyzeL1GtTriggerMenuLite ****\n"
01049 << std::endl;
01050
01051
01052
01053 std::ostringstream myCoutStream;
01054
01055
01056 const edm::Run& iRun = iEvent.getRun();
01057
01058
01059
01060 edm::Handle<L1GtTriggerMenuLite> triggerMenuLite;
01061 iRun.getByLabel(m_l1GtTmLInputTag, triggerMenuLite);
01062
01063 if (!triggerMenuLite.isValid()) {
01064
01065 LogDebug("L1GtAnalyzer") << "\nL1GtTriggerMenuLite with \n "
01066 << m_l1GtTmLInputTag
01067 << "\nrequested in configuration, but not found in the event."
01068 << "\nExit the method.\n" << std::endl;
01069
01070 return;
01071 }
01072
01073
01074 myCoutStream << (*triggerMenuLite);
01075
01076
01077
01078 const std::string& triggerMenuInterface =
01079 triggerMenuLite->gtTriggerMenuInterface();
01080 const std::string& triggerMenuName = triggerMenuLite->gtTriggerMenuName();
01081 const std::string& triggerMenuImplementation =
01082 triggerMenuLite->gtTriggerMenuImplementation();
01083 const std::string& scaleDbKey = triggerMenuLite->gtScaleDbKey();
01084
01085 const L1GtTriggerMenuLite::L1TriggerMap& algorithmMap = triggerMenuLite->gtAlgorithmMap();
01086 const L1GtTriggerMenuLite::L1TriggerMap& algorithmAliasMap =
01087 triggerMenuLite->gtAlgorithmAliasMap();
01088 const L1GtTriggerMenuLite::L1TriggerMap& technicalTriggerMap =
01089 triggerMenuLite->gtTechnicalTriggerMap();
01090
01091 const std::vector<unsigned int>& triggerMaskAlgoTrig =
01092 triggerMenuLite->gtTriggerMaskAlgoTrig();
01093 const std::vector<unsigned int>& triggerMaskTechTrig =
01094 triggerMenuLite->gtTriggerMaskTechTrig();
01095
01096 const std::vector<std::vector<int> >& prescaleFactorsAlgoTrig =
01097 triggerMenuLite->gtPrescaleFactorsAlgoTrig();
01098 const std::vector<std::vector<int> >& prescaleFactorsTechTrig =
01099 triggerMenuLite->gtPrescaleFactorsTechTrig();
01100
01101
01102
01103 size_t nrDefinedAlgo = algorithmMap.size();
01104 size_t nrDefinedTech = technicalTriggerMap.size();
01105
01106
01107
01108 myCoutStream << "\n ********** L1 Trigger Menu - printing ********** \n"
01109 << "\nL1 Trigger Menu Interface: " << triggerMenuInterface
01110 << "\nL1 Trigger Menu Name: " << triggerMenuName
01111 << "\nL1 Trigger Menu Implementation: " << triggerMenuImplementation
01112 << "\nAssociated Scale DB Key: " << scaleDbKey << "\n\n"
01113 << "\nL1 Physics Algorithms: " << nrDefinedAlgo << " algorithms defined." << "\n\n"
01114 << "Bit Number "
01115 << std::right << std::setw(35) << "Algorithm Name" << " "
01116 << std::right << std::setw(35) << "Algorithm Alias" << " "
01117 << std::right << std::setw(12) << "Trigger Mask";
01118 for (unsigned iSet = 0; iSet < prescaleFactorsAlgoTrig.size(); iSet++) {
01119 myCoutStream << std::right << std::setw(10) << "PF Set "
01120 << std::right << std::setw(2) << iSet;
01121 }
01122
01123 myCoutStream << std::endl;
01124
01125
01126 for (L1GtTriggerMenuLite::CItL1Trig itTrig = algorithmMap.begin(); itTrig
01127 != algorithmMap.end(); itTrig++) {
01128
01129 const unsigned int bitNumber = itTrig->first;
01130 const std::string& aName = itTrig->second;
01131
01132 std::string aAlias;
01133 L1GtTriggerMenuLite::CItL1Trig itAlias = algorithmAliasMap.find(bitNumber);
01134 if (itAlias != algorithmAliasMap.end()) {
01135 aAlias = itAlias->second;
01136 }
01137
01138 myCoutStream << std::setw(6) << bitNumber << " "
01139 << std::right << std::setw(35) << aName << " "
01140 << std::right << std::setw(35) << aAlias << " "
01141 << std::right << std::setw(12) << triggerMaskAlgoTrig[bitNumber];
01142 for (unsigned iSet = 0; iSet < prescaleFactorsAlgoTrig.size(); iSet++) {
01143 myCoutStream << std::right << std::setw(12) << prescaleFactorsAlgoTrig[iSet][bitNumber];
01144 }
01145
01146 myCoutStream << std::endl;
01147 }
01148
01149 myCoutStream << "\nL1 Technical Triggers: " << nrDefinedTech
01150 << " technical triggers defined." << "\n\n" << std::endl;
01151 if (nrDefinedTech) {
01152 myCoutStream
01153 << std::right << std::setw(6) << "Bit Number "
01154 << std::right << std::setw(45) << " Technical trigger name " << " "
01155 << std::right << std::setw(12) << "Trigger Mask";
01156 for (unsigned iSet = 0; iSet < prescaleFactorsTechTrig.size(); iSet++) {
01157 myCoutStream << std::right << std::setw(10) << "PF Set "
01158 << std::right << std::setw(2) << iSet;
01159 }
01160
01161 myCoutStream << std::endl;
01162 }
01163
01164 for (L1GtTriggerMenuLite::CItL1Trig itTrig = technicalTriggerMap.begin(); itTrig
01165 != technicalTriggerMap.end(); itTrig++) {
01166
01167 unsigned int bitNumber = itTrig->first;
01168 std::string aName = itTrig->second;
01169
01170 myCoutStream << std::setw(6) << bitNumber << " "
01171 << std::right << std::setw(45) << aName
01172 << std::right << std::setw(12) << triggerMaskTechTrig[bitNumber];
01173 for (unsigned iSet = 0; iSet < prescaleFactorsTechTrig.size(); iSet++) {
01174 myCoutStream << std::right << std::setw(12) << prescaleFactorsTechTrig[iSet][bitNumber];
01175 }
01176
01177 myCoutStream << std::endl;
01178
01179 }
01180
01181
01182
01183 int errorCode = -1;
01184 const std::string* algorithmAlias = triggerMenuLite->gtAlgorithmAlias(
01185 m_bitNumber, errorCode);
01186 if (errorCode) {
01187 myCoutStream
01188 << "\nError code retrieving alias for algorithm with bit number "
01189 << m_bitNumber << ": " << errorCode << std::endl;
01190 } else {
01191 myCoutStream << "\nAlias for algorithm with bit number " << m_bitNumber
01192 << ": " << (*algorithmAlias) << std::endl;
01193 }
01194
01195 errorCode = -1;
01196 const std::string* algorithmName = triggerMenuLite->gtAlgorithmName(
01197 m_bitNumber, errorCode);
01198 if (errorCode) {
01199 myCoutStream
01200 << "\nError code retrieving name for algorithm with bit number "
01201 << m_bitNumber << ": " << errorCode << std::endl;
01202 } else {
01203 myCoutStream << "\nName for algorithm with bit number " << m_bitNumber
01204 << ": " << (*algorithmName) << std::endl;
01205 }
01206
01207 errorCode = -1;
01208 const std::string* techTrigName = triggerMenuLite->gtTechTrigName(
01209 m_bitNumber, errorCode);
01210 if (errorCode) {
01211 myCoutStream
01212 << "\nError code retrieving name for technical trigger with bit number "
01213 << m_bitNumber << ": " << errorCode << std::endl;
01214 } else {
01215 myCoutStream << "\nName for technical trigger with bit number "
01216 << m_bitNumber << ": " << (*techTrigName) << std::endl;
01217 }
01218
01219 errorCode = -1;
01220 const unsigned int bitNumber = triggerMenuLite->gtBitNumber(
01221 m_nameAlgTechTrig, errorCode);
01222 if (errorCode) {
01223 myCoutStream
01224 << "\nError code retrieving bit number for algorithm/technical trigger "
01225 << m_nameAlgTechTrig << ": " << errorCode << std::endl;
01226 } else {
01227 myCoutStream << "\nBit number for algorithm/technical trigger "
01228 << m_nameAlgTechTrig << ": " << bitNumber << std::endl;
01229 }
01230
01231
01232
01233
01234
01235
01236
01237 LogDebug("L1GtAnalyzer") << myCoutStream.str() << std::endl;
01238
01239 myCoutStream.str("");
01240 myCoutStream.clear();
01241
01242 }
01243
01244
01245 void L1GtAnalyzer::analyzeConditionsInRunBlock(const edm::Run& iRun,
01246 const edm::EventSetup& evSetup) {
01247
01248 LogDebug("L1GtAnalyzer")
01249 << "\n**** L1GtAnalyzer::analyzeConditionsInRunBlock ****\n"
01250 << std::endl;
01251
01252
01253
01254 std::ostringstream myCoutStream;
01255
01256
01257 edm::Handle<edm::ConditionsInRunBlock> condInRunBlock;
01258 iRun.getByLabel(m_condInEdmInputTag, condInRunBlock);
01259
01260 if (!condInRunBlock.isValid()) {
01261
01262 LogDebug("L1GtAnalyzer") << "\nConditionsInRunBlock with \n "
01263 << m_condInEdmInputTag
01264 << "\nrequested in configuration, but not found in the event."
01265 << "\nExit the method.\n" << std::endl;
01266
01267 return;
01268 }
01269
01270 const boost::uint16_t beamModeVal = condInRunBlock->beamMode;
01271 const boost::uint16_t beamMomentumVal = condInRunBlock->beamMomentum;
01272 const boost::uint32_t lhcFillNumberVal = condInRunBlock->lhcFillNumber;
01273
01274
01275 myCoutStream << "\nLHC quantities in run " << iRun.run()
01276 << "\n Beam Mode = " << beamModeVal
01277 << "\n Beam Momentum = " << beamMomentumVal << " GeV"
01278 << "\n LHC Fill Number = " << lhcFillNumberVal
01279 << std::endl;
01280
01281 LogDebug("L1GtAnalyzer") << myCoutStream.str() << std::endl;
01282
01283 myCoutStream.str("");
01284 myCoutStream.clear();
01285
01286 }
01287
01288
01289 void L1GtAnalyzer::analyzeConditionsInLumiBlock(
01290 const edm::LuminosityBlock& iLumi, const edm::EventSetup& evSetup) {
01291 LogDebug("L1GtAnalyzer")
01292 << "\n**** L1GtAnalyzer::analyzeConditionsInLumiBlock ****\n"
01293 << std::endl;
01294
01295
01296
01297 std::ostringstream myCoutStream;
01298
01299
01300 edm::Handle<edm::ConditionsInLumiBlock> condInLumiBlock;
01301 iLumi.getByLabel(m_condInEdmInputTag, condInLumiBlock);
01302
01303 if (!condInLumiBlock.isValid()) {
01304
01305 LogDebug("L1GtAnalyzer") << "\nConditionsInLumiBlock with \n "
01306 << m_condInEdmInputTag
01307 << "\nrequested in configuration, but not found in the event."
01308 << "\nExit the method.\n" << std::endl;
01309
01310 return;
01311 }
01312
01313 const boost::uint32_t totalIntensityBeam1Val =
01314 condInLumiBlock->totalIntensityBeam1;
01315 const boost::uint32_t totalIntensityBeam2Val =
01316 condInLumiBlock->totalIntensityBeam2;
01317
01318 myCoutStream << "\nLHC quantities in luminosity section "
01319
01320 << iLumi.luminosityBlock() << " from run " << iLumi.run()
01321 << "\n Total Intensity Beam 1 (Integer × 10E10 charges) = "
01322 << totalIntensityBeam1Val
01323 << "\n Total Intensity Beam 2 (Integer × 10E10 charges) = "
01324 << totalIntensityBeam2Val << std::endl;
01325
01326 LogDebug("L1GtAnalyzer") << myCoutStream.str() << std::endl;
01327
01328 myCoutStream.str("");
01329 myCoutStream.clear();
01330
01331 }
01332
01333 void L1GtAnalyzer::analyzeConditionsInEventBlock(const edm::Event& iEvent,
01334 const edm::EventSetup& evSetup) {
01335
01336
01337 std::ostringstream myCoutStream;
01338
01339
01340 edm::Handle<edm::ConditionsInEventBlock> condInEventBlock;
01341 iEvent.getByLabel(m_condInEdmInputTag, condInEventBlock);
01342
01343 if (!condInEventBlock.isValid()) {
01344
01345 LogDebug("L1GtAnalyzer") << "\nConditionsInEventBlock with \n "
01346 << m_condInEdmInputTag
01347 << "\nrequested in configuration, but not found in the event."
01348 << "\nExit the method.\n" << std::endl;
01349
01350 return;
01351 }
01352
01353 const boost::uint16_t bstMasterStatusVal =
01354 condInEventBlock->bstMasterStatus;
01355 const boost::uint32_t turnCountNumberVal =
01356 condInEventBlock->turnCountNumber;
01357
01358 myCoutStream << "\nLHC quantities in event " << iEvent.id().event()
01359 << " from luminosity section " << iEvent.luminosityBlock()
01360 << " from run " << iEvent.run() << "\n BST Master Status = "
01361 << bstMasterStatusVal << "\n Turn count number = "
01362 << turnCountNumberVal << std::endl;
01363
01364 LogDebug("L1GtAnalyzer") << myCoutStream.str() << std::endl;
01365
01366 myCoutStream.str("");
01367 myCoutStream.clear();
01368
01369 }
01370
01371
01372 void L1GtAnalyzer::analyze(const edm::Event& iEvent,
01373 const edm::EventSetup& evSetup) {
01374
01375
01376 analyzeConditionsInEventBlock(iEvent, evSetup);
01377
01378
01379
01380 analyzeDecisionReadoutRecord(iEvent, evSetup);
01381
01382
01383 analyzeDecisionLiteRecord(iEvent, evSetup);
01384
01385
01386
01387
01388 switch (m_l1GtUtilsConfiguration) {
01389 case 0: {
01390 analyzeL1GtUtilsMenuLite(iEvent, evSetup);
01391
01392 }
01393 break;
01394 case 100000: {
01395 analyzeL1GtUtils(iEvent, evSetup);
01396
01397 }
01398 break;
01399 case 200000: {
01400 analyzeL1GtUtilsEventSetup(iEvent, evSetup);
01401
01402 }
01403 break;
01404 default: {
01405
01406 }
01407 break;
01408 }
01409
01410
01411
01412 analyzeObjectMap(iEvent, evSetup);
01413
01414
01415 analyzeL1GtTriggerMenuLite(iEvent, evSetup);
01416
01417 }
01418
01419
01420 void L1GtAnalyzer::endLuminosityBlock(const edm::LuminosityBlock& iLumi,
01421 const edm::EventSetup& evSetup) {
01422
01423
01424
01425 }
01426 void L1GtAnalyzer::endRun(const edm::Run& iRun, const edm::EventSetup& evSetup) {
01427
01428
01429
01430 }
01431
01432
01433 void L1GtAnalyzer::endJob() {
01434
01435
01436
01437 }
01438