HGCal Test Beam  03a93d6239a951948e06fb3ef8dae4cbdebfad30
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
HGCalCondObjectContainer.h
Go to the documentation of this file.
1 #ifndef HGCAL_CONDOBJECTS_HGCALCONDOBJECTCONTAINER_H
2 #define HGCAL_CONDOBJECTS_HGCALCONDOBJECTCONTAINER_H 1
3 
4 #include <vector>
5 #include "DataFormats/DetId/interface/DetId.h"
6 
7 
9 {
10 public:
11  static const size_t INVALID = (size_t) - 1;
12  virtual size_t rangeFor(uint64_t scheme) const = 0;
13  virtual size_t denseIndexFor(uint32_t rawDetId, uint64_t scheme) const = 0;
14  virtual size_t denseIndexFor(DetId rawDetId, uint64_t scheme) const
15  {
16  return denseIndexFor(rawDetId.rawId(), scheme);
17  }
18 };
19 
20 
21 /** \class HGCalCondObjectContainerBase
22  *
23  * $Date: $
24  * $Revision: $
25  * \author J. Mans - Minnesota
26  */
28 {
29 public:
30  HGCalCondObjectContainerBase(const HGCalCondObjectNumberingScheme* scheme, uint64_t ischeme) : m_numbering_code(ischeme), p_numbering(scheme) { }
31  HGCalCondObjectContainerBase() : m_numbering_code(0), p_numbering(0) { }
32 
34  {
35  p_numbering = scheme;
36  }
37  void setNumberingScheme(const HGCalCondObjectNumberingScheme* scheme, uint64_t code)
38  {
39  p_numbering = scheme;
40  m_numbering_code = code;
41  }
43  {
44  return p_numbering;
45  }
46  uint64_t schemeCode() const
47  {
48  return m_numbering_code;
49  }
50 
51  bool exists(DetId id) const
52  {
54  }
55 protected:
56  size_t indexOf(DetId id) const;
57 private:
58  uint64_t m_numbering_code;
59  const HGCalCondObjectNumberingScheme* p_numbering; // volatile
60 };
61 
62 /** \class HGCalCondObjectContainer
63  *
64  * $Date: $
65  * $Revision: $
66  * \author J. Mans - Minnesota
67  */
68 template <class Payload>
70 {
71 public:
72  struct Item {
73  DetId id;
74  Payload value;
75  };
76 
77  HGCalCondObjectContainer(const HGCalCondObjectNumberingScheme* scheme, uint64_t ischeme) : HGCalCondObjectContainerBase(scheme, ischeme), m_payload(scheme->rangeFor(ischeme))
78  {
79  }
81 
82  const Item* get(DetId id) const
83  {
84  size_t i = indexOf(id);
85  return (i == HGCalCondObjectNumberingScheme::INVALID) ? (0) : (&(m_payload[i]));
86  }
87  size_t size() const
88  {
89  return m_payload.size();
90  }
91  const Item& get(size_t i) const
92  {
93  return m_payload[i];
94  }
95  void set(DetId id, const Payload& value)
96  {
97  size_t i = indexOf(id);
99  m_payload[i].id = id;
100  m_payload[i].value = value;
101  }
102  }
103 private:
104  std::vector<Item> m_payload;
105 };
106 
107 #endif
HGCalCondObjectContainer(const HGCalCondObjectNumberingScheme *scheme, uint64_t ischeme)
HGCalCondObjectContainerBase(const HGCalCondObjectNumberingScheme *scheme, uint64_t ischeme)
virtual size_t denseIndexFor(DetId rawDetId, uint64_t scheme) const
virtual size_t rangeFor(uint64_t scheme) const =0
void setNumberingScheme(const HGCalCondObjectNumberingScheme *scheme)
const HGCalCondObjectNumberingScheme * getNumberingScheme() const
void set(DetId id, const Payload &value)
void setNumberingScheme(const HGCalCondObjectNumberingScheme *scheme, uint64_t code)
virtual size_t denseIndexFor(uint32_t rawDetId, uint64_t scheme) const =0