CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Types | Private Attributes | Static Private Attributes
L1TGlobalPrescaler Class Reference
Inheritance diagram for L1TGlobalPrescaler:
edm::one::EDFilter<> edm::one::EDFilterBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

bool filter (edm::Event &event, edm::EventSetup const &setup) override
 
 L1TGlobalPrescaler (edm::ParameterSet const &config)
 
- Public Member Functions inherited from edm::one::EDFilter<>
 EDFilter ()=default
 
 EDFilter (const EDFilter &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDFilteroperator= (const EDFilter &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDFilterBase
 EDFilterBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDFilterBase () 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::one::EDFilterBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Types

enum  Mode {
  Mode::ApplyPrescaleValues, Mode::ApplyPrescaleRatios, Mode::ApplyColumnValues, Mode::ApplyColumnRatios,
  Mode::ForcePrescaleValues, Mode::ForceColumnValues, Mode::Invalid = -1
}
 

Private Attributes

std::array< unsigned int, GlobalAlgBlk::maxPhysicsTriggersm_counters
 
edm::ESGetToken< L1TGlobalPrescalesVetos, L1TGlobalPrescalesVetosRcdm_l1tGtPrescalesVetosToken
 
const int m_l1tPrescaleColumn
 
const std::array< double, GlobalAlgBlk::maxPhysicsTriggersm_l1tPrescales
 
const edm::EDGetTokenT< GlobalAlgBlkBxCollectionm_l1tResultsToken
 
const Mode m_mode
 
int m_oldIndex
 
std::array< double, GlobalAlgBlk::maxPhysicsTriggersm_prescales
 

Static Private Attributes

static const constexpr Entry< Modes_modes []
 

Additional Inherited Members

- Public Types inherited from edm::one::EDFilterBase
typedef EDFilterBase 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 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)
 

Detailed Description

Definition at line 84 of file L1TGlobalPrescaler.cc.

Member Enumeration Documentation

◆ Mode

enum L1TGlobalPrescaler::Mode
strongprivate
Enumerator
ApplyPrescaleValues 
ApplyPrescaleRatios 
ApplyColumnValues 
ApplyColumnRatios 
ForcePrescaleValues 
ForceColumnValues 
Invalid 

Definition at line 93 of file L1TGlobalPrescaler.cc.

93  {
94  ApplyPrescaleValues, // apply the given prescale values
95  ApplyPrescaleRatios, // apply prescales equal to ratio between the given values and the ones read from the EventSetup
96  ApplyColumnValues, // apply the prescale values from the EventSetup corresponding to the given column index
97  ApplyColumnRatios, // apply prescales equal to ratio between the values corresponsing to the given column index, and the ones read from the EventSetup
98  ForcePrescaleValues, // apply the given prescale values, ignoring the prescales and masks already applied
99  ForceColumnValues, // apply the prescale values from the EventSetup corresponding to the given column index, ignoring the prescales and masks already applied
100  Invalid = -1
101  };

Constructor & Destructor Documentation

◆ L1TGlobalPrescaler()

L1TGlobalPrescaler::L1TGlobalPrescaler ( edm::ParameterSet const &  config)

Definition at line 136 of file L1TGlobalPrescaler.cc.

137  : m_mode(get_enum_value(s_modes, config.getParameter<std::string>("mode").c_str(), Mode::Invalid)),
138  m_l1tResultsToken(consumes<GlobalAlgBlkBxCollection>(config.getParameter<edm::InputTag>("l1tResults"))),
141  ? config.getParameter<std::array<double, GlobalAlgBlk::maxPhysicsTriggers>>("l1tPrescales")
142  : std::array<double, GlobalAlgBlk::maxPhysicsTriggers>{}),
145  ? config.getParameter<uint32_t>("l1tPrescaleColumn")
146  : 0),
147  m_oldIndex(-1) {
148  switch (m_mode) {
149  // if the mode is "applyPrescaleValues", use the given values
153  break;
154 
155  // otherwise we need to read the prescale values from the EventSetup
160  m_l1tGtPrescalesVetosToken = esConsumes<L1TGlobalPrescalesVetos, L1TGlobalPrescalesVetosRcd>();
161  break;
162 
163  // this should never happen
164  case Mode::Invalid:
166  << "invalid mode \"" << config.getParameter<std::string>("mode") << "\"";
167  }
168 
169  m_counters.fill(0);
170  produces<GlobalAlgBlkBxCollection>();
171 }
static const constexpr Entry< Mode > s_modes[]
edm::ESGetToken< L1TGlobalPrescalesVetos, L1TGlobalPrescalesVetosRcd > m_l1tGtPrescalesVetosToken
const std::array< double, GlobalAlgBlk::maxPhysicsTriggers > m_l1tPrescales
std::array< double, GlobalAlgBlk::maxPhysicsTriggers > m_prescales
std::array< unsigned int, GlobalAlgBlk::maxPhysicsTriggers > m_counters
Definition: config.py:1
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::EDGetTokenT< GlobalAlgBlkBxCollection > m_l1tResultsToken

Member Function Documentation

◆ fillDescriptions()

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

Definition at line 329 of file L1TGlobalPrescaler.cc.

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, JetHT_cfg::l1tResults, GlobalAlgBlk::maxPhysicsTriggers, ALCARECOPromptCalibProdSiPixelAli0T_cff::mode, or, s_modes, edm::ParameterDescriptionNode::setComment(), and AlCaHLTBitMon_QueryRunRegistry::string.

329  {
330  // collection with the original uGT results
331  edm::ParameterDescription<edm::InputTag> l1tResults("l1tResults", edm::InputTag("gtStage2Digis"), true);
332  l1tResults.setComment("Collection with the original uGT results");
333 
334  // define how to apply the prescale values
335  edm::ParameterDescription<std::string> mode("mode", "applyPrescaleValues", true);
336  mode.setComment(build_comment_from_entries("Define how to apply the prescale values:", s_modes));
337 
338  // target prescale values (for modes "applyPrescaleValues" or "applyPrescaleRatios")
340  "l1tPrescales", std::vector<double>(GlobalAlgBlk::maxPhysicsTriggers, 1.), true);
341  l1tPrescales.setComment(
342  "Target prescale values (for modes \"applyPrescaleValues\", \"applyPrescaleRatios\" or \"forcePrescaleValues\")");
343 
344  // target prescale column (for modes "applyColumnValues" or "applyColumnRatios")
345  edm::ParameterDescription<uint32_t> l1tPrescaleColumn("l1tPrescaleColumn", 0, true);
346  l1tPrescaleColumn.setComment(
347  "Target prescale column (for modes \"applyColumnValues\", \"applyColumnRatios\" or \"forceColumnValues\")");
348 
349  // validaton of all possible configurations and applyPrescaleValues example
350  {
352  desc.addNode(l1tResults);
353  desc.ifValue(
354  mode,
355  // if mode is "applyPrescaleValues", "applyPrescaleRatios" or "forcePrescaleValues", read the target prescales
356  "applyPrescaleValues" >> l1tPrescales or "applyPrescaleRatios" >> l1tPrescales or
357  "forcePrescaleValues" >> l1tPrescales or
358  // if mode is "applyColumnValues", "applyColumnRatios" or "forceColumnValues", read the target column
359  "applyColumnValues" >> l1tPrescaleColumn or "applyColumnRatios" >> l1tPrescaleColumn or
360  "forceColumnValues" >> l1tPrescaleColumn);
361  descriptions.add("l1tGlobalPrescaler", desc);
362  }
363 
364  // applyColumnRatios example
365  {
367  desc.addNode(l1tResults);
368  desc.add<std::string>("mode", "applyColumnRatios")
369  ->setComment(
370  "apply prescales equal to ratio between the values corresponsing to the given column index, and the ones "
371  "read from the EventSetup");
372  desc.addNode(l1tPrescaleColumn);
373  descriptions.add("l1tGlobalPrescalerTargetColumn", desc);
374  }
375 }
static const constexpr Entry< Mode > s_modes[]
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
void add(std::string const &label, ParameterSetDescription const &psetDescription)
static constexpr unsigned int maxPhysicsTriggers
Definition: GlobalAlgBlk.h:52

◆ filter()

bool L1TGlobalPrescaler::filter ( edm::Event event,
edm::EventSetup const &  setup 
)
overridevirtual

Implements edm::one::EDFilterBase.

Definition at line 173 of file L1TGlobalPrescaler.cc.

References ApplyColumnRatios, ApplyColumnValues, ApplyPrescaleRatios, cms::cuda::assert(), edm::errors::Configuration, ForceColumnValues, ForcePrescaleValues, GlobalAlgBlk::getAlgoDecisionFinal(), GlobalAlgBlk::getAlgoDecisionInitial(), GlobalAlgBlk::getFinalORVeto(), h, patZpeak::handle, mps_fire::i, edm::errors::LogicError, m_counters, m_l1tGtPrescalesVetosToken, m_l1tPrescaleColumn, m_l1tPrescales, m_l1tResultsToken, m_mode, m_oldIndex, m_prescales, GlobalAlgBlk::maxPhysicsTriggers, SiStripPI::min, eostools::move(), or, hltrates_dqm_sourceclient-live_cfg::prescales, hltrates_dqm_sourceclient-live_cfg::prescaleTable, mps_fire::result, GlobalAlgBlk::setAlgoDecisionFinal(), GlobalAlgBlk::setFinalOR(), GlobalAlgBlk::setFinalORPreVeto(), GlobalAlgBlk::setPreScColumn(), singleTopDQM_cfi::setup, and dqmd_manager::targets.

173  {
175  event.getByToken(m_l1tResultsToken, handle);
176 
177  // if the input collection does not have any information for bx 0,
178  // produce an empty collection, and fail
179  if (handle->isEmpty(0)) {
180  std::unique_ptr<GlobalAlgBlkBxCollection> result(new GlobalAlgBlkBxCollection());
181  event.put(std::move(result));
182  return false;
183  }
184 
185  // read the prescale index
186  int index = handle->at(0, 0).getPreScColumn();
187  assert(index >= 0);
188 
189  // Mode::ApplyPrescaleRatios
190  // apply prescales equal to ratio between the given values and the ones read from the EventSetup
193 
194  auto const& prescaleTable = h->prescale_table_;
195  if (index >= (int)prescaleTable.size())
197  << fmt::sprintf("The prescale index %d is invalid, it should be smaller than the prescale table size %d.",
198  index,
199  prescaleTable.size());
200  auto const& prescales = prescaleTable[index];
201  unsigned long i = 0;
202  for (; i < std::min(prescales.size(), (unsigned long)GlobalAlgBlk::maxPhysicsTriggers); ++i)
203  if (m_l1tPrescales[i] == 0) {
204  // if the trigger is requested to be disabled, just do it
205  m_prescales[i] = 0.;
206  } else if (prescales[i] == 0) {
207  // othersie, if the trigger was originally disabled, warn the user and keep it that way
208  m_prescales[i] = 0.;
209  edm::LogWarning("L1TGlobalPrescaler")
210  << "Request to enable the trigger " << i << " which was originally disabled\nIt will be kept disabled.";
211  } else if (m_l1tPrescales[i] < prescales[i]) {
212  // if the target prescale is lower than the original prescale, keep the trigger unprescaled
213  m_prescales[i] = 1.;
214  edm::LogWarning("L1TGlobalPrescaler")
215  << "Request to prescale the trigger " << i
216  << " less than it was originally prescaled\nNo further prescale will be applied.";
217  } else {
218  // apply the ratio of the new and old prescales
219  m_prescales[i] = (double)m_l1tPrescales[i] / prescales[i];
220  }
221  for (; i < (unsigned long)GlobalAlgBlk::maxPhysicsTriggers; ++i)
222  // disable the triggers not included in the prescale table
223  m_prescales[i] = 0.;
224  // reset the prescales
225  m_counters.fill(0);
226  m_oldIndex = index;
227  }
228 
229  // Mode::ApplyColumnValues and Mode::ForceColumnValues
230  // apply the prescale values from the EventSetup corresponding to the given column index
233  auto const& prescaleTable = h->prescale_table_;
234  if (m_l1tPrescaleColumn >= (int)prescaleTable.size())
236  << fmt::sprintf("The prescale index %d is invalid, it should be smaller than the prescale table size %d.",
238  prescaleTable.size());
240  unsigned long i = 0;
241  for (; i < std::min(targets.size(), (unsigned long)GlobalAlgBlk::maxPhysicsTriggers); ++i)
242  // read the prescales from the EventSetup
243  m_prescales[i] = targets[i];
244  for (; i < (unsigned long)GlobalAlgBlk::maxPhysicsTriggers; ++i)
245  // disable the triggers not included in the prescale table
246  m_prescales[i] = 0.;
247  // reset the prescales
248  m_counters.fill(0);
250  }
251 
252  // Mode::ApplyColumnRatios
253  // apply prescales equal to ratio between the values corresponsing to the given column index, and the ones read from the EventSetup
256  auto const& prescaleTable = h->prescale_table_;
257  if (index >= (int)prescaleTable.size())
259  << fmt::sprintf("The prescale index %d is invalid, it should be smaller than the prescale table size %d.",
260  index,
261  prescaleTable.size());
262  if (m_l1tPrescaleColumn >= (int)prescaleTable.size())
264  << fmt::sprintf("The prescale index %d is invalid, it should be smaller than the prescale table size %d.",
266  prescaleTable.size());
267  auto const& prescales = prescaleTable[index];
269  unsigned long i = 0;
270  for (; i < std::min({prescales.size(), targets.size(), (unsigned long)GlobalAlgBlk::maxPhysicsTriggers}); ++i)
271  if (prescales[i] == 0)
272  // if the trigger was disabled, keep it disabled
273  m_prescales[i] = 0.;
274  else
275  // if the target prescale is lower than the original prescale, keep the trigger unprescaled
276  m_prescales[i] = targets[i] < prescales[i] ? 1. : (double)targets[i] / prescales[i];
277  for (; i < (unsigned long)GlobalAlgBlk::maxPhysicsTriggers; ++i)
278  // disable the triggers not included in the prescale table
279  m_prescales[i] = 0.;
280  // reset the prescales
281  m_counters.fill(0);
282  m_oldIndex = index;
283  }
284 
285  // make a copy of the GlobalAlgBlk for bx 0
286  GlobalAlgBlk algoBlock = handle->at(0, 0);
287 
288  bool finalOr = false;
289  std::vector<bool> const& decision = (m_mode == Mode::ForceColumnValues or m_mode == Mode::ForcePrescaleValues)
290  ? algoBlock.getAlgoDecisionInitial()
291  : algoBlock.getAlgoDecisionFinal();
292 
293  for (unsigned int i = 0; i < GlobalAlgBlk::maxPhysicsTriggers; ++i) {
294  if (m_prescales[i] == 0) {
295  // mask this trigger: reset the bit
296  algoBlock.setAlgoDecisionFinal(i, false);
297  } else if (decision[i]) {
298  // prescale this trigger
299  ++m_counters[i];
300  if (std::fmod(m_counters[i], m_prescales[i]) < 1) {
301  // the prescale is successful, set the bit
302  algoBlock.setAlgoDecisionFinal(i, true);
303  finalOr = true;
304  } else {
305  // the prescale failed, reset the bit
306  algoBlock.setAlgoDecisionFinal(i, false);
307  }
308  }
309  }
310 
311  // set the final OR
312  algoBlock.setFinalORPreVeto(finalOr);
313  if (algoBlock.getFinalORVeto())
314  finalOr = false;
315  algoBlock.setFinalOR(finalOr);
316 
317  // set the new prescale column
320 
321  // create a new GlobalAlgBlkBxCollection, and set the new prescaled decisions for bx 0
322  std::unique_ptr<GlobalAlgBlkBxCollection> result(new GlobalAlgBlkBxCollection());
323  result->push_back(0, algoBlock);
324  event.put(std::move(result));
325 
326  return finalOr;
327 }
edm::ESGetToken< L1TGlobalPrescalesVetos, L1TGlobalPrescalesVetosRcd > m_l1tGtPrescalesVetosToken
void setFinalORPreVeto(bool fOR)
Definition: GlobalAlgBlk.h:59
const std::array< double, GlobalAlgBlk::maxPhysicsTriggers > m_l1tPrescales
std::array< double, GlobalAlgBlk::maxPhysicsTriggers > m_prescales
std::array< unsigned int, GlobalAlgBlk::maxPhysicsTriggers > m_counters
BXVector< GlobalAlgBlk > GlobalAlgBlkBxCollection
Definition: GlobalAlgBlk.h:31
assert(be >=bs)
std::vector< bool > const & getAlgoDecisionFinal() const
Definition: GlobalAlgBlk.h:84
const bool getFinalORVeto() const
Definition: GlobalAlgBlk.h:69
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
void setFinalOR(bool fOR)
Definition: GlobalAlgBlk.h:60
const edm::EDGetTokenT< GlobalAlgBlkBxCollection > m_l1tResultsToken
std::vector< bool > const & getAlgoDecisionInitial() const
Get decision bits.
Definition: GlobalAlgBlk.h:82
static constexpr unsigned int maxPhysicsTriggers
Definition: GlobalAlgBlk.h:52
void setPreScColumn(int psC)
Definition: GlobalAlgBlk.h:61
Log< level::Warning, false > LogWarning
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
def move(src, dest)
Definition: eostools.py:511
void setAlgoDecisionFinal(unsigned int bit, bool val)
Definition: GlobalAlgBlk.cc:94

Member Data Documentation

◆ m_counters

std::array<unsigned int, GlobalAlgBlk::maxPhysicsTriggers> L1TGlobalPrescaler::m_counters
private

Definition at line 128 of file L1TGlobalPrescaler.cc.

Referenced by filter().

◆ m_l1tGtPrescalesVetosToken

edm::ESGetToken<L1TGlobalPrescalesVetos, L1TGlobalPrescalesVetosRcd> L1TGlobalPrescaler::m_l1tGtPrescalesVetosToken
private

Definition at line 131 of file L1TGlobalPrescaler.cc.

Referenced by filter().

◆ m_l1tPrescaleColumn

const int L1TGlobalPrescaler::m_l1tPrescaleColumn
private

Definition at line 129 of file L1TGlobalPrescaler.cc.

Referenced by filter().

◆ m_l1tPrescales

const std::array<double, GlobalAlgBlk::maxPhysicsTriggers> L1TGlobalPrescaler::m_l1tPrescales
private

Definition at line 126 of file L1TGlobalPrescaler.cc.

Referenced by filter().

◆ m_l1tResultsToken

const edm::EDGetTokenT<GlobalAlgBlkBxCollection> L1TGlobalPrescaler::m_l1tResultsToken
private

Definition at line 125 of file L1TGlobalPrescaler.cc.

Referenced by filter().

◆ m_mode

const Mode L1TGlobalPrescaler::m_mode
private

Definition at line 124 of file L1TGlobalPrescaler.cc.

Referenced by filter().

◆ m_oldIndex

int L1TGlobalPrescaler::m_oldIndex
private

Definition at line 130 of file L1TGlobalPrescaler.cc.

Referenced by filter().

◆ m_prescales

std::array<double, GlobalAlgBlk::maxPhysicsTriggers> L1TGlobalPrescaler::m_prescales
private

Definition at line 127 of file L1TGlobalPrescaler.cc.

Referenced by filter().

◆ s_modes

const constexpr Entry< L1TGlobalPrescaler::Mode > L1TGlobalPrescaler::s_modes
staticprivate
Initial value:
{
{Mode::ApplyPrescaleValues, "applyPrescaleValues", "apply the given prescale values"},
"applyPrescaleRatios",
"apply prescales equal to ratio between the given values and the ones read from the EventSetup"},
"applyColumnValues",
"apply the prescale values from the EventSetup corresponding to the given column index"},
"applyColumnRatios",
"apply prescales equal to ratio between the values corresponsing to the given column index, and the ones read "
"from the EventSetup"},
"forcePrescaleValues",
"apply the given prescale values, ignoring the prescales and masks already applied"},
"forceColumnValues",
"apply the prescale values from the EventSetup corresponding to the given column index, ignoring the prescales "
"and masks already applied"},
{Mode::Invalid, nullptr, nullptr}}

Definition at line 103 of file L1TGlobalPrescaler.cc.

Referenced by fillDescriptions().