File indexing completed on 2024-12-12 03:12:13
0001 #ifndef DataFormats_SiPixelDigiSoA_interface_SiPixelDigisDevice_h
0002 #define DataFormats_SiPixelDigiSoA_interface_SiPixelDigisDevice_h
0003
0004 #include <cstdint>
0005
0006 #include <alpaka/alpaka.hpp>
0007
0008 #include "DataFormats/Common/interface/Uninitialized.h"
0009 #include "DataFormats/Portable/interface/PortableDeviceCollection.h"
0010 #include "DataFormats/SiPixelDigiSoA/interface/SiPixelDigisSoA.h"
0011 #include "HeterogeneousCore/AlpakaInterface/interface/config.h"
0012
0013 template <typename TDev>
0014 class SiPixelDigisDevice : public PortableDeviceCollection<SiPixelDigisSoA, TDev> {
0015 public:
0016 SiPixelDigisDevice(edm::Uninitialized) : PortableDeviceCollection<SiPixelDigisSoA, TDev>{edm::kUninitialized} {}
0017
0018 template <typename TQueue>
0019 explicit SiPixelDigisDevice(size_t maxFedWords, TQueue queue)
0020 : PortableDeviceCollection<SiPixelDigisSoA, TDev>(maxFedWords + 1, queue) {}
0021
0022
0023 explicit SiPixelDigisDevice(size_t maxFedWords, TDev const &device)
0024 : PortableDeviceCollection<SiPixelDigisSoA, TDev>(maxFedWords + 1, device) {}
0025
0026 void setNModules(uint32_t nModules) { nModules_h = nModules; }
0027
0028 uint32_t nModules() const { return nModules_h; }
0029 uint32_t nDigis() const { return this->view().metadata().size() - 1; }
0030
0031 private:
0032 uint32_t nModules_h = 0;
0033 };
0034
0035 #endif