3 #ifndef EICD_CalorimeterHitCollection_H
4 #define EICD_CalorimeterHitCollection_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::CalorimeterHit"); }
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<CalorimeterHitData>*
_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<std::int64_t, arraysize> cellID()
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::int32_t, arraysize> sector()
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> time()
const;
179 template<
size_t arraysize>
180 const std::array<eic::VectorXYZ, arraysize> position()
const;
181 template<
size_t arraysize>
182 const std::array<eic::VectorXYZ, arraysize> local()
const;
183 template<
size_t arraysize>
184 const std::array<eic::VectorXYZ, arraysize> dimension()
const;
187 bool m_isValid{
false};
188 bool m_isReadFromFile{
false};
189 int m_collectionID{0};
196 podio::CollRefCollection m_refCollections{};
197 podio::VectorMembersInfo m_vecmem_info{};
201 std::ostream&
operator<<(std::ostream& o,
const CalorimeterHitCollection& v);
203 template<
typename... Args>
205 const int size = m_entries.size();
207 m_entries.push_back(obj);
211 template<
size_t arraysize>
212 const std::array<eic::Index, arraysize> CalorimeterHitCollection::ID()
const {
213 std::array<eic::Index, arraysize> tmp;
214 const auto valid_size = std::min(arraysize, m_entries.size());
215 for (
unsigned i = 0; i < valid_size; ++i) {
216 tmp[i] = m_entries[i]->data.ID;
221 template<
size_t arraysize>
222 const std::array<std::int64_t, arraysize> CalorimeterHitCollection::cellID()
const {
223 std::array<std::int64_t, arraysize> tmp;
224 const auto valid_size = std::min(arraysize, m_entries.size());
225 for (
unsigned i = 0; i < valid_size; ++i) {
226 tmp[i] = m_entries[i]->data.cellID;
231 template<
size_t arraysize>
232 const std::array<std::int32_t, arraysize> CalorimeterHitCollection::layer()
const {
233 std::array<std::int32_t, arraysize> tmp;
234 const auto valid_size = std::min(arraysize, m_entries.size());
235 for (
unsigned i = 0; i < valid_size; ++i) {
236 tmp[i] = m_entries[i]->data.layer;
241 template<
size_t arraysize>
242 const std::array<std::int32_t, arraysize> CalorimeterHitCollection::sector()
const {
243 std::array<std::int32_t, arraysize> tmp;
244 const auto valid_size = std::min(arraysize, m_entries.size());
245 for (
unsigned i = 0; i < valid_size; ++i) {
246 tmp[i] = m_entries[i]->data.sector;
251 template<
size_t arraysize>
252 const std::array<float, arraysize> CalorimeterHitCollection::energy()
const {
253 std::array<float, arraysize> tmp;
254 const auto valid_size = std::min(arraysize, m_entries.size());
255 for (
unsigned i = 0; i < valid_size; ++i) {
256 tmp[i] = m_entries[i]->data.energy;
261 template<
size_t arraysize>
262 const std::array<float, arraysize> CalorimeterHitCollection::energyError()
const {
263 std::array<float, arraysize> tmp;
264 const auto valid_size = std::min(arraysize, m_entries.size());
265 for (
unsigned i = 0; i < valid_size; ++i) {
266 tmp[i] = m_entries[i]->data.energyError;
271 template<
size_t arraysize>
272 const std::array<float, arraysize> CalorimeterHitCollection::time()
const {
273 std::array<float, arraysize> tmp;
274 const auto valid_size = std::min(arraysize, m_entries.size());
275 for (
unsigned i = 0; i < valid_size; ++i) {
276 tmp[i] = m_entries[i]->data.time;
281 template<
size_t arraysize>
282 const std::array<eic::VectorXYZ, arraysize> CalorimeterHitCollection::position()
const {
283 std::array<eic::VectorXYZ, arraysize> tmp;
284 const auto valid_size = std::min(arraysize, m_entries.size());
285 for (
unsigned i = 0; i < valid_size; ++i) {
286 tmp[i] = m_entries[i]->data.position;
291 template<
size_t arraysize>
292 const std::array<eic::VectorXYZ, arraysize> CalorimeterHitCollection::local()
const {
293 std::array<eic::VectorXYZ, arraysize> tmp;
294 const auto valid_size = std::min(arraysize, m_entries.size());
295 for (
unsigned i = 0; i < valid_size; ++i) {
296 tmp[i] = m_entries[i]->data.local;
301 template<
size_t arraysize>
302 const std::array<eic::VectorXYZ, arraysize> CalorimeterHitCollection::dimension()
const {
303 std::array<eic::VectorXYZ, arraysize> tmp;
304 const auto valid_size = std::min(arraysize, m_entries.size());
305 for (
unsigned i = 0; i < valid_size; ++i) {
306 tmp[i] = m_entries[i]->data.dimension;