CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes
edm::eventsetup::EventSetupProvider Class Reference

#include <EventSetupProvider.h>

Public Types

typedef std::pair< DataType, DataLabelDataKeyInfo
 
typedef std::string DataLabel
 
typedef std::string DataType
 
typedef std::map< ComponentDescription, RecordToDataMapPreferredProviderInfo
 
typedef std::string RecordName
 
typedef std::multimap< RecordName, DataKeyInfoRecordToDataMap
 

Public Member Functions

void add (std::shared_ptr< DataProxyProvider >)
 
void add (std::shared_ptr< EventSetupRecordIntervalFinder >)
 
void addRecord (const EventSetupRecordKey &iKey)
 Intended for use only in tests. More...
 
void checkESProducerSharing (EventSetupProvider &precedingESProvider, std::set< ParameterSetIDHolder > &sharingCheckDone, std::map< EventSetupRecordKey, std::vector< ComponentDescription const * >> &referencedESProducers, EventSetupsController &esController)
 
void clearInitializationData ()
 
bool doRecordsMatch (EventSetupProvider &precedingESProvider, EventSetupRecordKey const &eventSetupRecordKey, std::map< EventSetupRecordKey, bool > &allComponentsMatch, EventSetupsController const &esController)
 
bool doWeNeedToWaitForIOVsToFinish (IOVSyncValue const &) const
 
std::shared_ptr< const EventSetupImpleventSetupForInstance (IOVSyncValue const &, bool &newEventSetupImpl)
 
EventSetupImpl const & eventSetupImpl () const
 
 EventSetupProvider (ActivityRegistry const *, tbb::task_arena *, unsigned subProcessIndex=0U, PreferredProviderInfo const *iInfo=nullptr)
 
 EventSetupProvider (EventSetupProvider const &)=delete
 
void fillKeys (std::set< EventSetupRecordKey > &keys) const
 
void fillRecordsNotAllowingConcurrentIOVs (std::set< EventSetupRecordKey > &recordsNotAllowingConcurrentIOVs) const
 
void fillReferencedDataKeys (EventSetupRecordKey const &eventSetupRecordKey)
 
void finishConfiguration (NumberOfConcurrentIOVs const &, bool &hasNonconcurrentFinder)
 
void forceCacheClear ()
 Used when testing that all code properly updates on IOV changes of all Records. More...
 
EventSetupProvider const & operator= (EventSetupProvider const &)=delete
 
std::set< ComponentDescriptionproxyProviderDescriptions () const
 
ESRecordsToProxyIndices recordsToProxyIndices () const
 
void replaceExisting (std::shared_ptr< DataProxyProvider >)
 
void resetRecordPlusDependentRecords (EventSetupRecordKey const &)
 Used when we need to force a Record to reset all its proxies. More...
 
void resetRecordToProxyPointers ()
 
void setAllValidityIntervals (const IOVSyncValue &iValue)
 Set the validity intervals in all EventSetupRecordProviders. More...
 
void setPreferredProviderInfo (PreferredProviderInfo const &iInfo)
 
unsigned subProcessIndex () const
 
EventSetupRecordProvidertryToGetRecordProvider (const EventSetupRecordKey &iKey)
 
 ~EventSetupProvider ()
 

Static Public Member Functions

static void logInfoWhenSharing (ParameterSet const &iConfiguration)
 

Private Types

using RecordKeys = std::vector< EventSetupRecordKey >
 
using RecordProviders = std::vector< std::shared_ptr< EventSetupRecordProvider > >
 

Private Member Functions

void determinePreferred ()
 
void insert (EventSetupRecordKey const &, std::unique_ptr< EventSetupRecordProvider >)
 
std::shared_ptr< EventSetupRecordProvider > & recordProvider (const EventSetupRecordKey &iKey)
 

Private Attributes

ActivityRegistry const * activityRegistry_
 
std::unique_ptr< std::vector< std::shared_ptr< DataProxyProvider > > > dataProviders_
 
propagate_const< std::shared_ptr< EventSetupImpl > > eventSetupImpl_
 
std::unique_ptr< std::vector< std::shared_ptr< EventSetupRecordIntervalFinder > > > finders_
 
bool mustFinishConfiguration_
 
std::unique_ptr< PreferredProviderInfopreferredProviderInfo_
 
std::unique_ptr< std::map< ParameterSetIDHolder, std::set< EventSetupRecordKey > > > psetIDToRecordKey_
 
RecordKeys recordKeys_
 
RecordProviders recordProviders_
 
std::unique_ptr< std::set< EventSetupRecordKey > > recordsWithALooperProxy_
 
std::unique_ptr< std::map< EventSetupRecordKey, std::vector< std::shared_ptr< EventSetupRecordIntervalFinder > > > > recordToFinders_
 
std::unique_ptr< std::map< EventSetupRecordKey, std::map< DataKey, ComponentDescription > > > recordToPreferred_
 
std::unique_ptr< std::map< EventSetupRecordKey, std::map< DataKey, ComponentDescription const * > > > referencedDataKeys_
 
unsigned subProcessIndex_
 
tbb::task_arena * taskArena_
 

Detailed Description

Description: Factory for a EventSetup

Usage: <usage>

Definition at line 50 of file EventSetupProvider.h.

Member Typedef Documentation

◆ DataKeyInfo

Definition at line 55 of file EventSetupProvider.h.

◆ DataLabel

Definition at line 54 of file EventSetupProvider.h.

◆ DataType

Definition at line 53 of file EventSetupProvider.h.

◆ PreferredProviderInfo

Definition at line 57 of file EventSetupProvider.h.

◆ RecordKeys

Definition at line 132 of file EventSetupProvider.h.

◆ RecordName

Definition at line 52 of file EventSetupProvider.h.

◆ RecordProviders

Definition at line 135 of file EventSetupProvider.h.

◆ RecordToDataMap

Definition at line 56 of file EventSetupProvider.h.

Constructor & Destructor Documentation

◆ EventSetupProvider() [1/2]

edm::eventsetup::EventSetupProvider::EventSetupProvider ( ActivityRegistry const *  activityRegistry,
tbb::task_arena *  taskArena,
unsigned  subProcessIndex = 0U,
PreferredProviderInfo const *  iInfo = nullptr 
)

Definition at line 40 of file EventSetupProvider.cc.

44  : activityRegistry_(activityRegistry),
45  taskArena_(taskArena),
48  preferredProviderInfo_((nullptr != iInfo) ? (new PreferredProviderInfo(*iInfo)) : nullptr),
49  finders_(new std::vector<std::shared_ptr<EventSetupRecordIntervalFinder>>()),
50  dataProviders_(new std::vector<std::shared_ptr<DataProxyProvider>>()),
51  referencedDataKeys_(new std::map<EventSetupRecordKey, std::map<DataKey, ComponentDescription const*>>),
53  new std::map<EventSetupRecordKey, std::vector<std::shared_ptr<EventSetupRecordIntervalFinder>>>),
54  psetIDToRecordKey_(new std::map<ParameterSetIDHolder, std::set<EventSetupRecordKey>>),
55  recordToPreferred_(new std::map<EventSetupRecordKey, std::map<DataKey, ComponentDescription>>),
56  recordsWithALooperProxy_(new std::set<EventSetupRecordKey>) {}

◆ EventSetupProvider() [2/2]

edm::eventsetup::EventSetupProvider::EventSetupProvider ( EventSetupProvider const &  )
delete

◆ ~EventSetupProvider()

edm::eventsetup::EventSetupProvider::~EventSetupProvider ( )

Definition at line 58 of file EventSetupProvider.cc.

58 { forceCacheClear(); }

References forceCacheClear().

Member Function Documentation

◆ add() [1/2]

void edm::eventsetup::EventSetupProvider::add ( std::shared_ptr< DataProxyProvider iProvider)

◆ add() [2/2]

void edm::eventsetup::EventSetupProvider::add ( std::shared_ptr< EventSetupRecordIntervalFinder iFinder)

Definition at line 104 of file EventSetupProvider.cc.

104  {
105  assert(iFinder.get() != nullptr);
106  finders_->push_back(iFinder);
107  }

References cms::cuda::assert(), and finders_.

Referenced by counter.Counter::register(), SequenceTypes.Task::remove(), and SequenceTypes.Task::replace().

◆ addRecord()

void edm::eventsetup::EventSetupProvider::addRecord ( const EventSetupRecordKey iKey)

Intended for use only in tests.

Definition at line 738 of file EventSetupProvider.cc.

738  {
739  insert(iKey, std::unique_ptr<EventSetupRecordProvider>());
740  eventSetupImpl_->setKeyIters(recordKeys_.begin(), recordKeys_.end());
741  }

References eventSetupImpl_, insert(), and recordKeys_.

◆ checkESProducerSharing()

void edm::eventsetup::EventSetupProvider::checkESProducerSharing ( EventSetupProvider precedingESProvider,
std::set< ParameterSetIDHolder > &  sharingCheckDone,
std::map< EventSetupRecordKey, std::vector< ComponentDescription const * >> &  referencedESProducers,
EventSetupsController esController 
)

Definition at line 394 of file EventSetupProvider.cc.

398  {
399  edm::LogVerbatim("EventSetupSharing")
400  << "EventSetupProvider::checkESProducerSharing: Checking processes with SubProcess Indexes "
401  << subProcessIndex() << " and " << precedingESProvider.subProcessIndex();
402 
403  if (referencedESProducers.empty()) {
404  for (auto& recProvider : recordProviders_) {
405  recProvider->getReferencedESProducers(referencedESProducers);
406  }
407  }
408 
409  // This records whether the configurations of all the DataProxyProviders
410  // and finders matches for a particular pair of processes and
411  // a particular record and also the records it depends on.
412  std::map<EventSetupRecordKey, bool> allComponentsMatch;
413 
414  std::map<ParameterSetID, bool> candidateNotRejectedYet;
415 
416  // Loop over all the ESProducers which have a DataProxy
417  // referenced by any EventSetupRecord in this EventSetupProvider
418  for (auto const& iRecord : referencedESProducers) {
419  for (auto const& iComponent : iRecord.second) {
420  ParameterSetID const& psetID = iComponent->pid_;
421  ParameterSetIDHolder psetIDHolder(psetID);
422  if (sharingCheckDone.find(psetIDHolder) != sharingCheckDone.end())
423  continue;
424 
425  bool firstProcessWithThisPSet = false;
426  bool precedingHasMatchingPSet = false;
427 
428  esController.lookForMatches(psetID,
430  precedingESProvider.subProcessIndex_,
431  firstProcessWithThisPSet,
432  precedingHasMatchingPSet);
433 
434  if (firstProcessWithThisPSet) {
435  sharingCheckDone.insert(psetIDHolder);
436  allComponentsMatch[iRecord.first] = false;
437  continue;
438  }
439 
440  if (!precedingHasMatchingPSet) {
441  allComponentsMatch[iRecord.first] = false;
442  continue;
443  }
444 
445  // An ESProducer that survives to this point is a candidate.
446  // It was shared with some other process in the first pass where
447  // ESProducers were constructed and one of three possibilities exists:
448  // 1) It should not have been shared and a new ESProducer needs
449  // to be created and the proper pointers set.
450  // 2) It should have been shared with a different preceding process
451  // in which case some pointers need to be modified.
452  // 3) It was originally shared which the correct prior process
453  // in which case nothing needs to be done, but we do need to
454  // do some work to verify that.
455  // Make an entry in a map for each of these ESProducers. We
456  // will set the value to false if and when we determine
457  // the ESProducer cannot be shared between this pair of processes.
458  auto iCandidateNotRejectedYet = candidateNotRejectedYet.find(psetID);
459  if (iCandidateNotRejectedYet == candidateNotRejectedYet.end()) {
460  candidateNotRejectedYet[psetID] = true;
461  iCandidateNotRejectedYet = candidateNotRejectedYet.find(psetID);
462  }
463 
464  // At this point we know that the two processes both
465  // have an ESProducer matching the type and label in
466  // iComponent and also with exactly the same configuration.
467  // And there was not an earlier preceding process
468  // where the same instance of the ESProducer could
469  // have been shared. And this ESProducer was referenced
470  // by the later process's EventSetupRecord (preferred or
471  // or just the only thing that could have made the data).
472  // To determine if sharing is allowed, now we need to
473  // check if all the DataProxyProviders and all the
474  // finders are the same for this record and also for
475  // all records this record depends on. And even
476  // if this is true, we have to wait until the loop
477  // ends because some other DataProxy associated with
478  // the ESProducer could write to a different record where
479  // the same determination will need to be repeated. Only if
480  // all of the the DataProxy's can be shared, can the ESProducer
481  // instance be shared across processes.
482 
483  if (iCandidateNotRejectedYet->second == true) {
484  auto iAllComponentsMatch = allComponentsMatch.find(iRecord.first);
485  if (iAllComponentsMatch == allComponentsMatch.end()) {
486  // We do not know the value in AllComponents yet and
487  // we need it now so we have to do the difficult calculation
488  // now.
489  bool match = doRecordsMatch(precedingESProvider, iRecord.first, allComponentsMatch, esController);
490  allComponentsMatch[iRecord.first] = match;
491  iAllComponentsMatch = allComponentsMatch.find(iRecord.first);
492  }
493  if (!iAllComponentsMatch->second) {
494  iCandidateNotRejectedYet->second = false;
495  }
496  }
497  } // end loop over components used by record
498  } // end loop over records
499 
500  // Loop over candidates
501  for (auto const& candidate : candidateNotRejectedYet) {
502  ParameterSetID const& psetID = candidate.first;
503  bool canBeShared = candidate.second;
504  if (canBeShared) {
505  ParameterSet const& pset = *esController.getESProducerPSet(psetID, subProcessIndex_);
507  ParameterSetIDHolder psetIDHolder(psetID);
508  sharingCheckDone.insert(psetIDHolder);
509  if (esController.isFirstMatch(psetID, subProcessIndex_, precedingESProvider.subProcessIndex_)) {
510  continue; // Proper sharing was already done. Nothing more to do.
511  }
512 
513  // Need to reset the pointer from the EventSetupRecordProvider to the
514  // the DataProxyProvider so these two processes share an ESProducer.
515 
516  std::shared_ptr<DataProxyProvider> dataProxyProvider;
517  std::set<EventSetupRecordKey> const& keysForPSetID1 = (*precedingESProvider.psetIDToRecordKey_)[psetIDHolder];
518  for (auto const& key : keysForPSetID1) {
519  dataProxyProvider = precedingESProvider.recordProvider(key)->proxyProvider(psetIDHolder);
520  assert(dataProxyProvider);
521  break;
522  }
523 
524  std::set<EventSetupRecordKey> const& keysForPSetID2 = (*psetIDToRecordKey_)[psetIDHolder];
525  for (auto const& key : keysForPSetID2) {
526  recordProvider(key)->resetProxyProvider(psetIDHolder, dataProxyProvider);
527  }
528  } else {
529  if (esController.isLastMatch(psetID, subProcessIndex_, precedingESProvider.subProcessIndex_)) {
530  ParameterSet const& pset = *esController.getESProducerPSet(psetID, subProcessIndex_);
531  ModuleFactory::get()->addTo(esController, *this, pset, true);
532  }
533  }
534  }
535  }

References cms::cuda::assert(), doRecordsMatch(), edm::eventsetup::ComponentFactory< T >::get(), edm::eventsetup::EventSetupsController::getESProducerPSet(), edm::eventsetup::EventSetupsController::isFirstMatch(), edm::eventsetup::EventSetupsController::isLastMatch(), crabWrapper::key, logInfoWhenSharing(), edm::eventsetup::EventSetupsController::lookForMatches(), edm::match(), muonDTDigis_cfi::pset, psetIDToRecordKey_, recordProvider(), recordProviders_, subProcessIndex(), and subProcessIndex_.

◆ clearInitializationData()

void edm::eventsetup::EventSetupProvider::clearInitializationData ( )

◆ determinePreferred()

void edm::eventsetup::EventSetupProvider::determinePreferred ( )
private

Definition at line 159 of file EventSetupProvider.cc.

159  {
160  using namespace edm::eventsetup;
162  for (auto const& itInfo : *preferredProviderInfo_) {
163  if (itInfo.second.empty()) {
164  //want everything
166  } else {
167  for (auto const& itRecData : itInfo.second) {
168  std::string recordName = itRecData.first;
170  if (recordKey.type() == eventsetup::EventSetupRecordKey::TypeTag()) {
171  throw cms::Exception("ESPreferUnknownRecord")
172  << "Unknown record \"" << recordName
173  << "\" used in es_prefer statement for type=" << itInfo.first.type_ << " label=\""
174  << itInfo.first.label_ << "\"\n Please check spelling.";
175  //record not found
176  }
177  //See if the ProxyProvider provides something for this Record
178  EventSetupRecordProvider& recordProviderForKey = *recordProvider(recordKey);
179 
180  std::set<ComponentDescription> components = recordProviderForKey.proxyProviderDescriptions();
181  std::set<ComponentDescription>::iterator itProxyProv = components.find(itInfo.first);
182  if (itProxyProv == components.end()) {
183  throw cms::Exception("ESPreferWrongRecord")
184  << "The type=" << itInfo.first.type_ << " label=\"" << itInfo.first.label_
185  << "\" does not provide data for the Record " << recordName;
186  }
187  //Does it data type exist?
188  eventsetup::TypeTag datumType = eventsetup::TypeTag::findType(itRecData.second.first);
189  if (datumType == eventsetup::TypeTag()) {
190  //not found
191  throw cms::Exception("ESPreferWrongDataType")
192  << "The es_prefer statement for type=" << itInfo.first.type_ << " label=\"" << itInfo.first.label_
193  << "\" has the unknown data type \"" << itRecData.second.first << "\""
194  << "\n Please check spelling";
195  }
196  eventsetup::DataKey datumKey(datumType, itRecData.second.second.c_str());
197 
198  //Does the proxyprovider make this?
199  std::shared_ptr<DataProxyProvider> proxyProv = recordProviderForKey.proxyProvider(*itProxyProv);
200  unsigned int iovIndex = 0; // Doesn't matter which index is picked, at least 1 should always exist
201  const DataProxyProvider::KeyedProxies& keyedProxies = proxyProv->keyedProxies(recordKey, iovIndex);
202  if (!keyedProxies.contains(datumKey)) {
203  throw cms::Exception("ESPreferWrongData")
204  << "The es_prefer statement for type=" << itInfo.first.type_ << " label=\"" << itInfo.first.label_
205  << "\" specifies the data item \n"
206  << " type=\"" << itRecData.second.first << "\" label=\"" << itRecData.second.second << "\""
207  << " which is not provided. Please check spelling.";
208  }
209 
211  (*recordToPreferred_)[recordKey];
212  //has another provider already been specified?
213  if (dataToProviderMap.end() != dataToProviderMap.find(datumKey)) {
214  EventSetupRecordProvider::DataToPreferredProviderMap::iterator itFind =
215  dataToProviderMap.find(datumKey);
216  throw cms::Exception("ESPreferConflict")
217  << "Two providers have been set to be preferred for\n"
218  << datumKey.type().name() << " \"" << datumKey.name().value() << "\""
219  << "\n the providers are "
220  << "\n 1) type=" << itFind->second.type_ << " label=\"" << itFind->second.label_ << "\""
221  << "\n 2) type=" << itProxyProv->type_ << " label=\"" << itProxyProv->label_ << "\""
222  << "\nPlease modify configuration so only one is preferred";
223  }
224  dataToProviderMap.insert(std::make_pair(datumKey, *itProxyProv));
225  }
226  }
227  }
228  }
229  }

References makeMuonMisalignmentScenario::components, edm::eventsetup::DataProxyProvider::KeyedProxies::contains(), Exception, edm::eventsetup::heterocontainer::HCTypeTag::findType(), edm::eventsetup::preferEverything(), preferredProviderInfo_, edm::eventsetup::EventSetupRecordProvider::proxyProvider(), edm::eventsetup::EventSetupRecordProvider::proxyProviderDescriptions(), align_cfg::recordName, recordProvider(), recordProviders_, recordToPreferred_, AlCaHLTBitMon_QueryRunRegistry::string, and edm::eventsetup::EventSetupRecordKey::type().

Referenced by finishConfiguration().

◆ doRecordsMatch()

bool edm::eventsetup::EventSetupProvider::doRecordsMatch ( EventSetupProvider precedingESProvider,
EventSetupRecordKey const &  eventSetupRecordKey,
std::map< EventSetupRecordKey, bool > &  allComponentsMatch,
EventSetupsController const &  esController 
)

Definition at line 537 of file EventSetupProvider.cc.

540  {
541  // first check if this record matches. If not just return false
542 
543  // then find the directly dependent records and iterate over them
544  // recursively call this function on them. If they return false
545  // set allComponentsMatch to false for them and return false.
546  // if they all return true then set allComponents to true
547  // and return true.
548 
549  if (precedingESProvider.recordsWithALooperProxy_->find(eventSetupRecordKey) !=
550  precedingESProvider.recordsWithALooperProxy_->end()) {
551  return false;
552  }
553 
554  if ((*recordToFinders_)[eventSetupRecordKey].size() !=
555  (*precedingESProvider.recordToFinders_)[eventSetupRecordKey].size()) {
556  return false;
557  }
558 
559  for (auto const& finder : (*recordToFinders_)[eventSetupRecordKey]) {
560  ParameterSetID const& psetID = finder->descriptionForFinder().pid_;
561  bool itMatches =
562  esController.isMatchingESSource(psetID, subProcessIndex_, precedingESProvider.subProcessIndex_);
563  if (!itMatches) {
564  return false;
565  }
566  }
567 
568  fillReferencedDataKeys(eventSetupRecordKey);
569  precedingESProvider.fillReferencedDataKeys(eventSetupRecordKey);
570 
571  std::map<DataKey, ComponentDescription const*> const& dataItems = (*referencedDataKeys_)[eventSetupRecordKey];
572 
573  std::map<DataKey, ComponentDescription const*> const& precedingDataItems =
574  (*precedingESProvider.referencedDataKeys_)[eventSetupRecordKey];
575 
576  if (dataItems.size() != precedingDataItems.size()) {
577  return false;
578  }
579 
580  for (auto const& dataItem : dataItems) {
581  auto precedingDataItem = precedingDataItems.find(dataItem.first);
582  if (precedingDataItem == precedingDataItems.end()) {
583  return false;
584  }
585  if (dataItem.second->pid_ != precedingDataItem->second->pid_) {
586  return false;
587  }
588  // Check that the configurations match exactly for the ESProducers
589  // (We already checked the ESSources above and there should not be
590  // any loopers)
591  if (!dataItem.second->isSource_ && !dataItem.second->isLooper_) {
592  bool itMatches = esController.isMatchingESProducer(
593  dataItem.second->pid_, subProcessIndex_, precedingESProvider.subProcessIndex_);
594  if (!itMatches) {
595  return false;
596  }
597  }
598  }
599  EventSetupRecordProvider* recProvider = tryToGetRecordProvider(eventSetupRecordKey);
600  if (recProvider != nullptr) {
601  std::set<EventSetupRecordKey> dependentRecords = recProvider->dependentRecords();
602  for (auto const& dependentRecord : dependentRecords) {
603  auto iter = allComponentsMatch.find(dependentRecord);
604  if (iter != allComponentsMatch.end()) {
605  if (iter->second) {
606  continue;
607  } else {
608  return false;
609  }
610  }
611  bool match = doRecordsMatch(precedingESProvider, dependentRecord, allComponentsMatch, esController);
612  allComponentsMatch[dependentRecord] = match;
613  if (!match)
614  return false;
615  }
616  }
617  return true;
618  }

References edm::eventsetup::EventSetupRecordProvider::dependentRecords(), fillReferencedDataKeys(), HLT_FULL_cff::finder, edm::eventsetup::EventSetupsController::isMatchingESProducer(), edm::eventsetup::EventSetupsController::isMatchingESSource(), edm::match(), recordsWithALooperProxy_, recordToFinders_, referencedDataKeys_, findQualityFiles::size, subProcessIndex_, and tryToGetRecordProvider().

Referenced by checkESProducerSharing().

◆ doWeNeedToWaitForIOVsToFinish()

bool edm::eventsetup::EventSetupProvider::doWeNeedToWaitForIOVsToFinish ( IOVSyncValue const &  iValue) const

Definition at line 712 of file EventSetupProvider.cc.

712  {
713  for (auto& recProvider : recordProviders_) {
714  if (recProvider->doWeNeedToWaitForIOVsToFinish(iValue)) {
715  return true;
716  }
717  }
718  return false;
719  }

References recordProviders_.

◆ eventSetupForInstance()

std::shared_ptr< const EventSetupImpl > edm::eventsetup::EventSetupProvider::eventSetupForInstance ( IOVSyncValue const &  iValue,
bool &  newEventSetupImpl 
)

Definition at line 673 of file EventSetupProvider.cc.

674  {
675  using IntervalStatus = EventSetupRecordProvider::IntervalStatus;
676 
677  // It is important to understand that eventSetupForInstance is a function
678  // where only one call is executing at a time (not multiple calls running
679  // concurrently). These calls are made in the order determined by the
680  // InputSource. One invocation completes and returns before another starts.
681 
682  bool needNewEventSetupImpl = false;
683  if (eventSetupImpl_.get() == nullptr) {
684  needNewEventSetupImpl = true;
685  } else {
686  for (auto& recProvider : recordProviders_) {
687  if (recProvider->intervalStatus() == IntervalStatus::Invalid) {
688  if (eventSetupImpl_->validRecord(recProvider->key())) {
689  needNewEventSetupImpl = true;
690  }
691  } else {
692  if (recProvider->newIntervalForAnySubProcess()) {
693  needNewEventSetupImpl = true;
694  }
695  }
696  }
697  }
698 
699  if (needNewEventSetupImpl) {
700  //cannot use make_shared because constructor is private
701  eventSetupImpl_ = std::shared_ptr<EventSetupImpl>(new EventSetupImpl(taskArena_));
702  newEventSetupImpl = true;
703  eventSetupImpl_->setKeyIters(recordKeys_.begin(), recordKeys_.end());
704 
705  for (auto& recProvider : recordProviders_) {
706  recProvider->setEventSetupImpl(eventSetupImpl_.get());
707  }
708  }
710  }

References eventSetupImpl_, edm::get_underlying_safe(), Invalid, recordKeys_, recordProviders_, and taskArena_.

◆ eventSetupImpl()

EventSetupImpl const& edm::eventsetup::EventSetupProvider::eventSetupImpl ( ) const
inline

Definition at line 79 of file EventSetupProvider.h.

79 { return *eventSetupImpl_; }

References eventSetupImpl_.

◆ fillKeys()

void edm::eventsetup::EventSetupProvider::fillKeys ( std::set< EventSetupRecordKey > &  keys) const

Definition at line 747 of file EventSetupProvider.cc.

747  {
748  for (auto const& recProvider : recordProviders_) {
749  keys.insert(recProvider->key());
750  }
751  }

References relativeConstraints::keys, and recordProviders_.

◆ fillRecordsNotAllowingConcurrentIOVs()

void edm::eventsetup::EventSetupProvider::fillRecordsNotAllowingConcurrentIOVs ( std::set< EventSetupRecordKey > &  recordsNotAllowingConcurrentIOVs) const

Definition at line 653 of file EventSetupProvider.cc.

654  {
655  for (auto const& dataProxyProvider : *dataProviders_) {
656  dataProxyProvider->fillRecordsNotAllowingConcurrentIOVs(recordsNotAllowingConcurrentIOVs);
657  }
658  }

References dataProviders_.

Referenced by edm::eventsetup::NumberOfConcurrentIOVs::fillRecordsNotAllowingConcurrentIOVs().

◆ fillReferencedDataKeys()

void edm::eventsetup::EventSetupProvider::fillReferencedDataKeys ( EventSetupRecordKey const &  eventSetupRecordKey)

Definition at line 620 of file EventSetupProvider.cc.

620  {
621  if (referencedDataKeys_->find(eventSetupRecordKey) != referencedDataKeys_->end())
622  return;
623 
624  EventSetupRecordProvider* recProvider = tryToGetRecordProvider(eventSetupRecordKey);
625  if (recProvider == nullptr) {
626  (*referencedDataKeys_)[eventSetupRecordKey];
627  return;
628  }
629  recProvider->fillReferencedDataKeys((*referencedDataKeys_)[eventSetupRecordKey]);
630  }

References edm::eventsetup::EventSetupRecordProvider::fillReferencedDataKeys(), referencedDataKeys_, and tryToGetRecordProvider().

Referenced by doRecordsMatch().

◆ finishConfiguration()

void edm::eventsetup::EventSetupProvider::finishConfiguration ( NumberOfConcurrentIOVs const &  numberOfConcurrentIOVs,
bool &  hasNonconcurrentFinder 
)

Definition at line 231 of file EventSetupProvider.cc.

232  {
233  //we delayed adding finders to the system till here so that everything would be loaded first
234  recordToFinders_->clear();
235  for (auto& finder : *finders_) {
236  if (!finder->concurrentFinder()) {
237  hasNonconcurrentFinder = true;
238  }
239 
240  const std::set<EventSetupRecordKey> recordsUsing = finder->findingForRecords();
241 
242  for (auto const& key : recordsUsing) {
243  (*recordToFinders_)[key].push_back(finder);
244 
246  if (recProvider == nullptr) {
247  bool printInfoMsg = true;
248  unsigned int nConcurrentIOVs = numberOfConcurrentIOVs.numberOfConcurrentIOVs(key, printInfoMsg);
249 
250  //create a provider for this record
251  insert(key, std::make_unique<EventSetupRecordProvider>(key, activityRegistry_, nConcurrentIOVs));
252  recProvider = tryToGetRecordProvider(key);
253  }
254  recProvider->addFinder(finder);
255  }
256  }
257  //we've transfered our ownership so this is no longer needed
258  finders_.reset();
259 
260  //Now handle providers since sources can also be finders and the sources can delay registering
261  // their Records and therefore could delay setting up their Proxies
262  psetIDToRecordKey_->clear();
263  for (auto& dataProxyProvider : *dataProviders_) {
264  ParameterSetIDHolder psetID(dataProxyProvider->description().pid_);
265 
266  const std::set<EventSetupRecordKey> recordsUsing = dataProxyProvider->usingRecords();
267  for (auto const& key : recordsUsing) {
268  unsigned int nConcurrentIOVs = numberOfConcurrentIOVs.numberOfConcurrentIOVs(key);
269  dataProxyProvider->createKeyedProxies(key, nConcurrentIOVs);
270 
271  if (dataProxyProvider->description().isLooper_) {
272  recordsWithALooperProxy_->insert(key);
273  }
274 
275  (*psetIDToRecordKey_)[psetID].insert(key);
276 
278  if (recProvider == nullptr) {
279  bool printInfoMsg = true;
280  nConcurrentIOVs = numberOfConcurrentIOVs.numberOfConcurrentIOVs(key, printInfoMsg);
281  //create a provider for this record
282  insert(key, std::make_unique<EventSetupRecordProvider>(key, activityRegistry_, nConcurrentIOVs));
283  recProvider = tryToGetRecordProvider(key);
284  }
285  recProvider->add(dataProxyProvider);
286  }
287  }
288 
289  //used for the case where no preferred Providers have been specified for the Record
291 
293 
294  //For each Provider, find all the Providers it depends on. If a dependent Provider
295  // can not be found pass in an empty list
296  //CHANGE: now allow for missing Providers
297  for (auto& itRecordProvider : recordProviders_) {
298  const EventSetupRecordProvider::DataToPreferredProviderMap* preferredInfo = &kEmptyMap;
299  RecordToPreferred::const_iterator itRecordFound = recordToPreferred_->find(itRecordProvider->key());
300  if (itRecordFound != recordToPreferred_->end()) {
301  preferredInfo = &(itRecordFound->second);
302  }
303  //Give it our list of preferred
304  itRecordProvider->usePreferred(*preferredInfo);
305 
306  std::set<EventSetupRecordKey> records = itRecordProvider->dependentRecords();
307  if (!records.empty()) {
308  std::string missingRecords;
309  std::vector<std::shared_ptr<EventSetupRecordProvider>> depProviders;
310  depProviders.reserve(records.size());
311  bool foundAllProviders = true;
312  for (auto const& key : records) {
313  auto lb = std::lower_bound(recordKeys_.begin(), recordKeys_.end(), key);
314  if (lb == recordKeys_.end() || key != *lb) {
315  foundAllProviders = false;
316  if (missingRecords.empty()) {
317  missingRecords = key.name();
318  } else {
319  missingRecords += ", ";
320  missingRecords += key.name();
321  }
322  } else {
323  auto index = std::distance(recordKeys_.begin(), lb);
324  depProviders.push_back(recordProviders_[index]);
325  }
326  }
327 
328  if (!foundAllProviders) {
329  edm::LogInfo("EventSetupDependency")
330  << "The EventSetup record " << itRecordProvider->key().name() << " depends on at least one Record \n ("
331  << missingRecords
332  << ") which is not present in the job."
333  "\n This may lead to an exception begin thrown during event processing.\n If no exception occurs "
334  "during the job than it is usually safe to ignore this message.";
335 
336  //depProviders.clear();
337  //NOTE: should provide a warning
338  }
339 
340  itRecordProvider->setDependentProviders(depProviders);
341  }
342  }
343 
345  for (auto& provider : *dataProviders_) {
346  provider->updateLookup(indices);
347  }
348  dataProviders_.reset();
349 
350  mustFinishConfiguration_ = false;
351  }

References activityRegistry_, edm::eventsetup::EventSetupRecordProvider::add(), edm::eventsetup::EventSetupRecordProvider::addFinder(), dataProviders_, determinePreferred(), HLT_FULL_cff::distance, HLT_FULL_cff::finder, finders_, bTagCombinedSVVariables_cff::indices, insert(), crabWrapper::key, pfDeepBoostedJetPreprocessParams_cfi::lower_bound, mustFinishConfiguration_, edm::eventsetup::NumberOfConcurrentIOVs::numberOfConcurrentIOVs(), psetIDToRecordKey_, recordKeys_, recordProviders_, recordsToProxyIndices(), recordsWithALooperProxy_, recordToFinders_, recordToPreferred_, AlCaHLTBitMon_QueryRunRegistry::string, and tryToGetRecordProvider().

◆ forceCacheClear()

void edm::eventsetup::EventSetupProvider::forceCacheClear ( )

Used when testing that all code properly updates on IOV changes of all Records.

Definition at line 386 of file EventSetupProvider.cc.

386  {
387  for (auto& recProvider : recordProviders_) {
388  if (recProvider) {
389  recProvider->resetProxies();
390  }
391  }
392  }

References recordProviders_.

Referenced by ~EventSetupProvider().

◆ insert()

void edm::eventsetup::EventSetupProvider::insert ( EventSetupRecordKey const &  iKey,
std::unique_ptr< EventSetupRecordProvider iProvider 
)
private

Definition at line 79 of file EventSetupProvider.cc.

80  {
81  auto lb = std::lower_bound(recordKeys_.begin(), recordKeys_.end(), iKey);
82  auto index = std::distance(recordKeys_.begin(), lb);
83  if (lb == recordKeys_.end() || iKey != *lb) {
84  recordKeys_.insert(lb, iKey);
85  recordProviders_.insert(recordProviders_.begin() + index, std::move(iProvider));
86  } else {
87  recordProviders_[index] = std::move(iProvider);
88  }
89  }

References HLT_FULL_cff::distance, pfDeepBoostedJetPreprocessParams_cfi::lower_bound, eostools::move(), recordKeys_, and recordProviders_.

Referenced by addRecord(), and finishConfiguration().

◆ logInfoWhenSharing()

void edm::eventsetup::EventSetupProvider::logInfoWhenSharing ( ParameterSet const &  iConfiguration)
static

Definition at line 768 of file EventSetupProvider.cc.

768  {
769  std::string edmtype = iConfiguration.getParameter<std::string>("@module_edm_type");
770  std::string modtype = iConfiguration.getParameter<std::string>("@module_type");
771  std::string label = iConfiguration.getParameter<std::string>("@module_label");
772  edm::LogVerbatim("EventSetupSharing")
773  << "Sharing " << edmtype << ": class=" << modtype << " label='" << label << "'";
774  }

References edm::ParameterSet::getParameter(), label, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by checkESProducerSharing().

◆ operator=()

EventSetupProvider const& edm::eventsetup::EventSetupProvider::operator= ( EventSetupProvider const &  )
delete

◆ proxyProviderDescriptions()

std::set< ComponentDescription > edm::eventsetup::EventSetupProvider::proxyProviderDescriptions ( ) const

Definition at line 721 of file EventSetupProvider.cc.

721  {
722  typedef std::set<ComponentDescription> Set;
723  Set descriptions;
724 
725  for (auto const& recProvider : recordProviders_) {
726  auto const& d = recProvider->proxyProviderDescriptions();
727  descriptions.insert(d.begin(), d.end());
728  }
729  if (dataProviders_.get()) {
730  for (auto const& p : *dataProviders_) {
731  descriptions.insert(p->description());
732  }
733  }
734 
735  return descriptions;
736  }

References ztail::d, dataProviders_, AlCaHLTBitMon_ParallelJobs::p, and recordProviders_.

◆ recordProvider()

std::shared_ptr< EventSetupRecordProvider > & edm::eventsetup::EventSetupProvider::recordProvider ( const EventSetupRecordKey iKey)
private

Definition at line 60 of file EventSetupProvider.cc.

60  {
61  auto lb = std::lower_bound(recordKeys_.begin(), recordKeys_.end(), iKey);
62  if (lb == recordKeys_.end() || iKey != *lb) {
63  throw cms::Exception("LogicError") << "EventSetupProvider::recordProvider Could not find key\n"
64  << "Should be impossible. Please contact Framework developer.\n";
65  }
66  auto index = std::distance(recordKeys_.begin(), lb);
67  return recordProviders_[index];
68  }

References HLT_FULL_cff::distance, Exception, pfDeepBoostedJetPreprocessParams_cfi::lower_bound, recordKeys_, and recordProviders_.

Referenced by checkESProducerSharing(), determinePreferred(), and replaceExisting().

◆ recordsToProxyIndices()

ESRecordsToProxyIndices edm::eventsetup::EventSetupProvider::recordsToProxyIndices ( ) const

Definition at line 753 of file EventSetupProvider.cc.

753  {
755 
756  unsigned int index = 0;
757  for (const auto& provider : recordProviders_) {
758  index = ret.dataKeysInRecord(
759  index, provider->key(), provider->registeredDataKeys(), provider->componentsForRegisteredDataKeys());
760  }
761 
762  return ret;
763  }

References recordKeys_, recordProviders_, and runTheMatrix::ret.

Referenced by finishConfiguration().

◆ replaceExisting()

void edm::eventsetup::EventSetupProvider::replaceExisting ( std::shared_ptr< DataProxyProvider dataProxyProvider)

Definition at line 96 of file EventSetupProvider.cc.

96  {
97  ParameterSetIDHolder psetID(dataProxyProvider->description().pid_);
98  std::set<EventSetupRecordKey> const& keysForPSetID = (*psetIDToRecordKey_)[psetID];
99  for (auto const& key : keysForPSetID) {
100  recordProvider(key)->resetProxyProvider(psetID, dataProxyProvider);
101  }
102  }

References crabWrapper::key, and recordProvider().

Referenced by edm::eventsetup::ModuleMakerTraits::replaceExisting().

◆ resetRecordPlusDependentRecords()

void edm::eventsetup::EventSetupProvider::resetRecordPlusDependentRecords ( EventSetupRecordKey const &  iKey)

Used when we need to force a Record to reset all its proxies.

Definition at line 369 of file EventSetupProvider.cc.

369  {
371  if (recProvider == nullptr) {
372  return;
373  }
374 
375  std::vector<std::shared_ptr<EventSetupRecordProvider>> dependents;
376  findDependents(iKey, recordProviders_.begin(), recordProviders_.end(), dependents);
377 
378  dependents.erase(std::unique(dependents.begin(), dependents.end()), dependents.end());
379 
380  recProvider->resetProxies();
381  for (auto& d : dependents) {
382  d->resetProxies();
383  }
384  }

References ztail::d, edm::eventsetup::findDependents(), recordProviders_, edm::eventsetup::EventSetupRecordProvider::resetProxies(), tryToGetRecordProvider(), and tier0::unique().

Referenced by edm::EDLooperBase::prepareForNextLoop().

◆ resetRecordToProxyPointers()

void edm::eventsetup::EventSetupProvider::resetRecordToProxyPointers ( )

Definition at line 632 of file EventSetupProvider.cc.

632  {
633  for (auto const& recProvider : recordProviders_) {
635  const EventSetupRecordProvider::DataToPreferredProviderMap* preferredInfo = &kEmptyMap;
636  RecordToPreferred::const_iterator itRecordFound = recordToPreferred_->find(recProvider->key());
637  if (itRecordFound != recordToPreferred_->end()) {
638  preferredInfo = &(itRecordFound->second);
639  }
640  recProvider->resetRecordToProxyPointers(*preferredInfo);
641  }
642  }

References recordProviders_, and recordToPreferred_.

◆ setAllValidityIntervals()

void edm::eventsetup::EventSetupProvider::setAllValidityIntervals ( const IOVSyncValue iValue)

Set the validity intervals in all EventSetupRecordProviders.

Definition at line 660 of file EventSetupProvider.cc.

660  {
661  // First loop sets a flag that helps us to not duplicate calls to the
662  // same EventSetupRecordProvider setting the IOVs. Dependent records
663  // can cause duplicate calls without this protection.
664  for (auto& recProvider : recordProviders_) {
665  recProvider->initializeForNewSyncValue();
666  }
667 
668  for (auto& recProvider : recordProviders_) {
669  recProvider->setValidityIntervalFor(iValue);
670  }
671  }

References recordProviders_.

◆ setPreferredProviderInfo()

void edm::eventsetup::EventSetupProvider::setPreferredProviderInfo ( PreferredProviderInfo const &  iInfo)

Definition at line 743 of file EventSetupProvider.cc.

743  {
744  preferredProviderInfo_ = std::make_unique<PreferredProviderInfo>(iInfo);
745  }

References preferredProviderInfo_.

◆ subProcessIndex()

unsigned edm::eventsetup::EventSetupProvider::subProcessIndex ( ) const
inline

Definition at line 110 of file EventSetupProvider.h.

110 { return subProcessIndex_; }

References subProcessIndex_.

Referenced by checkESProducerSharing().

◆ tryToGetRecordProvider()

EventSetupRecordProvider * edm::eventsetup::EventSetupProvider::tryToGetRecordProvider ( const EventSetupRecordKey iKey)

Definition at line 70 of file EventSetupProvider.cc.

70  {
71  auto lb = std::lower_bound(recordKeys_.begin(), recordKeys_.end(), iKey);
72  if (lb == recordKeys_.end() || iKey != *lb) {
73  return nullptr;
74  }
75  auto index = std::distance(recordKeys_.begin(), lb);
76  return recordProviders_[index].get();
77  }

References HLT_FULL_cff::distance, pfDeepBoostedJetPreprocessParams_cfi::lower_bound, recordKeys_, and recordProviders_.

Referenced by doRecordsMatch(), fillReferencedDataKeys(), finishConfiguration(), and resetRecordPlusDependentRecords().

Member Data Documentation

◆ activityRegistry_

ActivityRegistry const* edm::eventsetup::EventSetupProvider::activityRegistry_
private

Definition at line 138 of file EventSetupProvider.h.

Referenced by finishConfiguration().

◆ dataProviders_

std::unique_ptr<std::vector<std::shared_ptr<DataProxyProvider> > > edm::eventsetup::EventSetupProvider::dataProviders_
private

◆ eventSetupImpl_

propagate_const<std::shared_ptr<EventSetupImpl> > edm::eventsetup::EventSetupProvider::eventSetupImpl_
private

Definition at line 143 of file EventSetupProvider.h.

Referenced by addRecord(), eventSetupForInstance(), and eventSetupImpl().

◆ finders_

std::unique_ptr<std::vector<std::shared_ptr<EventSetupRecordIntervalFinder> > > edm::eventsetup::EventSetupProvider::finders_
private

Definition at line 148 of file EventSetupProvider.h.

Referenced by add(), and finishConfiguration().

◆ mustFinishConfiguration_

bool edm::eventsetup::EventSetupProvider::mustFinishConfiguration_
private

Definition at line 141 of file EventSetupProvider.h.

Referenced by finishConfiguration().

◆ preferredProviderInfo_

std::unique_ptr<PreferredProviderInfo> edm::eventsetup::EventSetupProvider::preferredProviderInfo_
private

◆ psetIDToRecordKey_

std::unique_ptr<std::map<ParameterSetIDHolder, std::set<EventSetupRecordKey> > > edm::eventsetup::EventSetupProvider::psetIDToRecordKey_
private

◆ recordKeys_

RecordKeys edm::eventsetup::EventSetupProvider::recordKeys_
private

◆ recordProviders_

RecordProviders edm::eventsetup::EventSetupProvider::recordProviders_
private

◆ recordsWithALooperProxy_

std::unique_ptr<std::set<EventSetupRecordKey> > edm::eventsetup::EventSetupProvider::recordsWithALooperProxy_
private

◆ recordToFinders_

std::unique_ptr<std::map<EventSetupRecordKey, std::vector<std::shared_ptr<EventSetupRecordIntervalFinder> > > > edm::eventsetup::EventSetupProvider::recordToFinders_
private

◆ recordToPreferred_

std::unique_ptr<std::map<EventSetupRecordKey, std::map<DataKey, ComponentDescription> > > edm::eventsetup::EventSetupProvider::recordToPreferred_
private

◆ referencedDataKeys_

std::unique_ptr<std::map<EventSetupRecordKey, std::map<DataKey, ComponentDescription const*> > > edm::eventsetup::EventSetupProvider::referencedDataKeys_
private

◆ subProcessIndex_

unsigned edm::eventsetup::EventSetupProvider::subProcessIndex_
private

Definition at line 142 of file EventSetupProvider.h.

Referenced by checkESProducerSharing(), doRecordsMatch(), and subProcessIndex().

◆ taskArena_

tbb::task_arena* edm::eventsetup::EventSetupProvider::taskArena_
private

Definition at line 139 of file EventSetupProvider.h.

Referenced by eventSetupForInstance().

runTheMatrix.ret
ret
prodAgent to be discontinued
Definition: runTheMatrix.py:542
edm::ParameterSetID
Hash< ParameterSetType > ParameterSetID
Definition: ParameterSetID.h:21
bTagCombinedSVVariables_cff.indices
indices
Definition: bTagCombinedSVVariables_cff.py:67
edm::eventsetup::heterocontainer::HCTypeTag::findType
static HCTypeTag findType(char const *iTypeName)
find a type based on the types name, if not found will return default HCTypeTag
Definition: HCTypeTag.cc:121
edm::eventsetup::EventSetupRecordProvider::resetProxies
void resetProxies()
This will clear the cache's of all the Proxies so that next time they are called they will run.
Definition: EventSetupRecordProvider.cc:215
edm::eventsetup::DataProxyProvider::KeyedProxies::contains
bool contains(DataKey const &dataKey) const
Definition: DataProxyProvider.cc:76
edm::eventsetup::ESRecordsToProxyIndices
Definition: ESRecordsToProxyIndices.h:35
edm::eventsetup::EventSetupProvider::tryToGetRecordProvider
EventSetupRecordProvider * tryToGetRecordProvider(const EventSetupRecordKey &iKey)
Definition: EventSetupProvider.cc:70
HLT_FULL_cff.finder
finder
Definition: HLT_FULL_cff.py:51935
edm::eventsetup::EventSetupProvider::logInfoWhenSharing
static void logInfoWhenSharing(ParameterSet const &iConfiguration)
Definition: EventSetupProvider.cc:768
align_cfg.recordName
recordName
Definition: align_cfg.py:66
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
edm::eventsetup::EventSetupRecordProvider::add
void add(std::shared_ptr< DataProxyProvider >)
Definition: EventSetupRecordProvider.cc:54
cms::cuda::assert
assert(be >=bs)
edm::eventsetup::EventSetupProvider::PreferredProviderInfo
std::map< ComponentDescription, RecordToDataMap > PreferredProviderInfo
Definition: EventSetupProvider.h:57
relativeConstraints.keys
keys
Definition: relativeConstraints.py:89
edm::get_underlying_safe
constexpr std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
Definition: get_underlying_safe.h:41
edm::eventsetup::EventSetupProvider::psetIDToRecordKey_
std::unique_ptr< std::map< ParameterSetIDHolder, std::set< EventSetupRecordKey > > > psetIDToRecordKey_
Definition: EventSetupProvider.h:153
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
edm::eventsetup::DataProxyProvider::KeyedProxies
Definition: DataProxyProvider.h:73
edm::eventsetup::EventSetupProvider::recordProviders_
RecordProviders recordProviders_
Definition: EventSetupProvider.h:136
edm::eventsetup::EventSetupRecordKey
Definition: EventSetupRecordKey.h:30
edm::eventsetup::preferEverything
static void preferEverything(const ComponentDescription &iComponent, const RecordProviders &iRecordProviders, RecordToPreferred &iReturnValue)
find everything made by a DataProxyProvider and add it to the 'preferred' list
Definition: EventSetupProvider.cc:112
edm::eventsetup::EventSetupsController::isLastMatch
bool isLastMatch(ParameterSetID const &psetID, unsigned subProcessIndex, unsigned precedingProcessIndex) const
Definition: EventSetupsController.cc:264
edm::eventsetup::ComponentFactory::get
static ComponentFactory< T > const * get()
edm::eventsetup::EventSetupsController::getESProducerPSet
ParameterSet const * getESProducerPSet(ParameterSetID const &psetID, unsigned subProcessIndex) const
Definition: EventSetupsController.cc:339
edm::eventsetup::EventSetupProvider::doRecordsMatch
bool doRecordsMatch(EventSetupProvider &precedingESProvider, EventSetupRecordKey const &eventSetupRecordKey, std::map< EventSetupRecordKey, bool > &allComponentsMatch, EventSetupsController const &esController)
Definition: EventSetupProvider.cc:537
edm::eventsetup::EventSetupsController::lookForMatches
void lookForMatches(ParameterSetID const &psetID, unsigned subProcessIndex, unsigned precedingProcessIndex, bool &firstProcessWithThisPSet, bool &precedingHasMatchingPSet) const
Definition: EventSetupsController.cc:205
edm::eventsetup::EventSetupRecordProvider
Definition: EventSetupRecordProvider.h:47
edm::eventsetup::EventSetupProvider::recordKeys_
RecordKeys recordKeys_
Definition: EventSetupProvider.h:133
edm::eventsetup::EventSetupProvider::determinePreferred
void determinePreferred()
Definition: EventSetupProvider.cc:159
edm::eventsetup::EventSetupProvider::activityRegistry_
ActivityRegistry const * activityRegistry_
Definition: EventSetupProvider.h:138
edm::eventsetup::EventSetupProvider::referencedDataKeys_
std::unique_ptr< std::map< EventSetupRecordKey, std::map< DataKey, ComponentDescription const * > > > referencedDataKeys_
Definition: EventSetupProvider.h:150
edm::eventsetup::findDependents
static void findDependents(const EventSetupRecordKey &iKey, Itr itBegin, Itr itEnd, std::vector< std::shared_ptr< EventSetupRecordProvider >> &oDependents)
Definition: EventSetupProvider.cc:354
edm::eventsetup::TypeTag
heterocontainer::HCTypeTag TypeTag
Definition: DataKeyTags.h:30
edm::eventsetup::EventSetupRecordProvider::IntervalStatus
IntervalStatus
Definition: EventSetupRecordProvider.h:49
edm::eventsetup::EventSetupRecordKey::TypeTag
heterocontainer::HCTypeTag TypeTag
Definition: EventSetupRecordKey.h:32
edm::eventsetup::EventSetupRecordProvider::fillReferencedDataKeys
void fillReferencedDataKeys(std::map< DataKey, ComponentDescription const * > &referencedDataKeys) const
Definition: EventSetupRecordProvider.cc:234
edm::eventsetup::EventSetupProvider::subProcessIndex_
unsigned subProcessIndex_
Definition: EventSetupProvider.h:142
edm::eventsetup::EventSetupProvider::forceCacheClear
void forceCacheClear()
Used when testing that all code properly updates on IOV changes of all Records.
Definition: EventSetupProvider.cc:386
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
pfDeepBoostedJetPreprocessParams_cfi.lower_bound
lower_bound
Definition: pfDeepBoostedJetPreprocessParams_cfi.py:15
ParameterSet
Definition: Functions.h:16
edm::eventsetup::EventSetupProvider::recordToFinders_
std::unique_ptr< std::map< EventSetupRecordKey, std::vector< std::shared_ptr< EventSetupRecordIntervalFinder > > > > recordToFinders_
Definition: EventSetupProvider.h:152
edm::eventsetup::EventSetupProvider::recordsWithALooperProxy_
std::unique_ptr< std::set< EventSetupRecordKey > > recordsWithALooperProxy_
Definition: EventSetupProvider.h:155
edm::eventsetup::EventSetupProvider::recordToPreferred_
std::unique_ptr< std::map< EventSetupRecordKey, std::map< DataKey, ComponentDescription > > > recordToPreferred_
Definition: EventSetupProvider.h:154
edm::eventsetup::EventSetupProvider::dataProviders_
std::unique_ptr< std::vector< std::shared_ptr< DataProxyProvider > > > dataProviders_
Definition: EventSetupProvider.h:149
edm::eventsetup::EventSetupRecordProvider::addFinder
void addFinder(std::shared_ptr< EventSetupRecordIntervalFinder >)
For now, only use one finder.
Definition: EventSetupRecordProvider.cc:61
edm::eventsetup::EventSetupProvider::insert
void insert(EventSetupRecordKey const &, std::unique_ptr< EventSetupRecordProvider >)
Definition: EventSetupProvider.cc:79
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
edm::eventsetup::EventSetupProvider::eventSetupImpl_
propagate_const< std::shared_ptr< EventSetupImpl > > eventSetupImpl_
Definition: EventSetupProvider.h:143
Invalid
Definition: hltDiff.cc:247
edm::eventsetup::EventSetupRecordProvider::proxyProviderDescriptions
std::set< ComponentDescription > proxyProviderDescriptions() const
return information on which DataProxyProviders are supplying information
Definition: EventSetupRecordProvider.cc:256
edm::eventsetup::ParameterSetIDHolder
Definition: ParameterSetIDHolder.h:12
edm::eventsetup::EventSetupRecordProvider::DataToPreferredProviderMap
std::map< DataKey, ComponentDescription > DataToPreferredProviderMap
Definition: EventSetupRecordProvider.h:51
eostools.move
def move(src, dest)
Definition: eostools.py:511
edm::eventsetup::EventSetupRecordProvider::dependentRecords
std::set< EventSetupRecordKey > dependentRecords() const
Returns the list of Records the provided Record depends on (usually none)
Definition: EventSetupRecordProvider.cc:254
edm::match
std::string match(BranchDescription const &a, BranchDescription const &b, std::string const &fileName)
Definition: BranchDescription.cc:351
tier0.unique
def unique(seq, keepstr=True)
Definition: tier0.py:24
edm::eventsetup::EventSetupProvider::subProcessIndex
unsigned subProcessIndex() const
Definition: EventSetupProvider.h:110
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
makeMuonMisalignmentScenario.components
string components
Definition: makeMuonMisalignmentScenario.py:58
Exception
Definition: hltDiff.cc:245
edm::eventsetup::EventSetupProvider::recordsToProxyIndices
ESRecordsToProxyIndices recordsToProxyIndices() const
Definition: EventSetupProvider.cc:753
edm::eventsetup::EventSetupRecordProvider::proxyProvider
std::shared_ptr< DataProxyProvider > proxyProvider(ComponentDescription const &)
returns the first matching DataProxyProvider or a 'null' if not found
Definition: EventSetupRecordProvider.cc:266
edm::eventsetup::EventSetupsController::isFirstMatch
bool isFirstMatch(ParameterSetID const &psetID, unsigned subProcessIndex, unsigned precedingProcessIndex) const
Definition: EventSetupsController.cc:239
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
edm::eventsetup::EventSetupProvider::mustFinishConfiguration_
bool mustFinishConfiguration_
Definition: EventSetupProvider.h:141
ztail.d
d
Definition: ztail.py:151
edm::eventsetup::EventSetupProvider::fillReferencedDataKeys
void fillReferencedDataKeys(EventSetupRecordKey const &eventSetupRecordKey)
Definition: EventSetupProvider.cc:620
genParticles_cff.map
map
Definition: genParticles_cff.py:11
edm::eventsetup::EventSetupProvider::finders_
std::unique_ptr< std::vector< std::shared_ptr< EventSetupRecordIntervalFinder > > > finders_
Definition: EventSetupProvider.h:148
edm::eventsetup::EventSetupProvider::taskArena_
tbb::task_arena * taskArena_
Definition: EventSetupProvider.h:139
edm::eventsetup
Definition: ES_DDDetector.cc:16
HLT_FULL_cff.distance
distance
Definition: HLT_FULL_cff.py:7733
crabWrapper.key
key
Definition: crabWrapper.py:19
edm::eventsetup::EventSetupProvider::preferredProviderInfo_
std::unique_ptr< PreferredProviderInfo > preferredProviderInfo_
Definition: EventSetupProvider.h:147
label
const char * label
Definition: PFTauDecayModeTools.cc:11
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
edm::eventsetup::EventSetupProvider::recordProvider
std::shared_ptr< EventSetupRecordProvider > & recordProvider(const EventSetupRecordKey &iKey)
Definition: EventSetupProvider.cc:60
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443