ATLAS Offline Software
Loading...
Searching...
No Matches
RpcByteStreamEncoder Class Reference

#include <RpcByteStreamEncoder.h>

Collaboration diagram for RpcByteStreamEncoder:

Public Member Functions

 RpcByteStreamEncoder (const RpcPadContainer *padContainer)
 ~RpcByteStreamEncoder ()
StatusCode encodeByteStream ()
RpcByteStreamgetByteStream ()

Private Member Functions

void addRx ()
void addPad (const RpcPad *pad)
void addMatrix (const RpcCoinMatrix *matrix)
void addFiredChannel (const RpcFiredChannel *firedChannel)
void addWord (ubit16 dataWord)

Private Attributes

const RpcPadContainerm_padContainer
RpcByteStreamm_byteStream
unsigned int m_byteStreamWord
bool m_highest

Detailed Description

Definition at line 25 of file RpcByteStreamEncoder.h.

Constructor & Destructor Documentation

◆ RpcByteStreamEncoder()

RpcByteStreamEncoder::RpcByteStreamEncoder ( const RpcPadContainer * padContainer)

Definition at line 7 of file RpcByteStreamEncoder.cxx.

7 :
8 m_padContainer(padContainer), m_byteStream(), m_byteStreamWord(0), m_highest(true) {}
const RpcPadContainer * m_padContainer

◆ ~RpcByteStreamEncoder()

RpcByteStreamEncoder::~RpcByteStreamEncoder ( )
default

Member Function Documentation

◆ addFiredChannel()

void RpcByteStreamEncoder::addFiredChannel ( const RpcFiredChannel * firedChannel)
private

Definition at line 69 of file RpcByteStreamEncoder.cxx.

69 {
70 MatrixReadOutStructure mros;
71 ubit16 dataWord;
72 ubit16 inputData[5];
73
74 // Add the fired channel
75 inputData[0] = 0;
76 inputData[1] = firedChannel->bcid();
77 inputData[2] = firedChannel->time();
78 inputData[3] = firedChannel->ijk();
79 inputData[4] = firedChannel->channel();
80
81 dataWord = mros.makeBody(inputData);
82 addWord(dataWord);
83}
unsigned short int ubit16
ubit16 makeBody(ubit16 *inputData)
void addWord(ubit16 dataWord)
ubit16 bcid() const
ubit16 channel() const
ubit16 ijk() const
ubit16 time() const

◆ addMatrix()

void RpcByteStreamEncoder::addMatrix ( const RpcCoinMatrix * matrix)
private

Definition at line 45 of file RpcByteStreamEncoder.cxx.

45 {
46 MatrixReadOutStructure mros;
47 ubit16 dataWord;
48
49 // Add the matrix header
50 ubit16 inputData[3] = {0, matrix->onlineId(), matrix->fel1Id()};
51 dataWord = mros.makeHeader(inputData);
52 addWord(dataWord);
53
54 // Add the matrix subheader
55 dataWord = mros.makeSubHeader();
56 addWord(dataWord);
57
58 // Matrix Body
60 for (chan_it = matrix->begin(); chan_it != matrix->end(); ++chan_it) {
61 const RpcFiredChannel* newchan = (*chan_it);
62 addFiredChannel(newchan);
63 }
64 // Add the matrix footer
65 dataWord = mros.makeFooter(matrix->crc());
66 addWord(dataWord);
67}
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838
ubit16 makeHeader(ubit16 *inputData)
ubit16 makeFooter(ubit16 inputData)
void addFiredChannel(const RpcFiredChannel *firedChannel)

◆ addPad()

void RpcByteStreamEncoder::addPad ( const RpcPad * pad)
private

Definition at line 26 of file RpcByteStreamEncoder.cxx.

26 {
27 // Add the pad header
28 PadReadOutStructure pros;
29 ubit16 inputData[3] = {0, pad->onlineId(), pad->status()};
30 ubit16 padHeader = pros.makeHeader(inputData);
31 addWord(padHeader);
32
33 // Iterate on the matrices and add them to the bytestream
35 for (cma_it = pad->begin(); cma_it != pad->end(); ++cma_it) {
36 const RpcCoinMatrix* newcma = (*cma_it);
37 addMatrix(newcma);
38 }
39 // Add the pad footer
40 ubit16 errorCode = pad->errorCode();
41 ubit16 padFooter = pros.makeFooter(errorCode);
42 addWord(padFooter);
43}
Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Current RpcCoinMatrix
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
ubit16 makeFooter(ubit16 errorCode)
ubit16 makeHeader(ubit16 *inputData)
void addMatrix(const RpcCoinMatrix *matrix)
ubit16 onlineId() const
Definition RpcPad.h:107
ubit16 errorCode() const
Definition RpcPad.h:106
ubit16 status() const
Definition RpcPad.h:105

◆ addRx()

void RpcByteStreamEncoder::addRx ( )
private

Definition at line 24 of file RpcByteStreamEncoder.cxx.

24{}

◆ addWord()

void RpcByteStreamEncoder::addWord ( ubit16 dataWord)
private

Definition at line 85 of file RpcByteStreamEncoder.cxx.

85 {
86 unsigned int dataWord32 = (unsigned int)dataWord;
87 if (m_highest) {
88 m_byteStreamWord = (dataWord32 << 16);
89 m_highest = false;
90 } else {
94 m_highest = true;
95 }
96}

◆ encodeByteStream()

StatusCode RpcByteStreamEncoder::encodeByteStream ( )

Definition at line 12 of file RpcByteStreamEncoder.cxx.

12 {
14 // Iterate on the pads and add them to the bytestream
15 RpcPadContainer::const_iterator pad_it;
16 for (pad_it = m_padContainer->begin(); pad_it != m_padContainer->end(); ++pad_it) {
17 const RpcPad* newpad = (*pad_it);
18 addPad(newpad);
19 sc = StatusCode::SUCCESS;
20 }
21 return sc;
22}
static Double_t sc
Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current RpcPad
void addPad(const RpcPad *pad)
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ getByteStream()

RpcByteStream * RpcByteStreamEncoder::getByteStream ( )
inline

Definition at line 33 of file RpcByteStreamEncoder.h.

33{ return m_byteStream; };

Member Data Documentation

◆ m_byteStream

RpcByteStream* RpcByteStreamEncoder::m_byteStream
private

Definition at line 47 of file RpcByteStreamEncoder.h.

◆ m_byteStreamWord

unsigned int RpcByteStreamEncoder::m_byteStreamWord
private

Definition at line 48 of file RpcByteStreamEncoder.h.

◆ m_highest

bool RpcByteStreamEncoder::m_highest
private

Definition at line 49 of file RpcByteStreamEncoder.h.

◆ m_padContainer

const RpcPadContainer* RpcByteStreamEncoder::m_padContainer
private

Definition at line 46 of file RpcByteStreamEncoder.h.


The documentation for this class was generated from the following files: