EICd
EIC data model
CalorimeterHitCollection.h
Go to the documentation of this file.
1 // AUTOMATICALLY GENERATED FILE - DO NOT EDIT
2 
3 #ifndef EICD_CalorimeterHitCollection_H
4 #define EICD_CalorimeterHitCollection_H
5 
6 // datamodel specific includes
8 #include "eicd/CalorimeterHit.h"
10 
11 // podio specific includes
12 #include "podio/ICollectionProvider.h"
13 #include "podio/CollectionBase.h"
14 #include "podio/CollectionIDTable.h"
15 
16 #include <string>
17 #include <vector>
18 #include <deque>
19 #include <array>
20 #include <algorithm>
21 #include <ostream>
22 
23 namespace eic {
24 
25 
26 using CalorimeterHitDataContainer = std::vector<CalorimeterHitData>;
27 using CalorimeterHitObjPointerContainer = std::deque<CalorimeterHitObj*>;
28 
30 public:
31  CalorimeterHitCollectionIterator(size_t index, const CalorimeterHitObjPointerContainer* collection) : m_index(index), m_object(nullptr), m_collection(collection) {}
32 
35 
37  return m_index != x.m_index; // TODO: may not be complete
38  }
39 
43 
44 private:
45  size_t m_index;
46  CalorimeterHit m_object;
47  const CalorimeterHitObjPointerContainer* m_collection;
48 };
49 
50 
52 public:
53  CalorimeterHitConstCollectionIterator(size_t index, const CalorimeterHitObjPointerContainer* collection) : m_index(index), m_object(nullptr), m_collection(collection) {}
54 
57 
59  return m_index != x.m_index; // TODO: may not be complete
60  }
61 
65 
66 private:
67  size_t m_index;
68  ConstCalorimeterHit m_object;
69  const CalorimeterHitObjPointerContainer* m_collection;
70 };
71 
72 
73 /**
74 A Collection is identified by an ID.
75 */
76 class CalorimeterHitCollection : public podio::CollectionBase {
77 
78 public:
81 
85 // CalorimeterHitCollection(CalorimeterHitVector* data, int collectionID);
87 
88  void clear() override final;
89 
90  /// operator to allow pointer like calling of members a la LCIO
91  CalorimeterHitCollection* operator->() { return (CalorimeterHitCollection*) this; }
92 
93  /// Append a new object to the collection, and return this object.
95 
96  /// Append a new object to the collection, and return this object.
97  /// Initialized with the parameters given
98  template<typename... Args>
99  CalorimeterHit create(Args&&... args);
100 
101  /// number of elements in the collection
102  size_t size() const override final;
103 
104  /// fully qualified type name of elements - with namespace
105  std::string getValueTypeName() const override { return std::string("eic::CalorimeterHit"); }
106 
107  /// Returns the const object of given index
108  ConstCalorimeterHit operator[](unsigned int index) const;
109  /// Returns the object of a given index
110  CalorimeterHit operator[](unsigned int index);
111  /// Returns the const object of given index
112  ConstCalorimeterHit at(unsigned int index) const;
113  /// Returns the object of given index
114  CalorimeterHit at(unsigned int index);
115 
116 
117  /// Append object to the collection
118  void push_back(ConstCalorimeterHit object);
119 
120  void prepareForWrite() override final;
121  void prepareAfterRead() override final;
122  void setBuffer(void* address) override final;
123  bool setReferences(const podio::ICollectionProvider* collectionProvider) override final;
124 
125  podio::CollRefCollection* referenceCollections() override final { return &m_refCollections; }
126 
127  podio::VectorMembersInfo* vectorMembers() override { return &m_vecmem_info; }
128 
129  void setID(unsigned ID) override final {
130  m_collectionID = ID;
131  std::for_each(m_entries.begin(),m_entries.end(),
132  [ID] (CalorimeterHitObj* obj) { obj->id = {obj->id.index, static_cast<int>(ID)}; }
133  );
134  m_isValid = true;
135  };
136 
137  unsigned getID() const override final {
138  return m_collectionID;
139  }
140 
141  bool isValid() const override final {
142  return m_isValid;
143  }
144 
145  // support for the iterator protocol
147  return iterator(0, &m_entries);
148  }
150  return const_iterator(0, &m_entries);
151  }
153  return iterator(m_entries.size(), &m_entries);
154  }
155  const_iterator end() const {
156  return const_iterator(m_entries.size(), &m_entries);
157  }
158 
159  /// returns the address of the pointer to the data buffer
160  void* getBufferAddress() override final { return (void*)&m_data; }
161 
162  /// Returns the pointer to the data buffer
163  std::vector<CalorimeterHitData>* _getBuffer() { return m_data; }
164 
165  template<size_t arraysize>
166  const std::array<eic::Index, arraysize> ID() const;
167  template<size_t arraysize>
168  const std::array<std::int64_t, arraysize> cellID() const;
169  template<size_t arraysize>
170  const std::array<std::int32_t, arraysize> layer() const;
171  template<size_t arraysize>
172  const std::array<std::int32_t, arraysize> sector() const;
173  template<size_t arraysize>
174  const std::array<float, arraysize> energy() const;
175  template<size_t arraysize>
176  const std::array<float, arraysize> energyError() const;
177  template<size_t arraysize>
178  const std::array<float, arraysize> time() const;
179  template<size_t arraysize>
180  const std::array<eic::VectorXYZ, arraysize> position() const;
181  template<size_t arraysize>
182  const std::array<eic::VectorXYZ, arraysize> local() const;
183  template<size_t arraysize>
184  const std::array<eic::VectorXYZ, arraysize> dimension() const;
185 
186 private:
187  bool m_isValid{false};
188  bool m_isReadFromFile{false};
189  int m_collectionID{0};
191 
192  // members to handle 1-to-N-relations
193 
194  // members to handle vector members
195  // members to handle streaming
196  podio::CollRefCollection m_refCollections{};
197  podio::VectorMembersInfo m_vecmem_info{};
199 };
200 
201 std::ostream& operator<<(std::ostream& o, const CalorimeterHitCollection& v);
202 
203 template<typename... Args>
204 CalorimeterHit CalorimeterHitCollection::create(Args&&... args) {
205  const int size = m_entries.size();
206  auto obj = new CalorimeterHitObj({size, m_collectionID}, {args...});
207  m_entries.push_back(obj);
208  return CalorimeterHit(obj);
209 }
210 
211 template<size_t arraysize>
212 const std::array<eic::Index, arraysize> CalorimeterHitCollection::ID() const {
213  std::array<eic::Index, arraysize> tmp;
214  const auto valid_size = std::min(arraysize, m_entries.size());
215  for (unsigned i = 0; i < valid_size; ++i) {
216  tmp[i] = m_entries[i]->data.ID;
217  }
218  return tmp;
219 }
220 
221 template<size_t arraysize>
222 const std::array<std::int64_t, arraysize> CalorimeterHitCollection::cellID() const {
223  std::array<std::int64_t, arraysize> tmp;
224  const auto valid_size = std::min(arraysize, m_entries.size());
225  for (unsigned i = 0; i < valid_size; ++i) {
226  tmp[i] = m_entries[i]->data.cellID;
227  }
228  return tmp;
229 }
230 
231 template<size_t arraysize>
232 const std::array<std::int32_t, arraysize> CalorimeterHitCollection::layer() const {
233  std::array<std::int32_t, arraysize> tmp;
234  const auto valid_size = std::min(arraysize, m_entries.size());
235  for (unsigned i = 0; i < valid_size; ++i) {
236  tmp[i] = m_entries[i]->data.layer;
237  }
238  return tmp;
239 }
240 
241 template<size_t arraysize>
242 const std::array<std::int32_t, arraysize> CalorimeterHitCollection::sector() const {
243  std::array<std::int32_t, arraysize> tmp;
244  const auto valid_size = std::min(arraysize, m_entries.size());
245  for (unsigned i = 0; i < valid_size; ++i) {
246  tmp[i] = m_entries[i]->data.sector;
247  }
248  return tmp;
249 }
250 
251 template<size_t arraysize>
252 const std::array<float, arraysize> CalorimeterHitCollection::energy() const {
253  std::array<float, arraysize> tmp;
254  const auto valid_size = std::min(arraysize, m_entries.size());
255  for (unsigned i = 0; i < valid_size; ++i) {
256  tmp[i] = m_entries[i]->data.energy;
257  }
258  return tmp;
259 }
260 
261 template<size_t arraysize>
262 const std::array<float, arraysize> CalorimeterHitCollection::energyError() const {
263  std::array<float, arraysize> tmp;
264  const auto valid_size = std::min(arraysize, m_entries.size());
265  for (unsigned i = 0; i < valid_size; ++i) {
266  tmp[i] = m_entries[i]->data.energyError;
267  }
268  return tmp;
269 }
270 
271 template<size_t arraysize>
272 const std::array<float, arraysize> CalorimeterHitCollection::time() const {
273  std::array<float, arraysize> tmp;
274  const auto valid_size = std::min(arraysize, m_entries.size());
275  for (unsigned i = 0; i < valid_size; ++i) {
276  tmp[i] = m_entries[i]->data.time;
277  }
278  return tmp;
279 }
280 
281 template<size_t arraysize>
282 const std::array<eic::VectorXYZ, arraysize> CalorimeterHitCollection::position() const {
283  std::array<eic::VectorXYZ, arraysize> tmp;
284  const auto valid_size = std::min(arraysize, m_entries.size());
285  for (unsigned i = 0; i < valid_size; ++i) {
286  tmp[i] = m_entries[i]->data.position;
287  }
288  return tmp;
289 }
290 
291 template<size_t arraysize>
292 const std::array<eic::VectorXYZ, arraysize> CalorimeterHitCollection::local() const {
293  std::array<eic::VectorXYZ, arraysize> tmp;
294  const auto valid_size = std::min(arraysize, m_entries.size());
295  for (unsigned i = 0; i < valid_size; ++i) {
296  tmp[i] = m_entries[i]->data.local;
297  }
298  return tmp;
299 }
300 
301 template<size_t arraysize>
302 const std::array<eic::VectorXYZ, arraysize> CalorimeterHitCollection::dimension() const {
303  std::array<eic::VectorXYZ, arraysize> tmp;
304  const auto valid_size = std::min(arraysize, m_entries.size());
305  for (unsigned i = 0; i < valid_size; ++i) {
306  tmp[i] = m_entries[i]->data.dimension;
307  }
308  return tmp;
309 }
310 
311 
312 } // namespace eic
313 
314 
315 #endif
eic::operator<<
std::ostream & operator<<(std::ostream &o, const ConstBasicParticle &value)
Definition: BasicParticle.cc:102
eic::CalorimeterHitCollection::CalorimeterHitCollection
CalorimeterHitCollection()
Definition: CalorimeterHitCollection.cc:13
eic::CalorimeterHitCollection::push_back
void push_back(ConstCalorimeterHit object)
Append object to the collection.
Definition: CalorimeterHitCollection.cc:89
eic::CalorimeterHitConstCollectionIterator::operator*
ConstCalorimeterHit operator*()
Definition: CalorimeterHitCollection.cc:123
eic::CalorimeterHitConstCollectionIterator::operator=
CalorimeterHitConstCollectionIterator & operator=(const CalorimeterHitConstCollectionIterator &)=delete
eic::CalorimeterHitCollection::prepareForWrite
void prepareForWrite() override final
Definition: CalorimeterHitCollection.cc:56
eic::CalorimeterHitCollection::referenceCollections
podio::CollRefCollection * referenceCollections() override final
Definition: CalorimeterHitCollection.h:125
eic::CalorimeterHitCollection::clear
void clear() override final
Definition: CalorimeterHitCollection.cc:50
eic::CalorimeterHitCollectionIterator::operator=
CalorimeterHitCollectionIterator & operator=(const CalorimeterHitCollectionIterator &)=delete
eic::CalorimeterHitCollection::getBufferAddress
void * getBufferAddress() override final
returns the address of the pointer to the data buffer
Definition: CalorimeterHitCollection.h:160
eic::CalorimeterHitCollection::begin
iterator begin()
Definition: CalorimeterHitCollection.h:146
CalorimeterHitObj.h
eic::CalorimeterHitCollection::create
CalorimeterHit create()
Append a new object to the collection, and return this object.
Definition: CalorimeterHitCollection.cc:43
eic::CalorimeterHitCollection::isValid
bool isValid() const override final
Definition: CalorimeterHitCollection.h:141
eic::CalorimeterHitCollection::setBuffer
void setBuffer(void *address) override final
Definition: CalorimeterHitCollection.cc:101
eic::CalorimeterHitCollectionIterator::operator!=
bool operator!=(const CalorimeterHitCollectionIterator &x) const
Definition: CalorimeterHitCollection.h:36
eic
Definition: BasicParticle.cc:13
eic::CalorimeterHitCollection::CalorimeterHitCollection
CalorimeterHitCollection(const CalorimeterHitCollection &)=delete
eic::CalorimeterHitObj
Definition: CalorimeterHitObj.h:18
eic::CalorimeterHitCollection::setReferences
bool setReferences(const podio::ICollectionProvider *collectionProvider) override final
Definition: CalorimeterHitCollection.cc:84
eic::CalorimeterHitCollection::at
ConstCalorimeterHit at(unsigned int index) const
Returns the const object of given index.
Definition: CalorimeterHitCollection.cc:27
eic::CalorimeterHitCollectionIterator
Definition: CalorimeterHitCollection.h:29
eic::CalorimeterHitCollection::prepareAfterRead
void prepareAfterRead() override final
Definition: CalorimeterHitCollection.cc:69
eic::CalorimeterHitCollection::setID
void setID(unsigned ID) override final
Definition: CalorimeterHitCollection.h:129
eic::CalorimeterHitConstCollectionIterator::CalorimeterHitConstCollectionIterator
CalorimeterHitConstCollectionIterator(const CalorimeterHitConstCollectionIterator &)=delete
eic::CalorimeterHitConstCollectionIterator
Definition: CalorimeterHitCollection.h:51
eic::CalorimeterHitCollectionIterator::operator->
CalorimeterHit * operator->()
Definition: CalorimeterHitCollection.cc:111
eic::CalorimeterHitCollectionIterator::CalorimeterHitCollectionIterator
CalorimeterHitCollectionIterator(const CalorimeterHitCollectionIterator &)=delete
CalorimeterHitData.h
eic::CalorimeterHitCollection::getValueTypeName
std::string getValueTypeName() const override
fully qualified type name of elements - with namespace
Definition: CalorimeterHitCollection.h:105
eic::CalorimeterHitConstCollectionIterator::operator->
ConstCalorimeterHit * operator->()
Definition: CalorimeterHitCollection.cc:128
eic::CalorimeterHitObjPointerContainer
std::deque< CalorimeterHitObj * > CalorimeterHitObjPointerContainer
Definition: CalorimeterHitCollection.h:27
eic::ConstCalorimeterHit
Definition: CalorimeterHitConst.h:21
eic::CalorimeterHitDataContainer
std::vector< CalorimeterHitData > CalorimeterHitDataContainer
Definition: CalorimeterHitCollection.h:26
eic::CalorimeterHitCollection::operator=
CalorimeterHitCollection & operator=(const CalorimeterHitCollection &)=delete
eic::CalorimeterHitCollection::getID
unsigned getID() const override final
Definition: CalorimeterHitCollection.h:137
eic::CalorimeterHitCollection::ID
const std::array< eic::Index, arraysize > ID() const
Definition: CalorimeterHitCollection.h:212
eic::CalorimeterHitConstCollectionIterator::CalorimeterHitConstCollectionIterator
CalorimeterHitConstCollectionIterator(size_t index, const CalorimeterHitObjPointerContainer *collection)
Definition: CalorimeterHitCollection.h:53
eic::CalorimeterHitCollectionIterator::operator*
CalorimeterHit operator*()
Definition: CalorimeterHitCollection.cc:106
eic::CalorimeterHitCollection::begin
const_iterator begin() const
Definition: CalorimeterHitCollection.h:149
eic::CalorimeterHit
Definition: CalorimeterHit.h:23
eic::CalorimeterHitCollection::vectorMembers
podio::VectorMembersInfo * vectorMembers() override
Definition: CalorimeterHitCollection.h:127
eic::CalorimeterHitCollection::end
iterator end()
Definition: CalorimeterHitCollection.h:152
CalorimeterHit.h
eic::CalorimeterHitConstCollectionIterator::operator++
CalorimeterHitConstCollectionIterator & operator++()
Definition: CalorimeterHitCollection.cc:133
eic::CalorimeterHitCollectionIterator::CalorimeterHitCollectionIterator
CalorimeterHitCollectionIterator(size_t index, const CalorimeterHitObjPointerContainer *collection)
Definition: CalorimeterHitCollection.h:31
eic::CalorimeterHitCollection::end
const_iterator end() const
Definition: CalorimeterHitCollection.h:155
eic::CalorimeterHitCollection::operator[]
ConstCalorimeterHit operator[](unsigned int index) const
Returns the const object of given index.
Definition: CalorimeterHitCollection.cc:23
eic::CalorimeterHitCollection::~CalorimeterHitCollection
~CalorimeterHitCollection()
Definition: CalorimeterHitCollection.cc:18
eic::CalorimeterHitCollectionIterator::operator++
CalorimeterHitCollectionIterator & operator++()
Definition: CalorimeterHitCollection.cc:116
eic::CalorimeterHitCollection::size
size_t size() const override final
number of elements in the collection
Definition: CalorimeterHitCollection.cc:39
eic::CalorimeterHitCollection
Definition: CalorimeterHitCollection.h:76
eic::CalorimeterHitCollection::_getBuffer
std::vector< CalorimeterHitData > * _getBuffer()
Returns the pointer to the data buffer.
Definition: CalorimeterHitCollection.h:163
eic::CalorimeterHitConstCollectionIterator::operator!=
bool operator!=(const CalorimeterHitConstCollectionIterator &x) const
Definition: CalorimeterHitCollection.h:58