Back to home page

Project CMSSW displayed by LXR

 
 

    


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>;  // 3.5 should be enough
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 }  // namespace caStructures
0051 
0052 #endif  // RecoTracker_PixelSeeding_plugins_alpaka_CAStructures_h