CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
EventSetupsController.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Framework
4 // Class : EventSetupsController
5 //
6 // Implementation:
7 // [Notes on implementation]
8 //
9 // Original Author: Chris Jones, W. David Dagenhart
10 // Created: Wed Jan 12 14:30:44 CST 2011
11 //
12 
14 
26 
27 #include <algorithm>
28 #include <iostream>
29 #include <set>
30 
31 namespace edm {
32  namespace eventsetup {
33 
34  EventSetupsController::EventSetupsController() : taskArena_(tbb::this_task_arena::max_concurrency()) {}
35 
37  for (auto& eventSetupRecordIOVQueue : eventSetupRecordIOVQueues_) {
38  eventSetupRecordIOVQueue->endIOVAsync(iEndTask);
39  }
40  }
41 
42  std::shared_ptr<EventSetupProvider> EventSetupsController::makeProvider(ParameterSet& iPSet,
43  ActivityRegistry* activityRegistry,
44  ParameterSet const* eventSetupPset) {
45  // Makes an EventSetupProvider
46  // Also parses the prefer information from ParameterSets and puts
47  // it in a map that is stored in the EventSetupProvider
48  std::shared_ptr<EventSetupProvider> returnValue(
49  makeEventSetupProvider(iPSet, providers_.size(), activityRegistry, &taskArena_));
50 
51  // Construct the ESProducers and ESSources
52  // shared_ptrs to them are temporarily stored in this
53  // EventSetupsController and in the EventSetupProvider
54  fillEventSetupProvider(*this, *returnValue, iPSet);
55 
57 
58  providers_.push_back(returnValue);
59  return returnValue;
60  }
61 
62  void EventSetupsController::setMaxConcurrentIOVs(unsigned int nStreams, unsigned int nConcurrentLumis) {
64  }
65 
68  for (auto& eventSetupProvider : providers_) {
70  }
71 
72  for (auto& eventSetupProvider : providers_) {
73  eventSetupProvider->finishConfiguration(numberOfConcurrentIOVs_, hasNonconcurrentFinder_);
74  }
75 
76  // When the ESSources and ESProducers were constructed a first pass was
77  // done which attempts to get component sharing between SubProcesses
78  // correct, but in this pass only the configuration of the components
79  // being shared are compared. This is not good enough for ESProducers.
80  // In the following function, all the other components that contribute
81  // to the same record and also the records that record depends on are
82  // also checked. The component sharing is appropriately fixed as necessary.
85 
89  }
90  }
91 
93  IOVSyncValue const& syncValue,
94  WaitingTaskHolder const& taskToStartAfterIOVInit,
95  WaitingTaskList& endIOVWaitingTasks,
96  std::vector<std::shared_ptr<const EventSetupImpl>>& eventSetupImpls) {
98 
99  bool newEventSetupImpl = false;
100  eventSetupImpls.clear();
101  eventSetupImpls.reserve(providers_.size());
102 
103  // Note that unless there are one or more SubProcesses providers_ will only
104  // contain one element.
105 
106  for (auto& eventSetupProvider : providers_) {
107  eventSetupProvider->setAllValidityIntervals(syncValue);
108  }
109 
110  for (auto& eventSetupRecordIOVQueue : eventSetupRecordIOVQueues_) {
111  // For a particular record, if the top level process or any SubProcess requires
112  // starting a new IOV, then we must start a new IOV for all of them. And we
113  // need to know whether this is needed at this point in time. This is
114  // recorded in the EventSetupRecordProviders.
115  eventSetupRecordIOVQueue->setNewIntervalForAnySubProcess();
116  }
117 
118  for (auto& eventSetupProvider : providers_) {
119  // Decides whether we can reuse the existing EventSetupImpl and if we can
120  // returns it. If a new one is needed it will create it, although the pointers
121  // to the EventSetupRecordImpl's will not be set yet in the returned EventSetupImpl
122  // object.
123  eventSetupImpls.push_back(eventSetupProvider->eventSetupForInstance(syncValue, newEventSetupImpl));
124  }
125 
126  for (auto& eventSetupRecordIOVQueue : eventSetupRecordIOVQueues_) {
127  eventSetupRecordIOVQueue->checkForNewIOVs(taskToStartAfterIOVInit, endIOVWaitingTasks, newEventSetupImpl);
128  }
129  }
130 
132  if (hasNonconcurrentFinder()) {
133  for (auto& eventSetupProvider : providers_) {
134  if (eventSetupProvider->doWeNeedToWaitForIOVsToFinish(syncValue)) {
135  return true;
136  }
137  }
138  }
139  return false;
140  }
141 
143  for (auto& eventSetupProvider : providers_) {
144  eventSetupProvider->forceCacheClear();
145  }
146  }
147 
148  std::shared_ptr<DataProxyProvider> EventSetupsController::getESProducerAndRegisterProcess(
149  ParameterSet const& pset, unsigned subProcessIndex) {
150  // Try to find a DataProxyProvider with a matching ParameterSet
151  auto elements = esproducers_.equal_range(pset.id());
152  for (auto it = elements.first; it != elements.second; ++it) {
153  // Untracked parameters must also match, do complete comparison if IDs match
154  if (isTransientEqual(pset, *it->second.pset())) {
155  // Register processes with an exact match
156  it->second.subProcessIndexes().push_back(subProcessIndex);
157  // Return the DataProxyProvider
158  return it->second.provider();
159  }
160  }
161  // Could not find it
162  return std::shared_ptr<DataProxyProvider>();
163  }
164 
166  std::shared_ptr<DataProxyProvider> const& component,
167  unsigned subProcessIndex) {
168  auto newElement =
169  esproducers_.insert(std::pair<ParameterSetID, ESProducerInfo>(pset.id(), ESProducerInfo(&pset, component)));
170  // Register processes with an exact match
171  newElement->second.subProcessIndexes().push_back(subProcessIndex);
172  }
173 
174  std::shared_ptr<EventSetupRecordIntervalFinder> EventSetupsController::getESSourceAndRegisterProcess(
175  ParameterSet const& pset, unsigned subProcessIndex) {
176  // Try to find a EventSetupRecordIntervalFinder with a matching ParameterSet
177  auto elements = essources_.equal_range(pset.id());
178  for (auto it = elements.first; it != elements.second; ++it) {
179  // Untracked parameters must also match, do complete comparison if IDs match
180  if (isTransientEqual(pset, *it->second.pset())) {
181  // Register processes with an exact match
182  it->second.subProcessIndexes().push_back(subProcessIndex);
183  // Return the EventSetupRecordIntervalFinder
184  return it->second.finder();
185  }
186  }
187  // Could not find it
188  return std::shared_ptr<EventSetupRecordIntervalFinder>();
189  }
190 
192  std::shared_ptr<EventSetupRecordIntervalFinder> const& component,
193  unsigned subProcessIndex) {
194  auto newElement =
195  essources_.insert(std::pair<ParameterSetID, ESSourceInfo>(pset.id(), ESSourceInfo(&pset, component)));
196  // Register processes with an exact match
197  newElement->second.subProcessIndexes().push_back(subProcessIndex);
198  }
199 
201  esproducers_.clear();
202  essources_.clear();
203  }
204 
206  unsigned subProcessIndex,
207  unsigned precedingProcessIndex,
208  bool& firstProcessWithThisPSet,
209  bool& precedingHasMatchingPSet) const {
210  auto elements = esproducers_.equal_range(psetID);
211  for (auto it = elements.first; it != elements.second; ++it) {
212  std::vector<unsigned> const& subProcessIndexes = it->second.subProcessIndexes();
213 
214  auto iFound = std::find(subProcessIndexes.begin(), subProcessIndexes.end(), subProcessIndex);
215  if (iFound == subProcessIndexes.end()) {
216  continue;
217  }
218 
219  if (iFound == subProcessIndexes.begin()) {
220  firstProcessWithThisPSet = true;
221  precedingHasMatchingPSet = false;
222  } else {
223  auto iFoundPreceding = std::find(subProcessIndexes.begin(), iFound, precedingProcessIndex);
224  if (iFoundPreceding == iFound) {
225  firstProcessWithThisPSet = false;
226  precedingHasMatchingPSet = false;
227  } else {
228  firstProcessWithThisPSet = false;
229  precedingHasMatchingPSet = true;
230  }
231  }
232  return;
233  }
234  throw edm::Exception(edm::errors::LogicError) << "EventSetupsController::lookForMatches\n"
235  << "Subprocess index not found. This should never happen\n"
236  << "Please report this to a Framework Developer\n";
237  }
238 
240  unsigned subProcessIndex,
241  unsigned precedingProcessIndex) const {
242  auto elements = esproducers_.equal_range(psetID);
243  for (auto it = elements.first; it != elements.second; ++it) {
244  std::vector<unsigned> const& subProcessIndexes = it->second.subProcessIndexes();
245 
246  auto iFound = std::find(subProcessIndexes.begin(), subProcessIndexes.end(), subProcessIndex);
247  if (iFound == subProcessIndexes.end()) {
248  continue;
249  }
250 
251  auto iFoundPreceding = std::find(subProcessIndexes.begin(), iFound, precedingProcessIndex);
252  if (iFoundPreceding == iFound) {
253  break;
254  } else {
255  return iFoundPreceding == subProcessIndexes.begin();
256  }
257  }
258  throw edm::Exception(edm::errors::LogicError) << "EventSetupsController::isFirstMatch\n"
259  << "Subprocess index not found. This should never happen\n"
260  << "Please report this to a Framework Developer\n";
261  return false;
262  }
263 
265  unsigned subProcessIndex,
266  unsigned precedingProcessIndex) const {
267  auto elements = esproducers_.equal_range(psetID);
268  for (auto it = elements.first; it != elements.second; ++it) {
269  std::vector<unsigned> const& subProcessIndexes = it->second.subProcessIndexes();
270 
271  auto iFound = std::find(subProcessIndexes.begin(), subProcessIndexes.end(), subProcessIndex);
272  if (iFound == subProcessIndexes.end()) {
273  continue;
274  }
275 
276  auto iFoundPreceding = std::find(subProcessIndexes.begin(), iFound, precedingProcessIndex);
277  if (iFoundPreceding == iFound) {
278  break;
279  } else {
280  return (++iFoundPreceding) == iFound;
281  }
282  }
283  throw edm::Exception(edm::errors::LogicError) << "EventSetupsController::isLastMatch\n"
284  << "Subprocess index not found. This should never happen\n"
285  << "Please report this to a Framework Developer\n";
286  return false;
287  }
288 
290  unsigned subProcessIndex,
291  unsigned precedingProcessIndex) const {
292  auto elements = essources_.equal_range(psetID);
293  for (auto it = elements.first; it != elements.second; ++it) {
294  std::vector<unsigned> const& subProcessIndexes = it->second.subProcessIndexes();
295 
296  auto iFound = std::find(subProcessIndexes.begin(), subProcessIndexes.end(), subProcessIndex);
297  if (iFound == subProcessIndexes.end()) {
298  continue;
299  }
300 
301  auto iFoundPreceding = std::find(subProcessIndexes.begin(), iFound, precedingProcessIndex);
302  if (iFoundPreceding == iFound) {
303  return false;
304  } else {
305  return true;
306  }
307  }
308  throw edm::Exception(edm::errors::LogicError) << "EventSetupsController::lookForMatchingESSource\n"
309  << "Subprocess index not found. This should never happen\n"
310  << "Please report this to a Framework Developer\n";
311  return false;
312  }
313 
315  unsigned subProcessIndex,
316  unsigned precedingProcessIndex) const {
317  auto elements = esproducers_.equal_range(psetID);
318  for (auto it = elements.first; it != elements.second; ++it) {
319  std::vector<unsigned> const& subProcessIndexes = it->second.subProcessIndexes();
320 
321  auto iFound = std::find(subProcessIndexes.begin(), subProcessIndexes.end(), subProcessIndex);
322  if (iFound == subProcessIndexes.end()) {
323  continue;
324  }
325 
326  auto iFoundPreceding = std::find(subProcessIndexes.begin(), iFound, precedingProcessIndex);
327  if (iFoundPreceding == iFound) {
328  return false;
329  } else {
330  return true;
331  }
332  }
333  throw edm::Exception(edm::errors::LogicError) << "EventSetupsController::lookForMatchingESSource\n"
334  << "Subprocess index not found. This should never happen\n"
335  << "Please report this to a Framework Developer\n";
336  return false;
337  }
338 
340  unsigned subProcessIndex) const {
341  auto elements = esproducers_.equal_range(psetID);
342  for (auto it = elements.first; it != elements.second; ++it) {
343  std::vector<unsigned> const& subProcessIndexes = it->second.subProcessIndexes();
344 
345  auto iFound = std::find(subProcessIndexes.begin(), subProcessIndexes.end(), subProcessIndex);
346  if (iFound == subProcessIndexes.end()) {
347  continue;
348  }
349  return it->second.pset();
350  }
351  throw edm::Exception(edm::errors::LogicError) << "EventSetupsController::getESProducerPSet\n"
352  << "Subprocess index not found. This should never happen\n"
353  << "Please report this to a Framework Developer\n";
354  return nullptr;
355  }
356 
358  // Loop over SubProcesses, skip the top level process.
359  auto esProvider = providers_.begin();
360  auto const esProviderEnd = providers_.end();
361  if (esProvider != esProviderEnd)
362  ++esProvider;
363  for (; esProvider != esProviderEnd; ++esProvider) {
364  // An element is added to this set for each ESProducer
365  // when we have determined which preceding process
366  // this process can share that ESProducer with or
367  // we have determined that it cannot be shared with
368  // any preceding process.
369  // Note the earliest possible preceding process
370  // will be the one selected if there is more than one.
371  std::set<ParameterSetIDHolder> sharingCheckDone;
372 
373  // This will hold an entry for DataProxy's that are
374  // referenced by an EventSetupRecord in this SubProcess.
375  // But only for DataProxy's that are associated with
376  // an ESProducer (not the ones associated with ESSource's
377  // or EDLooper's)
378  std::map<EventSetupRecordKey, std::vector<ComponentDescription const*>> referencedESProducers;
379 
380  // For each EventSetupProvider from a SubProcess, loop over the
381  // EventSetupProviders from the preceding processes (the first
382  // preceding process will be the top level process and the others
383  // SubProcess's)
384  for (auto precedingESProvider = providers_.begin(); precedingESProvider != esProvider; ++precedingESProvider) {
385  (*esProvider)->checkESProducerSharing(**precedingESProvider, sharingCheckDone, referencedESProducers, *this);
386  }
387 
388  (*esProvider)->resetRecordToProxyPointers();
389  }
390  for (auto& eventSetupProvider : providers_) {
391  eventSetupProvider->clearInitializationData();
392  }
393  }
394 
396  std::set<EventSetupRecordKey> keys;
397  for (auto const& provider : providers_) {
398  provider->fillKeys(keys);
399  }
400 
401  for (auto const& key : keys) {
402  eventSetupRecordIOVQueues_.push_back(
403  std::make_unique<EventSetupRecordIOVQueue>(numberOfConcurrentIOVs_.numberOfConcurrentIOVs(key)));
405  for (auto& provider : providers_) {
406  EventSetupRecordProvider* recProvider = provider->tryToGetRecordProvider(key);
407  if (recProvider) {
408  iovQueue.addRecProvider(recProvider);
409  }
410  }
411  }
412  }
413 
415  tbb::task_group& iGroup,
416  eventsetup::EventSetupsController& espController) {
417  FinalWaitingTask waitUntilIOVInitializationCompletes;
418 
419  // These do nothing ...
420  WaitingTaskList dummyWaitingTaskList;
421  std::vector<std::shared_ptr<const EventSetupImpl>> dummyEventSetupImpls;
422 
423  {
424  WaitingTaskHolder waitingTaskHolder(iGroup, &waitUntilIOVInitializationCompletes);
425  // Caught exception is propagated via WaitingTaskHolder
426  CMS_SA_ALLOW try {
427  // All the real work is done here.
428  espController.eventSetupForInstanceAsync(
429  syncValue, waitingTaskHolder, dummyWaitingTaskList, dummyEventSetupImpls);
430  dummyWaitingTaskList.doneWaiting(std::exception_ptr{});
431  } catch (...) {
432  dummyWaitingTaskList.doneWaiting(std::exception_ptr{});
433  waitingTaskHolder.doneWaiting(std::current_exception());
434  }
435  }
436  do {
437  iGroup.wait();
438  } while (not waitUntilIOVInitializationCompletes.done());
439 
440  if (waitUntilIOVInitializationCompletes.exceptionPtr() != nullptr) {
441  std::rethrow_exception(*(waitUntilIOVInitializationCompletes.exceptionPtr()));
442  }
443  }
444  } // namespace eventsetup
445 } // namespace edm
edm::eventsetup::ESProducerInfo
Definition: EventSetupsController.h:46
edm::eventsetup::EventSetupsController::eventSetupForInstanceAsync
void eventSetupForInstanceAsync(IOVSyncValue const &, WaitingTaskHolder const &taskToStartAfterIOVInit, WaitingTaskList &endIOVWaitingTasks, std::vector< std::shared_ptr< const EventSetupImpl >> &)
Definition: EventSetupsController.cc:92
edm::eventsetup::EventSetupsController::makeProvider
std::shared_ptr< EventSetupProvider > makeProvider(ParameterSet &, ActivityRegistry *, ParameterSet const *eventSetupPset=nullptr)
Definition: EventSetupsController.cc:42
EventSetupProvider.h
edm::errors::LogicError
Definition: EDMException.h:37
WaitingTaskHolder.h
edm::eventsetup::EventSetupsController::EventSetupsController
EventSetupsController()
Definition: EventSetupsController.cc:34
edm
HLT enums.
Definition: AlignableModifier.h:19
edm::eventsetup::EventSetupsController::taskArena_
tbb::task_arena taskArena_
Definition: EventSetupsController.h:167
edm::eventsetup::synchronousEventSetupForInstance
void synchronousEventSetupForInstance(IOVSyncValue const &syncValue, tbb::task_group &iGroup, eventsetup::EventSetupsController &espController)
Definition: EventSetupsController.cc:414
edm::eventsetup::EventSetupsController::eventSetupRecordIOVQueues_
std::vector< propagate_const< std::unique_ptr< EventSetupRecordIOVQueue > > > eventSetupRecordIOVQueues_
Definition: EventSetupsController.h:173
edm::eventsetup::EventSetupsController::forceCacheClear
void forceCacheClear()
Definition: EventSetupsController.cc:142
relativeConstraints.keys
keys
Definition: relativeConstraints.py:89
edm::eventsetup::EventSetupsController::putESSource
void putESSource(ParameterSet const &pset, std::shared_ptr< EventSetupRecordIntervalFinder > const &component, unsigned subProcessIndex)
Definition: EventSetupsController.cc:191
EventSetupsController.h
edm::WaitingTaskHolder::doneWaiting
void doneWaiting(std::exception_ptr iExcept)
Definition: WaitingTaskHolder.h:93
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
DataProxy.h
CMS_SA_ALLOW
#define CMS_SA_ALLOW
Definition: thread_safety_macros.h:5
runTheMatrix.nStreams
nStreams
Definition: runTheMatrix.py:371
edm::eventsetup::EventSetupsController::isLastMatch
bool isLastMatch(ParameterSetID const &psetID, unsigned subProcessIndex, unsigned precedingProcessIndex) const
Definition: EventSetupsController.cc:264
edm::eventsetup::makeEventSetupProvider
std::unique_ptr< EventSetupProvider > makeEventSetupProvider(ParameterSet const &params, unsigned subProcessIndex, ActivityRegistry *activityRegistry, tbb::task_arena *taskArena)
Definition: EventSetupProviderMaker.cc:25
edm::WaitingTaskList
Definition: WaitingTaskList.h:84
edm::eventsetup::EventSetupsController::getESProducerPSet
ParameterSet const * getESProducerPSet(ParameterSetID const &psetID, unsigned subProcessIndex) const
Definition: EventSetupsController.cc:339
edm::eventsetup::EventSetupsController::lookForMatches
void lookForMatches(ParameterSetID const &psetID, unsigned subProcessIndex, unsigned precedingProcessIndex, bool &firstProcessWithThisPSet, bool &precedingHasMatchingPSet) const
Definition: EventSetupsController.cc:205
EDMException.h
edm::eventsetup::EventSetupRecordProvider
Definition: EventSetupRecordProvider.h:47
edm::eventsetup::EventSetupRecordIOVQueue::addRecProvider
void addRecProvider(EventSetupRecordProvider *recProvider)
Definition: EventSetupRecordIOVQueue.cc:134
edm::WaitingTask::exceptionPtr
std::exception_ptr const * exceptionPtr() const
Returns exception thrown by dependent task.
Definition: WaitingTask.h:51
edm::eventsetup::ESSourceInfo
Definition: EventSetupsController.h:63
edm::eventsetup::EventSetupsController::providers_
std::vector< propagate_const< std::shared_ptr< EventSetupProvider > > > providers_
Definition: EventSetupsController.h:168
edm::eventsetup::EventSetupsController::essources_
std::multimap< ParameterSetID, ESSourceInfo > essources_
Definition: EventSetupsController.h:186
edm::ActivityRegistry
Definition: ActivityRegistry.h:134
edm::WaitingTaskList::doneWaiting
void doneWaiting(std::exception_ptr iPtr)
Signals that the resource is now available and tasks should be spawned.
Definition: WaitingTaskList.cc:212
edm::Hash
Definition: Hash.h:43
edm::IOVSyncValue
Definition: IOVSyncValue.h:31
edm::eventsetup::EventSetupsController::setMaxConcurrentIOVs
void setMaxConcurrentIOVs(unsigned int nStreams, unsigned int nConcurrentLumis)
Definition: EventSetupsController.cc:62
edm::eventsetup::EventSetupsController::numberOfConcurrentIOVs_
NumberOfConcurrentIOVs numberOfConcurrentIOVs_
Definition: EventSetupsController.h:169
edm::eventsetup::EventSetupsController::checkESProducerSharing
void checkESProducerSharing()
Definition: EventSetupsController.cc:357
edm::eventsetup::EventSetupsController::putESProducer
void putESProducer(ParameterSet const &pset, std::shared_ptr< DataProxyProvider > const &component, unsigned subProcessIndex)
Definition: EventSetupsController.cc:165
edm::ParameterSet
Definition: ParameterSet.h:47
edm::eventsetup::EventSetupsController::isMatchingESSource
bool isMatchingESSource(ParameterSetID const &psetID, unsigned subProcessIndex, unsigned precedingProcessIndex) const
Definition: EventSetupsController.cc:289
edm::WaitingTaskHolder
Definition: WaitingTaskHolder.h:32
edm::FinalWaitingTask::done
bool done() const
Definition: WaitingTask.h:82
edm::eventsetup::NumberOfConcurrentIOVs::readConfigurationParameters
void readConfigurationParameters(ParameterSet const *eventSetupPset)
Definition: NumberOfConcurrentIOVs.cc:19
DataKey.h
thread_safety_macros.h
edm::eventsetup::EventSetupsController::hasNonconcurrentFinder_
bool hasNonconcurrentFinder_
Definition: EventSetupsController.h:188
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
edm::eventsetup::EventSetupsController::isMatchingESProducer
bool isMatchingESProducer(ParameterSetID const &psetID, unsigned subProcessIndex, unsigned precedingProcessIndex) const
Definition: EventSetupsController.cc:314
edm::eventsetup::EventSetupsController::finishConfiguration
void finishConfiguration()
Definition: EventSetupsController.cc:66
ParameterSetIDHolder.h
edm::eventsetup::EventSetupsController::getESProducerAndRegisterProcess
std::shared_ptr< DataProxyProvider > getESProducerAndRegisterProcess(ParameterSet const &pset, unsigned subProcessIndex)
Definition: EventSetupsController.cc:148
edm::eventsetup::EventSetupsController
Definition: EventSetupsController.h:80
edm::eventsetup::EventSetupsController::endIOVsAsync
void endIOVsAsync(edm::WaitingTaskHolder iEndTask)
Definition: EventSetupsController.cc:36
edm::FinalWaitingTask
Definition: WaitingTask.h:76
edm::eventsetup::EventSetupsController::getESSourceAndRegisterProcess
std::shared_ptr< EventSetupRecordIntervalFinder > getESSourceAndRegisterProcess(ParameterSet const &pset, unsigned subProcessIndex)
Definition: EventSetupsController.cc:174
edm::isTransientEqual
bool isTransientEqual(ParameterSet const &a, ParameterSet const &b)
Definition: ParameterSet.cc:777
edm::eventsetup::EventSetupRecordIOVQueue
Definition: EventSetupRecordIOVQueue.h:45
edm::eventsetup::NumberOfConcurrentIOVs::numberOfConcurrentIOVs
unsigned int numberOfConcurrentIOVs(EventSetupRecordKey const &, bool printInfoMsg=false) const
Definition: NumberOfConcurrentIOVs.cc:47
edm::eventsetup::NumberOfConcurrentIOVs::clear
void clear()
Definition: NumberOfConcurrentIOVs.cc:75
edm::eventsetup::EventSetupsController::hasNonconcurrentFinder
bool hasNonconcurrentFinder() const
Definition: EventSetupsController.h:159
bookConverter.elements
elements
Definition: bookConverter.py:147
edm::eventsetup::NumberOfConcurrentIOVs::fillRecordsNotAllowingConcurrentIOVs
void fillRecordsNotAllowingConcurrentIOVs(EventSetupProvider const &)
Definition: NumberOfConcurrentIOVs.cc:43
Exception
Definition: hltDiff.cc:245
edm::eventsetup::fillEventSetupProvider
void fillEventSetupProvider(EventSetupsController &esController, EventSetupProvider &cp, ParameterSet &params)
Definition: EventSetupProviderMaker.cc:94
edm::eventsetup::EventSetupsController::initializeEventSetupRecordIOVQueues
void initializeEventSetupRecordIOVQueues()
Definition: EventSetupsController.cc:395
edm::eventsetup::EventSetupsController::mustFinishConfiguration_
bool mustFinishConfiguration_
Definition: EventSetupsController.h:189
edm::eventsetup::EventSetupsController::isFirstMatch
bool isFirstMatch(ParameterSetID const &psetID, unsigned subProcessIndex, unsigned precedingProcessIndex) const
Definition: EventSetupsController.cc:239
edm::eventsetup::NumberOfConcurrentIOVs::setMaxConcurrentIOVs
void setMaxConcurrentIOVs(unsigned int nStreams, unsigned int nConcurrentLumis)
Definition: NumberOfConcurrentIOVs.cc:39
WaitingTaskList.h
ParameterSet.h
EventSetupRecordKey.h
edm::eventsetup::EventSetupsController::clearComponents
void clearComponents()
Definition: EventSetupsController.cc:200
edm::eventsetup::EventSetupsController::esproducers_
std::multimap< ParameterSetID, ESProducerInfo > esproducers_
Definition: EventSetupsController.h:185
crabWrapper.key
key
Definition: crabWrapper.py:19
EventSetupProviderMaker.h
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
edm::eventsetup::EventSetupsController::doWeNeedToWaitForIOVsToFinish
bool doWeNeedToWaitForIOVsToFinish(IOVSyncValue const &) const
Definition: EventSetupsController.cc:131