3 #ifndef EICD_TrackParametersCollection_H
4 #define EICD_TrackParametersCollection_H
12 #include "podio/ICollectionProvider.h"
13 #include "podio/CollectionBase.h"
14 #include "podio/CollectionIDTable.h"
37 return m_index != x.m_index;
59 return m_index != x.m_index;
88 void clear() override final;
98 template<
typename... Args>
102 size_t size() const override final;
105 std::
string getValueTypeName()
const override {
return std::string(
"eic::TrackParameters"); }
122 void setBuffer(
void* address) override final;
123 bool setReferences(const podio::ICollectionProvider* collectionProvider) override final;
127 podio::VectorMembersInfo*
vectorMembers()
override {
return &m_vecmem_info; }
131 std::for_each(m_entries.begin(),m_entries.end(),
137 unsigned getID() const override final {
138 return m_collectionID;
153 return iterator(m_entries.size(), &m_entries);
163 std::vector<TrackParametersData>*
_getBuffer() {
return m_data; }
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;
185 bool m_isValid{
false};
186 bool m_isReadFromFile{
false};
187 int m_collectionID{0};
194 podio::CollRefCollection m_refCollections{};
195 podio::VectorMembersInfo m_vecmem_info{};
199 std::ostream&
operator<<(std::ostream& o,
const TrackParametersCollection& v);
201 template<
typename... Args>
203 const int size = m_entries.size();
205 m_entries.push_back(obj);
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;
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;
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;
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;
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;
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;
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;
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;
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;