CMS 3D CMS Logo

EventSetupRecordImplementation.h
Go to the documentation of this file.
1 #ifndef FWCore_Framework_EventSetupRecordImplementation_h
2 #define FWCore_Framework_EventSetupRecordImplementation_h
3 // -*- C++ -*-
4 //
5 // Package: Framework
6 // Class : EventSetupRecordImplementation
7 //
19 //
20 // Author: Chris Jones
21 // Created: Fri Apr 1 16:50:49 EST 2005
22 //
23 
24 // user include files
25 
31 
32 // system include files
33 
34 // forward declarations
35 namespace edm {
36  namespace eventsetup {
37  struct ComponentDescription;
38 
39  template <typename T>
41  public:
42  //virtual ~EventSetupRecordImplementation();
43 
44  // ---------- const member functions ---------------------
45  EventSetupRecordKey key() const override { return EventSetupRecordKey::makeKey<T>(); }
46 
47  template <typename PRODUCT>
49  return getHandleImpl<ESHandle>(iToken);
50  }
51 
52  template <typename PRODUCT>
54  static_assert(std::is_same_v<T, eventsetup::default_record_t<ESHandle<PRODUCT>>>,
55  "The Record being used to retrieve the product is not the default record for the product type");
56  return getHandleImpl<ESHandle>(iToken);
57  }
58 
59  template <typename PRODUCT>
61  return getHandleImpl<ESTransientHandle>(iToken);
62  }
63 
64  template <typename PRODUCT>
66  static_assert(std::is_same_v<T, eventsetup::default_record_t<ESTransientHandle<PRODUCT>>>,
67  "The Record being used to retrieve the product is not the default record for the product type");
68  return getHandleImpl<ESTransientHandle>(iToken);
69  }
70 
72 
73  template <typename PRODUCT>
74  PRODUCT const& get(ESGetToken<PRODUCT, T> const& iToken) const {
75  return *getHandleImpl<ESHandle>(iToken);
76  }
77  template <typename PRODUCT>
78  PRODUCT const& get(ESGetToken<PRODUCT, T>& iToken) const {
79  return *getHandleImpl<ESHandle>(const_cast<const ESGetToken<PRODUCT, T>&>(iToken));
80  }
81 
82  template <typename PRODUCT>
83  PRODUCT const& get(ESGetToken<PRODUCT, edm::DefaultRecord> const& iToken) const {
84  static_assert(std::is_same_v<T, eventsetup::default_record_t<ESHandle<PRODUCT>>>,
85  "The Record being used to retrieve the product is not the default record for the product type");
86  return *getHandleImpl<ESHandle>(iToken);
87  }
88  template <typename PRODUCT>
89  PRODUCT const& get(ESGetToken<PRODUCT, edm::DefaultRecord>& iToken) const {
90  return get(const_cast<const ESGetToken<PRODUCT, edm::DefaultRecord>&>(iToken));
91  }
92 
93  // ---------- static member functions --------------------
94  static EventSetupRecordKey keyForClass() { return EventSetupRecordKey::makeKey<T>(); }
95 
96  // ---------- member functions ---------------------------
97 
98  protected:
100 
101  private:
102  // ---------- member data --------------------------------
103  };
104  } // namespace eventsetup
105 } // namespace edm
106 
107 #endif
ESHandle< PRODUCT > getHandle(ESGetToken< PRODUCT, T > const &iToken) const
typename default_record< T >::RecordT default_record_t
ESTransientHandle< PRODUCT > getTransientHandle(ESGetToken< PRODUCT, T > const &iToken) const
HLT enums.
ESTransientHandle< PRODUCT > getTransientHandle(ESGetToken< PRODUCT, edm::DefaultRecord > const &iToken) const
ESHandle< PRODUCT > getHandle(ESGetToken< PRODUCT, edm::DefaultRecord > const &iToken) const
long double T
bool get(HolderT &iHolder) const