CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
EcalCondObjectContainer.h
Go to the documentation of this file.
1 #ifndef ECAL_COND_OBJECT_CONTAINER_HH
2 #define ECAL_COND_OBJECT_CONTAINER_HH
3 
7 
8 template < typename T >
10  public:
11  typedef T Item;
12  typedef Item value_type;
14  typedef typename std::vector<Item> Items;
15  typedef typename std::vector<Item>::const_iterator const_iterator;
16  typedef typename std::vector<Item>::iterator iterator;
17 
20 
21  inline
22  const Items & barrelItems() const { return eb_.items(); };
23 
24  inline
25  const Items & endcapItems() const { return ee_.items(); };
26 
27  inline
28  const Item & barrel( size_t hashedIndex ) const {
29  return eb_.item(hashedIndex);
30  }
31 
32  inline
33  const Item & endcap( size_t hashedIndex ) const {
34  return ee_.item(hashedIndex);
35  }
36 
37  inline
38  void insert( std::pair<uint32_t, Item> const &a ) {
39  DetId id(a.first);
40  switch (id.subdetId()) {
41  case EcalBarrel :
42  {
43  eb_.insert(a);
44  }
45  break;
46  case EcalEndcap :
47  {
48  ee_.insert(a);
49  }
50  break;
51  default:
52  // FIXME (add throw)
53  return;
54  }
55  }
56 
57  inline
58  const_iterator find( uint32_t rawId ) const {
59  DetId id(rawId);
60  switch (id.subdetId()) {
61  case EcalBarrel :
62  {
63  const_iterator it = eb_.find(rawId);
64  if ( it != eb_.end() ) {
65  return it;
66  } else {
67  return ee_.end();
68  }
69  }
70  break;
71  case EcalEndcap :
72  {
73  return ee_.find(rawId);
74  }
75  break;
76  default:
77  // FIXME (add throw)
78  return ee_.end();
79  }
80  }
81 
82  inline
84  return eb_.begin();
85  }
86 
87  inline
88  const_iterator end() const {
89  return ee_.end();
90  }
91 
92  inline
93  void setValue(const uint32_t id, const Item &item) {
94  (*this)[id] = item;
95  }
96 
97  inline
98  const self & getMap() const {
99  return *this;
100  }
101 
102  inline
103  size_t size() const {
104  return eb_.size() + ee_.size();
105  }
106  // add coherent operator++, not needed now -- FIXME
107 
108  inline
109  Item & operator[]( uint32_t rawId )
110 #if !defined(__CINT__) && !defined(__MAKECINT__) && !defined(__REFLEX__)
111  {
112  DetId id(rawId);
113  switch (id.subdetId()) {
114  case EcalBarrel :
115  {
116  return eb_[rawId];
117  }
118  break;
119  case EcalEndcap :
120  {
121  return ee_[rawId];
122  }
123  break;
124  default:
125  // FIXME (add throw)
126  thread_local static Item dummy;
127  return dummy;
128  }
129  }
130 #else
131 ;
132 #endif
133 
134  inline
135  Item operator[]( uint32_t rawId ) const {
136  DetId id(rawId);
137  switch (id.subdetId()) {
138  case EcalBarrel :
139  {
140  return eb_[rawId];
141  }
142  break;
143  case EcalEndcap :
144  {
145  return ee_[rawId];
146  }
147  break;
148  default:
149  // FIXME (add throw)
150  // sizeof(Item) <= sizeof(int64_t) for all Items.
151  return Item();
152  }
153  }
154 
155  private:
156 
159 };
160 
162 #endif
const_iterator begin() const
Definition: EcalContainer.h:85
std::vector< Item >::iterator iterator
const Item & item(size_t hashid) const
Definition: EcalContainer.h:36
const self & getMap() const
const Items & items() const
Definition: EcalContainer.h:40
const_iterator end() const
Definition: EcalContainer.h:89
const Items & barrelItems() const
Item & operator[](uint32_t rawId)
Item operator[](uint32_t rawId) const
void setValue(const uint32_t id, const Item &item)
int hashedIndex(int ieta, int iphi)
Definition: EcalPyUtils.cc:42
EcalContainer< EBDetId, Item > eb_
const_iterator find(uint32_t rawId) const
Definition: EcalContainer.h:79
const_iterator begin() const
void insert(std::pair< uint32_t, Item > const &a)
Definition: DetId.h:18
std::vector< Item >::const_iterator const_iterator
void insert(std::pair< uint32_t, Item > const &a)
Definition: EcalContainer.h:32
double a
Definition: hdecay.h:121
const_iterator find(uint32_t rawId) const
EcalContainer< EEDetId, Item > ee_
const_iterator end() const
const Item & barrel(size_t hashedIndex) const
const Items & endcapItems() const
size_t size() const
Definition: EcalContainer.h:93
const Item & endcap(size_t hashedIndex) const
long double T
EcalCondObjectContainer< float > EcalFloatCondObjectContainer