File indexing completed on 2024-04-06 12:03:46
0001 #ifndef CUDADataFormats_RecHits_TrackingRecHitsUtilities_h
0002 #define CUDADataFormats_RecHits_TrackingRecHitsUtilities_h
0003
0004 #include <Eigen/Dense>
0005 #include "Geometry/CommonTopologies/interface/SimplePixelTopology.h"
0006 #include "HeterogeneousCore/CUDAUtilities/interface/HistoContainer.h"
0007 #include "DataFormats/SoATemplate/interface/SoALayout.h"
0008 #include "RecoLocalTracker/SiPixelRecHits/interface/pixelCPEforGPU.h"
0009 #include "HeterogeneousCore/CUDAUtilities/interface/host_unique_ptr.h"
0010 #include "SiPixelHitStatus.h"
0011
0012 template <typename TrackerTraits>
0013 struct TrackingRecHitSoA {
0014 using hindex_type = typename TrackerTraits::hindex_type;
0015 using PhiBinner = cms::cuda::HistoContainer<int16_t,
0016 256,
0017 -1,
0018 8 * sizeof(int16_t),
0019 hindex_type,
0020 TrackerTraits::numberOfLayers>;
0021
0022 using PhiBinnerStorageType = typename PhiBinner::index_type;
0023 using AverageGeometry = pixelTopology::AverageGeometryT<TrackerTraits>;
0024 using ParamsOnGPU = pixelCPEforGPU::ParamsOnGPUT<TrackerTraits>;
0025
0026 using HitLayerStartArray = std::array<hindex_type, TrackerTraits::numberOfLayers + 1>;
0027 using HitModuleStartArray = std::array<hindex_type, TrackerTraits::numberOfModules + 1>;
0028
0029
0030 GENERATE_SOA_LAYOUT(TrackingRecHitSoALayout,
0031 SOA_COLUMN(float, xLocal),
0032 SOA_COLUMN(float, yLocal),
0033 SOA_COLUMN(float, xerrLocal),
0034 SOA_COLUMN(float, yerrLocal),
0035 SOA_COLUMN(float, xGlobal),
0036 SOA_COLUMN(float, yGlobal),
0037 SOA_COLUMN(float, zGlobal),
0038 SOA_COLUMN(float, rGlobal),
0039 SOA_COLUMN(int16_t, iphi),
0040 SOA_COLUMN(SiPixelHitStatusAndCharge, chargeAndStatus),
0041 SOA_COLUMN(int16_t, clusterSizeX),
0042 SOA_COLUMN(int16_t, clusterSizeY),
0043 SOA_COLUMN(uint16_t, detectorIndex),
0044
0045 SOA_SCALAR(uint32_t, nHits),
0046 SOA_SCALAR(int32_t, offsetBPIX2),
0047
0048
0049
0050 SOA_COLUMN(PhiBinnerStorageType, phiBinnerStorage),
0051 SOA_SCALAR(HitModuleStartArray, hitsModuleStart),
0052 SOA_SCALAR(HitLayerStartArray, hitsLayerStart),
0053 SOA_SCALAR(ParamsOnGPU, cpeParams),
0054 SOA_SCALAR(AverageGeometry, averageGeometry),
0055 SOA_SCALAR(PhiBinner, phiBinner));
0056 };
0057
0058 template <typename TrackerTraits>
0059 using TrackingRecHitLayout = typename TrackingRecHitSoA<TrackerTraits>::template TrackingRecHitSoALayout<>;
0060 template <typename TrackerTraits>
0061 using TrackingRecHitSoAView = typename TrackingRecHitSoA<TrackerTraits>::template TrackingRecHitSoALayout<>::View;
0062 template <typename TrackerTraits>
0063 using TrackingRecHitSoAConstView =
0064 typename TrackingRecHitSoA<TrackerTraits>::template TrackingRecHitSoALayout<>::ConstView;
0065
0066 #endif