CMS 3D CMS Logo

EventSetupRecordProvider.h
Go to the documentation of this file.
1 #ifndef FWCore_Framework_EventSetupRecordProvider_h
2 #define FWCore_Framework_EventSetupRecordProvider_h
3 // -*- C++ -*-
4 //
5 // Package: Framework
6 // Class : EventSetupRecordProvider
7 //
16 //
17 // Author: Chris Jones
18 // Created: Fri Mar 25 19:02:23 EST 2005
19 //
20 
21 // user include files
26 
27 // system include files
28 
29 #include <map>
30 #include <memory>
31 #include <set>
32 #include <vector>
33 
34 // forward declarations
35 namespace edm {
37 
38  namespace eventsetup {
39  struct ComponentDescription;
40  class DataKey;
41  class DataProxyProvider;
42  class EventSetupProvider;
44  class ParameterSetIDHolder;
45 
47  public:
48  typedef std::map<DataKey, ComponentDescription> DataToPreferredProviderMap;
49 
51 
52  // ---------- const member functions ---------------------
53 
55  EventSetupRecordKey const& key() const { return key_; }
56 
57  EventSetupRecordImpl const& record() const { return record_; }
59 
61  std::set<EventSetupRecordKey> dependentRecords() const;
62 
64  std::set<ComponentDescription> proxyProviderDescriptions() const;
65 
67  std::vector<DataKey> registeredDataKeys() const;
68 
69  std::vector<ComponentDescription const*> componentsForRegisteredDataKeys() const;
70  // ---------- member functions ---------------------------
71 
73  std::shared_ptr<DataProxyProvider> proxyProvider(ComponentDescription const&);
74 
76  std::shared_ptr<DataProxyProvider> proxyProvider(ParameterSetIDHolder const&);
77 
78  void resetProxyProvider(ParameterSetIDHolder const&, std::shared_ptr<DataProxyProvider> const&);
79 
82 
83  void add(std::shared_ptr<DataProxyProvider>);
85  void addFinder(std::shared_ptr<EventSetupRecordIntervalFinder>);
87 
90 
92  void setDependentProviders(std::vector<std::shared_ptr<EventSetupRecordProvider>> const&);
93 
96  void usePreferred(DataToPreferredProviderMap const&);
97 
99  void resetProxies();
100 
101  std::shared_ptr<EventSetupRecordIntervalFinder const> finder() const { return get_underlying_safe(finder_); }
102  std::shared_ptr<EventSetupRecordIntervalFinder>& finder() { return get_underlying_safe(finder_); }
103 
105  std::map<EventSetupRecordKey, std::vector<ComponentDescription const*>>& referencedESProducers);
106 
107  void fillReferencedDataKeys(std::map<DataKey, ComponentDescription const*>& referencedDataKeys) const;
108 
109  void resetRecordToProxyPointers(DataToPreferredProviderMap const& iMap);
110 
111  protected:
112  void addProxiesToRecordHelper(edm::propagate_const<std::shared_ptr<DataProxyProvider>>& dpp,
113  DataToPreferredProviderMap const& mp) {
115  }
116  void addProxiesToRecord(std::shared_ptr<DataProxyProvider>, DataToPreferredProviderMap const&);
117  void cacheReset();
118 
119  std::shared_ptr<EventSetupRecordIntervalFinder> swapFinder(std::shared_ptr<EventSetupRecordIntervalFinder> iNew) {
120  std::swap(iNew, finder());
121  return iNew;
122  }
123 
124  private:
125  EventSetupRecordProvider(EventSetupRecordProvider const&) = delete; // stop default
126 
127  EventSetupRecordProvider const& operator=(EventSetupRecordProvider const&) = delete; // stop default
128 
129  void resetTransients();
130  bool checkResetTransients();
131  // ---------- member data --------------------------------
136  std::vector<edm::propagate_const<std::shared_ptr<DataProxyProvider>>> providers_;
137  std::unique_ptr<std::vector<edm::propagate_const<std::shared_ptr<EventSetupRecordIntervalFinder>>>>
140  };
141  } // namespace eventsetup
142 } // namespace edm
143 
144 #endif
std::map< DataKey, ComponentDescription > DataToPreferredProviderMap
void resetProxyProvider(ParameterSetIDHolder const &, std::shared_ptr< DataProxyProvider > const &)
std::vector< edm::propagate_const< std::shared_ptr< DataProxyProvider > > > providers_
void add(std::shared_ptr< DataProxyProvider >)
ValidityInterval const & validityInterval() const
EventSetupRecordImpl const & record() const
bool setValidityIntervalFor(IOVSyncValue const &)
sets interval to this time and returns true if have a valid interval for time
void fillReferencedDataKeys(std::map< DataKey, ComponentDescription const * > &referencedDataKeys) const
void addRecordToIfValid(EventSetupProvider &, IOVSyncValue const &)
std::vector< DataKey > registeredDataKeys() const
The available DataKeys in the Record. The order can be used to request the data by index...
std::unique_ptr< std::vector< edm::propagate_const< std::shared_ptr< EventSetupRecordIntervalFinder > > > > multipleFinders_
std::vector< ComponentDescription const * > componentsForRegisteredDataKeys() const
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
void setValidityInterval(ValidityInterval const &)
void setDependentProviders(std::vector< std::shared_ptr< EventSetupRecordProvider >> const &)
If the provided Record depends on other Records, here are the dependent Providers.
EventSetupRecordProvider(EventSetupRecordKey const &iKey)
std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
std::shared_ptr< EventSetupRecordIntervalFinder > & finder()
void addFinder(std::shared_ptr< EventSetupRecordIntervalFinder >)
For now, only use one finder.
std::shared_ptr< DataProxyProvider > proxyProvider(ComponentDescription const &)
returns the first matching DataProxyProvider or a &#39;null&#39; if not found
EventSetupRecordProvider const & operator=(EventSetupRecordProvider const &)=delete
void addProxiesToRecordHelper(edm::propagate_const< std::shared_ptr< DataProxyProvider >> &dpp, DataToPreferredProviderMap const &mp)
edm::propagate_const< std::shared_ptr< EventSetupRecordIntervalFinder > > finder_
void addProxiesToRecord(std::shared_ptr< DataProxyProvider >, DataToPreferredProviderMap const &)
void getReferencedESProducers(std::map< EventSetupRecordKey, std::vector< ComponentDescription const * >> &referencedESProducers)
std::set< ComponentDescription > proxyProviderDescriptions() const
return information on which DataProxyProviders are supplying information
HLT enums.
std::shared_ptr< EventSetupRecordIntervalFinder > swapFinder(std::shared_ptr< EventSetupRecordIntervalFinder > iNew)
std::set< EventSetupRecordKey > dependentRecords() const
Returns the list of Records the provided Record depends on (usually none)
void usePreferred(DataToPreferredProviderMap const &)
std::shared_ptr< EventSetupRecordIntervalFinder const > finder() const
void resetProxies()
This will clear the cache&#39;s of all the Proxies so that next time they are called they will run...
EventSetupRecordKey const & key() const
void resetRecordToProxyPointers(DataToPreferredProviderMap const &iMap)