CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
TriggerRatesMonitor Class Reference
Inheritance diagram for TriggerRatesMonitor:
DQMGlobalEDAnalyzer< RunBasedHistograms > DQMGlobalEDAnalyzerBase< RunBasedHistograms, Args... > edm::global::EDProducer< edm::RunCache< RunBasedHistograms >, edm::EndRunProducer, edm::Accumulator, Args... > edm::global::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 TriggerRatesMonitor (edm::ParameterSet const &)
 
 ~TriggerRatesMonitor () override=default
 
- Public Member Functions inherited from DQMGlobalEDAnalyzer< RunBasedHistograms >
virtual void dqmEndRun (edm::Run const &, edm::EventSetup const &, RunBasedHistograms const &) const
 
void globalEndRunProduce (edm::Run &run, edm::EventSetup const &setup) const final
 
- Public Member Functions inherited from DQMGlobalEDAnalyzerBase< RunBasedHistograms, Args... >
void accumulate (edm::StreamID id, edm::Event const &event, edm::EventSetup const &setup) const final
 
 DQMGlobalEDAnalyzerBase ()
 
std::shared_ptr< RunBasedHistograms > globalBeginRun (edm::Run const &run, edm::EventSetup const &setup) const final
 
void globalEndRun (edm::Run const &, edm::EventSetup const &) const final
 
- Public Member Functions inherited from edm::global::EDProducer< edm::RunCache< RunBasedHistograms >, edm::EndRunProducer, edm::Accumulator, Args... >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
EDProduceroperator= (const EDProducer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
bool wantsStreamLuminosityBlocks () const final
 
bool wantsStreamRuns () const final
 
- Public Member Functions inherited from edm::global::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) 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
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (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::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, 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
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
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::EDProducerBase
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 edm::ESGetToken< L1TUtmTriggerMenu, L1TUtmTriggerMenuRcdm_l1tMenuToken
 
const uint32_t m_lumisections_range
 

Static Private Attributes

static constexpr const char *const s_tcds_trigger_types []
 

Additional Inherited Members

- Public Types inherited from DQMGlobalEDAnalyzerBase< RunBasedHistograms, Args... >
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- Public Types inherited from edm::global::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
template<typename T >
using BranchAliasSetterT = ProductRegistryHelper::BranchAliasSetterT< T >
 
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from DQMGlobalEDAnalyzerBase< RunBasedHistograms, Args... >
uint64_t meId (edm::Run const &run) const
 
- Protected Member Functions inherited from edm::ProducerBase
template<Transition Tr = Transition::Event>
auto produces (std::string instanceName) noexcept
 declare what type of product will make and with which optional label More...
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
template<Transition Tr = Transition::Event>
auto produces () noexcept
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
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<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
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)
 
void resetItemsToGetFrom (BranchType iType)
 
- Protected Attributes inherited from DQMGlobalEDAnalyzerBase< RunBasedHistograms, Args... >
DQMStoredqmstore_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Definition at line 97 of file TriggerRatesMonitor.cc.

Constructor & Destructor Documentation

◆ TriggerRatesMonitor()

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

Definition at line 153 of file TriggerRatesMonitor.cc.

154  : // module configuration
155  m_l1tMenuToken{esConsumes<edm::Transition::BeginRun>()},
156  m_l1t_results(consumes<GlobalAlgBlkBxCollection>(config.getUntrackedParameter<edm::InputTag>("l1tResults"))),
157  m_hlt_results(consumes<edm::TriggerResults>(config.getUntrackedParameter<edm::InputTag>("hltResults"))),
158  m_dqm_path(config.getUntrackedParameter<std::string>("dqmPath")),
159  m_lumisections_range(config.getUntrackedParameter<uint32_t>("lumisectionRange")) {}
const std::string m_dqm_path
const edm::EDGetTokenT< GlobalAlgBlkBxCollection > m_l1t_results
const edm::EDGetTokenT< edm::TriggerResults > m_hlt_results
Definition: config.py:1
const uint32_t m_lumisections_range
const edm::ESGetToken< L1TUtmTriggerMenu, L1TUtmTriggerMenuRcd > m_l1tMenuToken

◆ ~TriggerRatesMonitor()

TriggerRatesMonitor::~TriggerRatesMonitor ( )
overridedefault

Member Function Documentation

◆ bookHistograms()

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

Implements DQMGlobalEDAnalyzerBase< RunBasedHistograms, Args... >.

Definition at line 235 of file TriggerRatesMonitor.cc.

References triggerObjects_cff::bit, dqm::implementation::IBooker::book1D(), ztail::d, makeLayoutFileForGui::datasetNames, mps_fire::i, dqmiolumiharvest::j, label, m_dqm_path, m_l1tMenuToken, m_lumisections_range, Skims_PA_cff::name, or, s_tcds_trigger_types, dqm::implementation::NavigatorBase::setCurrentFolder(), singleTopDQM_cfi::setup, AlCaHLTBitMon_QueryRunRegistry::string, and runGCPTkAlMap::title.

238  {
239  // book histograms for the overall event count, and trigger types
241  histograms.events_processed = booker.book1D(
242  "events", "Processed events vs. lumisection", m_lumisections_range + 1, -0.5, m_lumisections_range + 0.5);
243  booker.setCurrentFolder(m_dqm_path + "/TCDS");
244  unsigned int const sizeof_tcds_trigger_types = sizeof(s_tcds_trigger_types) / sizeof(const char *);
245  if (sizeof_tcds_trigger_types == histograms.tcds_counts.size()) {
246  for (unsigned int i = 0; i < sizeof_tcds_trigger_types; ++i)
247  if (s_tcds_trigger_types[i]) {
248  std::string const &title = fmt::sprintf("%s events vs. lumisection", s_tcds_trigger_types[i]);
249  histograms.tcds_counts[i] =
251  }
252  } else
253  edm::LogError("TriggerRatesMonitor")
254  << "This should never happen: size of \"s_tcds_trigger_types\" array (" << sizeof_tcds_trigger_types
255  << ") differs from size of \"histograms.tcds_counts\" vector (size=" << histograms.tcds_counts.size()
256  << ").\nRate histograms of TCDS trigger types will not be booked for this run.";
257 
258  // book the rate histograms for the L1T triggers that are included in the L1T menu
259  booker.setCurrentFolder(m_dqm_path + "/L1T");
260  auto const &l1tMenu = setup.getData(m_l1tMenuToken);
261  for (auto const &keyval : l1tMenu.getAlgorithmMap()) {
262  unsigned int const bit = keyval.second.getIndex();
263  if (bit >= histograms.l1t_counts.size()) {
264  edm::LogError("TriggerRatesMonitor")
265  << "This should never happen: bit of L1T algorithm (bit=" << bit << ", name=\"" << keyval.first
266  << "\") is not smaller than size of \"histograms.l1t_counts\" vector (size=" << histograms.l1t_counts.size()
267  << ").\nRate histogram of this L1T algorithm will not be booked for this run.";
268  continue;
269  }
270  bool masked = false; // FIXME read L1T masks once they will be avaiable in the EventSetup
271  std::string const &name = fmt::sprintf("%s (bit %d)", keyval.first, bit);
272  std::string const &title =
273  fmt::sprintf("%s (bit %d)%s vs. lumisection", keyval.first, bit, (masked ? " (masked)" : ""));
274  histograms.l1t_counts[bit] = booker.book1D(name, title, m_lumisections_range + 1, -0.5, m_lumisections_range + 0.5);
275  }
276 
277  if (histograms.hltConfig.inited()) {
278  auto const &datasetNames = histograms.hltConfig.datasetNames();
279 
280  // book the rate histograms for the HLT triggers
281  for (unsigned int d = 0; d < datasetNames.size(); ++d) {
282  booker.setCurrentFolder(m_dqm_path + "/HLT/" + datasetNames[d]);
283  for (unsigned int i = 0; i < histograms.datasets[d].size(); ++i) {
284  unsigned int index = histograms.datasets[d][i];
285  std::string const &name = histograms.hltConfig.triggerName(index);
286  histograms.hlt_by_dataset_counts[d][i].pass_l1_seed = booker.book1D(name + "_pass_L1_seed",
287  name + " pass L1 seed, vs. lumisection",
289  -0.5,
290  m_lumisections_range + 0.5);
291  histograms.hlt_by_dataset_counts[d][i].pass_prescale = booker.book1D(name + "_pass_prescaler",
292  name + " pass prescaler, vs. lumisection",
294  -0.5,
295  m_lumisections_range + 0.5);
296  histograms.hlt_by_dataset_counts[d][i].accept = booker.book1D(name + "_accept",
297  name + " accept, vs. lumisection",
299  -0.5,
300  m_lumisections_range + 0.5);
301  histograms.hlt_by_dataset_counts[d][i].reject = booker.book1D(name + "_reject",
302  name + " reject, vs. lumisection",
304  -0.5,
305  m_lumisections_range + 0.5);
306  histograms.hlt_by_dataset_counts[d][i].error = booker.book1D(name + "_error",
307  name + " error, vs. lumisection",
309  -0.5,
310  m_lumisections_range + 0.5);
311  }
312 
313  for (unsigned int i : histograms.datasets[d]) {
314  // look for the index of the (last) L1T seed and prescale module in each path
315  histograms.hltIndices[i].index_l1_seed = histograms.hltConfig.size(i);
316  histograms.hltIndices[i].index_prescale = histograms.hltConfig.size(i);
317  for (unsigned int j = 0; j < histograms.hltConfig.size(i); ++j) {
318  std::string const &label = histograms.hltConfig.moduleLabel(i, j);
319  std::string const &type = histograms.hltConfig.moduleType(label);
320  if (type == "HLTL1TSeed" or type == "HLTLevel1GTSeed" or type == "HLTLevel1Activity" or
321  type == "HLTLevel1Pattern") {
322  // there might be more L1T seed filters in sequence
323  // keep looking and store the index of the last one
324  histograms.hltIndices[i].index_l1_seed = j;
325  } else if (type == "HLTPrescaler") {
326  // there should be only one prescaler in a path, and it should follow all L1T seed filters
327  histograms.hltIndices[i].index_prescale = j;
328  break;
329  }
330  }
331  }
332  }
333 
334  // book the rate histograms for the HLT datasets
335  booker.setCurrentFolder(m_dqm_path + "/Datasets");
336  for (unsigned int i = 0; i < datasetNames.size(); ++i)
337  histograms.dataset_counts[i] =
339 
340  // book the rate histograms for the HLT streams
341  booker.setCurrentFolder(m_dqm_path + "/Streams");
342  auto const &streamNames = histograms.hltConfig.streamNames();
343  for (unsigned int i = 0; i < streamNames.size(); ++i)
344  histograms.stream_counts[i] =
345  booker.book1D(streamNames[i], streamNames[i], m_lumisections_range + 1, -0.5, m_lumisections_range + 0.5);
346  }
347 }
const std::string m_dqm_path
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
Log< level::Error, false > LogError
const uint32_t m_lumisections_range
static constexpr const char *const s_tcds_trigger_types[]
char const * label
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
const edm::ESGetToken< L1TUtmTriggerMenu, L1TUtmTriggerMenuRcd > m_l1tMenuToken
d
Definition: ztail.py:151
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98

◆ dqmAnalyze()

void TriggerRatesMonitor::dqmAnalyze ( edm::Event const &  event,
edm::EventSetup const &  setup,
RunBasedHistograms const &  histograms 
) const
overrideprivatevirtual

Implements DQMGlobalEDAnalyzerBase< RunBasedHistograms, Args... >.

Definition at line 349 of file TriggerRatesMonitor.cc.

References accept(), ztail::d, JetHT_cfg::hltResults, mps_fire::i, dqmiolumiharvest::j, m_hlt_results, m_l1t_results, GlobalAlgBlk::maxPhysicsTriggers, castor_dqm_sourceclient_file_cfg::path, and mysort::results.

351  {
352  unsigned int lumisection = event.luminosityBlock();
353 
354  // monitor the overall event count and event types rates
355  histograms.events_processed->Fill(lumisection);
356  if (histograms.tcds_counts[event.experimentType()])
357  histograms.tcds_counts[event.experimentType()]->Fill(lumisection);
358 
359  // monitor the rates of L1T triggers
360  auto const &bxvector = event.get(m_l1t_results);
361  if (not bxvector.isEmpty(0)) {
362  auto const &results = bxvector.at(0, 0);
363  for (unsigned int i = 0; i < GlobalAlgBlk::maxPhysicsTriggers; ++i)
364  if (results.getAlgoDecisionFinal(i))
365  if (histograms.l1t_counts[i])
366  histograms.l1t_counts[i]->Fill(lumisection);
367  }
368 
369  // monitor the rates of HLT triggers, datasets and streams
370  if (histograms.hltConfig.inited()) {
371  auto const &hltResults = event.get(m_hlt_results);
372  if (hltResults.size() != histograms.hltIndices.size()) {
373  edm::LogError("TriggerRatesMonitor")
374  << "This should never happen: the number of HLT paths has changed since the beginning of the run"
375  << " (from " << histograms.hltIndices.size() << " to " << hltResults.size() << ").\n"
376  << "Histograms for rates of HLT paths, datasets and streams will not be filled for this event.";
377  return;
378  }
379 
380  for (unsigned int d = 0; d < histograms.datasets.size(); ++d) {
381  for (unsigned int i : histograms.datasets[d])
382  if (hltResults[i].accept()) {
383  histograms.dataset_counts[d]->Fill(lumisection);
384  // ensure each dataset is incremented only once per event
385  break;
386  }
387  for (unsigned int i = 0; i < histograms.datasets[d].size(); ++i) {
388  unsigned int const index = histograms.datasets[d][i];
390 
391  if (path.index() > histograms.hltIndices[index].index_l1_seed)
392  histograms.hlt_by_dataset_counts[d][i].pass_l1_seed->Fill(lumisection);
393  if (path.index() > histograms.hltIndices[index].index_prescale)
394  histograms.hlt_by_dataset_counts[d][i].pass_prescale->Fill(lumisection);
395  if (path.accept())
396  histograms.hlt_by_dataset_counts[d][i].accept->Fill(lumisection);
397  else if (path.error())
398  histograms.hlt_by_dataset_counts[d][i].error->Fill(lumisection);
399  else
400  histograms.hlt_by_dataset_counts[d][i].reject->Fill(lumisection);
401  }
402  }
403 
404  for (unsigned int i = 0; i < histograms.streams.size(); ++i)
405  for (unsigned int j : histograms.streams[i])
406  if (hltResults[j].accept()) {
407  histograms.stream_counts[i]->Fill(lumisection);
408  // ensure each stream is incremented only once per event
409  break;
410  }
411  }
412 }
const edm::EDGetTokenT< GlobalAlgBlkBxCollection > m_l1t_results
const edm::EDGetTokenT< edm::TriggerResults > m_hlt_results
Log< level::Error, false > LogError
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:31
d
Definition: ztail.py:151
results
Definition: mysort.py:8
static constexpr unsigned int maxPhysicsTriggers
Definition: GlobalAlgBlk.h:52
Definition: event.py:1

◆ dqmBeginRun()

void TriggerRatesMonitor::dqmBeginRun ( edm::Run const &  run,
edm::EventSetup const &  setup,
RunBasedHistograms &  histograms 
) const
overrideprivatevirtual

Reimplemented from DQMGlobalEDAnalyzerBase< RunBasedHistograms, Args... >.

Definition at line 161 of file TriggerRatesMonitor.cc.

References mps_fire::i, SummaryClient_cfi::labels, edm::EDConsumerBase::labelsForToken(), LogDebug, m_hlt_results, GlobalAlgBlk::maxPhysicsTriggers, castor_dqm_sourceclient_file_cfg::path, Skims_PA_cff::paths, writedatasetfile::run, s_tcds_trigger_types, singleTopDQM_cfi::setup, jetUpdater_cfi::sort, and tier0::unique().

163  {
164  histograms.tcds_counts.clear();
165  histograms.tcds_counts.resize(sizeof(s_tcds_trigger_types) / sizeof(const char *));
166 
167  // cache the L1T trigger menu
168  histograms.l1t_counts.clear();
169  histograms.l1t_counts.resize(GlobalAlgBlk::maxPhysicsTriggers);
170 
171  // initialise the HLTConfigProvider
172  bool changed = true;
175  if (histograms.hltConfig.init(run, setup, labels.process, changed)) {
176  // number of trigger paths in labels.process
177  auto const nTriggers = histograms.hltConfig.size();
178  histograms.hltIndices.resize(nTriggers);
179 
180  unsigned int const nDatasets = histograms.hltConfig.datasetNames().size();
181  histograms.hlt_by_dataset_counts.clear();
182  histograms.hlt_by_dataset_counts.resize(nDatasets);
183 
184  histograms.datasets.clear();
185  histograms.datasets.resize(nDatasets);
186  for (unsigned int i = 0; i < nDatasets; ++i) {
187  auto const &paths = histograms.hltConfig.datasetContent(i);
188  histograms.hlt_by_dataset_counts[i].resize(paths.size());
189  histograms.datasets[i].reserve(paths.size());
190  for (auto const &path : paths) {
191  auto const triggerIdx = histograms.hltConfig.triggerIndex(path);
192  if (triggerIdx < nTriggers)
193  histograms.datasets[i].push_back(triggerIdx);
194  else
195  LogDebug("TriggerRatesMonitor")
196  << "The rates of the HLT path \"" << path << "\" (dataset: \"" << histograms.hltConfig.datasetName(i)
197  << "\") will not be monitored for this run.\nThis HLT path is not available in the process \""
198  << labels.process << "\", but it is listed in its \"datasets\" PSet.";
199  }
200  }
201  histograms.dataset_counts.clear();
202  histograms.dataset_counts.resize(nDatasets);
203 
204  unsigned int const nStreams = histograms.hltConfig.streamNames().size();
205  histograms.streams.clear();
206  histograms.streams.resize(nStreams);
207  for (unsigned int i = 0; i < nStreams; ++i) {
208  for (auto const &dataset : histograms.hltConfig.streamContent(i)) {
209  for (auto const &path : histograms.hltConfig.datasetContent(dataset)) {
210  auto const triggerIdx = histograms.hltConfig.triggerIndex(path);
211  if (triggerIdx < nTriggers)
212  histograms.streams[i].push_back(triggerIdx);
213  else
214  LogDebug("TriggerRatesMonitor")
215  << "The rates of the HLT path \"" << path << "\" (stream: \"" << histograms.hltConfig.streamName(i)
216  << "\", dataset: \"" << dataset << "\") will not be monitored for this run.\n"
217  << "This HLT path is not available in the process \"" << labels.process
218  << "\", but it is listed in its \"datasets\" PSet.";
219  }
220  }
221  std::sort(histograms.streams[i].begin(), histograms.streams[i].end());
222  auto unique_end = std::unique(histograms.streams[i].begin(), histograms.streams[i].end());
223  histograms.streams[i].resize(unique_end - histograms.streams[i].begin());
224  histograms.streams[i].shrink_to_fit();
225  }
226  histograms.stream_counts.clear();
227  histograms.stream_counts.resize(nStreams);
228  } else {
229  // HLTConfigProvider not initialised, skip the the HLT monitoring
230  edm::LogError("TriggerRatesMonitor") << "Failed to initialise HLTConfigProvider: the rates of HLT triggers, "
231  "datasets and streams will not be monitored for this run.";
232  }
233 }
const edm::EDGetTokenT< edm::TriggerResults > m_hlt_results
Log< level::Error, false > LogError
static constexpr const char *const s_tcds_trigger_types[]
def unique(seq, keepstr=True)
Definition: tier0.py:24
static constexpr unsigned int maxPhysicsTriggers
Definition: GlobalAlgBlk.h:52
void labelsForToken(EDGetToken iToken, Labels &oLabels) const
#define LogDebug(id)

◆ fillDescriptions()

void TriggerRatesMonitor::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 144 of file TriggerRatesMonitor.cc.

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, HLT_2022v15_cff::InputTag, and AlCaHLTBitMon_QueryRunRegistry::string.

144  {
146  desc.addUntracked<edm::InputTag>("l1tResults", edm::InputTag("gtStage2Digis"));
147  desc.addUntracked<edm::InputTag>("hltResults", edm::InputTag("TriggerResults"));
148  desc.addUntracked<std::string>("dqmPath", "HLT/TriggerRates");
149  desc.addUntracked<uint32_t>("lumisectionRange", 2500); // ~16 hours
150  descriptions.add("triggerRatesMonitor", desc);
151 }
void add(std::string const &label, ParameterSetDescription const &psetDescription)

Member Data Documentation

◆ m_dqm_path

const std::string TriggerRatesMonitor::m_dqm_path
private

Definition at line 137 of file TriggerRatesMonitor.cc.

Referenced by bookHistograms().

◆ m_hlt_results

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

Definition at line 136 of file TriggerRatesMonitor.cc.

Referenced by dqmAnalyze(), and dqmBeginRun().

◆ m_l1t_results

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

Definition at line 135 of file TriggerRatesMonitor.cc.

Referenced by dqmAnalyze().

◆ m_l1tMenuToken

const edm::ESGetToken<L1TUtmTriggerMenu, L1TUtmTriggerMenuRcd> TriggerRatesMonitor::m_l1tMenuToken
private

Definition at line 134 of file TriggerRatesMonitor.cc.

Referenced by bookHistograms().

◆ m_lumisections_range

const uint32_t TriggerRatesMonitor::m_lumisections_range
private

Definition at line 138 of file TriggerRatesMonitor.cc.

Referenced by bookHistograms().

◆ s_tcds_trigger_types

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

Definition at line 114 of file TriggerRatesMonitor.cc.

Referenced by bookHistograms(), and dqmBeginRun().