CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
L1GTAlgoBlockProducer Class Reference
Inheritance diagram for L1GTAlgoBlockProducer:
edm::one::EDProducer< edm::RunCache< std::unordered_map< std::string, unsigned int > > > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Classes

struct  AlgoDefinition
 

Public Member Functions

 L1GTAlgoBlockProducer (const edm::ParameterSet &)
 
 ~L1GTAlgoBlockProducer () override=default
 
- Public Member Functions inherited from edm::one::EDProducer< edm::RunCache< std::unordered_map< std::string, unsigned int > > >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=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 EDProduceroperator= (const EDProducer &)=delete
 
bool wantsGlobalLuminosityBlocks () const noexcept final
 
bool wantsGlobalRuns () const noexcept final
 
bool wantsInputProcessBlocks () const noexcept final
 
bool wantsProcessBlocks () const noexcept final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const noexcept
 
bool wantsStreamRuns () const noexcept
 
 ~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
 
ESResolverIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESResolverIndex > 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
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProductResolverIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

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

Private Member Functions

std::shared_ptr< std::unordered_map< std::string, unsigned int > > globalBeginRun (edm::Run const &, edm::EventSetup const &) const override
 
void globalEndRun (edm::Run const &, edm::EventSetup const &) override
 
void init (const edm::ProcessHistory &)
 
void produce (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

std::map< std::string, AlgoDefinitionalgoDefinitions_
 
int bunchCrossingEmu_ = 0
 
edm::GetterOfProducts< P2GTCandidateVectorRefgetterOfPassedReferences_
 
bool initialized_ = false
 

Additional Inherited Members

- Public Types inherited from edm::one::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 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 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 315 of file L1GTAlgoBlockProducer.cc.

Constructor & Destructor Documentation

◆ L1GTAlgoBlockProducer()

L1GTAlgoBlockProducer::L1GTAlgoBlockProducer ( const edm::ParameterSet config)
explicit

Definition at line 365 of file L1GTAlgoBlockProducer.cc.

References ALCARECOPromptCalibProdSiPixelAli0T_cff::algoConfig, algoDefinitions_, L1GTAlgoBlockProducer::AlgoDefinition::bunchMask_, edm::ProducerBase::callWhenNewProductsRegistered(), edm::EDConsumerBase::consumesCollector(), L1GTAlgoBlockProducer::AlgoDefinition::evaluator_, Exception, pathStatusExpression::ShuntingYardAlgorithm::finish(), getterOfPassedReferences_, L1GTAlgoBlockProducer::AlgoDefinition::isVeto_, ALPAKA_ACCELERATOR_NAMESPACE::vertexFinder::it, hltDoubleTkMuon157L1TkMuonFilter_cfi::logicalExpression, eostools::move(), mergeVDriftHistosByStation::name, hltMonBTagIPClient_cfi::pathName, pathStatusExpression::ShuntingYardAlgorithm::pathNames(), L1GTAlgoBlockProducer::AlgoDefinition::pathNames_, funct::pow(), L1GTAlgoBlockProducer::AlgoDefinition::prescale_, L1GTAlgoBlockProducer::AlgoDefinition::prescalePreview_, AlCaHLTBitMon_QueryRunRegistry::string, ClusterTask_cfi::triggerTypes, and L1GTAlgoBlockProducer::AlgoDefinition::triggerTypes_.

368 
369  for (const auto& algoConfig : config.getParameterSetVector("algorithms")) {
370  const std::string logicalExpression = algoConfig.getParameter<std::string>("expression");
371  std::string name = algoConfig.getParameter<std::string>("name");
372  if (name.empty()) {
374  }
375 
376  pathStatusExpression::ShuntingYardAlgorithm shuntingYardAlgorithm;
377  pathStatusExpression::Grammar<std::string::const_iterator> grammar(&shuntingYardAlgorithm);
378 
379  auto it = logicalExpression.cbegin();
380  if (!qi::phrase_parse(it, logicalExpression.cend(), grammar, ascii::space) || (it != logicalExpression.cend())) {
381  throw cms::Exception("Configuration") << "Syntax error in logical expression. Here is an example of how\n"
382  << "the syntax should look:\n"
383  << " \"path1 and not (path2 or not path3)\"\n"
384  << "The expression must contain alternating appearances of operands\n"
385  << "which are path names and binary operators which can be \'and\'\n"
386  << "or \'or\', with a path name at the beginning and end. There\n"
387  << "must be at least one path name. In addition to the alternating\n"
388  << "path names and binary operators, the unary operator \'not\' can\n"
389  << "be inserted before a path name or a begin parenthesis.\n"
390  << "Parentheses are allowed. Parentheses must come in matching pairs.\n"
391  << "Matching begin and end parentheses must contain a complete and\n"
392  << "syntactically correct logical expression. There must be at least\n"
393  << "one space or parenthesis between operators and path names. Extra\n"
394  << "space is ignored and OK. Path names can only contain upper and\n"
395  << "lower case letters, numbers, and underscores. A path name cannot\n"
396  << "be the same as an operator name.\n";
397  }
398 
399  AlgoDefinition definition;
400 
401  for (const std::string& pathName : shuntingYardAlgorithm.pathNames()) {
402  definition.pathNames_.push_back(pathName);
403  }
404 
405  definition.evaluator_ = shuntingYardAlgorithm.finish();
406  double dPrescale = algoConfig.getParameter<double>("prescale");
407  if ((dPrescale < 1. || dPrescale >= std::pow(2, 24) / 100 - 1) && dPrescale != 0) {
408  throw cms::Exception("Configuration")
409  << "Prescale value error. Expected prescale value between 1 and 2^24/100 - 1 or 0 got " << dPrescale << "."
410  << std::endl;
411  }
412 
413  definition.prescale_ = std::round(dPrescale * 100);
414 
415  double dPrescalePreview = algoConfig.getParameter<double>("prescalePreview");
416  if ((dPrescalePreview < 1. || dPrescalePreview >= std::pow(2, 24) / 100 - 1) && dPrescalePreview != 0) {
417  throw cms::Exception("Configuration")
418  << "PrescalePreview value error. Expected prescale value between 1 and 2^24/100 - 1 or 0 got "
419  << dPrescalePreview << "." << std::endl;
420  }
421 
422  definition.prescalePreview_ = std::round(dPrescalePreview * 100);
423 
424  std::vector<unsigned int> vBunchMask = algoConfig.getParameter<std::vector<unsigned int>>("bunchMask");
425  definition.bunchMask_ =
426  std::set<unsigned int>(std::make_move_iterator(vBunchMask.begin()), std::make_move_iterator(vBunchMask.end()));
427 
428  definition.isVeto_ = algoConfig.getParameter<bool>("veto");
429  definition.triggerTypes_ = 0;
430  const std::vector<int> triggerTypes = algoConfig.getParameter<std::vector<int>>("triggerTypes");
431  for (int type : triggerTypes) {
432  definition.triggerTypes_ |= type;
433  }
434 
435  definition.evaluator_->init(iC);
436  auto [iter, wasInserted] = algoDefinitions_.emplace(std::move(name), std::move(definition));
437  if (!wasInserted) {
438  throw cms::Exception("Configuration")
439  << "Algorithm " << iter->first << " already exists. Algorithm names must be unique." << std::endl;
440  }
441  }
442 
444  produces<P2GTAlgoBlockMap>();
445 }
void callWhenNewProductsRegistered(std::function< void(BranchDescription const &)> const &func)
Definition: ProducerBase.h:87
Definition: config.py:1
std::map< std::string, AlgoDefinition > algoDefinitions_
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
edm::GetterOfProducts< P2GTCandidateVectorRef > getterOfPassedReferences_
const std::vector< std::string > & pathNames()
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
def move(src, dest)
Definition: eostools.py:511

◆ ~L1GTAlgoBlockProducer()

L1GTAlgoBlockProducer::~L1GTAlgoBlockProducer ( )
overridedefault

Member Function Documentation

◆ fillDescriptions()

void L1GTAlgoBlockProducer::fillDescriptions ( edm::ConfigurationDescriptions description)
static

Definition at line 348 of file L1GTAlgoBlockProducer.cc.

References edm::ParameterSetDescription::add(), submitPVResolutionJobs::desc, makeListRunsInFiles::description, and AlCaHLTBitMon_QueryRunRegistry::string.

348  {
350  algoDesc.add<std::string>("name", "");
351  algoDesc.add<std::string>("expression");
352  algoDesc.add<double>("prescale", 1);
353  algoDesc.add<double>("prescalePreview", 1);
354  algoDesc.add<std::vector<unsigned int>>("bunchMask", {});
355 
356  algoDesc.add<std::vector<int>>("triggerTypes", {1});
357  algoDesc.add<bool>("veto", false);
358 
360  desc.addVPSet("algorithms", algoDesc);
361 
362  description.addWithDefaultLabel(desc);
363 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)

◆ globalBeginRun()

std::shared_ptr< std::unordered_map< std::string, unsigned int > > L1GTAlgoBlockProducer::globalBeginRun ( edm::Run const &  ,
edm::EventSetup const &   
) const
overrideprivate

Definition at line 496 of file L1GTAlgoBlockProducer.cc.

497  {
498  // Reset prescale counters at the beginning of a new run
499  return std::make_shared<std::unordered_map<std::string, unsigned int>>();
500 }

◆ globalEndRun()

void L1GTAlgoBlockProducer::globalEndRun ( edm::Run const &  ,
edm::EventSetup const &   
)
inlineoverrideprivate

Definition at line 340 of file L1GTAlgoBlockProducer.cc.

340 {}

◆ init()

void L1GTAlgoBlockProducer::init ( const edm::ProcessHistory pHistory)
private

Definition at line 447 of file L1GTAlgoBlockProducer.cc.

References algoDefinitions_, looper::cfg, edm::ProcessHistory::getConfigurationForProcess(), edm::pset::Registry::getMapped(), EgammaHLTValidationUtils::getProcessName(), edm::pset::Registry::instance(), instance, mod(), mergeVDriftHistosByStation::name, hltMonBTagIPClient_cfi::pathName, muonDTDigis_cfi::pset, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by produce().

447  {
449 
451 
452  pHistory.getConfigurationForProcess(pName, cfg);
453 
454  const edm::ParameterSet* pset = edm::pset::Registry::instance()->getMapped(cfg.parameterSetID());
455 
456  for (auto& [name, algoDef] : algoDefinitions_) {
457  for (const std::string& pathName : algoDef.pathNames_) {
458  if (pset->existsAs<std::vector<std::string>>(pathName)) {
459  const auto& modules = pset->getParameter<std::vector<std::string>>(pathName);
460  for (const auto& mod : modules) {
461  if (mod.front() != std::string("-") && pset->exists(mod)) {
462  const auto& modPSet = pset->getParameterSet(mod);
463  if (modPSet.getParameter<std::string>("@module_edm_type") == "EDFilter") {
464  if (modPSet.getParameter<std::string>("@module_type") == "L1GTSingleObjectCond") {
465  algoDef.filtModules_.insert({mod, modPSet.getParameter<edm::InputTag>("tag").instance()});
466  } else if (modPSet.getParameter<std::string>("@module_type") == "L1GTDoubleObjectCond") {
467  algoDef.filtModules_.insert(
468  {mod, modPSet.getParameterSet("collection1").getParameter<edm::InputTag>("tag").instance()});
469  algoDef.filtModules_.insert(
470  {mod, modPSet.getParameterSet("collection2").getParameter<edm::InputTag>("tag").instance()});
471  } else if (modPSet.getParameter<std::string>("@module_type") == "L1GTTripleObjectCond") {
472  algoDef.filtModules_.insert(
473  {mod, modPSet.getParameterSet("collection1").getParameter<edm::InputTag>("tag").instance()});
474  algoDef.filtModules_.insert(
475  {mod, modPSet.getParameterSet("collection2").getParameter<edm::InputTag>("tag").instance()});
476  algoDef.filtModules_.insert(
477  {mod, modPSet.getParameterSet("collection3").getParameter<edm::InputTag>("tag").instance()});
478  } else if (modPSet.getParameter<std::string>("@module_type") == "L1GTQuadObjectCond") {
479  algoDef.filtModules_.insert(
480  {mod, modPSet.getParameterSet("collection1").getParameter<edm::InputTag>("tag").instance()});
481  algoDef.filtModules_.insert(
482  {mod, modPSet.getParameterSet("collection2").getParameter<edm::InputTag>("tag").instance()});
483  algoDef.filtModules_.insert(
484  {mod, modPSet.getParameterSet("collection3").getParameter<edm::InputTag>("tag").instance()});
485  algoDef.filtModules_.insert(
486  {mod, modPSet.getParameterSet("collection4").getParameter<edm::InputTag>("tag").instance()});
487  }
488  }
489  }
490  }
491  }
492  }
493  }
494 }
bool getMapped(key_type const &k, value_type &result) const
Definition: Registry.cc:17
static PFTauRenderPlugin instance
bool getConfigurationForProcess(std::string const &name, ProcessConfiguration &config) const
std::map< std::string, AlgoDefinition > algoDefinitions_
def getProcessName(pdgGen, requiredNumberOfGeneratedObjects)
T mod(const T &a, const T &b)
Definition: ecalDccMap.h:4
static Registry * instance()
Definition: Registry.cc:12

◆ produce()

void L1GTAlgoBlockProducer::produce ( edm::Event event,
const edm::EventSetup eventSetup 
)
overrideprivatevirtual

Implements edm::one::EDProducerBase.

Definition at line 502 of file L1GTAlgoBlockProducer.cc.

References correctedPhotons_cfi::algoCollection, algoDefinitions_, bunchCrossingEmu_, edm::GetterOfProducts< T >::fillHandles(), getterOfPassedReferences_, patZpeak::handle, init(), initialized_, instance, eostools::move(), mergeVDriftHistosByStation::name, and AlCaHLTBitMon_QueryRunRegistry::string.

502  {
503  if (!initialized_) {
504  init(event.processHistory());
505  initialized_ = true;
506  }
507 
508  std::vector<edm::Handle<P2GTCandidateVectorRef>> handles;
510 
511  std::unique_ptr<P2GTAlgoBlockMap> algoCollection = std::make_unique<P2GTAlgoBlockMap>();
512 
513  std::unordered_map<std::string, unsigned int>& prescaleCounters = *runCache(event.getRun().index());
514 
515  int bunchCrossing = event.isRealData() ? event.bunchCrossing() : bunchCrossingEmu_ + 1;
516 
517  for (const auto& [name, algoDef] : algoDefinitions_) {
518  bool decisionBeforeBxAndPrescale = algoDef.evaluator_->evaluate(event);
519  bool decisionBeforePrescale = decisionBeforeBxAndPrescale && algoDef.bunchMask_.count(bunchCrossing) == 0;
520  bool decisionFinal = false;
521  bool decisionFinalPreview = false;
522 
523  if (algoDef.prescale_ != 0 && decisionBeforePrescale) {
524  if (prescaleCounters.count(name) > 0) {
525  prescaleCounters[name] += 100;
526  } else {
527  prescaleCounters[name] = 100;
528  }
529 
530  if (prescaleCounters[name] >= algoDef.prescale_) {
531  decisionFinal = true;
532  prescaleCounters[name] -= algoDef.prescale_;
533  } else {
534  decisionFinal = false;
535  }
536  }
537 
538  if (algoDef.prescalePreview_ != 0 && decisionBeforePrescale) {
539  std::string previewName = name + "_preview";
540  if (prescaleCounters.count(previewName) > 0) {
541  prescaleCounters[previewName] += 100;
542  } else {
543  prescaleCounters[previewName] = 100;
544  }
545 
546  if (prescaleCounters[previewName] >= algoDef.prescalePreview_) {
547  decisionFinalPreview = true;
548  prescaleCounters[previewName] -= algoDef.prescalePreview_;
549  } else {
550  decisionFinalPreview = false;
551  }
552  }
553 
554  P2GTCandidateVectorRef trigObjects;
555 
556  if (decisionFinal) {
557  for (const auto& handle : handles) {
558  const std::string& module = handle.provenance()->moduleLabel();
559  const std::string& instance = handle.provenance()->productInstanceName();
560 
561  if (algoDef.filtModules_.count({module, instance}) > 0) {
562  trigObjects.insert(trigObjects.end(), handle->begin(), handle->end());
563  }
564  }
565  }
566 
567  algoCollection->emplace(name,
568  P2GTAlgoBlock(decisionBeforeBxAndPrescale,
569  decisionBeforePrescale,
570  decisionFinal,
571  decisionFinalPreview,
572  algoDef.isVeto_,
573  algoDef.triggerTypes_,
574  std::move(trigObjects)));
575  }
576 
577  event.put(std::move(algoCollection));
578 
579  bunchCrossingEmu_ = (bunchCrossingEmu_ + 1) % 3564;
580 }
static PFTauRenderPlugin instance
std::map< std::string, AlgoDefinition > algoDefinitions_
std::vector< BaseVolumeHandle * > handles
edm::GetterOfProducts< P2GTCandidateVectorRef > getterOfPassedReferences_
void init(const edm::ProcessHistory &)
void fillHandles(ProductContainer const &productContainer, std::vector< edm::Handle< T >> &handles) const
std::vector< P2GTCandidateRef > P2GTCandidateVectorRef
Definition: P2GTCandidate.h:20
def move(src, dest)
Definition: eostools.py:511
Definition: event.py:1

Member Data Documentation

◆ algoDefinitions_

std::map<std::string, AlgoDefinition> L1GTAlgoBlockProducer::algoDefinitions_
private

Definition at line 343 of file L1GTAlgoBlockProducer.cc.

Referenced by init(), L1GTAlgoBlockProducer(), and produce().

◆ bunchCrossingEmu_

int L1GTAlgoBlockProducer::bunchCrossingEmu_ = 0
private

Definition at line 345 of file L1GTAlgoBlockProducer.cc.

Referenced by produce().

◆ getterOfPassedReferences_

edm::GetterOfProducts<P2GTCandidateVectorRef> L1GTAlgoBlockProducer::getterOfPassedReferences_
private

Definition at line 342 of file L1GTAlgoBlockProducer.cc.

Referenced by L1GTAlgoBlockProducer(), and produce().

◆ initialized_

bool L1GTAlgoBlockProducer::initialized_ = false
private

Definition at line 344 of file L1GTAlgoBlockProducer.cc.

Referenced by produce().