File indexing completed on 2024-04-19 02:16:54
0001 #ifndef RecoTracker_PixelSeeding_plugins_alpaka_CAStructures_h
0002 #define RecoTracker_PixelSeeding_plugins_alpaka_CAStructures_h
0003
0004 #include "HeterogeneousCore/AlpakaInterface/interface/SimpleVector.h"
0005 #include "HeterogeneousCore/AlpakaInterface/interface/VecArray.h"
0006 #include "HeterogeneousCore/AlpakaInterface/interface/HistoContainer.h"
0007
0008 namespace caStructures {
0009
0010 template <typename TrackerTraits>
0011 using CellNeighborsT =
0012 cms::alpakatools::VecArray<typename TrackerTraits::cindex_type, TrackerTraits::maxCellNeighbors>;
0013
0014 template <typename TrackerTraits>
0015 using CellTracksT = cms::alpakatools::VecArray<typename TrackerTraits::tindex_type, TrackerTraits::maxCellTracks>;
0016
0017 template <typename TrackerTraits>
0018 using CellNeighborsVectorT = cms::alpakatools::SimpleVector<CellNeighborsT<TrackerTraits>>;
0019
0020 template <typename TrackerTraits>
0021 using CellTracksVectorT = cms::alpakatools::SimpleVector<CellTracksT<TrackerTraits>>;
0022
0023 template <typename TrackerTraits>
0024 using OuterHitOfCellContainerT = cms::alpakatools::VecArray<uint32_t, TrackerTraits::maxCellsPerHit>;
0025
0026 template <typename TrackerTraits>
0027 using TupleMultiplicityT = cms::alpakatools::OneToManyAssocRandomAccess<typename TrackerTraits::tindex_type,
0028 TrackerTraits::maxHitsOnTrack + 1,
0029 TrackerTraits::maxNumberOfTuples>;
0030
0031 template <typename TrackerTraits>
0032 using HitToTupleT =
0033 cms::alpakatools::OneToManyAssocRandomAccess<typename TrackerTraits::tindex_type,
0034 -1,
0035 TrackerTraits::maxHitsForContainers>;
0036
0037 template <typename TrackerTraits>
0038 using TuplesContainerT = cms::alpakatools::OneToManyAssocRandomAccess<typename TrackerTraits::hindex_type,
0039 TrackerTraits::maxNumberOfTuples,
0040 TrackerTraits::maxHitsForContainers>;
0041
0042 template <typename TrackerTraits>
0043 struct OuterHitOfCellT {
0044 OuterHitOfCellContainerT<TrackerTraits>* container;
0045 int32_t offset;
0046 constexpr auto& operator[](int i) { return container[i - offset]; }
0047 constexpr auto const& operator[](int i) const { return container[i - offset]; }
0048 };
0049
0050 }
0051
0052 #endif