 |
ATLAS Offline Software
|
#include <OutputConversionTool.h>
|
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 | decodeSlices (const std::vector< uint64_t > &bytestream, EFTrackingTransient::Metadata *metadata) const |
|
StatusCode | decodeGTracks (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...
|
|
Definition at line 35 of file OutputConversionTool.h.
◆ decodeFPGAoutput()
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.
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> gtracks_words;
33 std::vector<uint64_t> slices_words;
34 std::vector<uint64_t> pixel_edm_words;
35 std::vector<uint64_t> strip_edm_words;
40 for (
const auto &word : bytestream)
49 ATH_MSG_ERROR(
"The first word is not the event hearder! Something is wrong");
54 header_words.push_back(word);
55 if (header_words.size() == 3)
71 ATH_MSG_ERROR(
"The PixelClusterAuxInput is not provided to decode function! Something is wrong");
82 ATH_MSG_ERROR(
"The StripClusterAuxInput is not provided to decode function! Something is wrong");
100 ATH_MSG_ERROR(
"The blockType is not recognized! Something is wrong");
156 ATH_MSG_ERROR(
"The blockType is not recognized! Something is wrong");
166 gtracks_words.push_back(word);
172 footer_words.push_back(word);
177 ATH_MSG_ERROR(
"The word after the last cluster is not a module header or event footer! Something is wrong");
185 ghits_words.push_back(word);
186 if (ghits_words.size() == 2)
205 if (Ghit_w1.last == 1)
216 pixel_edm_words.push_back(word);
218 if (pixel_edm_words.size() == 10)
235 unsigned short current_rdo_size = 0;
238 pcAux->
rdoList.push_back(rdo_w1);
243 pcAux->
rdoList.push_back(rdo_w2);
248 pcAux->
rdoList.push_back(rdo_w3);
253 pcAux->
rdoList.push_back(rdo_w4);
285 pixel_edm_words.clear();
312 strip_edm_words.push_back(word);
314 if (strip_edm_words.size() == 9 and scAux)
335 unsigned short current_rdo_size = 0;
338 scAux->rdoList.push_back(rdo_w1);
343 scAux->rdoList.push_back(rdo_w2);
348 scAux->rdoList.push_back(rdo_w3);
353 scAux->rdoList.push_back(rdo_w4);
367 strip_edm_words.clear();
375 ATH_MSG_DEBUG(
"\tlocalPosition_x: " << scAux->localPosition.back());
376 ATH_MSG_DEBUG(
"\tlocalCovariance_xx: " << scAux->localCovariance.back());
377 ATH_MSG_DEBUG(
"\tglobalPosition_x: " << scAux->globalPosition.at(scAux->globalPosition.size() - 3));
378 ATH_MSG_DEBUG(
"\tglobalPosition_y: " << scAux->globalPosition.at(scAux->globalPosition.size() - 2));
379 ATH_MSG_DEBUG(
"\tglobalPosition_z: " << scAux->globalPosition.back());
380 ATH_MSG_DEBUG(
"\tchannelsInPhi: " << scAux->channelsInPhi.back());
389 footer_words.push_back(word);
390 if (footer_words.size() == 3)
407 header_words.clear();
408 footer_words.clear();
420 gtracks_words.push_back(word);
421 if (gtracks_words.size() == 3)
443 gtracks_words.clear();
451 slices_words.push_back(word);
460 slices_words.clear();
466 ATH_MSG_ERROR(
"FSM is in an error state! Something is wrong");
470 ATH_MSG_ERROR(
"FSM is not in a valid state! Something is wrong");
475 return StatusCode::SUCCESS;
◆ decodeGTracks()
◆ decodePixelEDM()
◆ decodeSlices()
◆ decodeSpacePoints()
◆ decodeStripEDM()
◆ initialize()
StatusCode OutputConversionTool::initialize |
( |
| ) |
|
|
override |
The documentation for this class was generated from the following files:
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