ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArCnv
LArByteStream
LArByteStream
LArRodBlockTransparentV0.h
Go to the documentation of this file.
1
//Dear emacs, this is -*- c++ -*-
2
3
/*
4
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
5
*/
6
7
#ifndef LARBYTESTREAM_LARRODBLOCKTRANSPARENTV0_H
8
#define LARBYTESTREAM_LARRODBLOCKTRANSPARENTV0_H
9
15
16
27
28
29
#include <stdint.h>
30
#include <vector>
31
#include "
LArByteStream/LArRodBlockStructure.h
"
32
33
class
LArRodBlockHeaderTransparentV0
34
{
// ----------------- Header words indexes -----------------
35
public
:
36
enum
{
37
NWTot
,
// First words: DSP event header
38
NWTot_h
,
39
FEBID
,
40
FEBID_h
,
41
FEB_SN
,
// FEB serial number
42
FEB_SN_h
,
43
RawDataBlkOffset
,
// Raw FEB event offset
44
RawDataBlkOffset_h
,
45
NGains
,
46
NSamples
,
47
endtag
48
};
49
};
50
51
template
<
class
DSPHEADER>
52
class
LArRodBlockTransparentV0
:
public
LArRodBlockStructure
53
{
54
public
:
55
// constructor
56
LArRodBlockTransparentV0
(IMessageSvc* msgSvc);
57
// ------ Identify RodBlockStructure -------
58
static
std::string
BlockType
() {
return
std::string(
"RodBlockTransparentV0"
);}
59
// ----------------- Encoding methods -----------------
60
// Never to be used while decoding!
61
virtual
void
initializeFragment
(std::vector<uint32_t>& fragment);
62
virtual
void
initializeFEB
(
const
uint32_t
id
);
63
virtual
void
setNumberOfSamples
(
const
uint8_t n);
64
virtual
void
setNumberOfGains
(
const
uint8_t n);
65
virtual
void
setTDCPhase
(
const
uint8_t n);
//useful only TB SW validation
66
virtual
void
setRawDataFixed
(
const
int
channel,
const
std::vector<short>& samples,
const
uint32_t gain);
67
virtual
void
finalizeFEB
();
68
// build full ROD fragment
69
virtual
void
concatinateFEBs
( );
70
// declare capabilities of this Rod Block Structure
71
72
virtual
bool
canSetRawDataFixed
() {
return
true
;}
73
// ----------------- Decoding methods -----------------
74
// Never to be used while encoding!
75
// set full ROD fragment before trying to get anything!
76
// in case there is more than 1 FEB in 1 fragment, jump to next FEB
77
virtual
uint8_t
getTDCPhase
()
const
;
78
virtual
int
getNextRawData
(
int
& channelNumber, std::vector<short>& samples, uint32_t& gain);
79
virtual
inline
int
setGain
(
const
int
GainValue);
// ---------------- Define gain for decoding
80
virtual
uint32_t
getNumberOfSamples
()
const
;
81
virtual
uint32_t
getNumberOfGains
()
const
;
82
virtual
uint32_t
getRadd
(uint32_t adc, uint32_t sample)
const
;
83
virtual
uint16_t
getCtrl1
(uint32_t adc)
const
;
84
virtual
uint16_t
getCtrl2
(uint32_t adc)
const
;
85
virtual
uint16_t
getCtrl3
(uint32_t adc)
const
;
86
virtual
uint32_t
getStatus
()
const
;
87
88
// ----------------- Printing methods -----------------
89
// print the full ROD fragment
90
//virtual void dumpFragment();
91
virtual
inline
uint32_t
hasRawDataBlock
()
const
{
return
m_FebBlock
[3];} ;
92
virtual
inline
uint32_t
hasControlWords
()
const
{
return
m_FebBlock
[3];} ;
93
94
private
:
95
void
clearBlocks
();
96
virtual
void
resetPointers
();
97
//Separated blocks for encoding
98
99
// One raw data block per gain to start with
100
std::vector<uint32_t>
m_RawDataBlock
;
101
//Counter for channels inside of a FEB
102
int
m_RawDataCounter
;
103
int
m_RawDataIndex
;
104
unsigned
m_BlkOffset
;
//Offset taken from enum
105
//For fixed gain mode
106
int
m_fixedGain
;
107
//FIXME, very ugly hack! See explanation in LArRodDecoder.h
108
public
:
109
};
110
111
112
template
<
class
DSPHEADER>
113
inline
int
LArRodBlockTransparentV0<DSPHEADER>::setGain
(
const
int
GainValue)
114
{
//This RodBlockStructure allows only predefined gains
115
if
(GainValue<0 || GainValue>3)
116
return
0;
117
m_fixedGain
=GainValue;
118
return
1;
119
}
120
121
#include "
LArByteStream/LArRodBlockTransparentV0.icc
"
122
123
#endif
LArRodBlockStructure.h
LArRodBlockTransparentV0.icc
LArRodBlockHeaderTransparentV0
This class provides decoding/encoding from/to ROD format.
Definition
LArRodBlockTransparentV0.h:34
LArRodBlockHeaderTransparentV0::NWTot
@ NWTot
Definition
LArRodBlockTransparentV0.h:37
LArRodBlockHeaderTransparentV0::NWTot_h
@ NWTot_h
Definition
LArRodBlockTransparentV0.h:38
LArRodBlockHeaderTransparentV0::NSamples
@ NSamples
Definition
LArRodBlockTransparentV0.h:46
LArRodBlockHeaderTransparentV0::endtag
@ endtag
Definition
LArRodBlockTransparentV0.h:47
LArRodBlockHeaderTransparentV0::FEB_SN_h
@ FEB_SN_h
Definition
LArRodBlockTransparentV0.h:42
LArRodBlockHeaderTransparentV0::FEBID
@ FEBID
Definition
LArRodBlockTransparentV0.h:39
LArRodBlockHeaderTransparentV0::FEB_SN
@ FEB_SN
Definition
LArRodBlockTransparentV0.h:41
LArRodBlockHeaderTransparentV0::RawDataBlkOffset
@ RawDataBlkOffset
Definition
LArRodBlockTransparentV0.h:43
LArRodBlockHeaderTransparentV0::NGains
@ NGains
Definition
LArRodBlockTransparentV0.h:45
LArRodBlockHeaderTransparentV0::RawDataBlkOffset_h
@ RawDataBlkOffset_h
Definition
LArRodBlockTransparentV0.h:44
LArRodBlockHeaderTransparentV0::FEBID_h
@ FEBID_h
Definition
LArRodBlockTransparentV0.h:40
LArRodBlockStructure::m_FebBlock
const uint32_t * m_FebBlock
Definition
LArRodBlockStructure.h:221
LArRodBlockStructure::LArRodBlockStructure
LArRodBlockStructure(IMessageSvc *msgSvc, const std::string &blockType)
Definition
LArRodBlockStructure.cxx:18
LArRodBlockTransparentV0::getCtrl2
virtual uint16_t getCtrl2(uint32_t adc) const
LArRodBlockTransparentV0::hasRawDataBlock
virtual uint32_t hasRawDataBlock() const
Definition
LArRodBlockTransparentV0.h:91
LArRodBlockTransparentV0::concatinateFEBs
virtual void concatinateFEBs()
LArRodBlockTransparentV0::getCtrl3
virtual uint16_t getCtrl3(uint32_t adc) const
LArRodBlockTransparentV0::m_RawDataBlock
std::vector< uint32_t > m_RawDataBlock
Definition
LArRodBlockTransparentV0.h:100
LArRodBlockTransparentV0::getNumberOfGains
virtual uint32_t getNumberOfGains() const
LArRodBlockTransparentV0::LArRodBlockTransparentV0
LArRodBlockTransparentV0(IMessageSvc *msgSvc)
LArRodBlockTransparentV0::resetPointers
virtual void resetPointers()
LArRodBlockTransparentV0::setGain
virtual int setGain(const int GainValue)
Definition
LArRodBlockTransparentV0.h:113
LArRodBlockTransparentV0::setTDCPhase
virtual void setTDCPhase(const uint8_t n)
LArRodBlockTransparentV0::getStatus
virtual uint32_t getStatus() const
LArRodBlockTransparentV0::setRawDataFixed
virtual void setRawDataFixed(const int channel, const std::vector< short > &samples, const uint32_t gain)
LArRodBlockTransparentV0::clearBlocks
void clearBlocks()
LArRodBlockTransparentV0::BlockType
static std::string BlockType()
Definition
LArRodBlockTransparentV0.h:58
LArRodBlockTransparentV0::initializeFEB
virtual void initializeFEB(const uint32_t id)
LArRodBlockTransparentV0::getCtrl1
virtual uint16_t getCtrl1(uint32_t adc) const
LArRodBlockTransparentV0::m_BlkOffset
unsigned m_BlkOffset
Definition
LArRodBlockTransparentV0.h:104
LArRodBlockTransparentV0::getRadd
virtual uint32_t getRadd(uint32_t adc, uint32_t sample) const
LArRodBlockTransparentV0::setNumberOfGains
virtual void setNumberOfGains(const uint8_t n)
LArRodBlockTransparentV0::m_RawDataIndex
int m_RawDataIndex
Definition
LArRodBlockTransparentV0.h:103
LArRodBlockTransparentV0::getNextRawData
virtual int getNextRawData(int &channelNumber, std::vector< short > &samples, uint32_t &gain)
LArRodBlockTransparentV0::initializeFragment
virtual void initializeFragment(std::vector< uint32_t > &fragment)
LArRodBlockTransparentV0::m_fixedGain
int m_fixedGain
Definition
LArRodBlockTransparentV0.h:106
LArRodBlockTransparentV0::finalizeFEB
virtual void finalizeFEB()
LArRodBlockTransparentV0::canSetRawDataFixed
virtual bool canSetRawDataFixed()
Definition
LArRodBlockTransparentV0.h:72
LArRodBlockTransparentV0::m_RawDataCounter
int m_RawDataCounter
Definition
LArRodBlockTransparentV0.h:102
LArRodBlockTransparentV0::hasControlWords
virtual uint32_t hasControlWords() const
Definition
LArRodBlockTransparentV0.h:92
LArRodBlockTransparentV0::setNumberOfSamples
virtual void setNumberOfSamples(const uint8_t n)
LArRodBlockTransparentV0::getNumberOfSamples
virtual uint32_t getNumberOfSamples() const
LArRodBlockTransparentV0::getTDCPhase
virtual uint8_t getTDCPhase() const
Generated on
for ATLAS Offline Software by
1.17.0