ATLAS Offline Software
CpmSubBlock.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRIGT1CALOBYTESTREAM_CPMSUBBLOCK_H
6 #define TRIGT1CALOBYTESTREAM_CPMSUBBLOCK_H
7 
8 #include <stdint.h>
9 #include <vector>
10 
11 #include "L1CaloSubBlock.h"
12 
13 namespace LVL1BS {
14 
23 class CpmSubBlock : public L1CaloSubBlock {
24 
25  public:
26  CpmSubBlock();
27  ~CpmSubBlock();
28 
30  void clear();
31 
33  void setCpmHeader(int version, int format, int slice, int crate,
34  int module, int timeslices);
36  void fillTowerData(int slice, int channel, int em, int had,
37  int emErr, int hadErr);
39  void setHits(int slice, unsigned int hit0, unsigned int hit1);
40 
42  int emData(int slice, int channel) const;
44  int hadData(int slice, int channel) const;
46  int emError(int slice, int channel) const;
48  int hadError(int slice, int channel) const;
50  unsigned int hits0(int slice) const;
52  unsigned int hits1(int slice) const;
54  int timeslices() const;
56  bool anyTowerData(int channel) const;
57 
59  bool pack();
61  bool unpack();
62 
63  private:
65  static const int s_wordIdVal = 0xc;
67  static const int s_wordLength = 32;
68  // Trigger tower data word bit positions and masks
69  static const int s_ttDataABit = 0;
70  static const int s_ttDataBBit = 9;
71  static const int s_parityABit = 8;
72  static const int s_parityBBit = 17;
73  static const int s_linkDownABit = 19;
74  static const int s_linkDownBBit = 20;
75  static const int s_pairBit = 21;
76  static const int s_fpgaBit = 23;
77  static const int s_dataIdBit = 30;
78  static const int s_ttWordId = 0x1;
79  static const uint32_t s_ttDataMask = 0xff;
80  static const uint32_t s_pairPinMask = 0x7f;
81  static const uint32_t s_dataIdMask = 0x3;
82  // Hit counts bit positions and masks
83  static const int s_indicatorBit = 24;
84  static const uint32_t s_threshWordId = 0x2;
85  static const uint32_t s_threshMask = 0xffffff;
86  // G-Link/Neutral format
87  static const int s_pairsPerPin = 4;
88  static const int s_wordsPerPin = 8;
89  static const int s_ttBits = 8;
90  static const int s_errBits = 2;
91  static const int s_hitBits = 3;
92  static const int s_hitWords = 8;
93  static const int s_glinkPins = 20;
94  static const int s_glinkBitsPerSlice = 84;
95 
97  int dataId(uint32_t word) const;
99  int data(int slice, int channel, int offset) const;
101  int error(int slice, int channel, int offset) const;
103  unsigned int hits(int slice, int offset) const;
105  int index(int slice) const;
107  void resize(std::vector<uint32_t>& vec, int channels);
108 
110  bool packNeutral();
112  bool packUncompressed();
114  bool unpackNeutral();
116  bool unpackUncompressed();
117 
119  std::vector<uint32_t> m_ttData;
121  std::vector<uint32_t> m_hitData;
123  std::vector<int> m_chanPresent;
126 
127 };
128 
129 inline int CpmSubBlock::dataId(const uint32_t word) const
130 {
131  return (word >> s_dataIdBit) & s_dataIdMask;
132 }
133 
134 inline bool CpmSubBlock::anyTowerData(const int channel) const
135 {
136  return m_chanPresent[channel];
137 }
138 
139 } // end namespace
140 
141 #endif
LVL1BS::CpmSubBlock::m_hitData
std::vector< uint32_t > m_hitData
Hit counts.
Definition: CpmSubBlock.h:121
LVL1BS::CpmSubBlock::hadData
int hadData(int slice, int channel) const
Return Had data for given channel.
Definition: CpmSubBlock.cxx:140
LVL1BS::CpmSubBlock::s_pairPinMask
static const uint32_t s_pairPinMask
Definition: CpmSubBlock.h:80
LVL1BS::CpmSubBlock::anyTowerData
bool anyTowerData(int channel) const
Return true if there is tower data for given channel.
Definition: CpmSubBlock.h:134
LVL1BS::CpmSubBlock::unpackUncompressed
bool unpackUncompressed()
Unpack uncompressed data.
Definition: CpmSubBlock.cxx:420
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
LVL1BS::CpmSubBlock::s_dataIdBit
static const int s_dataIdBit
Definition: CpmSubBlock.h:77
LVL1BS::CpmSubBlock::s_parityBBit
static const int s_parityBBit
Definition: CpmSubBlock.h:72
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
LVL1BS::CpmSubBlock::hits
unsigned int hits(int slice, int offset) const
Return hit counts with given offset.
Definition: CpmSubBlock.cxx:279
LVL1BS::CpmSubBlock::~CpmSubBlock
~CpmSubBlock()
Definition: CpmSubBlock.cxx:49
LVL1BS::CpmSubBlock::s_dataIdMask
static const uint32_t s_dataIdMask
Definition: CpmSubBlock.h:81
LVL1BS::CpmSubBlock::emData
int emData(int slice, int channel) const
Return Em data for given channel.
Definition: CpmSubBlock.cxx:133
LVL1BS::CpmSubBlock::s_ttWordId
static const int s_ttWordId
Definition: CpmSubBlock.h:78
LVL1BS::CpmSubBlock::s_wordLength
static const int s_wordLength
Data word length.
Definition: CpmSubBlock.h:67
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:12
LVL1BS::CpmSubBlock::s_parityABit
static const int s_parityABit
Definition: CpmSubBlock.h:71
LVL1BS::L1CaloSubBlock::slice
int slice() const
Definition: L1CaloSubBlock.h:258
LVL1BS::CpmSubBlock::s_threshWordId
static const uint32_t s_threshWordId
Definition: CpmSubBlock.h:84
LVL1BS::CpmSubBlock::index
int index(int slice) const
Return data index appropriate to format.
Definition: CpmSubBlock.cxx:290
LVL1BS::CpmSubBlock::m_ttData
std::vector< uint32_t > m_ttData
Trigger tower data.
Definition: CpmSubBlock.h:119
LVL1BS::CpmSubBlock::hits0
unsigned int hits0(int slice) const
Return e/gamma hit counts.
Definition: CpmSubBlock.cxx:161
LVL1BS::CpmSubBlock::hadError
int hadError(int slice, int channel) const
Return Had error for given channel.
Definition: CpmSubBlock.cxx:154
dq_defect_copy_defect_database.channels
def channels
Definition: dq_defect_copy_defect_database.py:56
LVL1BS::CpmSubBlock::setHits
void setHits(int slice, unsigned int hit0, unsigned int hit1)
Store hit counts.
Definition: CpmSubBlock.cxx:112
LVL1BS::L1CaloSubBlock::crate
int crate() const
Definition: L1CaloSubBlock.h:263
LVL1BS::CpmSubBlock::CpmSubBlock
CpmSubBlock()
Definition: CpmSubBlock.cxx:44
LVL1BS::CpmSubBlock::unpackNeutral
bool unpackNeutral()
Unpack neutral data.
Definition: CpmSubBlock.cxx:366
LVL1BS::CpmSubBlock::s_hitWords
static const int s_hitWords
Definition: CpmSubBlock.h:92
LVL1BS::CpmSubBlock::timeslices
int timeslices() const
Return number of timeslices.
Definition: CpmSubBlock.cxx:175
LVL1BS::CpmSubBlock::s_pairBit
static const int s_pairBit
Definition: CpmSubBlock.h:75
LVL1BS::CpmSubBlock::error
int error(int slice, int channel, int offset) const
Return error for given channel and pin offset.
Definition: CpmSubBlock.cxx:255
LVL1BS::CpmSubBlock::pack
bool pack()
Pack data.
Definition: CpmSubBlock.cxx:187
LVL1BS::CpmSubBlock::packUncompressed
bool packUncompressed()
Pack uncompressed data.
Definition: CpmSubBlock.cxx:348
L1CaloSubBlock.h
LVL1BS::CpmSubBlock::dataId
int dataId(uint32_t word) const
Return data WordID.
Definition: CpmSubBlock.h:129
LVL1BS::CpmSubBlock::packNeutral
bool packNeutral()
Pack neutral data.
Definition: CpmSubBlock.cxx:308
LVL1BS::CpmSubBlock
Sub-Block class for CPM data.
Definition: CpmSubBlock.h:23
LVL1BS::CpmSubBlock::clear
void clear()
Clear all data.
Definition: CpmSubBlock.cxx:55
LVL1BS::CpmSubBlock::s_wordIdVal
static const int s_wordIdVal
CPM header word ID.
Definition: CpmSubBlock.h:65
LVL1BS::L1CaloSubBlock::format
int format() const
Definition: L1CaloSubBlock.h:248
LVL1BS::CpmSubBlock::m_channels
int m_channels
Number of Trigger tower channels per module.
Definition: CpmSubBlock.h:125
LVL1BS::CpmSubBlock::s_errBits
static const int s_errBits
Definition: CpmSubBlock.h:90
LVL1BS::CpmSubBlock::resize
void resize(std::vector< uint32_t > &vec, int channels)
Resize a data vector according to format.
Definition: CpmSubBlock.cxx:297
LVL1BS::CpmSubBlock::s_pairsPerPin
static const int s_pairsPerPin
Definition: CpmSubBlock.h:87
LVL1BS::CpmSubBlock::s_fpgaBit
static const int s_fpgaBit
Definition: CpmSubBlock.h:76
LVL1BS::CpmSubBlock::s_indicatorBit
static const int s_indicatorBit
Definition: CpmSubBlock.h:83
LVL1BS::CpmSubBlock::hits1
unsigned int hits1(int slice) const
Return tau hit counts.
Definition: CpmSubBlock.cxx:168
LVL1BS::L1CaloSubBlock::version
int version() const
Definition: L1CaloSubBlock.h:243
LVL1BS::CpmSubBlock::s_wordsPerPin
static const int s_wordsPerPin
Definition: CpmSubBlock.h:88
LVL1BS::CpmSubBlock::s_ttBits
static const int s_ttBits
Definition: CpmSubBlock.h:89
LVL1BS::CpmSubBlock::s_glinkBitsPerSlice
static const int s_glinkBitsPerSlice
Definition: CpmSubBlock.h:94
LVL1BS::CpmSubBlock::s_ttDataMask
static const uint32_t s_ttDataMask
Definition: CpmSubBlock.h:79
LVL1BS::L1CaloSubBlock::module
int module() const
Definition: L1CaloSubBlock.h:268
LVL1BS::CpmSubBlock::s_glinkPins
static const int s_glinkPins
Definition: CpmSubBlock.h:93
LVL1BS::L1CaloSubBlock
L1Calo Sub-Block base class.
Definition: L1CaloSubBlock.h:24
LVL1BS::CpmSubBlock::s_hitBits
static const int s_hitBits
Definition: CpmSubBlock.h:91
LVL1BS
Definition: ZdcModifySlices.h:10
LVL1BS::CpmSubBlock::fillTowerData
void fillTowerData(int slice, int channel, int em, int had, int emErr, int hadErr)
Store trigger tower data.
Definition: CpmSubBlock.cxx:74
convertTimingResiduals.offset
offset
Definition: convertTimingResiduals.py:71
LVL1BS::CpmSubBlock::emError
int emError(int slice, int channel) const
Return Em error for given channel.
Definition: CpmSubBlock.cxx:147
LVL1BS::CpmSubBlock::s_ttDataABit
static const int s_ttDataABit
Definition: CpmSubBlock.h:69
LVL1BS::CpmSubBlock::s_linkDownBBit
static const int s_linkDownBBit
Definition: CpmSubBlock.h:74
LVL1BS::CpmSubBlock::m_chanPresent
std::vector< int > m_chanPresent
Channel present flags vector.
Definition: CpmSubBlock.h:123
LVL1BS::CpmSubBlock::s_ttDataBBit
static const int s_ttDataBBit
Definition: CpmSubBlock.h:70
LVL1BS::CpmSubBlock::s_threshMask
static const uint32_t s_threshMask
Definition: CpmSubBlock.h:85
LVL1BS::CpmSubBlock::setCpmHeader
void setCpmHeader(int version, int format, int slice, int crate, int module, int timeslices)
Store CPM header.
Definition: CpmSubBlock.cxx:65
LVL1BS::CpmSubBlock::data
int data(int slice, int channel, int offset) const
Return data for given channel and pin offset.
Definition: CpmSubBlock.cxx:235
LVL1BS::CpmSubBlock::unpack
bool unpack()
Unpack data.
Definition: CpmSubBlock.cxx:209
LVL1BS::CpmSubBlock::s_linkDownABit
static const int s_linkDownABit
Definition: CpmSubBlock.h:73