CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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
24 
25 // system include files
26 #include "boost/shared_ptr.hpp"
27 
28 #include <map>
29 #include <memory>
30 #include <set>
31 #include <vector>
32 
33 // forward declarations
34 namespace edm {
36 
37  namespace eventsetup {
38  struct ComponentDescription;
39  class DataKey;
40  class DataProxyProvider;
41  class EventSetupProvider;
42  class EventSetupRecord;
43  class ParameterSetIDHolder;
44 
46 
47  public:
48  typedef std::map<DataKey, ComponentDescription> DataToPreferredProviderMap;
49 
51  virtual ~EventSetupRecordProvider();
52 
53  // ---------- const member functions ---------------------
54 
56  return validityInterval_;
57  }
58  EventSetupRecordKey const& key() const { return key_; }
59 
61  virtual std::set<EventSetupRecordKey> dependentRecords() const;
62 
64  std::set<ComponentDescription> proxyProviderDescriptions() const;
65 
67  boost::shared_ptr<DataProxyProvider> proxyProvider(ComponentDescription const&) const;
68 
70  boost::shared_ptr<DataProxyProvider> proxyProvider(ParameterSetIDHolder const&) const;
71 
72 
73  // ---------- static member functions --------------------
74 
75  // ---------- member functions ---------------------------
76 
77  void resetProxyProvider(ParameterSetIDHolder const&, boost::shared_ptr<DataProxyProvider> const&);
78 
81 
82  void add(boost::shared_ptr<DataProxyProvider>);
84  void addFinder(boost::shared_ptr<EventSetupRecordIntervalFinder>);
86 
89 
91  void setDependentProviders(std::vector<boost::shared_ptr<EventSetupRecordProvider> >const&);
92 
96 
98  void resetProxies();
99 
100  boost::shared_ptr<EventSetupRecordIntervalFinder> finder() const { return finder_; }
101 
102  void getReferencedESProducers(std::map<EventSetupRecordKey, std::vector<ComponentDescription const*> >& referencedESProducers);
103 
104  void fillReferencedDataKeys(std::map<DataKey, ComponentDescription const*>& referencedDataKeys);
105 
107 
108  protected:
109  void addProxiesToRecord(boost::shared_ptr<DataProxyProvider>,
111  void cacheReset();
112 
113  virtual EventSetupRecord& record() = 0;
114 
115  boost::shared_ptr<EventSetupRecordIntervalFinder> swapFinder(boost::shared_ptr<EventSetupRecordIntervalFinder> iNew) {
116  std::swap(iNew, finder_);
117  return iNew;
118  }
119 
120  private:
121  EventSetupRecordProvider(EventSetupRecordProvider const&); // stop default
122 
123  EventSetupRecordProvider const& operator=(EventSetupRecordProvider const&); // stop default
124 
125  void resetTransients();
126  bool checkResetTransients();
127  // ---------- member data --------------------------------
130  boost::shared_ptr<EventSetupRecordIntervalFinder> finder_;
131  std::vector<boost::shared_ptr<DataProxyProvider> > providers_;
132  std::auto_ptr<std::vector<boost::shared_ptr<EventSetupRecordIntervalFinder> > > multipleFinders_;
134 };
135  }
136 }
137 
138 #endif
std::map< DataKey, ComponentDescription > DataToPreferredProviderMap
boost::shared_ptr< EventSetupRecordIntervalFinder > swapFinder(boost::shared_ptr< EventSetupRecordIntervalFinder > iNew)
boost::shared_ptr< DataProxyProvider > proxyProvider(ComponentDescription const &) const
returns the first matching DataProxyProvider or a &#39;null&#39; if not found
ValidityInterval const & validityInterval() const
std::vector< boost::shared_ptr< DataProxyProvider > > providers_
void addProxiesToRecord(boost::shared_ptr< DataProxyProvider >, DataToPreferredProviderMap const &)
bool setValidityIntervalFor(IOVSyncValue const &)
sets interval to this time and returns true if have a valid interval for time
void getReferencedESProducers(std::map< EventSetupRecordKey, std::vector< ComponentDescription const * > > &referencedESProducers)
void resetProxyProvider(ParameterSetIDHolder const &, boost::shared_ptr< DataProxyProvider > const &)
void addRecordToIfValid(EventSetupProvider &, IOVSyncValue const &)
void add(boost::shared_ptr< DataProxyProvider >)
void addFinder(boost::shared_ptr< EventSetupRecordIntervalFinder >)
For now, only use one finder.
std::auto_ptr< std::vector< boost::shared_ptr< EventSetupRecordIntervalFinder > > > multipleFinders_
void setDependentProviders(std::vector< boost::shared_ptr< EventSetupRecordProvider > >const &)
If the provided Record depends on other Records, here are the dependent Providers.
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
void setValidityInterval(ValidityInterval const &)
virtual EventSetupRecord & record()=0
EventSetupRecordProvider(EventSetupRecordKey const &iKey)
boost::shared_ptr< EventSetupRecordIntervalFinder > finder() const
std::set< ComponentDescription > proxyProviderDescriptions() const
return information on which DataProxyProviders are supplying information
virtual std::set< EventSetupRecordKey > dependentRecords() const
Returns the list of Records the provided Record depends on (usually none)
void fillReferencedDataKeys(std::map< DataKey, ComponentDescription const * > &referencedDataKeys)
void usePreferred(DataToPreferredProviderMap const &)
boost::shared_ptr< EventSetupRecordIntervalFinder > finder_
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)
EventSetupRecordProvider const & operator=(EventSetupRecordProvider const &)