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
0013
0014 SiStripClustersSOABase() = default;
0015
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