ATLAS Offline Software
TrigITkAccelEDM.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRIGACCELEVENT_TRIGINDETACCELEDM_ITK_H
6 #define TRIGACCELEVENT_TRIGINDETACCELEDM_ITK_H
7 
8 #include<cstdint>
9 #include<memory>
10 
11 namespace TrigAccel {
12 
13 namespace ITk {
14 
15  //A. GPU-accelerated track seeding
16 
17  static constexpr unsigned int MAX_SILICON_LAYERS = 216;
18  static constexpr unsigned int MAX_NUMBER_PIX_MODULES = 6300;
19  static constexpr unsigned int MAX_NUMBER_SCT_MODULES = 24600;
20  static constexpr unsigned int MAX_NUMBER_SPACEPOINTS = 300000;
21  static constexpr unsigned int MAX_PHI_SLICES = 100;
22  static constexpr unsigned int MAX_NUMBER_OUTPUT_SEEDS = 250000;
23 
24  typedef struct SiliconLayer {
25  public:
26  int m_subdet;//1 : Pixel, 2 : Strips
27  int m_type;//0: barrel, +/-n : endcap
28  float m_refCoord;
33 
35 
36  typedef struct DetectorModel {
37  public:
38  int m_nLayers;
40  SILICON_LAYER m_layers[MAX_SILICON_LAYERS];
41  int m_middleSpacePointLayers[MAX_SILICON_LAYERS];
42  int m_hashArray[MAX_NUMBER_PIX_MODULES+MAX_NUMBER_SCT_MODULES];
43  float m_minRZ[MAX_NUMBER_PIX_MODULES+MAX_NUMBER_SCT_MODULES];
44  float m_maxRZ[MAX_NUMBER_PIX_MODULES+MAX_NUMBER_SCT_MODULES];
46 
47  typedef struct SpacePointLayerRange {
48  public:
49  int m_layerBegin[MAX_SILICON_LAYERS];
50  int m_layerEnd[MAX_SILICON_LAYERS];
52 
53  typedef struct SpacePointStorage {
54  public:
57  int m_nLayers;
59  int m_index[MAX_NUMBER_SPACEPOINTS];
60  int m_type[MAX_NUMBER_SPACEPOINTS];
61  float m_x[MAX_NUMBER_SPACEPOINTS];
62  float m_y[MAX_NUMBER_SPACEPOINTS];
63  float m_z[MAX_NUMBER_SPACEPOINTS];
64  float m_r[MAX_NUMBER_SPACEPOINTS];
65  float m_phi[MAX_NUMBER_SPACEPOINTS];
66  float m_covR[MAX_NUMBER_SPACEPOINTS];
67  float m_covZ[MAX_NUMBER_SPACEPOINTS];
68  float m_clusterWidth[MAX_NUMBER_SPACEPOINTS];
71 
72  typedef struct SeedFinderSettings {
73  public:
75  float m_magFieldZ;
81  unsigned int m_maxTripletBufferLength;
86 
88 
89  typedef struct SeedMakingJob {
90  public:
94 
95  typedef struct OutputSeedStorage {
96  public:
97  int m_nSeeds;
99  int m_nI, m_nO;
101  int m_innerIndex[MAX_NUMBER_OUTPUT_SEEDS];
102  int m_middleIndex[MAX_NUMBER_OUTPUT_SEEDS];
103  int m_outerIndex[MAX_NUMBER_OUTPUT_SEEDS];
104  float m_Q[MAX_NUMBER_OUTPUT_SEEDS];
105  float m_pT[MAX_NUMBER_OUTPUT_SEEDS];
107 
108  //B: Graph-based track seeding algorithm implementation on GPU
109 
110  static constexpr unsigned int GBTS_MAX_NUMBER_SPACEPOINTS = 350000;
111  static constexpr unsigned int GBTS_MAX_SILICON_LAYERS = 216;
112  static constexpr unsigned int GBTS_MAX_PHI_BIN = 120;
113  static constexpr unsigned int GBTS_MAX_ETA_BIN = 1000;
114  static constexpr unsigned int GBTS_MAX_ETA_BIN_PAIR = 8000;
115  static constexpr unsigned int GBTS_NODE_BUFFER_LENGTH = 250;
116  static constexpr unsigned int GBTS_MAX_NUM_NEIGHBOURS = 10;
117  static constexpr unsigned int GBTS_MAX_CCA_ITERATIONS = 20;
118  static constexpr unsigned int GBTS_MAX_SHARED_STATES = 544; //544 for 96kb of shared
119 
120  //offsets for d_output_graph array
121  static constexpr unsigned char node1 = 0;
122  static constexpr unsigned char node2 = 1;
123  static constexpr unsigned char nNei = 2;
124  static constexpr unsigned char nei_idx_start = 3;
125 
126  typedef struct GraphMakingInputData {
127  public:
128 
130 
131  float m_params[4*GBTS_MAX_NUMBER_SPACEPOINTS];//x,y,z,cluster width
132 
133  int m_layerIdx[GBTS_MAX_SILICON_LAYERS];
134 
135  //the views for the above storage space assuming float4 packing (x,y,z,w)
136 
137  int m_layerInfo[4*GBTS_MAX_SILICON_LAYERS];//view begin, view end, num eta bins, first eta bin
138 
139  //eta binning geometry of the layers
140 
141  float m_layerGeo[2*GBTS_MAX_SILICON_LAYERS];//min eta, eta bin width
142 
143  //eta bin pairings
144 
145  int m_bin_pairs[2*GBTS_MAX_ETA_BIN_PAIR];
146 
147  float m_algo_params[32];//reserved space for GBTS algoritm parameters
148 
150 
152 
154 
155  typedef struct CompressedGraph {
156  public:
158  unsigned int m_nEdges;
159  unsigned int m_nMaxNeighbours;
160  unsigned int m_nLinks;
161  std::unique_ptr<int[]> m_graphArray;
162 
164 
165  struct Tracklet {
166  int m_nodes[GBTS_MAX_CCA_ITERATIONS+1];
167  int m_size;
168  float m_Q;
169  };
170 
171  typedef struct OutputSeeds {
172  public:
173  OutputSeeds() : m_nSeeds(0), m_seedsArray(nullptr) {};
174  unsigned int m_nSeeds;
175  std::unique_ptr<Tracklet[]> m_seedsArray;
176 
178 
179  typedef struct GraphAndSeedsOutput {
180  public:
184 
185 }
186 }
187 #endif
TrigAccel::ITk::SeedFinderSettings::m_minDoubletLength
float m_minDoubletLength
Definition: TrigITkAccelEDM.h:84
TrigAccel::ITk::GraphAndSeedsOutput::m_OutputSeeds
OUTPUT_SEEDS m_OutputSeeds
Definition: TrigITkAccelEDM.h:182
TrigAccel::ITk::CompressedGraph::m_nEdges
unsigned int m_nEdges
Definition: TrigITkAccelEDM.h:157
TrigAccel::ITk::SeedFinderSettings::m_phiMinus
float m_phiMinus
Definition: TrigITkAccelEDM.h:85
TrigAccel::ITk::GraphMakingInputData
Definition: TrigITkAccelEDM.h:126
TrigAccel::ITk::SeedFinderSettings::m_tripletD0Max
float m_tripletD0Max
Definition: TrigITkAccelEDM.h:76
TrigAccel::ITk::OutputSeedStorage::m_outerIndex
int m_outerIndex[MAX_NUMBER_OUTPUT_SEEDS]
Definition: TrigITkAccelEDM.h:103
TrigAccel::ITk::SpacePointStorage::m_covZ
float m_covZ[MAX_NUMBER_SPACEPOINTS]
Definition: TrigITkAccelEDM.h:67
TrigAccel::ITk::SeedFinderSettings::m_maxTripletBufferLength
unsigned int m_maxTripletBufferLength
Definition: TrigITkAccelEDM.h:81
TrigAccel::ITk::SiliconLayer::m_nPhiSlices
int m_nPhiSlices
Definition: TrigITkAccelEDM.h:32
TrigAccel::ITk::SiliconLayer::m_refCoord
float m_refCoord
Definition: TrigITkAccelEDM.h:28
TrigAccel::ITk::SpacePointStorage::m_nMiddleLayers
int m_nMiddleLayers
Definition: TrigITkAccelEDM.h:58
TrigAccel::ITk::GraphMakingInputData::m_layerIdx
int m_layerIdx[GBTS_MAX_SILICON_LAYERS]
Definition: TrigITkAccelEDM.h:133
TrigAccel::ITk::OutputSeeds::m_nSeeds
unsigned int m_nSeeds
Definition: TrigITkAccelEDM.h:173
TrigAccel::ITk::SeedFinderSettings::m_tripletDoPSS
int m_tripletDoPSS
Definition: TrigITkAccelEDM.h:79
TrigAccel::ITk::SeedFinderSettings::m_zedPlus
float m_zedPlus
Definition: TrigITkAccelEDM.h:83
TrigAccel::ITk::SeedMakingJob::m_settings
SEED_FINDER_SETTINGS m_settings
Definition: TrigITkAccelEDM.h:91
TrigAccel::ITk::CompressedGraph::CompressedGraph
CompressedGraph()
Definition: TrigITkAccelEDM.h:157
TrigAccel::ITk::SpacePointStorage::m_clusterWidth
float m_clusterWidth[MAX_NUMBER_SPACEPOINTS]
Definition: TrigITkAccelEDM.h:68
TrigAccel::ITk::OUTPUT_SEEDS
struct TrigAccel::ITk::OutputSeeds OUTPUT_SEEDS
TrigAccel::ITk::DetectorModel::m_layers
SILICON_LAYER m_layers[MAX_SILICON_LAYERS]
Definition: TrigITkAccelEDM.h:40
TrigAccel::ITk::SeedMakingJob::m_data
SPACEPOINT_STORAGE m_data
Definition: TrigITkAccelEDM.h:92
TrigAccel::ITk::SeedFinderSettings::m_minEndcapPix
unsigned int m_minEndcapPix
Definition: TrigITkAccelEDM.h:74
TrigAccel::ITk::OutputSeedStorage
Definition: TrigITkAccelEDM.h:95
TrigAccel::ITk::SPACEPOINT_LAYER_RANGE
struct TrigAccel::ITk::SpacePointLayerRange SPACEPOINT_LAYER_RANGE
TrigAccel::ITk::OutputSeedStorage::m_nMiddleSps
int m_nMiddleSps
Definition: TrigITkAccelEDM.h:98
TrigAccel::ITk::COMPRESSED_GRAPH
struct TrigAccel::ITk::CompressedGraph COMPRESSED_GRAPH
TrigAccel::ITk::SiliconLayer::m_rzBinWidth
float m_rzBinWidth
Definition: TrigITkAccelEDM.h:31
TrigAccel::ITk::SeedFinderSettings::m_tripletPtMin
float m_tripletPtMin
Definition: TrigITkAccelEDM.h:78
TrigAccel::ITk::SpacePointStorage
Definition: TrigITkAccelEDM.h:53
TrigAccel::ITk::SiliconLayer
Definition: TrigITkAccelEDM.h:24
TrigAccel::ITk::SpacePointStorage::m_x
float m_x[MAX_NUMBER_SPACEPOINTS]
Definition: TrigITkAccelEDM.h:61
TrigAccel::ITk::OutputSeeds::OutputSeeds
OutputSeeds()
Definition: TrigITkAccelEDM.h:173
TrigAccel::ITk::SeedFinderSettings::m_phiPlus
float m_phiPlus
Definition: TrigITkAccelEDM.h:85
TrigAccel::ITk::GRAPH_AND_SEEDS_OUTPUT
struct TrigAccel::ITk::GraphAndSeedsOutput GRAPH_AND_SEEDS_OUTPUT
TrigAccel::ITk::SeedFinderSettings::m_nMaxPhiSlice
int m_nMaxPhiSlice
Definition: TrigITkAccelEDM.h:80
TrigAccel::ITk::SEED_MAKING_JOB
struct TrigAccel::ITk::SeedMakingJob SEED_MAKING_JOB
TrigAccel::ITk::GraphAndSeedsOutput
Definition: TrigITkAccelEDM.h:179
TrigAccel::ITk::Tracklet::m_size
int m_size
Definition: TrigITkAccelEDM.h:167
TrigAccel::ITk::SpacePointStorage::m_phi
float m_phi[MAX_NUMBER_SPACEPOINTS]
Definition: TrigITkAccelEDM.h:65
TrigAccel::ITk::OutputSeedStorage::m_innerIndex
int m_innerIndex[MAX_NUMBER_OUTPUT_SEEDS]
Definition: TrigITkAccelEDM.h:101
TrigAccel::ITk::GraphAndSeedsOutput::m_CompressedGraph
COMPRESSED_GRAPH m_CompressedGraph
Definition: TrigITkAccelEDM.h:181
TrigAccel::ITk::SpacePointLayerRange::m_layerBegin
int m_layerBegin[MAX_SILICON_LAYERS]
Definition: TrigITkAccelEDM.h:49
TrigAccel::ITk::SiliconLayer::m_type
int m_type
Definition: TrigITkAccelEDM.h:27
TrigAccel::ITk::GraphMakingInputData::m_nEtaBins
unsigned int m_nEtaBins
Definition: TrigITkAccelEDM.h:129
TrigAccel::ITk::GRAPH_MAKING_INPUT_DATA
struct TrigAccel::ITk::GraphMakingInputData GRAPH_MAKING_INPUT_DATA
TrigAccel::ITk::OutputSeedStorage::m_nSeeds
int m_nSeeds
Definition: TrigITkAccelEDM.h:97
TrigAccel::ITk::OutputSeeds::m_seedsArray
std::unique_ptr< Tracklet[]> m_seedsArray
Definition: TrigITkAccelEDM.h:175
TrigAccel::ITk::DetectorModel::m_maxRZ
float m_maxRZ[MAX_NUMBER_PIX_MODULES+MAX_NUMBER_SCT_MODULES]
Definition: TrigITkAccelEDM.h:44
TrigAccel::ITk::Tracklet
Definition: TrigITkAccelEDM.h:165
TrigAccel::ITk::OutputSeedStorage::m_nErrors
int m_nErrors
Definition: TrigITkAccelEDM.h:100
TrigAccel::ITk::SeedMakingJob
Definition: TrigITkAccelEDM.h:89
TrigAccel::ITk::GraphMakingInputData::m_params
float m_params[4 *GBTS_MAX_NUMBER_SPACEPOINTS]
Definition: TrigITkAccelEDM.h:131
TrigAccel::ITk::SEED_FINDER_SETTINGS
struct TrigAccel::ITk::SeedFinderSettings SEED_FINDER_SETTINGS
TrigAccel::ITk::SeedFinderSettings::m_maxBarrelPix
unsigned int m_maxBarrelPix
Definition: TrigITkAccelEDM.h:74
TrigAccel::ITk::SiliconLayer::m_phiBinWidth
float m_phiBinWidth
Definition: TrigITkAccelEDM.h:31
TrigAccel::ITk::SeedFinderSettings::m_tripletD0_PPS_Max
float m_tripletD0_PPS_Max
Definition: TrigITkAccelEDM.h:77
TrigAccel::ITk::OutputSeedStorage::m_pT
float m_pT[MAX_NUMBER_OUTPUT_SEEDS]
Definition: TrigITkAccelEDM.h:105
TrigAccel::ITk::SiliconLayer::m_maxBound
float m_maxBound
Definition: TrigITkAccelEDM.h:30
TrigAccel::ITk::SpacePointStorage::m_z
float m_z[MAX_NUMBER_SPACEPOINTS]
Definition: TrigITkAccelEDM.h:63
TrigAccel::ITk::GraphMakingInputData::m_nSpacepoints
unsigned int m_nSpacepoints
Definition: TrigITkAccelEDM.h:129
TrigAccel::ITk::Tracklet::m_Q
float m_Q
Definition: TrigITkAccelEDM.h:168
TrigAccel::ITk::GraphMakingInputData::m_minLevel
int m_minLevel
Definition: TrigITkAccelEDM.h:149
TrigAccel::ITk::CompressedGraph::m_nLinks
unsigned int m_nLinks
Definition: TrigITkAccelEDM.h:160
TrigAccel::ITk::SeedFinderSettings::m_magFieldZ
float m_magFieldZ
Definition: TrigITkAccelEDM.h:75
TrigAccel::ITk::DetectorModel::m_hashArray
int m_hashArray[MAX_NUMBER_PIX_MODULES+MAX_NUMBER_SCT_MODULES]
Definition: TrigITkAccelEDM.h:42
TrigAccel::ITk::GraphMakingInputData::m_maxEtaBin
unsigned int m_maxEtaBin
Definition: TrigITkAccelEDM.h:129
TrigAccel::ITk::DetectorModel::m_minRZ
float m_minRZ[MAX_NUMBER_PIX_MODULES+MAX_NUMBER_SCT_MODULES]
Definition: TrigITkAccelEDM.h:43
TrigAccel::ITk::GraphMakingInputData::m_bin_pairs
int m_bin_pairs[2 *GBTS_MAX_ETA_BIN_PAIR]
Definition: TrigITkAccelEDM.h:145
TrigAccel::ITk::SeedFinderSettings::m_maxEndcapPix
unsigned int m_maxEndcapPix
Definition: TrigITkAccelEDM.h:74
TrigAccel::ITk::DetectorModel
Definition: TrigITkAccelEDM.h:36
TrigAccel::ITk::DetectorModel::m_middleSpacePointLayers
int m_middleSpacePointLayers[MAX_SILICON_LAYERS]
Definition: TrigITkAccelEDM.h:41
TrigAccel::ITk::GraphMakingInputData::m_layerInfo
int m_layerInfo[4 *GBTS_MAX_SILICON_LAYERS]
Definition: TrigITkAccelEDM.h:137
TrigAccel::ITk::GraphMakingInputData::m_nMaxEdges
unsigned int m_nMaxEdges
Definition: TrigITkAccelEDM.h:129
TrigAccel::ITk::SpacePointStorage::m_nLayers
int m_nLayers
Definition: TrigITkAccelEDM.h:57
TrigAccel::ITk::SpacePointLayerRange
Definition: TrigITkAccelEDM.h:47
ITk
Definition: ITkPixelOfflineCalibCondAlg.cxx:13
TrigAccel::ITk::SeedFinderSettings::m_maxEta
float m_maxEta
Definition: TrigITkAccelEDM.h:84
TrigAccel::ITk::DetectorModel::m_nModules
int m_nModules
Definition: TrigITkAccelEDM.h:39
TrigAccel::ITk::GraphMakingInputData::m_layerGeo
float m_layerGeo[2 *GBTS_MAX_SILICON_LAYERS]
Definition: TrigITkAccelEDM.h:141
TrigAccel::ITk::OUTPUT_SEED_STORAGE
struct TrigAccel::ITk::OutputSeedStorage OUTPUT_SEED_STORAGE
TrigAccel::ITk::SeedFinderSettings::m_maxDoubletLength
float m_maxDoubletLength
Definition: TrigITkAccelEDM.h:84
TrigAccel::ITk::GraphMakingInputData::m_nBinPairs
unsigned int m_nBinPairs
Definition: TrigITkAccelEDM.h:129
TrigAccel::ITk::SPACEPOINT_STORAGE
struct TrigAccel::ITk::SpacePointStorage SPACEPOINT_STORAGE
TrigAccel::ITk::SpacePointStorage::m_r
float m_r[MAX_NUMBER_SPACEPOINTS]
Definition: TrigITkAccelEDM.h:64
TrigAccel::ITk::CompressedGraph::m_graphArray
std::unique_ptr< int[]> m_graphArray
Definition: TrigITkAccelEDM.h:161
TrigAccel::ITk::DETECTOR_MODEL
struct TrigAccel::ITk::DetectorModel DETECTOR_MODEL
TrigAccel::ITk::SiliconLayer::m_subdet
int m_subdet
Definition: TrigITkAccelEDM.h:26
TrigAccel::ITk::OutputSeedStorage::m_middleIndex
int m_middleIndex[MAX_NUMBER_OUTPUT_SEEDS]
Definition: TrigITkAccelEDM.h:102
TrigAccel::ITk::SpacePointStorage::m_phiSlices
SPACEPOINT_LAYER_RANGE m_phiSlices[MAX_PHI_SLICES]
Definition: TrigITkAccelEDM.h:69
TrigAccel::ITk::GraphMakingInputData::m_useGPUseedExtraction
bool m_useGPUseedExtraction
Definition: TrigITkAccelEDM.h:151
TrigAccel::ITk::SpacePointStorage::m_covR
float m_covR[MAX_NUMBER_SPACEPOINTS]
Definition: TrigITkAccelEDM.h:66
TrigAccel::ITk::SeedFinderSettings::m_tripletDoPPS
int m_tripletDoPPS
Definition: TrigITkAccelEDM.h:79
TrigAccel::ITk::GraphMakingInputData::m_algo_params
float m_algo_params[32]
Definition: TrigITkAccelEDM.h:147
TrigAccel::ITk::SpacePointLayerRange::m_layerEnd
int m_layerEnd[MAX_SILICON_LAYERS]
Definition: TrigITkAccelEDM.h:50
TrigAccel::ITk::SiliconLayer::m_nElements
int m_nElements
Definition: TrigITkAccelEDM.h:29
TrigAccel::ITk::CompressedGraph
Definition: TrigITkAccelEDM.h:155
TrigAccel::ITk::SpacePointStorage::m_nSpacepoints
int m_nSpacepoints
Definition: TrigITkAccelEDM.h:55
TrigAccel::ITk::Tracklet::m_nodes
int m_nodes[GBTS_MAX_CCA_ITERATIONS+1]
Definition: TrigITkAccelEDM.h:166
TrigAccel::ITk::OutputSeeds
Definition: TrigITkAccelEDM.h:171
TrigAccel::ITk::GraphMakingInputData::m_nLayers
unsigned int m_nLayers
Definition: TrigITkAccelEDM.h:129
TrigAccel::ITk::DetectorModel::m_nLayers
int m_nLayers
Definition: TrigITkAccelEDM.h:38
TrigAccel::ITk::SeedFinderSettings
Definition: TrigITkAccelEDM.h:72
TrigAccel::ITk::SpacePointStorage::m_nPhiSlices
int m_nPhiSlices
Definition: TrigITkAccelEDM.h:56
TrigAccel::ITk::SpacePointStorage::m_type
int m_type[MAX_NUMBER_SPACEPOINTS]
Definition: TrigITkAccelEDM.h:60
TrigAccel::ITk::CompressedGraph::m_nMaxNeighbours
unsigned int m_nMaxNeighbours
Definition: TrigITkAccelEDM.h:159
TrigAccel::ITk::SpacePointStorage::m_index
int m_index[MAX_NUMBER_SPACEPOINTS]
Definition: TrigITkAccelEDM.h:59
TrigAccel
Definition: DataExportBuffer.h:12
TrigAccel::ITk::SiliconLayer::m_minBound
float m_minBound
Definition: TrigITkAccelEDM.h:30
TrigAccel::ITk::SILICON_LAYER
struct TrigAccel::ITk::SiliconLayer SILICON_LAYER
TrigAccel::ITk::SeedFinderSettings::m_doubletFilterRZ
int m_doubletFilterRZ
Definition: TrigITkAccelEDM.h:79
TrigAccel::ITk::SeedFinderSettings::m_maxSiliconLayer
unsigned int m_maxSiliconLayer
Definition: TrigITkAccelEDM.h:74
TrigAccel::ITk::SeedFinderSettings::m_zedMinus
float m_zedMinus
Definition: TrigITkAccelEDM.h:83
TrigAccel::ITk::OutputSeedStorage::m_Q
float m_Q[MAX_NUMBER_OUTPUT_SEEDS]
Definition: TrigITkAccelEDM.h:104
TrigAccel::ITk::OutputSeedStorage::m_nO
int m_nO
Definition: TrigITkAccelEDM.h:99
TrigAccel::ITk::SpacePointStorage::m_y
float m_y[MAX_NUMBER_SPACEPOINTS]
Definition: TrigITkAccelEDM.h:62
TrigAccel::ITk::OutputSeedStorage::m_nI
int m_nI
Definition: TrigITkAccelEDM.h:99
TrigAccel::ITk::SeedFinderSettings::m_isFullScan
int m_isFullScan
Definition: TrigITkAccelEDM.h:82