Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:05:12

0001 #ifndef DataFormats_SiStripCluster_interface_SiStripClustersSOABase_
0002 #define DataFormats_SiStripCluster_interface_SiStripClustersSOABase_
0003 
0004 #include "DataFormats/SiStripCluster/interface/SiStripTypes.h"
0005 
0006 #include <cstdint>
0007 #include <limits>
0008 
0009 template <template <typename> class T>
0010 class SiStripClustersSOABase {
0011 public:
0012   //static constexpr uint32_t kClusterMaxStrips = 16;
0013 
0014   SiStripClustersSOABase() = default;
0015   //explicit SiStripClustersSOABase(uint32_t maxClusters, uint32_t maxStripsPerCluster);
0016   virtual ~SiStripClustersSOABase() = default;
0017 
0018   SiStripClustersSOABase(const SiStripClustersSOABase&) = delete;
0019   SiStripClustersSOABase& operator=(const SiStripClustersSOABase&) = delete;
0020   SiStripClustersSOABase(SiStripClustersSOABase&&) = default;
0021   SiStripClustersSOABase& operator=(SiStripClustersSOABase&&) = default;
0022 
0023   void setNClusters(uint32_t nClusters) { nClusters_ = nClusters; }
0024   uint32_t nClusters() const { return nClusters_; }
0025 
0026   void setMaxClusterSize(uint32_t maxClusterSize) { maxClusterSize_ = maxClusterSize; }
0027   uint32_t maxClusterSize() const { return maxClusterSize_; }
0028 
0029   const auto& clusterIndex() const { return clusterIndex_; }
0030   const auto& clusterSize() const { return clusterSize_; }
0031   const auto& clusterADCs() const { return clusterADCs_; }
0032   const auto& clusterDetId() const { return clusterDetId_; }
0033   const auto& firstStrip() const { return firstStrip_; }
0034   const auto& trueCluster() const { return trueCluster_; }
0035   const auto& barycenter() const { return barycenter_; }
0036   const auto& charge() const { return charge_; }
0037 
0038   auto& clusterIndex() { return clusterIndex_; }
0039   auto& clusterSize() { return clusterSize_; }
0040   auto& clusterADCs() { return clusterADCs_; }
0041   auto& clusterDetId() { return clusterDetId_; }
0042   auto& firstStrip() { return firstStrip_; }
0043   auto& trueCluster() { return trueCluster_; }
0044   auto& barycenter() { return barycenter_; }
0045   auto& charge() { return charge_; }
0046 
0047 protected:
0048   T<uint32_t[]> clusterIndex_;
0049   T<uint32_t[]> clusterSize_;
0050   T<uint8_t[]> clusterADCs_;
0051   T<stripgpu::detId_t[]> clusterDetId_;
0052   T<stripgpu::stripId_t[]> firstStrip_;
0053   T<bool[]> trueCluster_;
0054   T<float[]> barycenter_;
0055   T<float[]> charge_;
0056   uint32_t nClusters_;
0057   uint32_t maxClusterSize_;
0058 };
0059 #endif