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