Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | List of all members
OutputConversionTool Class Reference

#include <OutputConversionTool.h>

Inheritance diagram for OutputConversionTool:
Collaboration diagram for OutputConversionTool:

Public Member Functions

StatusCode initialize () override
 
StatusCode decodePixelEDM (const std::vector< uint64_t > &bytestream, EFTrackingTransient::Metadata *metadata, EFTrackingTransient::PixelClusterAuxInput &pcAux) const
 
StatusCode decodeStripEDM (const std::vector< uint64_t > &bytestream, EFTrackingTransient::Metadata *metadata, EFTrackingTransient::StripClusterAuxInput &scAux) const
 
StatusCode decodeSpacePoints (const std::vector< uint64_t > &bytestream, EFTrackingTransient::Metadata *metadata) const
 
StatusCode decodeFPGAoutput (const std::vector< uint64_t > &bytestream, EFTrackingTransient::Metadata *metadata, EFTrackingTransient::PixelClusterAuxInput *pcAux=nullptr, EFTrackingTransient::StripClusterAuxInput *scAux=nullptr, OutputConversion::FSM blockType=OutputConversion::FSM::Unknown) const
 Decode the FPGA output based on the type. More...
 

Detailed Description

Definition at line 33 of file OutputConversionTool.h.

Member Function Documentation

◆ decodeFPGAoutput()

StatusCode OutputConversionTool::decodeFPGAoutput ( const std::vector< uint64_t > &  bytestream,
EFTrackingTransient::Metadata metadata,
EFTrackingTransient::PixelClusterAuxInput pcAux = nullptr,
EFTrackingTransient::StripClusterAuxInput scAux = nullptr,
OutputConversion::FSM  blockType = OutputConversion::FSM::Unknown 
) const

Decode the FPGA output based on the type.

user shouldn't call this function directly They should call the following user-level functions

Definition at line 19 of file OutputConversionTool.cxx.

24 {
25  using namespace FPGADataFormatUtilities;
26  // define the FSM
28 
29  std::vector<uint64_t> header_words;
30  std::vector<uint64_t> footer_words;
31  std::vector<uint64_t> ghits_words;
32  std::vector<uint64_t> pixel_edm_words;
33  std::vector<uint64_t> strip_edm_words;
34 
35  unsigned int counter = 0;
36 
37  // Loop the bytestream
38  for (const auto &word : bytestream)
39  {
40  ATH_MSG_DEBUG("word: " << std::hex << word << std::dec);
41  switch (state)
42  {
44  {
45  if (get_bitfields_EVT_HDR_w1(word).flag != EVT_HDR_FLAG && header_words.empty())
46  {
47  ATH_MSG_ERROR("The first word is not the event hearder! Something is wrong");
49  break;
50  }
51 
52  header_words.push_back(word);
53  if (header_words.size() == 3)
54  {
55  EVT_HDR_w1 header_w1 = get_bitfields_EVT_HDR_w1(header_words[0]);
56  EVT_HDR_w2 header_w2 = get_bitfields_EVT_HDR_w2(header_words[1]);
57  EVT_HDR_w3 header_w3 = get_bitfields_EVT_HDR_w3(header_words[2]);
58 
59  // The data format has be evloing. The logic here can change dramatically
60  // The block after the event header can be one of the following: Slice, Module, Road, Track, cluster EDM
61  // For now, we only consider the cluster EDM
62  switch (blockType)
63  {
65  {
67  if(pcAux == nullptr)
68  {
69  ATH_MSG_ERROR("The PixelClusterAuxInput is not provided to decode function! Something is wrong");
71  break;
72  }
73  break;
74  }
76  {
78  if(scAux == nullptr)
79  {
80  ATH_MSG_ERROR("The StripClusterAuxInput is not provided to decode function! Something is wrong");
82  break;
83  }
84  break;
85  }
86  default:
87  {
88  ATH_MSG_ERROR("The blockType is not recognized! Something is wrong");
90  break;
91  }
92  }
93 
94  // print all bit fileds of the the event header
95  if (msgLvl(MSG::DEBUG))
96  {
97  ATH_MSG_DEBUG("Event Header: ");
98  ATH_MSG_DEBUG("\tflag: 0x" << std::hex << header_w1.flag << std::dec);
99  ATH_MSG_DEBUG("\tl0id: " << header_w1.l0id);
100  ATH_MSG_DEBUG("\tbcid: " << header_w1.bcid);
101  ATH_MSG_DEBUG("\tspare: " << header_w1.spare);
102  ATH_MSG_DEBUG("\trunnumber: " << header_w2.runnumber);
103  ATH_MSG_DEBUG("\ttime: " << header_w2.time);
104  ATH_MSG_DEBUG("\tstatus: " << header_w3.status);
105  ATH_MSG_DEBUG("\tcrc: " << header_w3.crc);
106  }
107  break;
108  }
109  break;
110  }
112  {
113  // Determine if this is a module header or event footer
115  {
116  auto module = get_bitfields_M_HDR_w1(word);
117  // decode the module header
118  // print all bit fileds of the the module header
119  if (msgLvl(MSG::DEBUG))
120  {
121  ATH_MSG_DEBUG("Module Header: ");
122  ATH_MSG_DEBUG("\tflag: 0x" << std::hex << module.flag << std::dec);
123  ATH_MSG_DEBUG("\tmodid: " << module.modid);
124  ATH_MSG_DEBUG("\tmodhash: " << module.modhash);
125  ATH_MSG_DEBUG("\tspare: " << module.spare);
126  }
127 
128  // The following block is determined by the actual content
129  // Right now only the spacepoints are considered. This will likely change in future iteration.
130  switch (blockType)
131  {
133  {
135  break;
136  }
137  default:
138  {
139  ATH_MSG_ERROR("The blockType is not recognized! Something is wrong");
141  break;
142  }
143  }
144  }
145  else if (get_bitfields_EVT_FTR_w1(word).flag == EVT_FTR_FLAG)
146  {
148  footer_words.push_back(word);
149  break;
150  }
151  else
152  {
153  ATH_MSG_ERROR("The word after the last cluster is not a module header or event footer! Something is wrong");
155  break;
156  }
157  break;
158  }
160  {
161  ghits_words.push_back(word);
162  if (ghits_words.size() == 2)
163  {
164  // Global hits will be decoded in future iterations
165 
166  auto GHit_w1 = get_bitfields_GHITZ_w1(ghits_words[0]);
167  // auto GHit_w2 = get_bitfields_GHITZ_w2(ghits_words[1]);
168 
169  // clear the ghits_words
170  ghits_words.clear();
171 
172  // Determine if this is the last
173  if (GHit_w1.last == 1)
174  {
176  break;
177  }
178  break;
179  }
180  break;
181  }
183  {
184  pixel_edm_words.push_back(word);
185  // Read in 10 consecutive words
186  if (pixel_edm_words.size() == 10)
187  {
188  // decode the pixel EDM
189  // For pixel EDM aux, we need
190  // id, idHash, localPosition, localCovariance, rdoList
191  // channelsInPhi, channelsInEta, width in Eta
192  // omegaX, omegaY, global position
193  // totalToT
194  pcAux->idHash.push_back(get_bitfields_EDM_PIXELCLUSTER_w1(pixel_edm_words[0]).id_hash);
195  pcAux->id.push_back(get_bitfields_EDM_PIXELCLUSTER_w2(pixel_edm_words[1]).identifier);
196  pcAux->localPosition.push_back(to_real_EDM_PIXELCLUSTER_w7_localposition_x(get_bitfields_EDM_PIXELCLUSTER_w7(pixel_edm_words[6]).localposition_x));
197  pcAux->localPosition.push_back(to_real_EDM_PIXELCLUSTER_w7_localposition_y(get_bitfields_EDM_PIXELCLUSTER_w7(pixel_edm_words[6]).localposition_y));
198  pcAux->channelsInPhi.push_back(get_bitfields_EDM_PIXELCLUSTER_w7(pixel_edm_words[6]).channels_in_phi);
199  pcAux->channelsInEta.push_back(get_bitfields_EDM_PIXELCLUSTER_w7(pixel_edm_words[6]).channels_in_eta);
200  pcAux->widthInEta.push_back(to_real_EDM_PIXELCLUSTER_w7_width_in_eta(get_bitfields_EDM_PIXELCLUSTER_w7(pixel_edm_words[6]).width_in_eta));
201  pcAux->localCovariance.push_back(to_real_EDM_PIXELCLUSTER_w8_localcovariance_xx(get_bitfields_EDM_PIXELCLUSTER_w8(pixel_edm_words[7]).localcovariance_xx));
202  pcAux->localCovariance.push_back(to_real_EDM_PIXELCLUSTER_w8_localcovariance_yy(get_bitfields_EDM_PIXELCLUSTER_w8(pixel_edm_words[7]).localcovariance_yy));
203  pcAux->omegaX.push_back(to_real_EDM_PIXELCLUSTER_w8_omega_x(get_bitfields_EDM_PIXELCLUSTER_w8(pixel_edm_words[7]).omega_x));
204  pcAux->omegaY.push_back(to_real_EDM_PIXELCLUSTER_w8_omega_y(get_bitfields_EDM_PIXELCLUSTER_w8(pixel_edm_words[7]).omega_y));
205  pcAux->globalPosition.push_back(to_real_EDM_PIXELCLUSTER_w9_globalposition_x(get_bitfields_EDM_PIXELCLUSTER_w9(pixel_edm_words[8]).globalposition_x));
206  pcAux->globalPosition.push_back(to_real_EDM_PIXELCLUSTER_w9_globalposition_y(get_bitfields_EDM_PIXELCLUSTER_w9(pixel_edm_words[8]).globalposition_y));
207  pcAux->globalPosition.push_back(to_real_EDM_PIXELCLUSTER_w10_globalposition_z(get_bitfields_EDM_PIXELCLUSTER_w10(pixel_edm_words[9]).globalposition_z));
208  pcAux->totalToT.push_back(get_bitfields_EDM_PIXELCLUSTER_w10(pixel_edm_words[9]).total_tot);
209 
210  // check if the rdo list word is empty, there are only 4 words in the pixel EDM
211  auto rdo_w1 = get_bitfields_EDM_PIXELCLUSTER_w3(pixel_edm_words[2]).rdo_list_w1;
212  auto rdo_w2 = get_bitfields_EDM_PIXELCLUSTER_w4(pixel_edm_words[3]).rdo_list_w2;
213  auto rdo_w3 = get_bitfields_EDM_PIXELCLUSTER_w5(pixel_edm_words[4]).rdo_list_w3;
214  auto rdo_w4 = get_bitfields_EDM_PIXELCLUSTER_w6(pixel_edm_words[5]).rdo_list_w4;
215 
216  unsigned short current_rdo_size = 0;
217  if (rdo_w1 != 0)
218  {
219  pcAux->rdoList.push_back(rdo_w1);
220  current_rdo_size++;
221  }
222  if (rdo_w2 != 0)
223  {
224  pcAux->rdoList.push_back(rdo_w2);
225  current_rdo_size++;
226  }
227  if (rdo_w3 != 0)
228  {
229  pcAux->rdoList.push_back(rdo_w3);
230  current_rdo_size++;
231  }
232  if (rdo_w4 != 0)
233  {
234  pcAux->rdoList.push_back(rdo_w4);
235  current_rdo_size++;
236  }
237 
238  metadata->pcRdoIndex[counter] = current_rdo_size;
239  counter++;
240 
241  // Determine if this is the last cluster
242  if (get_bitfields_EDM_PIXELCLUSTER_w10(pixel_edm_words[9]).lastword == 1)
243  {
244  metadata->pcRdoIndexSize = counter;
245  metadata->numOfPixelClusters = counter;
247  }
248  pixel_edm_words.clear();
249 
250  // print all bit fileds of the the pixel EDM
251  if (msgLvl(MSG::DEBUG))
252  {
253  ATH_MSG_DEBUG("Pixel EDM: ");
254  ATH_MSG_DEBUG("\tid: " << pcAux->id.back());
255  ATH_MSG_DEBUG("\tidHash: " << pcAux->idHash.back());
256  ATH_MSG_DEBUG("\tlocalPosition_x: " << pcAux->localPosition.at(pcAux->localPosition.size() - 2));
257  ATH_MSG_DEBUG("\tlocalPosition_y: " << pcAux->localPosition.back());
258  ATH_MSG_DEBUG("\tlocalCovariance_xx: " << pcAux->localCovariance.at(pcAux->localCovariance.size() - 2));
259  ATH_MSG_DEBUG("\tlocalCovariance_yy: " << pcAux->localCovariance.back());
260  ATH_MSG_DEBUG("\tglobalPosition_x: " << pcAux->globalPosition.at(pcAux->globalPosition.size() - 3));
261  ATH_MSG_DEBUG("\tglobalPosition_y: " << pcAux->globalPosition.at(pcAux->globalPosition.size() - 2));
262  ATH_MSG_DEBUG("\tglobalPosition_z: " << pcAux->globalPosition.back());
263  ATH_MSG_DEBUG("\tchannelsInPhi: " << pcAux->channelsInPhi.back());
264  ATH_MSG_DEBUG("\tchannelsInEta: " << pcAux->channelsInEta.back());
265  ATH_MSG_DEBUG("\twidthInEta: " << pcAux->widthInEta.back());
266  ATH_MSG_DEBUG("\tomegaX: " << pcAux->omegaX.back());
267  ATH_MSG_DEBUG("\tomegaY: " << pcAux->omegaY.back());
268  ATH_MSG_DEBUG("\ttotalToT: " << pcAux->totalToT.back());
269  }
270  break;
271  }
272 
273  break;
274  }
276  {
277  strip_edm_words.push_back(word);
278  // Read in 9 consecutive words
279  if (strip_edm_words.size() == 9 and scAux)
280  {
281  scAux->idHash.push_back(get_bitfields_EDM_STRIPCLUSTER_w1(strip_edm_words[0]).id_hash);
282  scAux->id.push_back(get_bitfields_EDM_STRIPCLUSTER_w2(strip_edm_words[1]).identifier);
283  scAux->localPosition.push_back(to_real_EDM_STRIPCLUSTER_w7_localposition_x(get_bitfields_EDM_STRIPCLUSTER_w7(strip_edm_words[6]).localposition_x));
284  scAux->localCovariance.push_back(to_real_EDM_STRIPCLUSTER_w7_localcovariance_xx(get_bitfields_EDM_STRIPCLUSTER_w7(strip_edm_words[6]).localcovariance_xx));
285  scAux->globalPosition.push_back(to_real_EDM_STRIPCLUSTER_w8_globalposition_x(get_bitfields_EDM_STRIPCLUSTER_w8(strip_edm_words[7]).globalposition_x));
286  scAux->globalPosition.push_back(to_real_EDM_STRIPCLUSTER_w8_globalposition_y(get_bitfields_EDM_STRIPCLUSTER_w8(strip_edm_words[7]).globalposition_y));
287  scAux->globalPosition.push_back(to_real_EDM_STRIPCLUSTER_w9_globalposition_z(get_bitfields_EDM_STRIPCLUSTER_w9(strip_edm_words[8]).globalposition_z));
288  scAux->channelsInPhi.push_back(get_bitfields_EDM_STRIPCLUSTER_w8(strip_edm_words[7]).channels_in_phi);
289  // check if the rdo list word is empty, there are only 4 words in the strip EDM
290  auto rdo_w1 = get_bitfields_EDM_STRIPCLUSTER_w3(strip_edm_words[2]).rdo_list_w1;
291  auto rdo_w2 = get_bitfields_EDM_STRIPCLUSTER_w4(strip_edm_words[3]).rdo_list_w2;
292  auto rdo_w3 = get_bitfields_EDM_STRIPCLUSTER_w5(strip_edm_words[4]).rdo_list_w3;
293  auto rdo_w4 = get_bitfields_EDM_STRIPCLUSTER_w6(strip_edm_words[5]).rdo_list_w4;
294 
295  unsigned short current_rdo_size = 0;
296  if (rdo_w1 != 0)
297  {
298  scAux->rdoList.push_back(rdo_w1);
299  current_rdo_size++;
300  }
301  if (rdo_w2 != 0)
302  {
303  scAux->rdoList.push_back(rdo_w2);
304  current_rdo_size++;
305  }
306  if (rdo_w3 != 0)
307  {
308  scAux->rdoList.push_back(rdo_w3);
309  current_rdo_size++;
310  }
311  if (rdo_w4 != 0)
312  {
313  scAux->rdoList.push_back(rdo_w4);
314  current_rdo_size++;
315  }
316 
317  metadata->scRdoIndex[counter] = current_rdo_size;
318  counter++;
319 
320  // Determine if this is the last cluster
321  if (get_bitfields_EDM_STRIPCLUSTER_w9(strip_edm_words[8]).lastword == 1)
322  {
323  metadata->scRdoIndexSize = counter;
324  metadata->numOfStripClusters = counter;
326  }
327  strip_edm_words.clear();
328 
329  // print all bit fileds of the the strip EDM
330  if (msgLvl(MSG::DEBUG))
331  {
332  ATH_MSG_DEBUG("Strip EDM: ");
333  ATH_MSG_DEBUG("\tidHash: " << scAux->idHash.back());
334  ATH_MSG_DEBUG("\tid: " << scAux->id.back());
335  ATH_MSG_DEBUG("\tlocalPosition_x: " << scAux->localPosition.back());
336  ATH_MSG_DEBUG("\tlocalCovariance_xx: " << scAux->localCovariance.back());
337  ATH_MSG_DEBUG("\tglobalPosition_x: " << scAux->globalPosition.at(scAux->globalPosition.size() - 3));
338  ATH_MSG_DEBUG("\tglobalPosition_y: " << scAux->globalPosition.at(scAux->globalPosition.size() - 2));
339  ATH_MSG_DEBUG("\tglobalPosition_z: " << scAux->globalPosition.back());
340  ATH_MSG_DEBUG("\tchannelsInPhi: " << scAux->channelsInPhi.back());
341  ATH_MSG_DEBUG("\trdoList: ");
342  }
343  break;
344  }
345  break;
346  }
348  {
349  footer_words.push_back(word);
350  if (footer_words.size() == 3)
351  {
352  // decode the event footer
353  EVT_FTR_w1 footer_w1 = get_bitfields_EVT_FTR_w1(footer_words[0]);
354  EVT_FTR_w2 footer_w2 = get_bitfields_EVT_FTR_w2(footer_words[1]);
355  EVT_FTR_w3 footer_w3 = get_bitfields_EVT_FTR_w3(footer_words[2]);
356 
357  // print all bit fileds of the the event footer
358  ATH_MSG_DEBUG("Event Footer: ");
359  ATH_MSG_DEBUG("\tflag: 0x" << std::hex << footer_w1.flag << std::dec);
360  ATH_MSG_DEBUG("\tspare: " << footer_w1.spare);
361  ATH_MSG_DEBUG("\thdr_crc: " << footer_w1.hdr_crc);
362  ATH_MSG_DEBUG("\terror_flags: " << footer_w2.error_flags);
363  ATH_MSG_DEBUG("\tword_count: " << footer_w3.word_count);
364  ATH_MSG_DEBUG("\tcrc: " << footer_w3.crc);
365 
366  // clear header and footer words
367  header_words.clear();
368  footer_words.clear();
369  counter = 0;
370 
371  // reset the state to EventHeader
372  // Caveat: this enables continue decoding the next event if TV contains multiple events
374  break;
375  }
376  break;
377  }
379  {
380  ATH_MSG_ERROR("FSM is in an error state! Something is wrong");
381  break;
382  }
383  default:
384  ATH_MSG_ERROR("FSM is not in a valid state! Something is wrong");
385  break;
386  }
387  }
388 
389  return StatusCode::SUCCESS;
390 }

◆ decodePixelEDM()

StatusCode OutputConversionTool::decodePixelEDM ( const std::vector< uint64_t > &  bytestream,
EFTrackingTransient::Metadata metadata,
EFTrackingTransient::PixelClusterAuxInput pcAux 
) const

Definition at line 392 of file OutputConversionTool.cxx.

395 {
396  ATH_MSG_DEBUG("Decoding pixel EDM");
397  return decodeFPGAoutput(bytestream, metadata, &pcAux, nullptr, OutputConversion::FSM::PixelEDM);
398 }

◆ decodeSpacePoints()

StatusCode OutputConversionTool::decodeSpacePoints ( const std::vector< uint64_t > &  bytestream,
EFTrackingTransient::Metadata metadata 
) const

Definition at line 408 of file OutputConversionTool.cxx.

410 {
411  ATH_MSG_DEBUG("Decoding space points");
412  return decodeFPGAoutput(bytestream, metadata, nullptr, nullptr, OutputConversion::FSM::GlobalHits);
413 }

◆ decodeStripEDM()

StatusCode OutputConversionTool::decodeStripEDM ( const std::vector< uint64_t > &  bytestream,
EFTrackingTransient::Metadata metadata,
EFTrackingTransient::StripClusterAuxInput scAux 
) const

Definition at line 400 of file OutputConversionTool.cxx.

403 {
404  ATH_MSG_DEBUG("Decoding strip EDM");
405  return decodeFPGAoutput(bytestream, metadata, nullptr, &scAux, OutputConversion::FSM::StripEDM);
406 }

◆ initialize()

StatusCode OutputConversionTool::initialize ( )
override

Definition at line 13 of file OutputConversionTool.cxx.

14 {
15  ATH_MSG_INFO("Initializing OutputConversionTool tool");
16  return StatusCode::SUCCESS;
17 }

The documentation for this class was generated from the following files:
FPGADataFormatUtilities::to_real_EDM_PIXELCLUSTER_w8_omega_y
double to_real_EDM_PIXELCLUSTER_w8_omega_y(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:2167
EFTrackingTransient::PixelClusterAuxInput::localPosition
std::vector< float > localPosition
Definition: EFTrackingTransient.h:225
FPGADataFormatUtilities::to_real_EDM_PIXELCLUSTER_w7_localposition_y
double to_real_EDM_PIXELCLUSTER_w7_localposition_y(const int64_t &in)
Definition: FPGADataFormatUtilities.h:2135
FPGADataFormatUtilities::to_real_EDM_PIXELCLUSTER_w10_globalposition_z
double to_real_EDM_PIXELCLUSTER_w10_globalposition_z(const int64_t &in)
Definition: FPGADataFormatUtilities.h:2187
FPGADataFormatUtilities::EVT_FTR_w1
Definition: FPGADataFormatUtilities.h:204
EFTrackingTransient::PixelClusterAuxInput::channelsInEta
std::vector< int > channelsInEta
Definition: EFTrackingTransient.h:230
FPGADataFormatUtilities::EDM_PIXELCLUSTER_w3::rdo_list_w1
uint64_t rdo_list_w1
Definition: FPGADataFormatUtilities.h:1826
FPGADataFormatUtilities::EVT_HDR_w1::l0id
uint64_t l0id
Definition: FPGADataFormatUtilities.h:58
FPGADataFormatUtilities::get_bitfields_EDM_STRIPCLUSTER_w1
EDM_STRIPCLUSTER_w1 get_bitfields_EDM_STRIPCLUSTER_w1(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1423
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
FPGADataFormatUtilities::get_bitfields_EDM_STRIPCLUSTER_w7
EDM_STRIPCLUSTER_w7 get_bitfields_EDM_STRIPCLUSTER_w7(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1461
FPGADataFormatUtilities::EVT_HDR_w3
Definition: FPGADataFormatUtilities.h:68
FPGADataFormatUtilities::to_real_EDM_STRIPCLUSTER_w7_localcovariance_xx
double to_real_EDM_STRIPCLUSTER_w7_localcovariance_xx(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1658
OutputConversion::FSM::EventFooter
@ EventFooter
FPGADataFormatUtilities::EVT_HDR_w2::runnumber
uint64_t runnumber
Definition: FPGADataFormatUtilities.h:64
FPGADataFormatUtilities::EVT_HDR_FLAG
const int EVT_HDR_FLAG
Definition: FPGADataFormatUtilities.h:19
OutputConversion::FSM::GlobalHits
@ GlobalHits
FPGADataFormatUtilities::get_bitfields_EDM_PIXELCLUSTER_w2
EDM_PIXELCLUSTER_w2 get_bitfields_EDM_PIXELCLUSTER_w2(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1879
FPGADataFormatUtilities::EVT_HDR_w2::time
uint64_t time
Definition: FPGADataFormatUtilities.h:65
FPGADataFormatUtilities::get_bitfields_EVT_FTR_w2
EVT_FTR_w2 get_bitfields_EVT_FTR_w2(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:227
L1Topo::blockType
L1Topo::BlockTypes blockType(const uint32_t word, uint32_t offset=28, uint32_t size=0x0f)
Function to return the block type of a data word from L1Topo
Definition: BlockTypes.cxx:9
FPGADataFormatUtilities::EDM_STRIPCLUSTER_w5::rdo_list_w3
uint64_t rdo_list_w3
Definition: FPGADataFormatUtilities.h:1395
FPGADataFormatUtilities::get_bitfields_EVT_HDR_w3
EVT_HDR_w3 get_bitfields_EVT_HDR_w3(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:89
FPGADataFormatUtilities::to_real_EDM_STRIPCLUSTER_w8_globalposition_y
double to_real_EDM_STRIPCLUSTER_w8_globalposition_y(const int64_t &in)
Definition: FPGADataFormatUtilities.h:1670
FPGADataFormatUtilities::EVT_HDR_w1
Definition: FPGADataFormatUtilities.h:56
FPGADataFormatUtilities::to_real_EDM_PIXELCLUSTER_w9_globalposition_x
double to_real_EDM_PIXELCLUSTER_w9_globalposition_x(const int64_t &in)
Definition: FPGADataFormatUtilities.h:2175
xAOD::identifier
identifier
Definition: UncalibratedMeasurement_v1.cxx:15
FPGADataFormatUtilities::get_bitfields_EVT_FTR_w1
EVT_FTR_w1 get_bitfields_EVT_FTR_w1(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:219
OutputConversion::FSM::Unknown
@ Unknown
FPGADataFormatUtilities::to_real_EDM_STRIPCLUSTER_w7_localposition_x
double to_real_EDM_STRIPCLUSTER_w7_localposition_x(const int64_t &in)
Definition: FPGADataFormatUtilities.h:1650
FPGADataFormatUtilities::EDM_STRIPCLUSTER_w3::rdo_list_w1
uint64_t rdo_list_w1
Definition: FPGADataFormatUtilities.h:1387
FPGADataFormatUtilities::get_bitfields_EDM_PIXELCLUSTER_w4
EDM_PIXELCLUSTER_w4 get_bitfields_EDM_PIXELCLUSTER_w4(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1891
FPGADataFormatUtilities::get_bitfields_EDM_STRIPCLUSTER_w3
EDM_STRIPCLUSTER_w3 get_bitfields_EDM_STRIPCLUSTER_w3(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1437
FPGADataFormatUtilities::get_bitfields_EDM_PIXELCLUSTER_w3
EDM_PIXELCLUSTER_w3 get_bitfields_EDM_PIXELCLUSTER_w3(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1885
python.checkMetadata.metadata
metadata
Definition: checkMetadata.py:175
FPGADataFormatUtilities::M_HDR_FLAG
const int M_HDR_FLAG
Definition: FPGADataFormatUtilities.h:307
FPGADataFormatUtilities::EVT_HDR_w1::bcid
uint64_t bcid
Definition: FPGADataFormatUtilities.h:59
python.PyAthena.module
module
Definition: PyAthena.py:131
OutputConversion::FSM::EventHeader
@ EventHeader
FPGADataFormatUtilities::get_bitfields_EDM_STRIPCLUSTER_w5
EDM_STRIPCLUSTER_w5 get_bitfields_EDM_STRIPCLUSTER_w5(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1449
FPGADataFormatUtilities::EDM_STRIPCLUSTER_w6::rdo_list_w4
uint64_t rdo_list_w4
Definition: FPGADataFormatUtilities.h:1399
FPGADataFormatUtilities::EVT_FTR_w1::spare
uint64_t spare
Definition: FPGADataFormatUtilities.h:206
FPGADataFormatUtilities::EVT_FTR_w3::word_count
uint64_t word_count
Definition: FPGADataFormatUtilities.h:215
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
EFTrackingTransient::PixelClusterAuxInput::rdoList
std::vector< unsigned long long > rdoList
Definition: EFTrackingTransient.h:228
FPGADataFormatUtilities::EVT_FTR_FLAG
const int EVT_FTR_FLAG
Definition: FPGADataFormatUtilities.h:175
FPGADataFormatUtilities::get_bitfields_EDM_STRIPCLUSTER_w4
EDM_STRIPCLUSTER_w4 get_bitfields_EDM_STRIPCLUSTER_w4(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1443
EFTrackingTransient::PixelClusterAuxInput::localCovariance
std::vector< float > localCovariance
Definition: EFTrackingTransient.h:226
FPGADataFormatUtilities::get_bitfields_EDM_PIXELCLUSTER_w1
EDM_PIXELCLUSTER_w1 get_bitfields_EDM_PIXELCLUSTER_w1(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1871
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
FPGADataFormatUtilities::EVT_HDR_w2
Definition: FPGADataFormatUtilities.h:63
FPGADataFormatUtilities::get_bitfields_EDM_PIXELCLUSTER_w8
EDM_PIXELCLUSTER_w8 get_bitfields_EDM_PIXELCLUSTER_w8(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1920
FPGADataFormatUtilities::get_bitfields_EDM_PIXELCLUSTER_w10
EDM_PIXELCLUSTER_w10 get_bitfields_EDM_PIXELCLUSTER_w10(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1938
FPGADataFormatUtilities::get_bitfields_EDM_PIXELCLUSTER_w5
EDM_PIXELCLUSTER_w5 get_bitfields_EDM_PIXELCLUSTER_w5(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1897
FPGADataFormatUtilities::to_real_EDM_PIXELCLUSTER_w8_localcovariance_yy
double to_real_EDM_PIXELCLUSTER_w8_localcovariance_yy(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:2159
master.flag
bool flag
Definition: master.py:29
FPGADataFormatUtilities::get_bitfields_EDM_STRIPCLUSTER_w8
EDM_STRIPCLUSTER_w8 get_bitfields_EDM_STRIPCLUSTER_w8(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1470
FPGADataFormatUtilities::EDM_PIXELCLUSTER_w5::rdo_list_w3
uint64_t rdo_list_w3
Definition: FPGADataFormatUtilities.h:1834
EFTrackingTransient::PixelClusterAuxInput::totalToT
std::vector< int > totalToT
Definition: EFTrackingTransient.h:235
FPGADataFormatUtilities::get_bitfields_GHITZ_w1
GHITZ_w1 get_bitfields_GHITZ_w1(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1177
FPGADataFormatUtilities::EVT_HDR_w1::flag
uint64_t flag
Definition: FPGADataFormatUtilities.h:57
FPGADataFormatUtilities::to_real_EDM_PIXELCLUSTER_w7_width_in_eta
double to_real_EDM_PIXELCLUSTER_w7_width_in_eta(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:2147
OutputConversionTool::decodeFPGAoutput
StatusCode decodeFPGAoutput(const std::vector< uint64_t > &bytestream, EFTrackingTransient::Metadata *metadata, EFTrackingTransient::PixelClusterAuxInput *pcAux=nullptr, EFTrackingTransient::StripClusterAuxInput *scAux=nullptr, OutputConversion::FSM blockType=OutputConversion::FSM::Unknown) const
Decode the FPGA output based on the type.
Definition: OutputConversionTool.cxx:19
FPGADataFormatUtilities::get_bitfields_EVT_FTR_w3
EVT_FTR_w3 get_bitfields_EVT_FTR_w3(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:233
FPGADataFormatUtilities::EVT_HDR_w1::spare
uint64_t spare
Definition: FPGADataFormatUtilities.h:60
FPGADataFormatUtilities::get_bitfields_EDM_STRIPCLUSTER_w6
EDM_STRIPCLUSTER_w6 get_bitfields_EDM_STRIPCLUSTER_w6(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1455
FPGADataFormatUtilities::EVT_FTR_w3::crc
uint64_t crc
Definition: FPGADataFormatUtilities.h:216
FPGADataFormatUtilities::get_bitfields_EDM_PIXELCLUSTER_w7
EDM_PIXELCLUSTER_w7 get_bitfields_EDM_PIXELCLUSTER_w7(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1909
EFTrackingTransient::PixelClusterAuxInput::idHash
std::vector< unsigned int > idHash
Definition: EFTrackingTransient.h:224
FPGADataFormatUtilities::EVT_FTR_w1::flag
uint64_t flag
Definition: FPGADataFormatUtilities.h:205
FPGADataFormatUtilities::EVT_HDR_w3::crc
uint64_t crc
Definition: FPGADataFormatUtilities.h:70
OutputConversion::FSM::Error
@ Error
FPGADataFormatUtilities::EDM_PIXELCLUSTER_w6::rdo_list_w4
uint64_t rdo_list_w4
Definition: FPGADataFormatUtilities.h:1838
FPGADataFormatUtilities::to_real_EDM_PIXELCLUSTER_w7_localposition_x
double to_real_EDM_PIXELCLUSTER_w7_localposition_x(const int64_t &in)
Definition: FPGADataFormatUtilities.h:2131
FPGADataFormatUtilities::get_bitfields_EVT_HDR_w1
EVT_HDR_w1 get_bitfields_EVT_HDR_w1(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:73
FPGADataFormatUtilities::get_bitfields_EDM_PIXELCLUSTER_w9
EDM_PIXELCLUSTER_w9 get_bitfields_EDM_PIXELCLUSTER_w9(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1930
EFTrackingTransient::PixelClusterAuxInput::channelsInPhi
std::vector< int > channelsInPhi
Definition: EFTrackingTransient.h:229
FPGADataFormatUtilities::get_bitfields_EDM_STRIPCLUSTER_w2
EDM_STRIPCLUSTER_w2 get_bitfields_EDM_STRIPCLUSTER_w2(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1431
OutputConversion::FSM::PixelEDM
@ PixelEDM
FPGADataFormatUtilities::get_bitfields_EDM_PIXELCLUSTER_w6
EDM_PIXELCLUSTER_w6 get_bitfields_EDM_PIXELCLUSTER_w6(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1903
FPGADataFormatUtilities::EVT_FTR_w1::hdr_crc
uint64_t hdr_crc
Definition: FPGADataFormatUtilities.h:207
OutputConversion::FSM
FSM
Definition: OutputConversionTool.h:22
FPGADataFormatUtilities::EVT_FTR_w3
Definition: FPGADataFormatUtilities.h:214
FPGADataFormatUtilities::EVT_FTR_w2::error_flags
uint64_t error_flags
Definition: FPGADataFormatUtilities.h:211
EFTrackingTransient::PixelClusterAuxInput::id
std::vector< long unsigned int > id
Definition: EFTrackingTransient.h:223
EFTrackingTransient::PixelClusterAuxInput::widthInEta
std::vector< float > widthInEta
Definition: EFTrackingTransient.h:231
EFTrackingTransient::PixelClusterAuxInput::globalPosition
std::vector< float > globalPosition
Definition: EFTrackingTransient.h:227
FPGADataFormatUtilities::to_real_EDM_STRIPCLUSTER_w8_globalposition_x
double to_real_EDM_STRIPCLUSTER_w8_globalposition_x(const int64_t &in)
Definition: FPGADataFormatUtilities.h:1666
DEBUG
#define DEBUG
Definition: page_access.h:11
FPGADataFormatUtilities::get_bitfields_EDM_STRIPCLUSTER_w9
EDM_STRIPCLUSTER_w9 get_bitfields_EDM_STRIPCLUSTER_w9(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:1479
FPGADataFormatUtilities::to_real_EDM_PIXELCLUSTER_w8_omega_x
double to_real_EDM_PIXELCLUSTER_w8_omega_x(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:2163
FPGADataFormatUtilities::EVT_FTR_w2
Definition: FPGADataFormatUtilities.h:210
FPGADataFormatUtilities::to_real_EDM_PIXELCLUSTER_w9_globalposition_y
double to_real_EDM_PIXELCLUSTER_w9_globalposition_y(const int64_t &in)
Definition: FPGADataFormatUtilities.h:2179
FPGADataFormatUtilities::EDM_STRIPCLUSTER_w4::rdo_list_w2
uint64_t rdo_list_w2
Definition: FPGADataFormatUtilities.h:1391
FPGADataFormatUtilities::to_real_EDM_STRIPCLUSTER_w9_globalposition_z
double to_real_EDM_STRIPCLUSTER_w9_globalposition_z(const int64_t &in)
Definition: FPGADataFormatUtilities.h:1682
FPGADataFormatUtilities::EDM_PIXELCLUSTER_w4::rdo_list_w2
uint64_t rdo_list_w2
Definition: FPGADataFormatUtilities.h:1830
test_pyathena.counter
counter
Definition: test_pyathena.py:15
FPGADataFormatUtilities::get_bitfields_EVT_HDR_w2
EVT_HDR_w2 get_bitfields_EVT_HDR_w2(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:82
OutputConversion::FSM::StripEDM
@ StripEDM
FPGADataFormatUtilities::EVT_HDR_w3::status
uint64_t status
Definition: FPGADataFormatUtilities.h:69
EFTrackingTransient::PixelClusterAuxInput::omegaX
std::vector< float > omegaX
Definition: EFTrackingTransient.h:232
EFTrackingTransient::PixelClusterAuxInput::omegaY
std::vector< float > omegaY
Definition: EFTrackingTransient.h:233
FPGADataFormatUtilities::get_bitfields_M_HDR_w1
M_HDR_w1 get_bitfields_M_HDR_w1(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:333
FPGADataFormatUtilities::to_real_EDM_PIXELCLUSTER_w8_localcovariance_xx
double to_real_EDM_PIXELCLUSTER_w8_localcovariance_xx(const uint64_t &in)
Definition: FPGADataFormatUtilities.h:2155
FPGADataFormatUtilities
Definition: FPGADataFormatUtilities.h:13