Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-04-15 01:47:35

0001 #ifndef RecoTracker_PixelSeeding_plugins_CAStructures_h
0002 #define RecoTracker_PixelSeeding_plugins_CAStructures_h
0003 
0004 #include "HeterogeneousCore/CUDAUtilities/interface/SimpleVector.h"
0005 #include "HeterogeneousCore/CUDAUtilities/interface/VecArray.h"
0006 #include "HeterogeneousCore/CUDAUtilities/interface/HistoContainer.h"
0007 
0008 namespace caStructures {
0009 
0010   // types
0011   // using typename TrackerTraits::hindex_type = uint32_t;  // FIXME from siPixelRecHitsHeterogeneousProduct
0012   // using typename TrackerTraits::tindex_type = uint32_t;  // for tuples
0013   // using typename TrackerTraits::cindex_type = uint32_t;  // for cells
0014 
0015   template <typename TrackerTraits>
0016   using CellNeighborsT = cms::cuda::VecArray<typename TrackerTraits::cindex_type, TrackerTraits::maxCellNeighbors>;
0017 
0018   template <typename TrackerTraits>
0019   using CellTracksT = cms::cuda::VecArray<typename TrackerTraits::tindex_type, TrackerTraits::maxCellTracks>;
0020 
0021   template <typename TrackerTraits>
0022   using CellNeighborsVectorT = cms::cuda::SimpleVector<CellNeighborsT<TrackerTraits>>;
0023 
0024   template <typename TrackerTraits>
0025   using CellTracksVectorT = cms::cuda::SimpleVector<CellTracksT<TrackerTraits>>;
0026 
0027   template <typename TrackerTraits>
0028   using OuterHitOfCellContainerT = cms::cuda::VecArray<uint32_t, TrackerTraits::maxCellsPerHit>;
0029 
0030   template <typename TrackerTraits>
0031   using TupleMultiplicityT = cms::cuda::OneToManyAssoc<typename TrackerTraits::tindex_type,
0032                                                        TrackerTraits::maxHitsOnTrack + 1,
0033                                                        TrackerTraits::maxNumberOfTuples>;
0034 
0035   template <typename TrackerTraits>
0036   using HitToTupleT = cms::cuda::OneToManyAssoc<typename TrackerTraits::tindex_type,
0037                                                 -1,
0038                                                 TrackerTraits::maxHitsForContainers>;  // 3.5 should be enough
0039 
0040   template <typename TrackerTraits>
0041   using TuplesContainerT = cms::cuda::OneToManyAssoc<typename TrackerTraits::hindex_type,
0042                                                      TrackerTraits::maxNumberOfTuples,
0043                                                      TrackerTraits::maxHitsForContainers>;
0044 
0045   template <typename TrackerTraits>
0046   struct OuterHitOfCellT {
0047     OuterHitOfCellContainerT<TrackerTraits>* container;
0048     int32_t offset;
0049     constexpr auto& operator[](int i) { return container[i - offset]; }
0050     constexpr auto const& operator[](int i) const { return container[i - offset]; }
0051   };
0052 
0053 }  // namespace caStructures
0054 
0055 #endif