ATLAS Offline Software
Loading...
Searching...
No Matches
EFTrackingTransient.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
14
15#ifndef EFTRACKING_FPGA_INTEGRATION_EFTRACKING_TRANSIENT_H
16#define EFTRACKING_FPGA_INTEGRATION_EFTRACKING_TRANSIENT_H
17
18#include <vector>
19
21
23{
24 // The struct of the StripCluster and PixelCluster are not aligned at the moment
25 // They might be aligned in the future for efficient device memory usage
26
27 constexpr uint32_t PIXEL_LUT_SIZE = 73312;
28 constexpr uint32_t STRIP_LUT_SIZE = 236544;
29
30 constexpr uint32_t MAX_PIXEL_CLUSTERS = 326400;
31 constexpr uint32_t MAX_STRIP_CLUSTERS = 307200;
32 constexpr uint16_t CLUSTER_SEG_SIZE = 256;
33 constexpr uint8_t NUM_PIXEL_WORDS = 10;
34 constexpr uint8_t NUM_STRIP_WORDS = 9;
35 constexpr uint8_t NUM_PIXEL_FIELDS = 17;
36 constexpr uint8_t NUM_STRIP_FIELDS = 11;
37 constexpr uint8_t NUM_PIXEL_ROWS = 22;
38 constexpr uint8_t NUM_STRIP_ROWS = 14;
39 constexpr uint32_t PIXEL_BLOCK_BUF_SIZE = (NUM_PIXEL_WORDS*MAX_PIXEL_CLUSTERS/1024+1)*1024; // align to 1024*sizeof(uint32_t)=4096
40 constexpr uint32_t STRIP_BLOCK_BUF_SIZE = (NUM_STRIP_WORDS*MAX_STRIP_CLUSTERS/1024+1)*1024;
41 constexpr uint32_t PIXEL_CONTAINER_BUF_SIZE = ((NUM_PIXEL_ROWS*MAX_PIXEL_CLUSTERS+16)/1024+1)*1024; // +16: for cluster number word
42 constexpr uint32_t STRIP_CONTAINER_BUF_SIZE = ((NUM_STRIP_ROWS*MAX_STRIP_CLUSTERS+16)/1024+1)*1024;
43
44
45
46 constexpr unsigned int MAX_NUM_CLUSTERS = 409600;
47 constexpr unsigned int NUM_MAXCLUSTER_WORD_INTRACK = 13;
48 constexpr unsigned int MAX_TRACK = 1000;
49
51
52
53 // Optimize these,
54 constexpr unsigned int MAX_NUM_INPUTCLUSTERS = 409600;
55 constexpr unsigned int NUM_MAXINPUT_PIXEL_ROW = 3;
56 constexpr unsigned int NUM_MAXINPUT_STRIP_ROW = 2;
59
67 {
68 float localPosition = 0.0f;
69 float localCovariance = 0.0f;
70 unsigned int idHash = 0;
71 long unsigned int id = 0;
72 float globalPosition[3] = {0.0f, 0.0f, 0.0f};
73 unsigned long long rdoList[1000] = {0};
76 };
77
85 {
86 long unsigned int id = 0;
87 unsigned int idHash = 0;
88 float localPosition[2] = {0.0f, 0.0f};
89 float localCovariance[2] = {0.0f, 0.0f};
90 float globalPosition[3] = {0.0f, 0.0f, 0.0f};
91 unsigned long long rdoList[1000] = {0};
94 float widthInEta = 0.0f;
95 int totList[1000] = {0};
96 int totalToT = 0;
97 float chargeList[1000] = {0.0f};
98 float totalCharge = 0.0f;
99 float energyLoss = 0.0f;
100 char isSplit = 0;
101 float splitProbability1 = 0.0f;
102 float splitProbability2 = 0.0f;
103 int lvl1a = 0;
107 };
108
116 {
117
118 unsigned int idHash[2] = {0};
119 float globalPosition[3] = {0.0f, 0.0f, 0.0f};
120 float radius = 0.0f;
121 float cov_r = 0.0f;
122 float cov_z = 0.0f;
123 int measurementIndex[100] = {0};
124 // Strip
125 float topHalfStripLength = 0.0f;
127 float topStripDirection[3] = {0.0f, 0.0f, 0.0f};
128 float bottomStripDirection[3] = {0.0f, 0.0f, 0.0f};
129 float stripCenterDistance[3] = {0.0f, 0.0f, 0.0f};
130 float topStripCenter[3] = {0.0f, 0.0f, 0.0f};
131 };
132
138 struct Metadata
139 {
140 unsigned long numOfStripClusters = 0;
141 unsigned long numOfPixelClusters = 0;
142 unsigned long numOfStripSpacePoints = 0;
143 unsigned int numOfPixelSpacePoints = 0;
144 unsigned int scRdoIndex[500000] = {0};
145 unsigned int pcRdoIndex[500000] = {0};
146 unsigned int pcTotIndex[500000] = {0};
147 unsigned int pcChargeIndex[500000] = {0};
148 unsigned int pcRdoIndexSize = 0;
149 unsigned int scRdoIndexSize = 0;
150 unsigned int pcTotIndexSize = 0;
151 unsigned int pcChargeIndexSize = 0;
152 };
153
159 {
160
163 unsigned int *scIdHash;
164 long unsigned int *scId;
166 unsigned long long *scRdoList;
168 };
169
196
202
220
226 {
227 std::vector<float> localPosition;
228 std::vector<float> localCovariance;
229 std::vector<unsigned int> idHash;
230 std::vector<long unsigned int> id;
231 std::vector<float> globalPosition;
232 std::vector<unsigned long long> rdoList;
233 std::vector<int> channelsInPhi;
234 };
235
241 {
242 std::vector<long unsigned int> id;
243 std::vector<unsigned int> idHash;
244 std::vector<float> localPosition;
245 std::vector<float> localCovariance;
246 std::vector<float> globalPosition;
247 std::vector<unsigned long long> rdoList;
248 std::vector<int> channelsInPhi;
249 std::vector<int> channelsInEta;
250 std::vector<float> widthInEta;
251 std::vector<int> totList;
252 std::vector<int> totalToT;
253 std::vector<float> chargeList;
254 std::vector<float> totalCharge;
255 std::vector<float> energyLoss;
256 std::vector<char> isSplit;
257 std::vector<float> splitProbability1;
258 std::vector<float> splitProbability2;
259 std::vector<int> lvl1a;
260 std::vector<int> sizeOfRDOList;
261 std::vector<int> sizeOfTotList;
262 std::vector<int> sizeOfChargeList;
263 };
264
269 {
270 std::vector<unsigned int> elementIdList;
271 std::vector<float> globalPosition;
272 std::vector<float> radius;
273 std::vector<float> varianceR;
274 std::vector<float> varianceZ;
275 std::vector<float> topHalfStripLength;
276 std::vector<float> bottomHalfStripLength;
277 std::vector<float> topStripDirection;
278 std::vector<float> bottomStripDirection;
279 std::vector<float> stripCenterDistance;
280 std::vector<float> topStripCenter;
281 std::vector<int> measurementIndexes;
282 };
283
284} // namespace EFTrackingDataTransient
285
286#endif // EFTRACKING_FPGA_INTEGRATION_EFTRACKING_TRANSIENT_H
constexpr uint32_t MAX_PIXEL_CLUSTERS
constexpr uint8_t NUM_STRIP_FIELDS
constexpr uint8_t NUM_STRIP_WORDS
constexpr unsigned long PIXEL_CONTAINER_INPUT_BUF_SIZE
constexpr unsigned int NUM_MAXINPUT_PIXEL_ROW
constexpr unsigned int NUM_MAXCLUSTER_WORD_INTRACK
constexpr uint8_t NUM_STRIP_ROWS
constexpr uint8_t NUM_PIXEL_WORDS
constexpr unsigned int MAX_NUM_CLUSTERS
constexpr uint16_t CLUSTER_SEG_SIZE
constexpr unsigned int MAX_TRACK
constexpr unsigned int NUM_MAXINPUT_STRIP_ROW
constexpr uint32_t STRIP_CONTAINER_BUF_SIZE
constexpr unsigned int MAX_NUM_INPUTCLUSTERS
constexpr uint8_t NUM_PIXEL_FIELDS
constexpr unsigned long STRIP_CONTAINER_INPUT_BUF_SIZE
constexpr uint32_t STRIP_LUT_SIZE
constexpr uint32_t PIXEL_LUT_SIZE
constexpr uint32_t MAX_STRIP_CLUSTERS
constexpr uint32_t STRIP_BLOCK_BUF_SIZE
constexpr uint8_t NUM_PIXEL_ROWS
constexpr uint32_t PIXEL_BLOCK_BUF_SIZE
constexpr unsigned long TRACK_CONTAINER_BUF_SIZE
constexpr uint32_t PIXEL_CONTAINER_BUF_SIZE
The structure of the Metadata containing data after clusterization.
The PixelClusterAuxInput struct is used to simplify the creaction of the xAOD::PixelClusterContainer.
std::vector< unsigned long long > rdoList
The PixelClusters struct contains the output arrays from the FPGA.
The PixelClusters struct contains all xAOD::PixelCluster data members.
The SpacePointAuxInput struct is used to simplify the creaction of the xAOD::SpacePointContainer.
The Pixel/Strip SpacePoints struct contains the output arrays from the FPGA.
The SpacePoint struct contains all xAOD::SpacePoint data members.
The StripClusterAuxInput struct is used to simplify the creaction of the xAOD::StripClusterContainer.
std::vector< unsigned long long > rdoList
The StripClusters struct contains the output arrays from the FPGA.
The StripClusters struct contains all xAOD::StripCluster data members.