CMS 3D CMS Logo

FWL1TriggerTableView.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Core
4 // Class : FWL1TriggerTableView
5 //
6 // Implementation:
7 // [Notes on implementation]
8 //
9 // Original Author:
10 // Created: Tue Jan 25 16:02:11 CET 2011
11 //
12 
13 #include <boost/regex.hpp>
16 
22 
25 
27  : FWTriggerTableView(iParent, FWViewType::kTableL1) {
28  m_columns[0].title = "Algorithm Name";
29  m_columns.push_back(Column("Result"));
30  m_columns.push_back(Column("Bit Number"));
31  m_columns.push_back(Column("Prescale"));
32 
33  dataChanged();
34 }
35 
39 
40  try {
41  // FIXME: Replace magic strings with configurable ones
42  triggerMenuLite.getByLabel(event->getRun(), "l1GtTriggerMenuLite", "", "");
43  triggerRecord.getByLabel(*event, "gtDigis", "", "");
44  } catch (cms::Exception&) {
45  fwLog(fwlog::kWarning) << "FWL1TriggerTableView: no L1Trigger menu is available." << std::endl;
46  return;
47  }
48 
49  if (triggerMenuLite.isValid() && triggerRecord.isValid()) {
50  const L1GtTriggerMenuLite::L1TriggerMap& algorithmMap = triggerMenuLite->gtAlgorithmMap();
51 
52  int pfIndexTechTrig = -1;
53  int pfIndexAlgoTrig = -1;
54 
55  boost::regex filter(m_regex.value());
56 
58  std::vector<std::vector<int> > prescaleFactorsAlgoTrig = triggerMenuLite->gtPrescaleFactorsAlgoTrig();
59  std::vector<std::vector<int> > prescaleFactorsTechTrig = triggerMenuLite->gtPrescaleFactorsTechTrig();
60  pfIndexAlgoTrig = (triggerRecord->gtFdlWord()).gtPrescaleFactorIndexAlgo();
61  pfIndexTechTrig = (triggerRecord->gtFdlWord()).gtPrescaleFactorIndexTech();
62 
63  int pfIndexTechTrigValidSize = static_cast<int>(prescaleFactorsTechTrig.size());
64  if (pfIndexTechTrigValidSize <= pfIndexTechTrig)
65  fwLog(fwlog::kError) << Form(
66  "FWL1TriggerTableView: Can't get Technical Trigger pre-scale factors. Index [%d] larger that table size "
67  "[%d]\n",
68  pfIndexTechTrig,
69  (int)prescaleFactorsTechTrig.size());
70  int pfIndexAlgoTrigValidSize = static_cast<int>(prescaleFactorsAlgoTrig.size());
71  if (pfIndexAlgoTrigValidSize <= pfIndexAlgoTrig)
72  fwLog(fwlog::kError) << Form(
73  "FWL1TriggerTableView: Can't get L1 Algo pre-scale factors. Index [%d] larger that table size [%d]\n",
74  pfIndexAlgoTrig,
75  (int)prescaleFactorsAlgoTrig.size());
76 
77  const DecisionWord dWord = triggerRecord->decisionWord();
78  for (L1GtTriggerMenuLite::CItL1Trig itTrig = algorithmMap.begin(), itTrigEnd = algorithmMap.end();
79  itTrig != itTrigEnd;
80  ++itTrig) {
81  const unsigned int bitNumber = itTrig->first;
82  const std::string& aName = itTrig->second;
83  int errorCode = 0;
84  const bool result = triggerMenuLite->gtTriggerResult(aName, dWord, errorCode);
85 
86  if (!boost::regex_search(aName, filter))
87  continue;
88 
89  m_columns.at(0).values.push_back(aName);
90  m_columns.at(1).values.push_back(Form("%d", result));
91  m_columns.at(2).values.push_back(Form("%d", bitNumber));
92 
93  if ((pfIndexAlgoTrig < pfIndexAlgoTrigValidSize) &&
94  static_cast<unsigned int>(prescaleFactorsAlgoTrig.at(pfIndexAlgoTrig).size()) > bitNumber) {
95  m_columns.at(3).values.push_back(Form("%d", prescaleFactorsAlgoTrig.at(pfIndexAlgoTrig).at(bitNumber)));
96  } else
97  m_columns.at(3).values.push_back("invalid");
98  }
99 
100  const static std::string kTechTriggerName = "TechTrigger";
101  const TechnicalTriggerWord ttWord = triggerRecord->technicalTriggerWord();
102 
103  int tBitNumber = 0;
104  int tBitResult = 0;
105  if (boost::regex_search(kTechTriggerName, filter)) {
106  for (TechnicalTriggerWord::const_iterator tBitIt = ttWord.begin(), tBitEnd = ttWord.end(); tBitIt != tBitEnd;
107  ++tBitIt, ++tBitNumber) {
108  if (*tBitIt)
109  tBitResult = 1;
110  else
111  tBitResult = 0;
112 
113  m_columns.at(0).values.push_back(kTechTriggerName);
114  m_columns.at(1).values.push_back(Form("%d", tBitResult));
115  m_columns.at(2).values.push_back(Form("%d", tBitNumber));
116 
117  if ((pfIndexTechTrig < pfIndexTechTrigValidSize) &&
118  static_cast<int>(prescaleFactorsTechTrig.at(pfIndexTechTrig).size()) > tBitNumber) {
119  m_columns.at(3).values.push_back(Form("%d", prescaleFactorsTechTrig.at(pfIndexTechTrig).at(tBitNumber)));
120  } else
121  m_columns.at(3).values.push_back(Form("invalid"));
122  }
123  }
124  } // trigger valid
125  else {
126  m_columns.at(0).values.push_back("No L1Trigger menu available.");
127  m_columns.at(1).values.push_back(" ");
128  m_columns.at(2).values.push_back(" ");
129  m_columns.at(3).values.push_back(" ");
130  }
131 }
L1GtTriggerMenuLite::gtPrescaleFactorsAlgoTrig
const std::vector< std::vector< int > > & gtPrescaleFactorsAlgoTrig() const
get the prescale factors by reference / set the prescale factors
Definition: L1GtTriggerMenuLite.h:128
fwLog
#define fwLog(_level_)
Definition: fwLog.h:45
Handle.h
FWL1TriggerTableView::fillTable
void fillTable(fwlite::Event *event) override
Definition: FWL1TriggerTableView.cc:36
TriggerResults.h
FWTriggerTableView::m_regex
FWStringParameter m_regex
Definition: FWTriggerTableView.h:66
FWTriggerTableView
Definition: FWTriggerTableView.h:33
L1GtTriggerMenuLite::gtTriggerResult
const bool gtTriggerResult(const std::string &trigName, const std::vector< bool > &decWord, int &errorCode) const
Definition: L1GtTriggerMenuLite.cc:401
L1GtTriggerMenuLite.h
L1GtTriggerMenuLite::CItL1Trig
L1TriggerMap::const_iterator CItL1Trig
iterators through map containing the physics algorithms or the technical triggers
Definition: L1GtTriggerMenuLite.h:45
fwlite::Handle
Definition: Handle.h:39
ALCARECOTkAlBeamHalo_cff.filter
filter
Definition: ALCARECOTkAlBeamHalo_cff.py:27
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
L1GtTriggerMenuLite::gtAlgorithmMap
const L1TriggerMap & gtAlgorithmMap() const
get / set the algorithm map (by name)
Definition: L1GtTriggerMenuLite.h:101
FWTriggerTableView::m_columns
std::vector< Column > m_columns
Definition: FWTriggerTableView.h:69
L1GlobalTriggerReadoutRecord::decisionWord
const DecisionWord & decisionWord(int bxInEventValue) const
Definition: L1GlobalTriggerReadoutRecord.cc:186
FWL1TriggerTableView.h
TriggerNames.h
fwlite::Handle::isValid
bool isValid() const
Definition: Handle.h:60
fwlog::kWarning
Definition: fwLog.h:35
fwLog.h
L1GtTriggerMenuLite::gtPrescaleFactorsTechTrig
const std::vector< std::vector< int > > & gtPrescaleFactorsTechTrig() const
Definition: L1GtTriggerMenuLite.h:132
DecisionWord
std::vector< bool > DecisionWord
typedefs
Definition: L1GlobalTriggerReadoutSetupFwd.h:34
FWGenericParameter::value
T value() const
Definition: FWGenericParameter.h:50
fwlite::Handle::getByLabel
void getByLabel(const P &iP, const char *iModuleLabel, const char *iProductInstanceLabel=nullptr, const char *iProcessLabel=nullptr)
Definition: Handle.h:100
FWTriggerTableView::Column
Definition: FWTriggerTableView.h:37
fwlite::Event
Definition: Event.h:87
FWTriggerTableView::dataChanged
void dataChanged(void)
Definition: FWTriggerTableView.cc:111
Event.h
Exception.h
fwlog::kError
Definition: fwLog.h:35
L1TBPTX_cfi.bitNumber
bitNumber
Definition: L1TBPTX_cfi.py:26
mps_fire.result
result
Definition: mps_fire.py:303
cms::Exception
Definition: Exception.h:70
L1GlobalTriggerReadoutRecord::technicalTriggerWord
const TechnicalTriggerWord & technicalTriggerWord(int bxInEventValue) const
Definition: L1GlobalTriggerReadoutRecord.cc:212
FWL1TriggerTableView::FWL1TriggerTableView
FWL1TriggerTableView(TEveWindowSlot *)
Definition: FWL1TriggerTableView.cc:26
TechnicalTriggerWord
std::vector< bool > TechnicalTriggerWord
technical trigger bits (64 bits)
Definition: L1GlobalTriggerReadoutSetupFwd.h:41
event
Definition: event.py:1
FWViewType
Definition: FWViewType.h:22
L1GtTriggerMenuLite::L1TriggerMap
std::map< unsigned int, std::string > L1TriggerMap
map containing the physics algorithms or the technical triggers
Definition: L1GtTriggerMenuLite.h:42
L1GlobalTriggerReadoutRecord::gtFdlWord
const L1GtFdlWord gtFdlWord(int bxInEventValue) const
get / set FDL word (record) in the GT readout record
Definition: L1GlobalTriggerReadoutRecord.cc:372
L1GlobalTriggerReadoutRecord.h