EICd
EIC data model
ReconstructedParticleCollection.h
Go to the documentation of this file.
1 // AUTOMATICALLY GENERATED FILE - DO NOT EDIT
2 
3 #ifndef EICD_ReconstructedParticleCollection_H
4 #define EICD_ReconstructedParticleCollection_H
5 
6 // datamodel specific includes
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 ReconstructedParticleDataContainer = std::vector<ReconstructedParticleData>;
27 using ReconstructedParticleObjPointerContainer = std::deque<ReconstructedParticleObj*>;
28 
30 public:
31  ReconstructedParticleCollectionIterator(size_t index, const ReconstructedParticleObjPointerContainer* 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  ReconstructedParticle m_object;
47  const ReconstructedParticleObjPointerContainer* m_collection;
48 };
49 
50 
52 public:
53  ReconstructedParticleConstCollectionIterator(size_t index, const ReconstructedParticleObjPointerContainer* 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;
69  const ReconstructedParticleObjPointerContainer* m_collection;
70 };
71 
72 
73 /**
74 A Collection is identified by an ID.
75 */
76 class ReconstructedParticleCollection : public podio::CollectionBase {
77 
78 public:
81 
85 // ReconstructedParticleCollection(ReconstructedParticleVector* data, int collectionID);
87 
88  void clear() override final;
89 
90  /// operator to allow pointer like calling of members a la LCIO
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  ReconstructedParticle 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::ReconstructedParticle"); }
106 
107  /// Returns the const object of given index
108  ConstReconstructedParticle operator[](unsigned int index) const;
109  /// Returns the object of a given index
110  ReconstructedParticle operator[](unsigned int index);
111  /// Returns the const object of given index
112  ConstReconstructedParticle at(unsigned int index) const;
113  /// Returns the object of given index
114  ReconstructedParticle at(unsigned int index);
115 
116 
117  /// Append object to the collection
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] (ReconstructedParticleObj* 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<ReconstructedParticleData>* _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<eic::VectorXYZ, arraysize> p() const;
169  template<size_t arraysize>
170  const std::array<eic::VectorXYZ, arraysize> v() const;
171  template<size_t arraysize>
172  const std::array<float, arraysize> time() const;
173  template<size_t arraysize>
174  const std::array<std::int32_t, arraysize> pid() const;
175  template<size_t arraysize>
176  const std::array<std::int16_t, arraysize> status() const;
177  template<size_t arraysize>
178  const std::array<std::int16_t, arraysize> charge() const;
179  template<size_t arraysize>
180  const std::array<eic::Weight, arraysize> weight() const;
181  template<size_t arraysize>
182  const std::array<eic::Direction, arraysize> direction() const;
183  template<size_t arraysize>
184  const std::array<float, arraysize> momentum() const;
185  template<size_t arraysize>
186  const std::array<float, arraysize> energy() const;
187  template<size_t arraysize>
188  const std::array<float, arraysize> mass() const;
189 
190 private:
191  bool m_isValid{false};
192  bool m_isReadFromFile{false};
193  int m_collectionID{0};
195 
196  // members to handle 1-to-N-relations
197 
198  // members to handle vector members
199  // members to handle streaming
200  podio::CollRefCollection m_refCollections{};
201  podio::VectorMembersInfo m_vecmem_info{};
203 };
204 
205 std::ostream& operator<<(std::ostream& o, const ReconstructedParticleCollection& v);
206 
207 template<typename... Args>
208 ReconstructedParticle ReconstructedParticleCollection::create(Args&&... args) {
209  const int size = m_entries.size();
210  auto obj = new ReconstructedParticleObj({size, m_collectionID}, {args...});
211  m_entries.push_back(obj);
212  return ReconstructedParticle(obj);
213 }
214 
215 template<size_t arraysize>
216 const std::array<eic::Index, arraysize> ReconstructedParticleCollection::ID() const {
217  std::array<eic::Index, arraysize> tmp;
218  const auto valid_size = std::min(arraysize, m_entries.size());
219  for (unsigned i = 0; i < valid_size; ++i) {
220  tmp[i] = m_entries[i]->data.ID;
221  }
222  return tmp;
223 }
224 
225 template<size_t arraysize>
226 const std::array<eic::VectorXYZ, arraysize> ReconstructedParticleCollection::p() const {
227  std::array<eic::VectorXYZ, arraysize> tmp;
228  const auto valid_size = std::min(arraysize, m_entries.size());
229  for (unsigned i = 0; i < valid_size; ++i) {
230  tmp[i] = m_entries[i]->data.p;
231  }
232  return tmp;
233 }
234 
235 template<size_t arraysize>
236 const std::array<eic::VectorXYZ, arraysize> ReconstructedParticleCollection::v() const {
237  std::array<eic::VectorXYZ, arraysize> tmp;
238  const auto valid_size = std::min(arraysize, m_entries.size());
239  for (unsigned i = 0; i < valid_size; ++i) {
240  tmp[i] = m_entries[i]->data.v;
241  }
242  return tmp;
243 }
244 
245 template<size_t arraysize>
246 const std::array<float, arraysize> ReconstructedParticleCollection::time() const {
247  std::array<float, arraysize> tmp;
248  const auto valid_size = std::min(arraysize, m_entries.size());
249  for (unsigned i = 0; i < valid_size; ++i) {
250  tmp[i] = m_entries[i]->data.time;
251  }
252  return tmp;
253 }
254 
255 template<size_t arraysize>
256 const std::array<std::int32_t, arraysize> ReconstructedParticleCollection::pid() const {
257  std::array<std::int32_t, arraysize> tmp;
258  const auto valid_size = std::min(arraysize, m_entries.size());
259  for (unsigned i = 0; i < valid_size; ++i) {
260  tmp[i] = m_entries[i]->data.pid;
261  }
262  return tmp;
263 }
264 
265 template<size_t arraysize>
266 const std::array<std::int16_t, arraysize> ReconstructedParticleCollection::status() const {
267  std::array<std::int16_t, arraysize> tmp;
268  const auto valid_size = std::min(arraysize, m_entries.size());
269  for (unsigned i = 0; i < valid_size; ++i) {
270  tmp[i] = m_entries[i]->data.status;
271  }
272  return tmp;
273 }
274 
275 template<size_t arraysize>
276 const std::array<std::int16_t, arraysize> ReconstructedParticleCollection::charge() const {
277  std::array<std::int16_t, arraysize> tmp;
278  const auto valid_size = std::min(arraysize, m_entries.size());
279  for (unsigned i = 0; i < valid_size; ++i) {
280  tmp[i] = m_entries[i]->data.charge;
281  }
282  return tmp;
283 }
284 
285 template<size_t arraysize>
286 const std::array<eic::Weight, arraysize> ReconstructedParticleCollection::weight() const {
287  std::array<eic::Weight, arraysize> tmp;
288  const auto valid_size = std::min(arraysize, m_entries.size());
289  for (unsigned i = 0; i < valid_size; ++i) {
290  tmp[i] = m_entries[i]->data.weight;
291  }
292  return tmp;
293 }
294 
295 template<size_t arraysize>
296 const std::array<eic::Direction, arraysize> ReconstructedParticleCollection::direction() const {
297  std::array<eic::Direction, arraysize> tmp;
298  const auto valid_size = std::min(arraysize, m_entries.size());
299  for (unsigned i = 0; i < valid_size; ++i) {
300  tmp[i] = m_entries[i]->data.direction;
301  }
302  return tmp;
303 }
304 
305 template<size_t arraysize>
306 const std::array<float, arraysize> ReconstructedParticleCollection::momentum() const {
307  std::array<float, arraysize> tmp;
308  const auto valid_size = std::min(arraysize, m_entries.size());
309  for (unsigned i = 0; i < valid_size; ++i) {
310  tmp[i] = m_entries[i]->data.momentum;
311  }
312  return tmp;
313 }
314 
315 template<size_t arraysize>
316 const std::array<float, arraysize> ReconstructedParticleCollection::energy() const {
317  std::array<float, arraysize> tmp;
318  const auto valid_size = std::min(arraysize, m_entries.size());
319  for (unsigned i = 0; i < valid_size; ++i) {
320  tmp[i] = m_entries[i]->data.energy;
321  }
322  return tmp;
323 }
324 
325 template<size_t arraysize>
326 const std::array<float, arraysize> ReconstructedParticleCollection::mass() const {
327  std::array<float, arraysize> tmp;
328  const auto valid_size = std::min(arraysize, m_entries.size());
329  for (unsigned i = 0; i < valid_size; ++i) {
330  tmp[i] = m_entries[i]->data.mass;
331  }
332  return tmp;
333 }
334 
335 
336 } // namespace eic
337 
338 
339 #endif
eic::operator<<
std::ostream & operator<<(std::ostream &o, const ConstBasicParticle &value)
Definition: BasicParticle.cc:102
eic::ReconstructedParticleCollection::ReconstructedParticleCollection
ReconstructedParticleCollection(const ReconstructedParticleCollection &)=delete
eic::ReconstructedParticleCollection::operator=
ReconstructedParticleCollection & operator=(const ReconstructedParticleCollection &)=delete
eic::ReconstructedParticleConstCollectionIterator::operator++
ReconstructedParticleConstCollectionIterator & operator++()
Definition: ReconstructedParticleCollection.cc:133
eic::ReconstructedParticleCollection::begin
const_iterator begin() const
Definition: ReconstructedParticleCollection.h:149
eic::ReconstructedParticleCollection::end
iterator end()
Definition: ReconstructedParticleCollection.h:152
eic::ReconstructedParticleCollection::begin
iterator begin()
Definition: ReconstructedParticleCollection.h:146
eic::ReconstructedParticleConstCollectionIterator::operator!=
bool operator!=(const ReconstructedParticleConstCollectionIterator &x) const
Definition: ReconstructedParticleCollection.h:58
eic::ReconstructedParticleConstCollectionIterator::ReconstructedParticleConstCollectionIterator
ReconstructedParticleConstCollectionIterator(size_t index, const ReconstructedParticleObjPointerContainer *collection)
Definition: ReconstructedParticleCollection.h:53
eic::ReconstructedParticleDataContainer
std::vector< ReconstructedParticleData > ReconstructedParticleDataContainer
Definition: ReconstructedParticleCollection.h:26
eic::ReconstructedParticleCollection::create
ReconstructedParticle create()
Append a new object to the collection, and return this object.
Definition: ReconstructedParticleCollection.cc:43
eic::ReconstructedParticleCollection::getBufferAddress
void * getBufferAddress() override final
returns the address of the pointer to the data buffer
Definition: ReconstructedParticleCollection.h:160
eic::ReconstructedParticleCollection::prepareForWrite
void prepareForWrite() override final
Definition: ReconstructedParticleCollection.cc:56
eic::ReconstructedParticleCollection::referenceCollections
podio::CollRefCollection * referenceCollections() override final
Definition: ReconstructedParticleCollection.h:125
eic
Definition: BasicParticle.cc:13
eic::ReconstructedParticleCollection::~ReconstructedParticleCollection
~ReconstructedParticleCollection()
Definition: ReconstructedParticleCollection.cc:18
eic::ReconstructedParticleCollectionIterator::operator=
ReconstructedParticleCollectionIterator & operator=(const ReconstructedParticleCollectionIterator &)=delete
eic::ReconstructedParticleCollectionIterator
Definition: ReconstructedParticleCollection.h:29
eic::ReconstructedParticleCollection::isValid
bool isValid() const override final
Definition: ReconstructedParticleCollection.h:141
eic::ReconstructedParticleCollection::operator[]
ConstReconstructedParticle operator[](unsigned int index) const
Returns the const object of given index.
Definition: ReconstructedParticleCollection.cc:23
ReconstructedParticleObj.h
eic::ReconstructedParticleConstCollectionIterator::ReconstructedParticleConstCollectionIterator
ReconstructedParticleConstCollectionIterator(const ReconstructedParticleConstCollectionIterator &)=delete
eic::ReconstructedParticleCollection::setReferences
bool setReferences(const podio::ICollectionProvider *collectionProvider) override final
Definition: ReconstructedParticleCollection.cc:84
eic::ReconstructedParticleCollection::_getBuffer
std::vector< ReconstructedParticleData > * _getBuffer()
Returns the pointer to the data buffer.
Definition: ReconstructedParticleCollection.h:163
eic::ReconstructedParticleCollection::at
ConstReconstructedParticle at(unsigned int index) const
Returns the const object of given index.
Definition: ReconstructedParticleCollection.cc:27
eic::ReconstructedParticleConstCollectionIterator
Definition: ReconstructedParticleCollection.h:51
eic::ReconstructedParticleCollection::end
const_iterator end() const
Definition: ReconstructedParticleCollection.h:155
eic::ReconstructedParticleCollectionIterator::operator*
ReconstructedParticle operator*()
Definition: ReconstructedParticleCollection.cc:106
eic::ReconstructedParticleConstCollectionIterator::operator*
ConstReconstructedParticle operator*()
Definition: ReconstructedParticleCollection.cc:123
eic::ReconstructedParticleCollection::size
size_t size() const override final
number of elements in the collection
Definition: ReconstructedParticleCollection.cc:39
eic::ReconstructedParticleCollection::setID
void setID(unsigned ID) override final
Definition: ReconstructedParticleCollection.h:129
eic::ReconstructedParticleCollection::getValueTypeName
std::string getValueTypeName() const override
fully qualified type name of elements - with namespace
Definition: ReconstructedParticleCollection.h:105
eic::ReconstructedParticleCollection::vectorMembers
podio::VectorMembersInfo * vectorMembers() override
Definition: ReconstructedParticleCollection.h:127
eic::ReconstructedParticle
Definition: ReconstructedParticle.h:25
eic::ReconstructedParticleCollection::setBuffer
void setBuffer(void *address) override final
Definition: ReconstructedParticleCollection.cc:101
eic::ReconstructedParticleCollectionIterator::operator->
ReconstructedParticle * operator->()
Definition: ReconstructedParticleCollection.cc:111
eic::ReconstructedParticleCollection
Definition: ReconstructedParticleCollection.h:76
eic::ConstReconstructedParticle
Definition: ReconstructedParticleConst.h:23
eic::ReconstructedParticleCollection::clear
void clear() override final
Definition: ReconstructedParticleCollection.cc:50
eic::ReconstructedParticleObj
Definition: ReconstructedParticleObj.h:18
eic::ReconstructedParticleCollection::ReconstructedParticleCollection
ReconstructedParticleCollection()
Definition: ReconstructedParticleCollection.cc:13
eic::ReconstructedParticleCollection::getID
unsigned getID() const override final
Definition: ReconstructedParticleCollection.h:137
eic::ReconstructedParticleCollectionIterator::ReconstructedParticleCollectionIterator
ReconstructedParticleCollectionIterator(const ReconstructedParticleCollectionIterator &)=delete
eic::ReconstructedParticleCollection::ID
const std::array< eic::Index, arraysize > ID() const
Definition: ReconstructedParticleCollection.h:216
ReconstructedParticle.h
eic::ReconstructedParticleCollectionIterator::ReconstructedParticleCollectionIterator
ReconstructedParticleCollectionIterator(size_t index, const ReconstructedParticleObjPointerContainer *collection)
Definition: ReconstructedParticleCollection.h:31
eic::ReconstructedParticleCollection::push_back
void push_back(ConstReconstructedParticle object)
Append object to the collection.
Definition: ReconstructedParticleCollection.cc:89
eic::ReconstructedParticleCollection::prepareAfterRead
void prepareAfterRead() override final
Definition: ReconstructedParticleCollection.cc:69
eic::ReconstructedParticleObjPointerContainer
std::deque< ReconstructedParticleObj * > ReconstructedParticleObjPointerContainer
Definition: ReconstructedParticleCollection.h:27
ReconstructedParticleData.h
eic::ReconstructedParticleCollectionIterator::operator!=
bool operator!=(const ReconstructedParticleCollectionIterator &x) const
Definition: ReconstructedParticleCollection.h:36
eic::ReconstructedParticleConstCollectionIterator::operator->
ConstReconstructedParticle * operator->()
Definition: ReconstructedParticleCollection.cc:128
eic::ReconstructedParticleConstCollectionIterator::operator=
ReconstructedParticleConstCollectionIterator & operator=(const ReconstructedParticleConstCollectionIterator &)=delete
eic::ReconstructedParticleCollectionIterator::operator++
ReconstructedParticleCollectionIterator & operator++()
Definition: ReconstructedParticleCollection.cc:116