Back to home page

Project CMSSW displayed by LXR

 
 

    


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   // Constructor which specifies the SoA size
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  // DataFormats_SiPixelDigiSoA_interface_SiPixelDigisDevice_h