EICd
EIC data model
ReconstructedParticleRelationsCollection.h
Go to the documentation of this file.
1 // AUTOMATICALLY GENERATED FILE - DO NOT EDIT
2 
3 #ifndef EICD_ReconstructedParticleRelationsCollection_H
4 #define EICD_ReconstructedParticleRelationsCollection_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 ReconstructedParticleRelationsDataContainer = std::vector<ReconstructedParticleRelationsData>;
27 using ReconstructedParticleRelationsObjPointerContainer = std::deque<ReconstructedParticleRelationsObj*>;
28 
30 public:
31  ReconstructedParticleRelationsCollectionIterator(size_t index, const ReconstructedParticleRelationsObjPointerContainer* 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;
48 };
49 
50 
52 public:
53  ReconstructedParticleRelationsConstCollectionIterator(size_t index, const ReconstructedParticleRelationsObjPointerContainer* 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;
70 };
71 
72 
73 /**
74 A Collection is identified by an ID.
75 */
76 class ReconstructedParticleRelationsCollection : public podio::CollectionBase {
77 
78 public:
81 
85 // ReconstructedParticleRelationsCollection(ReconstructedParticleRelationsVector* 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  ReconstructedParticleRelations 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::ReconstructedParticleRelations"); }
106 
107  /// Returns the const object of given index
108  ConstReconstructedParticleRelations operator[](unsigned int index) const;
109  /// Returns the object of a given index
110  ReconstructedParticleRelations operator[](unsigned int index);
111  /// Returns the const object of given index
112  ConstReconstructedParticleRelations at(unsigned int index) const;
113  /// Returns the object of given index
114  ReconstructedParticleRelations 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] (ReconstructedParticleRelationsObj* 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<ReconstructedParticleRelationsData>* _getBuffer() { return m_data; }
164 
165  template<size_t arraysize>
166  const std::array<eic::Index, arraysize> recID() const;
167  template<size_t arraysize>
168  const std::array<eic::Index, arraysize> vertexID() const;
169  template<size_t arraysize>
170  const std::array<eic::Index, arraysize> trackID() const;
171  template<size_t arraysize>
172  const std::array<eic::Index, arraysize> ecalID() const;
173  template<size_t arraysize>
174  const std::array<eic::Index, arraysize> hcalID() const;
175  template<size_t arraysize>
176  const std::array<eic::Index, arraysize> cherID() const;
177  template<size_t arraysize>
178  const std::array<eic::Index, arraysize> tofID() const;
179  template<size_t arraysize>
180  const std::array<eic::Index, arraysize> mcID() const;
181 
182 private:
183  bool m_isValid{false};
184  bool m_isReadFromFile{false};
185  int m_collectionID{0};
187 
188  // members to handle 1-to-N-relations
189 
190  // members to handle vector members
191  // members to handle streaming
192  podio::CollRefCollection m_refCollections{};
193  podio::VectorMembersInfo m_vecmem_info{};
195 };
196 
197 std::ostream& operator<<(std::ostream& o, const ReconstructedParticleRelationsCollection& v);
198 
199 template<typename... Args>
200 ReconstructedParticleRelations ReconstructedParticleRelationsCollection::create(Args&&... args) {
201  const int size = m_entries.size();
202  auto obj = new ReconstructedParticleRelationsObj({size, m_collectionID}, {args...});
203  m_entries.push_back(obj);
204  return ReconstructedParticleRelations(obj);
205 }
206 
207 template<size_t arraysize>
208 const std::array<eic::Index, arraysize> ReconstructedParticleRelationsCollection::recID() const {
209  std::array<eic::Index, arraysize> tmp;
210  const auto valid_size = std::min(arraysize, m_entries.size());
211  for (unsigned i = 0; i < valid_size; ++i) {
212  tmp[i] = m_entries[i]->data.recID;
213  }
214  return tmp;
215 }
216 
217 template<size_t arraysize>
218 const std::array<eic::Index, arraysize> ReconstructedParticleRelationsCollection::vertexID() const {
219  std::array<eic::Index, arraysize> tmp;
220  const auto valid_size = std::min(arraysize, m_entries.size());
221  for (unsigned i = 0; i < valid_size; ++i) {
222  tmp[i] = m_entries[i]->data.vertexID;
223  }
224  return tmp;
225 }
226 
227 template<size_t arraysize>
228 const std::array<eic::Index, arraysize> ReconstructedParticleRelationsCollection::trackID() const {
229  std::array<eic::Index, arraysize> tmp;
230  const auto valid_size = std::min(arraysize, m_entries.size());
231  for (unsigned i = 0; i < valid_size; ++i) {
232  tmp[i] = m_entries[i]->data.trackID;
233  }
234  return tmp;
235 }
236 
237 template<size_t arraysize>
238 const std::array<eic::Index, arraysize> ReconstructedParticleRelationsCollection::ecalID() const {
239  std::array<eic::Index, arraysize> tmp;
240  const auto valid_size = std::min(arraysize, m_entries.size());
241  for (unsigned i = 0; i < valid_size; ++i) {
242  tmp[i] = m_entries[i]->data.ecalID;
243  }
244  return tmp;
245 }
246 
247 template<size_t arraysize>
248 const std::array<eic::Index, arraysize> ReconstructedParticleRelationsCollection::hcalID() const {
249  std::array<eic::Index, arraysize> tmp;
250  const auto valid_size = std::min(arraysize, m_entries.size());
251  for (unsigned i = 0; i < valid_size; ++i) {
252  tmp[i] = m_entries[i]->data.hcalID;
253  }
254  return tmp;
255 }
256 
257 template<size_t arraysize>
258 const std::array<eic::Index, arraysize> ReconstructedParticleRelationsCollection::cherID() const {
259  std::array<eic::Index, arraysize> tmp;
260  const auto valid_size = std::min(arraysize, m_entries.size());
261  for (unsigned i = 0; i < valid_size; ++i) {
262  tmp[i] = m_entries[i]->data.cherID;
263  }
264  return tmp;
265 }
266 
267 template<size_t arraysize>
268 const std::array<eic::Index, arraysize> ReconstructedParticleRelationsCollection::tofID() const {
269  std::array<eic::Index, arraysize> tmp;
270  const auto valid_size = std::min(arraysize, m_entries.size());
271  for (unsigned i = 0; i < valid_size; ++i) {
272  tmp[i] = m_entries[i]->data.tofID;
273  }
274  return tmp;
275 }
276 
277 template<size_t arraysize>
278 const std::array<eic::Index, arraysize> ReconstructedParticleRelationsCollection::mcID() const {
279  std::array<eic::Index, arraysize> tmp;
280  const auto valid_size = std::min(arraysize, m_entries.size());
281  for (unsigned i = 0; i < valid_size; ++i) {
282  tmp[i] = m_entries[i]->data.mcID;
283  }
284  return tmp;
285 }
286 
287 
288 } // namespace eic
289 
290 
291 #endif
eic::ReconstructedParticleRelationsCollection::getBufferAddress
void * getBufferAddress() override final
returns the address of the pointer to the data buffer
Definition: ReconstructedParticleRelationsCollection.h:160
eic::operator<<
std::ostream & operator<<(std::ostream &o, const ConstBasicParticle &value)
Definition: BasicParticle.cc:102
eic::ReconstructedParticleRelationsCollection::referenceCollections
podio::CollRefCollection * referenceCollections() override final
Definition: ReconstructedParticleRelationsCollection.h:125
eic::ReconstructedParticleRelationsCollection::setReferences
bool setReferences(const podio::ICollectionProvider *collectionProvider) override final
Definition: ReconstructedParticleRelationsCollection.cc:84
ReconstructedParticleRelationsData.h
eic::ReconstructedParticleRelationsCollection::isValid
bool isValid() const override final
Definition: ReconstructedParticleRelationsCollection.h:141
eic::ReconstructedParticleRelationsCollection::getID
unsigned getID() const override final
Definition: ReconstructedParticleRelationsCollection.h:137
eic::ReconstructedParticleRelationsCollection::operator[]
ConstReconstructedParticleRelations operator[](unsigned int index) const
Returns the const object of given index.
Definition: ReconstructedParticleRelationsCollection.cc:23
eic::ReconstructedParticleRelationsCollection::clear
void clear() override final
Definition: ReconstructedParticleRelationsCollection.cc:50
eic::ReconstructedParticleRelationsConstCollectionIterator::ReconstructedParticleRelationsConstCollectionIterator
ReconstructedParticleRelationsConstCollectionIterator(const ReconstructedParticleRelationsConstCollectionIterator &)=delete
eic::ReconstructedParticleRelationsCollectionIterator::operator++
ReconstructedParticleRelationsCollectionIterator & operator++()
Definition: ReconstructedParticleRelationsCollection.cc:116
eic::ReconstructedParticleRelationsCollection::push_back
void push_back(ConstReconstructedParticleRelations object)
Append object to the collection.
Definition: ReconstructedParticleRelationsCollection.cc:89
eic::ReconstructedParticleRelationsConstCollectionIterator::ReconstructedParticleRelationsConstCollectionIterator
ReconstructedParticleRelationsConstCollectionIterator(size_t index, const ReconstructedParticleRelationsObjPointerContainer *collection)
Definition: ReconstructedParticleRelationsCollection.h:53
eic::ReconstructedParticleRelationsCollectionIterator::ReconstructedParticleRelationsCollectionIterator
ReconstructedParticleRelationsCollectionIterator(const ReconstructedParticleRelationsCollectionIterator &)=delete
eic
Definition: BasicParticle.cc:13
eic::ReconstructedParticleRelationsCollection::ReconstructedParticleRelationsCollection
ReconstructedParticleRelationsCollection(const ReconstructedParticleRelationsCollection &)=delete
eic::ReconstructedParticleRelationsCollection::begin
iterator begin()
Definition: ReconstructedParticleRelationsCollection.h:146
eic::ReconstructedParticleRelationsConstCollectionIterator::operator++
ReconstructedParticleRelationsConstCollectionIterator & operator++()
Definition: ReconstructedParticleRelationsCollection.cc:133
eic::ReconstructedParticleRelationsCollection::at
ConstReconstructedParticleRelations at(unsigned int index) const
Returns the const object of given index.
Definition: ReconstructedParticleRelationsCollection.cc:27
eic::ReconstructedParticleRelationsCollectionIterator::ReconstructedParticleRelationsCollectionIterator
ReconstructedParticleRelationsCollectionIterator(size_t index, const ReconstructedParticleRelationsObjPointerContainer *collection)
Definition: ReconstructedParticleRelationsCollection.h:31
eic::ReconstructedParticleRelationsCollection::setBuffer
void setBuffer(void *address) override final
Definition: ReconstructedParticleRelationsCollection.cc:101
eic::ReconstructedParticleRelationsCollection::prepareAfterRead
void prepareAfterRead() override final
Definition: ReconstructedParticleRelationsCollection.cc:69
eic::ReconstructedParticleRelationsConstCollectionIterator::operator->
ConstReconstructedParticleRelations * operator->()
Definition: ReconstructedParticleRelationsCollection.cc:128
eic::ReconstructedParticleRelationsCollection::prepareForWrite
void prepareForWrite() override final
Definition: ReconstructedParticleRelationsCollection.cc:56
eic::ReconstructedParticleRelationsConstCollectionIterator::operator!=
bool operator!=(const ReconstructedParticleRelationsConstCollectionIterator &x) const
Definition: ReconstructedParticleRelationsCollection.h:58
eic::ReconstructedParticleRelationsCollectionIterator::operator=
ReconstructedParticleRelationsCollectionIterator & operator=(const ReconstructedParticleRelationsCollectionIterator &)=delete
eic::ReconstructedParticleRelationsCollection::begin
const_iterator begin() const
Definition: ReconstructedParticleRelationsCollection.h:149
eic::ReconstructedParticleRelationsCollection::end
iterator end()
Definition: ReconstructedParticleRelationsCollection.h:152
eic::ReconstructedParticleRelationsConstCollectionIterator
Definition: ReconstructedParticleRelationsCollection.h:51
eic::ReconstructedParticleRelations
Definition: ReconstructedParticleRelations.h:22
eic::ReconstructedParticleRelationsCollection::create
ReconstructedParticleRelations create()
Append a new object to the collection, and return this object.
Definition: ReconstructedParticleRelationsCollection.cc:43
eic::ReconstructedParticleRelationsCollection::_getBuffer
std::vector< ReconstructedParticleRelationsData > * _getBuffer()
Returns the pointer to the data buffer.
Definition: ReconstructedParticleRelationsCollection.h:163
eic::ReconstructedParticleRelationsCollection::~ReconstructedParticleRelationsCollection
~ReconstructedParticleRelationsCollection()
Definition: ReconstructedParticleRelationsCollection.cc:18
eic::ReconstructedParticleRelationsCollectionIterator
Definition: ReconstructedParticleRelationsCollection.h:29
eic::ReconstructedParticleRelationsCollection::operator=
ReconstructedParticleRelationsCollection & operator=(const ReconstructedParticleRelationsCollection &)=delete
eic::ReconstructedParticleRelationsCollectionIterator::operator->
ReconstructedParticleRelations * operator->()
Definition: ReconstructedParticleRelationsCollection.cc:111
ReconstructedParticleRelationsObj.h
eic::ReconstructedParticleRelationsCollection
Definition: ReconstructedParticleRelationsCollection.h:76
eic::ReconstructedParticleRelationsCollection::getValueTypeName
std::string getValueTypeName() const override
fully qualified type name of elements - with namespace
Definition: ReconstructedParticleRelationsCollection.h:105
eic::ConstReconstructedParticleRelations
Definition: ReconstructedParticleRelationsConst.h:20
eic::ReconstructedParticleRelationsCollectionIterator::operator!=
bool operator!=(const ReconstructedParticleRelationsCollectionIterator &x) const
Definition: ReconstructedParticleRelationsCollection.h:36
eic::ReconstructedParticleRelationsCollectionIterator::operator*
ReconstructedParticleRelations operator*()
Definition: ReconstructedParticleRelationsCollection.cc:106
eic::ReconstructedParticleRelationsCollection::vectorMembers
podio::VectorMembersInfo * vectorMembers() override
Definition: ReconstructedParticleRelationsCollection.h:127
eic::ReconstructedParticleRelationsCollection::ReconstructedParticleRelationsCollection
ReconstructedParticleRelationsCollection()
Definition: ReconstructedParticleRelationsCollection.cc:13
eic::ReconstructedParticleRelationsObj
Definition: ReconstructedParticleRelationsObj.h:18
eic::ReconstructedParticleRelationsDataContainer
std::vector< ReconstructedParticleRelationsData > ReconstructedParticleRelationsDataContainer
Definition: ReconstructedParticleRelationsCollection.h:26
eic::ReconstructedParticleRelationsCollection::setID
void setID(unsigned ID) override final
Definition: ReconstructedParticleRelationsCollection.h:129
ReconstructedParticleRelations.h
eic::ReconstructedParticleRelationsCollection::end
const_iterator end() const
Definition: ReconstructedParticleRelationsCollection.h:155
eic::ReconstructedParticleRelationsConstCollectionIterator::operator*
ConstReconstructedParticleRelations operator*()
Definition: ReconstructedParticleRelationsCollection.cc:123
eic::ReconstructedParticleRelationsCollection::size
size_t size() const override final
number of elements in the collection
Definition: ReconstructedParticleRelationsCollection.cc:39
eic::ReconstructedParticleRelationsConstCollectionIterator::operator=
ReconstructedParticleRelationsConstCollectionIterator & operator=(const ReconstructedParticleRelationsConstCollectionIterator &)=delete
eic::ReconstructedParticleRelationsObjPointerContainer
std::deque< ReconstructedParticleRelationsObj * > ReconstructedParticleRelationsObjPointerContainer
Definition: ReconstructedParticleRelationsCollection.h:27