ATLAS Offline Software
FPGADataFormatTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3  */
4 
5 
8 
10  ATH_MSG_INFO("Initializing IEFTrackingFPGADataFormatTool tool");
11 
12  ATH_CHECK(detStore()->retrieve(m_PIX_mgr, "ITkPixel"));
13  ATH_CHECK(detStore()->retrieve(m_pixelId, "PixelID"));
14  ATH_CHECK(detStore()->retrieve(m_SCT_mgr, "ITkStrip"));
15  ATH_CHECK(detStore()->retrieve(m_sctId, "SCT_ID"));
16 
17  return StatusCode::SUCCESS;
18 }
19 
21  const PixelRDO_Container &pixelRDO,
22  std::vector<uint64_t> &encodedData,
23  const std::vector<IdentifierHash>& hashList,
24  const EventContext &ctx) const {
25 
26  // Fill the event header
27  ATH_CHECK(fillHeader(encodedData));
28 
29  // Convert the strip RDO
30  ATH_CHECK(convertPixelRDO(pixelRDO, encodedData, hashList, ctx));
31 
32  // Fill the event footer
33  ATH_CHECK(fillFooter(encodedData));
34 
35 
36  return StatusCode::SUCCESS;
37 }
38 
40  const SCT_RDO_Container &stripRDO,
41  std::vector<uint64_t> &encodedData,
42  const std::vector<IdentifierHash>& hashList,
43  const EventContext &ctx) const {
44 
45  // Fill the event header
46  ATH_CHECK(fillHeader(encodedData));
47 
48  // Convert the strip RDO
49  ATH_CHECK(convertStripRDO(stripRDO, encodedData, hashList, ctx));
50 
51  // Fill the event footer
52  ATH_CHECK(fillFooter(encodedData));
53 
54  return StatusCode::SUCCESS;
55 }
56 
57 
58 
60  const FPGATrackSimTrackCollection* tracks,
61  std::vector<uint64_t> &encodedData,
62  const EventContext &ctx) const {
63 
64 // Fill the event header
65 ATH_CHECK(fillHeader(encodedData));
66 
67 // Convert the strip RDO
68 ATH_CHECK(convertFPGATracks(tracks, encodedData, ctx));
69 
70 // Fill the event footer
71 ATH_CHECK(fillFooter(encodedData));
72 
73 
74 return StatusCode::SUCCESS;
75 }
76 
78  const FPGATrackSimTrackCollection* tracks,
79  std::vector<uint64_t> &encodedData,
80  const EventContext &/*ctx*/
81  ) const {
82 
83  for (const FPGATrackSimTrack& track : *tracks)
84  {
85  int bitmask = 0;
86  for(const auto& hit: track.getFPGATrackSimHits())
87  {
88  bitmask |= 2 << hit.getLayer();
89  }
90 
91  ATH_MSG_DEBUG("Encoded GTrack: ");
92  ATH_MSG_DEBUG("\tetaregion: " << track.getHoughY());
93  ATH_MSG_DEBUG("\tphiregion: " << track.getHoughX());
94  ATH_MSG_DEBUG("\tlayerbitmask: " << bitmask);
95  ATH_MSG_DEBUG("\td0: " << track.getD0());
96  ATH_MSG_DEBUG("\tz0: " << track.getZ0());
97  ATH_MSG_DEBUG("\tqoverpt: " << track.getQOverPt());
98  ATH_MSG_DEBUG("\tphi: " << track.getPhi());
99  ATH_MSG_DEBUG("\teta: " << track.getEta());
100 
101  auto gtrackWord_w1 = FPGADataFormatUtilities::fill_GTRACK_HDR_w1(
102  0xee,
103  0,
104  track.getHoughY(),
105  track.getHoughX(),
106  0,
107  0,
108  0,
109  bitmask);
110  encodedData.push_back(FPGADataFormatUtilities::get_dataformat_GTRACK_HDR_w1(gtrackWord_w1));
111 
112  auto gtrackWord_w2 = FPGADataFormatUtilities::fill_GTRACK_HDR_w2(
113  0,
114  track.getD0(),
115  track.getZ0(),
116  0);
117  encodedData.push_back(FPGADataFormatUtilities::get_dataformat_GTRACK_HDR_w2(gtrackWord_w2));
118 
119  auto gtrackWord_w3 = FPGADataFormatUtilities::fill_GTRACK_HDR_w3(
120  track.getQOverPt(),
121  track.getPhi(),
122  track.getEta(),
123  0);
124  encodedData.push_back(FPGADataFormatUtilities::get_dataformat_GTRACK_HDR_w3(gtrackWord_w3));
125 
126  auto hits = track.getFPGATrackSimHits();
127  for(unsigned int i = 0 ; i < hits.size(); i++)
128  {
129  const auto& hit = hits[i];
130  int cluster1D=0;
131  int cluster2D=0;
132  if(hit.getOriginalHit().getCluster1ID() >=0)
133  {
134  cluster1D=hit.getOriginalHit().getCluster1ID();
135  }
136 
137  if(hit.getOriginalHit().getCluster2ID() >=0)
138  {
139  cluster2D=hit.getOriginalHit().getCluster2ID();
140  }
141 
142  ATH_MSG_DEBUG("Encoded Hits: ");
143  ATH_MSG_DEBUG("\tlast: " << (i+1 == hits.size()));
144  ATH_MSG_DEBUG("\tphiregion: " << hit.getLayer());
145  ATH_MSG_DEBUG("\tlayerbitmask: " << hit.getR());
146  ATH_MSG_DEBUG("\td0: " << hit.getGPhi());
147  ATH_MSG_DEBUG("\tz0: " << hit.getZ());
148  ATH_MSG_DEBUG("\tcluster1D: " << cluster1D);
149  ATH_MSG_DEBUG("\tcluster2D: " << cluster2D);
150 
151 
152  auto ghit_w1 = FPGADataFormatUtilities::fill_GHITZ_w1 ((i+1 == hits.size()), hit.getLayer(), hit.getR(), hit.getGPhi(), hit.getZ(), 0, 0);
153  auto ghit_w2 = FPGADataFormatUtilities::fill_GHITZ_w2 (cluster1D, cluster2D, hit.getEtaModule(), 0);
154  encodedData.push_back(FPGADataFormatUtilities::get_dataformat_GHITZ_w1(ghit_w1));
155  encodedData.push_back(FPGADataFormatUtilities::get_dataformat_GHITZ_w2(ghit_w2));
156 
157 
158  }
159 
160 
161  }
162 
163 
164  return StatusCode::SUCCESS;
165  }
166 
167 
168 
170  const PixelRDO_Container &pixelRDO,
171  std::vector<uint64_t> &encodedData,
172  const std::vector<IdentifierHash>& hashList,
173  const EventContext &/*ctx*/
174  ) const {
175 
176  bool filledHeader = false;
177  for (const InDetRawDataCollection<PixelRDORawData>* pixel_rdoCollection : pixelRDO)
178  {
179  if (pixel_rdoCollection == nullptr) { continue; }
180 
181  // loop on all RDOs
182  for (const PixelRDORawData* pixelRawData : *pixel_rdoCollection)
183  {
184  Identifier rdoId = pixelRawData->identify();
185  // get the det element from the det element collection
186  const InDetDD::SiDetectorElement* sielement = m_PIX_mgr->getDetectorElement(rdoId);
187  // if hash list has elements, check if the current Si in the list otherwise, continue
188  if(hashList.size() > 0)
189  {
190  if(std::find(hashList.begin(), hashList.end(), sielement->identifyHash()) == hashList.end()) continue;
191  }
192 
193  // Fill the module header
194  if(!filledHeader)
195  {
196  ATH_CHECK(fillModuleHeader(sielement, encodedData));
197  filledHeader = true;
198  }
199 
200  // Get the pixel word
202  (pixelRawData == pixel_rdoCollection->back()), // last
203  m_pixelId->phi_index(rdoId), // ROW
204  m_pixelId->eta_index(rdoId), // COL
205  pixelRawData->getToT(), // TOT
206  pixelRawData->getLVL1A(), // Lvl!
207  0 // Spare
208  );
209 
210  // Push the word into the vector
211  encodedData.push_back(FPGADataFormatUtilities::get_dataformat_PIXEL_EF_RDO(pixelWord));
212  //}
213  } // end for each RDO in the collection
214 
215  // reset the header
216  filledHeader = false;
217 
218  } // for each pixel RDO collection
219 
220  return StatusCode::SUCCESS;
221 }
222 
224  const SCT_RDO_Container &stripRDO,
225  std::vector<uint64_t> &encodedData,
226  const std::vector<IdentifierHash>& hashList,
227  const EventContext &/*ctx*/
228 ) const {
229  constexpr int MaxChannelinStripRow = 128;
230  long unsigned int stripNumber = 0;
231  bool filledHeader = false;
232 
233  uint64_t packedWord = 0;
234  bool firstClusterFilled = false;
235 
236  for (const InDetRawDataCollection<SCT_RDORawData>* SCT_Collection : stripRDO) {
237  if (SCT_Collection == nullptr) { continue; }
238 
239  std::map<int, bool> firedStrips;
240  std::map<int, const SCT_RDORawData*> firedStripsToRDO;
241 
242  // Preprocess the SCT collection hits to get information for encoding strip in ITK format
243  // All fired strips are stored in a map to get an overview of the full module that should be
244  // used to encode the data into the ITk format.
245  for (const SCT_RDORawData* sctRawData : *SCT_Collection) {
246  const Identifier rdoId = sctRawData->identify();
247  const int baseLineStrip{m_sctId->strip(rdoId)};
248  for (int i = 0; i < sctRawData->getGroupSize(); i++) {
249  firedStrips[baseLineStrip + i] = true;
250  firedStripsToRDO[baseLineStrip + i] = sctRawData;
251  }
252  }
253  // Loop over the fired hits and encode them in the ITk strips hit map
254  // Finds unique hits in the list that can be encoded and don't overlap
255  std::map<int, int> stripEncodingForITK;
256  std::map<int, const SCT_RDORawData* > stripEncodingForITKToRDO;
257  for (const auto& [stripID, fired] : firedStrips) {
258  // Skip strips that have already been used in a cluster
259  if (!fired) continue;
260 
261  // Check the next 3 hits if they exist and have a hit in them
262  std::bitset<3> hitMap;
263  int currChipID = stripID / MaxChannelinStripRow;
264  int maxStripIDForCurrChip = (currChipID + 1) * MaxChannelinStripRow;
265 
266  for (int i = 0; i < 3; i++) {
267  // Do not cluster strips that are outside the range of this chip
268  if ((stripID + 1 + i) >= maxStripIDForCurrChip) continue;
269  if (firedStrips.find(stripID + 1 + i) != firedStrips.end()) {
270  if (firedStrips.at(stripID + 1 + i)) {
271  hitMap[2 - i] = 1;
272  firedStrips[stripID + 1 + i] = false;
273  } else {
274  hitMap[2 - i] = 0;
275  }
276  }
277  }
278 
279  // Encode the hit map into an integer
280  stripEncodingForITK[stripID] = static_cast<int>(hitMap.to_ulong());
281  stripEncodingForITKToRDO[stripID] = firedStripsToRDO[stripID];
282  }
283 
284  stripNumber = 0;
285  firstClusterFilled = false;
286 
287  // Process each fired strip and encode it
288  for (const auto& [stripID, encoding] : stripEncodingForITK) {
289  const SCT_RDORawData* sctRawData = stripEncodingForITKToRDO[stripID];
290  const Identifier rdoId = sctRawData->identify();
291  const InDetDD::SiDetectorElement* sielement = m_SCT_mgr->getDetectorElement(rdoId);
292 
293  // if hash list has elements, check if the current Si in the list otherwise, continue
294  if(hashList.size() > 0)
295  {
296  if(std::find(hashList.begin(), hashList.end(), sielement->identifyHash()) == hashList.end()) continue;
297  }
298 
299  // Fill the module header if not already filled
300  if (!filledHeader) {
301  if (!fillModuleHeader(sielement, encodedData)) return StatusCode::FAILURE;
302  filledHeader = true;
303  }
304 
305  // Compute chip ID and ITk strip ID
306  int chipID = stripID / MaxChannelinStripRow;
307  int ITkStripID = stripID % MaxChannelinStripRow;
308 
309  // Adjust for row offset based on the eta module index
310  int offset = m_sctId->eta_module(rdoId) % 2;
311  if (m_sctId->barrel_ec(rdoId) == 0) {
312  offset = (std::abs(m_sctId->eta_module(rdoId)) - 1) % 2;
313  }
314  ITkStripID += offset * MaxChannelinStripRow;
315  stripNumber++;
316  // Determine if this is the last cluster in the module
317  bool lastBit = (stripNumber == stripEncodingForITK.size());
318 
319  // Create the encoded strip word
321  lastBit, // last bit indicating module boundary
322  chipID, // chip ID
323  ITkStripID, // cluster number
324  stripEncodingForITK.at(stripID), // cluster map
325  0 // spare bits
326  );
327 
329 
330  // **Pack two clusters into a single 64-bit word**
331  if (!firstClusterFilled) {
332  packedWord = (static_cast<uint64_t>(encodedCluster) << 32); // Store first cluster in upper 32 bits
333  firstClusterFilled = true;
334  } else {
335  packedWord |= static_cast<uint64_t>(encodedCluster); // Store second cluster in lower 32 bits
336  encodedData.push_back(packedWord); // Push the full packed word
337  firstClusterFilled = false; // Reset flag
338  packedWord = 0; // Clear for the next pair
339  }
340 
341  // If this is the last cluster in the module and a single cluster is left, push it
342  if (lastBit && firstClusterFilled) {
343  encodedData.push_back(packedWord);
344  }
345 
346  }
347  // Reset the header flag for the next module
348  filledHeader = false;
349  } // end for each RDO in the strip collection
350 
351  return StatusCode::SUCCESS;
352 }
353 
354 // Helper function for common header and Footer info
355 StatusCode FPGADataFormatTool::fillHeader(std::vector<uint64_t> &encodedData) const
356 {
357  // Fill the event header
359  encodedData.push_back(FPGADataFormatUtilities::get_dataformat_EVT_HDR_w1(header_w1));
360 
361  // Fill the event header
362  auto header_w2 = FPGADataFormatUtilities::fill_EVT_HDR_w2 (242000, 0);
363  encodedData.push_back(FPGADataFormatUtilities::get_dataformat_EVT_HDR_w2(header_w2));
364 
365  // Fill the event header
366  auto header_w3 = FPGADataFormatUtilities::fill_EVT_HDR_w3 (0, 0);
367  encodedData.push_back(FPGADataFormatUtilities::get_dataformat_EVT_HDR_w3(header_w3));
368 
369  return StatusCode::SUCCESS;
370 }
371 
372 StatusCode FPGADataFormatTool::fillFooter(std::vector<uint64_t> &encodedData) const
373 {
374  // Fill the event header
376  encodedData.push_back(FPGADataFormatUtilities::get_dataformat_EVT_FTR_w1(footer_w1));
377 
378  // Fill the event header
379  auto footer_w2 = FPGADataFormatUtilities::fill_EVT_FTR_w2 (0);
380  encodedData.push_back(FPGADataFormatUtilities::get_dataformat_EVT_FTR_w2(footer_w2));
381 
382  // Fill the event header
383  auto footer_w3 = FPGADataFormatUtilities::fill_EVT_FTR_w3 (encodedData.size(), 44939973);
384  encodedData.push_back(FPGADataFormatUtilities::get_dataformat_EVT_FTR_w3(footer_w3));
385 
386  return StatusCode::SUCCESS;
387 }
388 
389 StatusCode FPGADataFormatTool::fillModuleHeader(const InDetDD::SiDetectorElement* sielement, std::vector<uint64_t> &encodedData) const
390 {
392  sielement->identifyHash().value(), 0);
393  encodedData.push_back(FPGADataFormatUtilities::get_dataformat_M_HDR_w1(mod_w1));
394 
395  return StatusCode::SUCCESS;
396 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
FPGADataFormatTool::convertStripHitsToFPGADataFormat
virtual StatusCode convertStripHitsToFPGADataFormat(const SCT_RDO_Container &stripRDO, std::vector< uint64_t > &encodedData, const std::vector< IdentifierHash > &hashList, const EventContext &ctx) const override
Covert the Strip RDOs to the test vector format as requited by FPGA EF tracking alogrithms.
Definition: FPGADataFormatTool.cxx:39
FPGADataFormatUtilities::fill_GTRACK_HDR_w3
GTRACK_HDR_w3 fill_GTRACK_HDR_w3(const double &qoverpt, const double &phi, const double &eta, const uint64_t &spare)
Definition: FPGADataFormatUtilities.h:835
FPGADataFormatTool::fillFooter
StatusCode fillFooter(std::vector< uint64_t > &encodedData) const
Definition: FPGADataFormatTool.cxx:372
InDetDD::SiDetectorManager::getDetectorElement
virtual const SiDetectorElement * getDetectorElement(const Identifier &id) const =0
access to individual elements using Identifier or IdentiferHash
PixelID::phi_index
int phi_index(const Identifier &id) const
Definition: PixelID.h:654
FPGADataFormatTool::fillHeader
StatusCode fillHeader(std::vector< uint64_t > &encodedData) const
Definition: FPGADataFormatTool.cxx:355
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
FPGADataFormatUtilities::get_dataformat_EVT_HDR_w3
uint64_t get_dataformat_EVT_HDR_w3(const EVT_HDR_w3 &in)
Definition: FPGADataFormatUtilities.h:113
FPGADataFormatUtilities::get_dataformat_EVT_FTR_w2
uint64_t get_dataformat_EVT_FTR_w2(const EVT_FTR_w2 &in)
Definition: FPGADataFormatUtilities.h:249
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
FPGATrackSimTrack
Definition: FPGATrackSimTrack.h:18
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
FPGADataFormatUtilities::EVT_HDR_FLAG
const int EVT_HDR_FLAG
Definition: FPGADataFormatUtilities.h:20
FPGADataFormatTool::convertFPGATracks
StatusCode convertFPGATracks(const FPGATrackSimTrackCollection *tracks, std::vector< uint64_t > &encodedData, const EventContext &ctx) const
Definition: FPGADataFormatTool.cxx:77
FPGADataFormatUtilities::fill_GTRACK_HDR_w1
GTRACK_HDR_w1 fill_GTRACK_HDR_w1(const uint64_t &flag, const uint64_t &type, const uint64_t &eta_region, const uint64_t &phi_region, const uint64_t &phi_bin, const uint64_t &z_bin, const uint64_t &second_stage, const uint64_t &layer_bitmask)
Definition: FPGADataFormatUtilities.h:813
FPGADataFormatTool::initialize
virtual StatusCode initialize() override
Definition: FPGADataFormatTool.cxx:9
FPGADataFormatUtilities::fill_STRIP_EF_RDO
STRIP_EF_RDO fill_STRIP_EF_RDO(const uint64_t &last, const uint64_t &chipid, const uint64_t &strip_num, const uint64_t &cluster_map, const uint64_t &spare)
Definition: FPGADataFormatUtilities.h:2309
Identifier::get_identifier32
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
FPGADataFormatUtilities::get_dataformat_M_HDR_w1
uint64_t get_dataformat_M_HDR_w1(const M_HDR_w1 &in)
Definition: FPGADataFormatUtilities.h:343
SCT_RDORawData
Definition: SCT_RDORawData.h:24
SCT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: SCT_ID.h:728
FPGADataFormatTool::m_PIX_mgr
const InDetDD::SiDetectorManager * m_PIX_mgr
Definition: FPGADataFormatTool.h:55
FPGADataFormatUtilities::fill_GTRACK_HDR_w2
GTRACK_HDR_w2 fill_GTRACK_HDR_w2(const double &score, const double &d0, const double &z0, const uint64_t &spare)
Definition: FPGADataFormatUtilities.h:826
InDetRawDataContainer
Definition: InDetRawDataContainer.h:27
FPGADataFormatTool::convertPixelHitsToFPGADataFormat
virtual StatusCode convertPixelHitsToFPGADataFormat(const PixelRDO_Container &pixelRDO, std::vector< uint64_t > &encodedData, const std::vector< IdentifierHash > &hashList, const EventContext &ctx) const override
Covert the Pixel RDOs to the test vector format as requited by FPGA EF tracking alogrithms.
Definition: FPGADataFormatTool.cxx:20
FPGADataFormatUtilities::fill_EVT_HDR_w2
EVT_HDR_w2 fill_EVT_HDR_w2(const uint64_t &runnumber, const uint64_t &time)
Definition: FPGADataFormatUtilities.h:129
FPGADataFormatUtilities::get_dataformat_GHITZ_w2
uint64_t get_dataformat_GHITZ_w2(const GHITZ_w2 &in)
Definition: FPGADataFormatUtilities.h:1187
FPGADataFormatUtilities::fill_EVT_FTR_w3
EVT_FTR_w3 fill_EVT_FTR_w3(const uint64_t &word_count, const uint64_t &crc)
Definition: FPGADataFormatUtilities.h:276
Identifier32::get_compact
value_type get_compact() const
Get the compact id.
Definition: Identifier32.h:44
InDetDD::SolidStateDetectorElementBase::identifyHash
virtual IdentifierHash identifyHash() const override final
identifier hash (inline)
FPGADataFormatTool::convertStripRDO
StatusCode convertStripRDO(const SCT_RDO_Container &stripRDO, std::vector< uint64_t > &encodedData, const std::vector< IdentifierHash > &hashList, const EventContext &ctx) const
Definition: FPGADataFormatTool.cxx:223
FPGADataFormatTool::convertFPGATracksToFPGADataFormat
virtual StatusCode convertFPGATracksToFPGADataFormat(const FPGATrackSimTrackCollection *tracks, std::vector< uint64_t > &encodedData, const EventContext &ctx) const override
Definition: FPGADataFormatTool.cxx:59
FPGADataFormatUtilities::fill_EVT_HDR_w1
EVT_HDR_w1 fill_EVT_HDR_w1(const uint64_t &flag, const uint64_t &l0id, const uint64_t &bcid, const uint64_t &spare)
Definition: FPGADataFormatUtilities.h:120
FPGADataFormatUtilities::M_HDR_FLAG
const int M_HDR_FLAG
Definition: FPGADataFormatUtilities.h:308
FPGADataFormatUtilities::get_dataformat_PIXEL_EF_RDO
uint64_t get_dataformat_PIXEL_EF_RDO(const PIXEL_EF_RDO &in)
Definition: FPGADataFormatUtilities.h:2201
FPGADataFormatUtilities::fill_GHITZ_w1
GHITZ_w1 fill_GHITZ_w1(const uint64_t &last, const uint64_t &lyr, const double &rad, const double &phi, const double &z, const uint64_t &lastofslice, const uint64_t &spare)
Definition: FPGADataFormatUtilities.h:1196
FPGADataFormatUtilities::get_dataformat_EVT_HDR_w2
uint64_t get_dataformat_EVT_HDR_w2(const EVT_HDR_w2 &in)
Definition: FPGADataFormatUtilities.h:106
FPGADataFormatUtilities::get_dataformat_EVT_FTR_w3
uint64_t get_dataformat_EVT_FTR_w3(const EVT_FTR_w3 &in)
Definition: FPGADataFormatUtilities.h:255
FPGADataFormatUtilities::EVT_FTR_FLAG
const int EVT_FTR_FLAG
Definition: FPGADataFormatUtilities.h:176
lumiFormat.i
int i
Definition: lumiFormat.py:85
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
generateReferenceFile.encoding
encoding
Definition: generateReferenceFile.py:15
FPGADataFormatUtilities::get_dataformat_STRIP_EF_RDO
uint64_t get_dataformat_STRIP_EF_RDO(const STRIP_EF_RDO &in)
Definition: FPGADataFormatUtilities.h:2294
InDetRawDataCollection
Definition: InDetRawDataCollection.h:31
FPGADataFormatTool::fillModuleHeader
StatusCode fillModuleHeader(const InDetDD::SiDetectorElement *sielement, std::vector< uint64_t > &encodedData) const
Definition: FPGADataFormatTool.cxx:389
PixelID::eta_index
int eta_index(const Identifier &id) const
Definition: PixelID.h:660
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
FPGADataFormatUtilities::fill_EVT_HDR_w3
EVT_HDR_w3 fill_EVT_HDR_w3(const uint64_t &status, const uint64_t &crc)
Definition: FPGADataFormatUtilities.h:136
FPGADataFormatUtilities::get_dataformat_GHITZ_w1
uint64_t get_dataformat_GHITZ_w1(const GHITZ_w1 &in)
Definition: FPGADataFormatUtilities.h:1175
FPGADataFormatUtilities.h
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
FPGADataFormatTool::m_pixelId
const PixelID * m_pixelId
Definition: FPGADataFormatTool.h:52
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
FPGADataFormatTool::m_sctId
const SCT_ID * m_sctId
Definition: FPGADataFormatTool.h:53
IdentifierHash::value
value_type value() const
FPGATrackSimTrackCollection
std::vector< FPGATrackSimTrack > FPGATrackSimTrackCollection
Definition: FPGATrackSimTrackCollection.h:13
FPGADataFormatUtilities::get_dataformat_EVT_FTR_w1
uint64_t get_dataformat_EVT_FTR_w1(const EVT_FTR_w1 &in)
Definition: FPGADataFormatUtilities.h:241
FPGADataFormatUtilities::fill_PIXEL_EF_RDO
PIXEL_EF_RDO fill_PIXEL_EF_RDO(const uint64_t &last, const uint64_t &row, const uint64_t &col, const uint64_t &tot, const uint64_t &lvl1, const uint64_t &spare)
Definition: FPGADataFormatUtilities.h:2212
FPGADataFormatTool.h
FPGADataFormatUtilities::get_dataformat_GTRACK_HDR_w1
uint64_t get_dataformat_GTRACK_HDR_w1(const GTRACK_HDR_w1 &in)
Definition: FPGADataFormatUtilities.h:782
SCT_ID::strip
int strip(const Identifier &id) const
Definition: SCT_ID.h:764
SCT_ID::eta_module
int eta_module(const Identifier &id) const
Definition: SCT_ID.h:746
convertTimingResiduals.offset
offset
Definition: convertTimingResiduals.py:71
PixelRDORawData
Definition: PixelRDORawData.h:23
FPGADataFormatTool::convertPixelRDO
StatusCode convertPixelRDO(const PixelRDO_Container &pixelRDO, std::vector< uint64_t > &encodedData, const std::vector< IdentifierHash > &hashList, const EventContext &ctx) const
Definition: FPGADataFormatTool.cxx:169
InDetRawData::identify
virtual Identifier identify() const override final
Definition: InDetRawData.h:41
FPGADataFormatTool::m_SCT_mgr
const InDetDD::SiDetectorManager * m_SCT_mgr
Definition: FPGADataFormatTool.h:56
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
FPGADataFormatUtilities::fill_EVT_FTR_w2
EVT_FTR_w2 fill_EVT_FTR_w2(const uint64_t &error_flags)
Definition: FPGADataFormatUtilities.h:270
FPGADataFormatUtilities::fill_EVT_FTR_w1
EVT_FTR_w1 fill_EVT_FTR_w1(const uint64_t &flag, const uint64_t &spare, const uint64_t &hdr_crc)
Definition: FPGADataFormatUtilities.h:262
FPGADataFormatUtilities::get_dataformat_EVT_HDR_w1
uint64_t get_dataformat_EVT_HDR_w1(const EVT_HDR_w1 &in)
Definition: FPGADataFormatUtilities.h:97
FPGADataFormatUtilities::get_dataformat_GTRACK_HDR_w2
uint64_t get_dataformat_GTRACK_HDR_w2(const GTRACK_HDR_w2 &in)
Definition: FPGADataFormatUtilities.h:795
InDetDD::SolidStateDetectorElementBase::identify
virtual Identifier identify() const override final
identifier of this detector element (inline)
FPGADataFormatUtilities::get_dataformat_GTRACK_HDR_w3
uint64_t get_dataformat_GTRACK_HDR_w3(const GTRACK_HDR_w3 &in)
Definition: FPGADataFormatUtilities.h:804
FPGADataFormatUtilities::fill_GHITZ_w2
GHITZ_w2 fill_GHITZ_w2(const uint64_t &cluster1, const uint64_t &cluster2, const uint64_t &row, const uint64_t &spare)
Definition: FPGADataFormatUtilities.h:1208
FPGADataFormatUtilities::fill_M_HDR_w1
M_HDR_w1 fill_M_HDR_w1(const uint64_t &flag, const uint64_t &modid, const uint64_t &modhash, const uint64_t &spare)
Definition: FPGADataFormatUtilities.h:352
Identifier
Definition: IdentifierFieldParser.cxx:14