3 #ifndef EICD_ClusterLayerCollection_H
4 #define EICD_ClusterLayerCollection_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;
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<ClusterLayerData>*
_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::Index, arraysize> clusterID()
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::uint32_t, arraysize> nhits()
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> radius()
const;
179 template<
size_t arraysize>
180 const std::array<float, arraysize> skewness()
const;
181 template<
size_t arraysize>
182 const std::array<eic::VectorXYZ, arraysize> position()
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 ClusterLayerCollection& 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> ClusterLayerCollection::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::Index, arraysize> ClusterLayerCollection::clusterID()
const {
221 std::array<eic::Index, 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.clusterID;
229 template<
size_t arraysize>
230 const std::array<std::int32_t, arraysize> ClusterLayerCollection::layer()
const {
231 std::array<std::int32_t, 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.layer;
239 template<
size_t arraysize>
240 const std::array<std::uint32_t, arraysize> ClusterLayerCollection::nhits()
const {
241 std::array<std::uint32_t, 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.nhits;
249 template<
size_t arraysize>
250 const std::array<float, arraysize> ClusterLayerCollection::energy()
const {
251 std::array<float, 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.energy;
259 template<
size_t arraysize>
260 const std::array<float, arraysize> ClusterLayerCollection::energyError()
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.energyError;
269 template<
size_t arraysize>
270 const std::array<float, arraysize> ClusterLayerCollection::radius()
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.radius;
279 template<
size_t arraysize>
280 const std::array<float, arraysize> ClusterLayerCollection::skewness()
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.skewness;
289 template<
size_t arraysize>
290 const std::array<eic::VectorXYZ, arraysize> ClusterLayerCollection::position()
const {
291 std::array<eic::VectorXYZ, 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.position;