2#ifndef L1CALO_BS_DECODER_RUN3_H
3#define L1CALO_BS_DECODER_RUN3_H
14class L1CaloRdoGfexTob;
15class L1CaloRdoGfexTower;
16class L1CaloRdoJfexTob;
17class L1CaloRdoJfexTower;
18class L1CaloRdoMuonTob;
19class L1CaloRdoPh1TopoHit;
34 virtual void err(
const std::string& location,
const std::string& title,
const std::string&
detail)
const {
35 std::cerr <<
"L1CaloBsDecoderRun3::" << location <<
" : " << title <<
" - " <<
detail << std::endl;
44 std::list<L1CaloRdoEfexTower>& dat,
45 std::list<L1CaloRdoRodInfo>::const_iterator rodInfo )
const;
48 std::list<L1CaloRdoEfexTob>& tob,
49 std::list<L1CaloRdoRodInfo>::const_iterator rodInfo )
const;
53 const uint32_t efexNumber,
const uint32_t fpgaNumber,
54 const uint32_t errorMask,
55 const uint32_t numSlices,
const uint32_t sliceNum,
58 std::list<L1CaloRdoEfexTob>& tob,
59 std::list<L1CaloRdoRodInfo>::const_iterator rodInfo )
const;
62 const uint32_t efexNumber,
63 const uint32_t shelfNumber,
64 const uint32_t errorMask,
65 std::list<L1CaloRdoEfexTower>& dat,
66 std::list<L1CaloRdoRodInfo>::const_iterator rodInfo )
const;
69 const uint32_t efexNumber,
const uint32_t shelfNumber,
70 const uint32_t numSlices,
const uint32_t errorMask,
71 std::list<L1CaloRdoEfexTob>& tob,
72 std::list<L1CaloRdoRodInfo>::const_iterator rodInfo )
const;
76#ifndef OFFLINE_DECODER
78 std::list<L1CaloRdoJfexTower>& dat,
79 std::list<L1CaloRdoRodInfo>::const_iterator rodInfo );
82 std::list<L1CaloRdoJfexTob>& tob,
83 std::list<L1CaloRdoRodInfo>::const_iterator rodInfo );
86 std::list<L1CaloRdoGfexTower>& dat,
87 std::list<L1CaloRdoRodInfo>::const_iterator rodInfo );
90 std::list<L1CaloRdoGfexTob>& dat,
91 std::list<L1CaloRdoRodInfo>::const_iterator rodInfo );
94 std::list<L1CaloRdoEfexTob>& etob,
95 std::list<L1CaloRdoJfexTob>& jtob,
96 std::list<L1CaloRdoGfexTob>& gtob,
97 std::list<L1CaloRdoMuonTob>& mtob,
98 std::list<L1CaloRdoRodInfo>::const_iterator rodInfo );
101 std::list<L1CaloRdoPh1TopoHit>& hit,
102 std::list<L1CaloRdoRodInfo>::const_iterator rodInfo );
106 const uint32_t jfexNumber,
107 const uint32_t fpgaNumber,
108 const uint32_t errorMask,
109 std::list<L1CaloRdoJfexTower>& dat,
110 std::list<L1CaloRdoRodInfo>::const_iterator rodInfo );
113 const uint32_t jfexNumber,
const uint32_t fpgaNumber,
114 const uint32_t sliceNumber,
const uint32_t numSlices,
115 const uint32_t errorMask,
116 std::list<L1CaloRdoJfexTob>& tob,
117 std::list<L1CaloRdoRodInfo>::const_iterator rodInfo );
120 const uint32_t fpgaNumber,
121 const uint32_t chanNumber,
122 const uint32_t errorMask,
123 std::list<L1CaloRdoGfexTower>& dat,
124 std::list<L1CaloRdoRodInfo>::const_iterator rodInfo );
127 const uint32_t sliceNumber,
const uint32_t numSlices,
128 const uint32_t errorMask,
129 std::list<L1CaloRdoGfexTob>& tob,
130 std::list<L1CaloRdoRodInfo>::const_iterator rodInfo );
char data[hepevt_bytes_allocation_ATLAS]
Interface class for logging, can be overriden to e.g.
virtual ~Logging()=default
virtual void err(const std::string &location, const std::string &title, const std::string &detail) const
bool decodeEfexTobSlice(const uint32_t payload[], size_t &index, const uint32_t efexNumber, const uint32_t shelfNumber, const uint32_t numSlices, const uint32_t errorMask, std::list< L1CaloRdoEfexTob > &tob, std::list< L1CaloRdoRodInfo >::const_iterator rodInfo) const
Decode one eFEX FPGA block of TOBs and XTOBs for one slice.
uint32_t decodeGfexDataChan(const uint32_t payload[], const uint32_t fpgaNumber, const uint32_t chanNumber, const uint32_t errorMask, std::list< L1CaloRdoGfexTower > &dat, std::list< L1CaloRdoRodInfo >::const_iterator rodInfo)
Decode the data from one gFEX input fibre (only ever one slice).
void setLogger(std::unique_ptr< Logging > &&logger)
uint32_t decodeEfexDataChan(const uint32_t payload[], const uint32_t efexNumber, const uint32_t shelfNumber, const uint32_t errorMask, std::list< L1CaloRdoEfexTower > &dat, std::list< L1CaloRdoRodInfo >::const_iterator rodInfo) const
Decode the data from one eFEX input fibre (only ever one slice).
void decodeJfexTobs(const uint32_t *beg, const uint32_t *end, std::list< L1CaloRdoJfexTob > &tob, std::list< L1CaloRdoRodInfo >::const_iterator rodInfo)
Decode jFEX TOBs and XTOBs.
void decodePh1TopoHits(const uint32_t *beg, const uint32_t *end, std::list< L1CaloRdoPh1TopoHit > &hit, std::list< L1CaloRdoRodInfo >::const_iterator rodInfo)
Decode Ph1Topo hit results.
void decodePh1TopoData(const uint32_t *beg, const uint32_t *end, std::list< L1CaloRdoEfexTob > &etob, std::list< L1CaloRdoJfexTob > &jtob, std::list< L1CaloRdoGfexTob > >ob, std::list< L1CaloRdoMuonTob > &mtob, std::list< L1CaloRdoRodInfo >::const_iterator rodInfo)
Decode Ph1Topo input data: these are TOBs from FEXes and MuCTPI.
void decodeGfexData(const uint32_t *beg, const uint32_t *end, std::list< L1CaloRdoGfexTower > &dat, std::list< L1CaloRdoRodInfo >::const_iterator rodInfo)
Decode gFEX input fibre data.
bool checkFibreCRC(std::vector< uint32_t > &data) const
Check the CRC in an input fibre block of words.
void decodeOneEfexTob(const uint32_t word[], const uint32_t shelfNumber, const uint32_t efexNumber, const uint32_t fpgaNumber, const uint32_t errorMask, const uint32_t numSlices, const uint32_t sliceNum, L1CaloRdoFexTob::TobType tobType, L1CaloRdoFexTob::TobSource tobSource, std::list< L1CaloRdoEfexTob > &tob, std::list< L1CaloRdoRodInfo >::const_iterator rodInfo) const
Decode word(s) for one eFEX TOB (or xTOB) and create one RDO.
void decodeGfexTobs(const uint32_t *beg, const uint32_t *end, std::list< L1CaloRdoGfexTob > &dat, std::list< L1CaloRdoRodInfo >::const_iterator rodInfo)
Decode gFEX TOBs.
void decodeJfexData(const uint32_t *beg, const uint32_t *end, std::list< L1CaloRdoJfexTower > &dat, std::list< L1CaloRdoRodInfo >::const_iterator rodInfo)
Decode jFEX input fibre data.
bool decodeJfexTobSlice(const uint32_t payload[], size_t blockSize, size_t &index, const uint32_t jfexNumber, const uint32_t fpgaNumber, const uint32_t sliceNumber, const uint32_t numSlices, const uint32_t errorMask, std::list< L1CaloRdoJfexTob > &tob, std::list< L1CaloRdoRodInfo >::const_iterator rodInfo)
Decode one jFEX FPGA block of TOBs and XTOBs for one slice.
void decodeEfexData(const uint32_t *beg, const uint32_t *end, std::list< L1CaloRdoEfexTower > &dat, std::list< L1CaloRdoRodInfo >::const_iterator rodInfo) const
Decode eFEX input fibre data.
uint32_t decodeJfexDataChan(const uint32_t payload[], const uint32_t jfexNumber, const uint32_t fpgaNumber, const uint32_t errorMask, std::list< L1CaloRdoJfexTower > &dat, std::list< L1CaloRdoRodInfo >::const_iterator rodInfo)
Decode the data from one jFEX input fibre (only ever one slice).
std::unique_ptr< Logging > m_logger
void setVerbosity(bool verbosity)
void decodeEfexTobs(const uint32_t *beg, const uint32_t *end, std::list< L1CaloRdoEfexTob > &tob, std::list< L1CaloRdoRodInfo >::const_iterator rodInfo) const
Decode eFEX TOBs and XTOBs.
bool decodeGfexTobSlice(const uint32_t payload[], const uint32_t blockType, const uint32_t sliceNumber, const uint32_t numSlices, const uint32_t errorMask, std::list< L1CaloRdoGfexTob > &tob, std::list< L1CaloRdoRodInfo >::const_iterator rodInfo)
Decode one gFEX FPGA block of TOBs for one slice.
L1CaloRdoFexTob subclass for eFEX EM/Tau TOBs or XTOBs.
static Root::TMsgLogger logger("iLumiCalc")