ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigT1
L1CaloFEX
L1CaloFEXByteStream
src
infraL1Calo
src
EfexTobPacker.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
#include "
infraL1Calo/EfexTobPacker.h
"
5
6
#include <iostream>
7
#include <cstdlib>
8
#include <cmath>
9
#include <map>
10
11
12
std::vector<FibrePackerBase::myDataWord>
13
EfexTobPacker::getPackedData
(
const
std::vector<myDataWord>& inFrame,
myDataWord
bcNumber,
InputDataFrameType
/*frameType*/
)
const
14
{
15
size_t
sz
= inFrame.size();
16
std::vector<myDataWord> dataToLoad(
FexDefs::num32BitWordsPerFibre
(),0);
17
for
(
size_t
i = 0 ; i <
sz
; ++i )
18
dataToLoad.at(i) = inFrame.at(i);
19
dataToLoad.at(6) = 0x1000;
// Is an eFEX
20
dataToLoad.at(6) |= (bcNumber&0xf)<<8;
// Lowest bits of BCID
21
dataToLoad.at(6) |=
crc9full
(dataToLoad,224)<<23;
// Add CRC, 224 = 32*7 = full frame
22
dataToLoad.at(6) |=
K_28_5
;
// add K-character
23
24
return
dataToLoad;
25
26
}
27
28
std::vector<FibrePackerBase::myDataWord>
29
EfexTobPacker::getPackedControl
(
const
std::vector<myDataWord>&
/*inFrame*/
,
myDataWord
/*bcNumber*/
,
InputDataFrameType
/*frameType*/
)
const
30
{
31
std::vector<myDataWord> controlWords(
FexDefs::num32BitWordsPerFibre
(),0);
32
return
controlWords;
33
}
34
35
bool
36
EfexTobPacker::checkCRC
(
const
std::vector<myDataWord>& encodedData,
InputDataFrameType
/*frameType*/
)
const
37
{
38
auto
inputData = encodedData;
39
inputData.at(0) = inputData.at(0) & 0xffffff00;
40
// calculate CRC on 224 bits = 7*32 bit words
41
return
(
crc9full
(inputData,224) == 0);
42
}
43
44
FibrePackerBase::myDataWord
45
EfexTobPacker::getBcNumber
(
const
std::vector<myDataWord>& encodedData,
InputDataFrameType
/*frameType*/
)
const
46
{
47
return
((encodedData.at(6)>>8)&0xf);
48
}
49
50
std::vector<FibrePackerBase::myDataWord>
51
EfexTobPacker::getUnpackedData
(
const
std::vector<myDataWord>& encodedData,
InputDataFrameType
/*frameType*/
)
const
52
{
53
return
encodedData;
54
}
55
EfexTobPacker.h
sz
static Double_t sz
Definition
LArPhysWaveHECTool.cxx:37
EfexTobPacker::getUnpackedData
virtual std::vector< myDataWord > getUnpackedData(const std::vector< myDataWord > &encodedData, InputDataFrameType frameType) const override
Definition
EfexTobPacker.cxx:51
EfexTobPacker::checkCRC
virtual bool checkCRC(const std::vector< myDataWord > &encodedData, InputDataFrameType frameType) const override
Definition
EfexTobPacker.cxx:36
EfexTobPacker::getPackedControl
virtual std::vector< myDataWord > getPackedControl(const std::vector< myDataWord > &inFrame, myDataWord bcNumber, InputDataFrameType frameType) const override
Function returning control words.
Definition
EfexTobPacker.cxx:29
EfexTobPacker::getBcNumber
virtual myDataWord getBcNumber(const std::vector< myDataWord > &encodedData, InputDataFrameType frameType) const override
Definition
EfexTobPacker.cxx:45
EfexTobPacker::getPackedData
virtual std::vector< myDataWord > getPackedData(const std::vector< myDataWord > &inFrame, myDataWord bcNumber, InputDataFrameType frameType) const override
Function taking SC energies and other stuff and packing them into a data packet.
Definition
EfexTobPacker.cxx:13
FexDefs::num32BitWordsPerFibre
static int num32BitWordsPerFibre()
Definition
FexDefs.h:17
FibrePackerBase::K_28_5
myDataWord K_28_5
Definition
FibrePackerBase.h:30
FibrePackerBase::crc9full
virtual myDataWord crc9full(const std::vector< myDataWord > &inwords, size_t num_bits) const
Functions calculating CRC over input data.
Definition
FibrePackerBase.cxx:11
FibrePackerBase::InputDataFrameType
InputDataFrameType
type of input data frame
Definition
FibrePackerBase.h:37
FibrePackerBase::myDataWord
uint32_t myDataWord
Definition
FibrePackerBase.h:25
Generated on
for ATLAS Offline Software by
1.17.0