CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
TriggerBxMonitor Class Reference
Inheritance diagram for TriggerBxMonitor:
DQMGlobalEDAnalyzer< RunBasedHistograms > edm::global::EDAnalyzer< edm::RunCache< RunBasedHistograms >, Args... > edm::global::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

 TriggerBxMonitor (edm::ParameterSet const &)
 
 ~TriggerBxMonitor () override=default
 
- Public Member Functions inherited from edm::global::EDAnalyzer< edm::RunCache< RunBasedHistograms >, Args... >
 EDAnalyzer ()=default
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsStreamLuminosityBlocks () const final
 
bool wantsStreamRuns () const final
 
- Public Member Functions inherited from edm::global::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDAnalyzerBase () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::global::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &, RunBasedHistograms &) const override
 
void dqmAnalyze (edm::Event const &, edm::EventSetup const &, RunBasedHistograms const &) const override
 
void dqmBeginRun (edm::Run const &, edm::EventSetup const &, RunBasedHistograms &) const override
 

Private Attributes

const std::string m_dqm_path
 
const edm::EDGetTokenT< edm::TriggerResultsm_hlt_results
 
const edm::EDGetTokenT< GlobalAlgBlkBxCollectionm_l1t_results
 
const uint32_t m_ls_range
 
const bool m_make_1d_plots
 
const bool m_make_2d_plots
 

Static Private Attributes

static const unsigned int s_bx_range = 3564
 
static const char * s_tcds_trigger_types []
 

Additional Inherited Members

- Public Types inherited from DQMGlobalEDAnalyzer< RunBasedHistograms >
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- Public Types inherited from edm::global::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 69 of file TriggerBxMonitor.cc.

Constructor & Destructor Documentation

TriggerBxMonitor::TriggerBxMonitor ( edm::ParameterSet const &  config)
explicit

Definition at line 128 of file TriggerBxMonitor.cc.

129  : // module configuration
130  m_l1t_results(consumes<GlobalAlgBlkBxCollection>(config.getUntrackedParameter<edm::InputTag>("l1tResults"))),
131  m_hlt_results(consumes<edm::TriggerResults>(config.getUntrackedParameter<edm::InputTag>("hltResults"))),
132  m_dqm_path(config.getUntrackedParameter<std::string>("dqmPath")),
133  m_make_1d_plots(config.getUntrackedParameter<bool>("make1DPlots")),
134  m_make_2d_plots(config.getUntrackedParameter<bool>("make2DPlots")),
135  m_ls_range(config.getUntrackedParameter<uint32_t>("lsRange")) {}
const edm::EDGetTokenT< GlobalAlgBlkBxCollection > m_l1t_results
Definition: config.py:1
const edm::EDGetTokenT< edm::TriggerResults > m_hlt_results
const uint32_t m_ls_range
const std::string m_dqm_path
const bool m_make_1d_plots
const bool m_make_2d_plots
TriggerBxMonitor::~TriggerBxMonitor ( )
overridedefault

Member Function Documentation

void TriggerBxMonitor::bookHistograms ( DQMStore::IBooker booker,
edm::Run const &  run,
edm::EventSetup const &  setup,
RunBasedHistograms &  histograms 
) const
overrideprivatevirtual

Implements DQMGlobalEDAnalyzer< RunBasedHistograms >.

Definition at line 180 of file TriggerBxMonitor.cc.

References dqm::dqmstoreimpl::DQMStore::IBooker::book1D(), dqm::dqmstoreimpl::DQMStore::IBooker::book2D(), dqm-mbProfile::format, mps_fire::i, m_dqm_path, m_ls_range, m_make_1d_plots, m_make_2d_plots, GlobalAlgBlk::maxPhysicsTriggers, Skims_PA_cff::name, s_bx_range, s_tcds_trigger_types, dqm::dqmstoreimpl::DQMStore::IBooker::setCurrentFolder(), singleTopDQM_cfi::setup, findQualityFiles::size, str, and AlCaHLTBitMon_QueryRunRegistry::string.

183  {
184  // TCDS trigger type plots
185  {
187 
188  // book 2D histogram to monitor all TCDS trigger types in a single plot
189  booker.setCurrentFolder(m_dqm_path);
190  histograms.tcds_bx_all = booker.book2D("TCDS Trigger Types",
191  "TCDS Trigger Types vs. bunch crossing",
192  s_bx_range + 1,
193  -0.5,
194  s_bx_range + 0.5,
195  size,
196  -0.5,
197  size - 0.5);
198 
199  // book the individual histograms for the known TCDS trigger types
200  booker.setCurrentFolder(m_dqm_path + "/TCDS");
201  for (unsigned int i = 0; i < size; ++i) {
202  if (s_tcds_trigger_types[i]) {
203  if (m_make_1d_plots) {
204  histograms.tcds_bx.at(i) =
205  booker.book1D(s_tcds_trigger_types[i], s_tcds_trigger_types[i], s_bx_range + 1, -0.5, s_bx_range + 0.5);
206  }
207  if (m_make_2d_plots) {
208  std::string const& name_ls = std::string(s_tcds_trigger_types[i]) + " vs LS";
209  histograms.tcds_bx_2d.at(i) = booker.book2D(
210  name_ls, name_ls, s_bx_range + 1, -0.5, s_bx_range + 0.5, m_ls_range, 0.5, m_ls_range + 0.5);
211  }
212  histograms.tcds_bx_all->setBinLabel(i + 1, s_tcds_trigger_types[i], 2); // Y axis
213  }
214  }
215  }
216 
217  // L1T plots
218  {
219  // book 2D histogram to monitor all L1 triggers in a single plot
220  booker.setCurrentFolder(m_dqm_path);
221  histograms.l1t_bx_all = booker.book2D("Level 1 Triggers",
222  "Level 1 Triggers vs. bunch crossing",
223  s_bx_range + 1,
224  -0.5,
225  s_bx_range + 0.5,
227  -0.5,
229 
230  // book the individual histograms for the L1 triggers that are included in the L1 menu
231  booker.setCurrentFolder(m_dqm_path + "/L1T");
232  auto const& l1tMenu = edm::get<L1TUtmTriggerMenu, L1TUtmTriggerMenuRcd>(setup);
233  for (auto const& keyval : l1tMenu.getAlgorithmMap()) {
234  unsigned int bit = keyval.second.getIndex();
235  std::string const& name = (boost::format("%s (bit %d)") % keyval.first % bit).str();
236  if (m_make_1d_plots) {
237  histograms.l1t_bx.at(bit) = booker.book1D(name, name, s_bx_range + 1, -0.5, s_bx_range + 0.5);
238  }
239  if (m_make_2d_plots) {
240  std::string const& name_ls = name + " vs LS";
241  histograms.l1t_bx_2d.at(bit) =
242  booker.book2D(name_ls, name_ls, s_bx_range + 1, -0.5, s_bx_range + 0.5, m_ls_range, 0.5, m_ls_range + 0.5);
243  }
244  histograms.l1t_bx_all->setBinLabel(bit + 1, keyval.first, 2); // Y axis
245  }
246  }
247 
248  // HLT plots
249  if (histograms.hltConfig.inited()) {
250  // book 2D histogram to monitor all HLT paths in a single plot
251  booker.setCurrentFolder(m_dqm_path);
252  histograms.hlt_bx_all = booker.book2D("High Level Triggers",
253  "High Level Triggers vs. bunch crossing",
254  s_bx_range + 1,
255  -0.5,
256  s_bx_range + 0.5,
257  histograms.hltConfig.size(),
258  -0.5,
259  histograms.hltConfig.size() - 0.5);
260 
261  // book the individual HLT triggers histograms
262  booker.setCurrentFolder(m_dqm_path + "/HLT");
263  for (unsigned int i = 0; i < histograms.hltConfig.size(); ++i) {
264  std::string const& name = histograms.hltConfig.triggerName(i);
265  if (m_make_1d_plots) {
266  histograms.hlt_bx[i] = booker.book1D(name, name, s_bx_range + 1, -0.5, s_bx_range + 0.5);
267  }
268  if (m_make_2d_plots) {
269  std::string const& name_ls = name + " vs LS";
270  histograms.hlt_bx_2d[i] =
271  booker.book2D(name_ls, name_ls, s_bx_range + 1, -0.5, s_bx_range + 0.5, m_ls_range, 0.5, m_ls_range + 0.5);
272  }
273  histograms.hlt_bx_all->setBinLabel(i + 1, name, 2); // Y axis
274  }
275  }
276 }
size
Write out results.
static const char * s_tcds_trigger_types[]
const uint32_t m_ls_range
const std::string m_dqm_path
static unsigned int maxPhysicsTriggers
Definition: GlobalAlgBlk.h:52
const bool m_make_1d_plots
static const unsigned int s_bx_range
#define str(s)
const bool m_make_2d_plots
void TriggerBxMonitor::dqmAnalyze ( edm::Event const &  event,
edm::EventSetup const &  setup,
RunBasedHistograms const &  histograms 
) const
overrideprivate

Definition at line 278 of file TriggerBxMonitor.cc.

References l1GtPatternGenerator_cfi::bx, DEFINE_FWK_MODULE, edm::get(), PDWG_DiJetAODSkim_cff::hltResults, mps_fire::i, eostools::ls(), m_hlt_results, m_l1t_results, m_make_1d_plots, m_make_2d_plots, GlobalAlgBlk::maxPhysicsTriggers, bookConverter::results, s_tcds_trigger_types, and findQualityFiles::size.

280  {
281  unsigned int bx = event.bunchCrossing();
282  unsigned int ls = event.luminosityBlock();
283 
284  // monitor the bx distribution for the TCDS trigger types
285  {
287  unsigned int type = event.experimentType();
288  if (type < size) {
289  if (m_make_1d_plots and histograms.tcds_bx.at(type))
290  histograms.tcds_bx[type]->Fill(bx);
291  if (m_make_2d_plots and histograms.tcds_bx_2d.at(type))
292  histograms.tcds_bx_2d[type]->Fill(bx, ls);
293  }
294  histograms.tcds_bx_all->Fill(bx, type);
295  }
296 
297  // monitor the bx distribution for the L1 triggers
298  {
299  auto const& bxvector = edm::get(event, m_l1t_results);
300  if (not bxvector.isEmpty(0)) {
301  auto const& results = bxvector.at(0, 0);
302  for (unsigned int i = 0; i < GlobalAlgBlk::maxPhysicsTriggers; ++i)
303  if (results.getAlgoDecisionFinal(i)) {
304  if (m_make_1d_plots and histograms.l1t_bx.at(i))
305  histograms.l1t_bx[i]->Fill(bx);
306  if (m_make_2d_plots and histograms.l1t_bx_2d.at(i))
307  histograms.l1t_bx_2d[i]->Fill(bx, ls);
308  histograms.l1t_bx_all->Fill(bx, i);
309  }
310  }
311  }
312 
313  // monitor the bx distribution for the HLT triggers
314  if (histograms.hltConfig.inited()) {
315  auto const& hltResults = edm::get(event, m_hlt_results);
316  for (unsigned int i = 0; i < hltResults.size(); ++i) {
317  if (hltResults.at(i).accept()) {
318  if (m_make_1d_plots and histograms.hlt_bx.at(i))
319  histograms.hlt_bx[i]->Fill(bx);
320  if (m_make_2d_plots and histograms.hlt_bx_2d.at(i))
321  histograms.hlt_bx_2d[i]->Fill(bx, ls);
322  histograms.hlt_bx_all->Fill(bx, i);
323  }
324  }
325  }
326 }
size
Write out results.
type
Definition: HCALResponse.h:21
const edm::EDGetTokenT< GlobalAlgBlkBxCollection > m_l1t_results
const edm::EDGetTokenT< edm::TriggerResults > m_hlt_results
static const char * s_tcds_trigger_types[]
def ls(path, rec=False)
Definition: eostools.py:349
static unsigned int maxPhysicsTriggers
Definition: GlobalAlgBlk.h:52
T const & get(Event const &event, InputTag const &tag)(false)
Definition: Event.h:666
const bool m_make_1d_plots
const bool m_make_2d_plots
Definition: event.py:1
void TriggerBxMonitor::dqmBeginRun ( edm::Run const &  run,
edm::EventSetup const &  setup,
RunBasedHistograms &  histograms 
) const
overrideprivatevirtual

Reimplemented from DQMGlobalEDAnalyzer< RunBasedHistograms >.

Definition at line 137 of file TriggerBxMonitor.cc.

References SummaryClient_cfi::labels, edm::EDConsumerBase::labelsForToken(), m_hlt_results, m_make_1d_plots, m_make_2d_plots, GlobalAlgBlk::maxPhysicsTriggers, edm::ProductLabels::process, s_tcds_trigger_types, and findQualityFiles::size.

139  {
140  // initialise the TCDS vector
141  if (m_make_1d_plots) {
142  histograms.tcds_bx.clear();
143  histograms.tcds_bx.resize(std::size(s_tcds_trigger_types));
144  }
145  if (m_make_2d_plots) {
146  histograms.tcds_bx_2d.clear();
147  histograms.tcds_bx_2d.resize(std::size(s_tcds_trigger_types));
148  }
149 
150  // cache the L1 trigger menu
151  if (m_make_1d_plots) {
152  histograms.l1t_bx.clear();
154  }
155  if (m_make_2d_plots) {
156  histograms.l1t_bx_2d.clear();
158  }
159 
160  // initialise the HLTConfigProvider
161  bool changed = true;
163  labelsForToken(m_hlt_results, labels);
164  if (histograms.hltConfig.init(run, setup, labels.process, changed)) {
165  if (m_make_1d_plots) {
166  histograms.hlt_bx.clear();
167  histograms.hlt_bx.resize(histograms.hltConfig.size());
168  }
169  if (m_make_2d_plots) {
170  histograms.hlt_bx_2d.clear();
171  histograms.hlt_bx_2d.resize(histograms.hltConfig.size());
172  }
173  } else {
174  // HLTConfigProvider not initialised, skip the the HLT monitoring
175  edm::LogError("TriggerBxMonitor")
176  << "failed to initialise HLTConfigProvider, the HLT bx distribution will not be monitored";
177  }
178 }
size
Write out results.
const edm::EDGetTokenT< edm::TriggerResults > m_hlt_results
char const * process
Definition: ProductLabels.h:7
static const char * s_tcds_trigger_types[]
static unsigned int maxPhysicsTriggers
Definition: GlobalAlgBlk.h:52
const bool m_make_1d_plots
void labelsForToken(EDGetToken iToken, Labels &oLabels) const
const bool m_make_2d_plots
void TriggerBxMonitor::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 117 of file TriggerBxMonitor.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::addUntracked(), HLT_2018_cff::InputTag, and AlCaHLTBitMon_QueryRunRegistry::string.

117  {
119  desc.addUntracked<edm::InputTag>("l1tResults", edm::InputTag("gtStage2Digis"));
120  desc.addUntracked<edm::InputTag>("hltResults", edm::InputTag("TriggerResults"));
121  desc.addUntracked<std::string>("dqmPath", "HLT/TriggerBx");
122  desc.addUntracked<bool>("make1DPlots", true);
123  desc.addUntracked<bool>("make2DPlots", false);
124  desc.addUntracked<uint32_t>("lsRange", 4000);
125  descriptions.add("triggerBxMonitor", desc);
126 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)

Member Data Documentation

const std::string TriggerBxMonitor::m_dqm_path
private

Definition at line 108 of file TriggerBxMonitor.cc.

Referenced by bookHistograms().

const edm::EDGetTokenT<edm::TriggerResults> TriggerBxMonitor::m_hlt_results
private

Definition at line 107 of file TriggerBxMonitor.cc.

Referenced by dqmAnalyze(), and dqmBeginRun().

const edm::EDGetTokenT<GlobalAlgBlkBxCollection> TriggerBxMonitor::m_l1t_results
private

Definition at line 106 of file TriggerBxMonitor.cc.

Referenced by dqmAnalyze().

const uint32_t TriggerBxMonitor::m_ls_range
private

Definition at line 111 of file TriggerBxMonitor.cc.

Referenced by bookHistograms().

const bool TriggerBxMonitor::m_make_1d_plots
private

Definition at line 109 of file TriggerBxMonitor.cc.

Referenced by bookHistograms(), dqmAnalyze(), and dqmBeginRun().

const bool TriggerBxMonitor::m_make_2d_plots
private

Definition at line 110 of file TriggerBxMonitor.cc.

Referenced by bookHistograms(), dqmAnalyze(), and dqmBeginRun().

const unsigned int TriggerBxMonitor::s_bx_range = 3564
staticprivate

Definition at line 82 of file TriggerBxMonitor.cc.

Referenced by bookHistograms().

const char * TriggerBxMonitor::s_tcds_trigger_types
staticprivate
Initial value:
= {
"Empty",
"Physics",
"Calibration",
"Random",
"Auxiliary",
0 ,
0 ,
0 ,
"Cyclic",
"Bunch-pattern",
"Software",
"TTS",
0 ,
0 ,
0 ,
0
}

Definition at line 86 of file TriggerBxMonitor.cc.

Referenced by bookHistograms(), dqmAnalyze(), and dqmBeginRun().