ATLAS Offline Software
Loading...
Searching...
No Matches
CpmSubBlockV2.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TRIGT1CALOBYTESTREAM_CPMSUBBLOCKV2_H
6#define TRIGT1CALOBYTESTREAM_CPMSUBBLOCKV2_H
7
8#include <stdint.h>
9#include <vector>
10
11#include "L1CaloSubBlock.h"
12
13namespace LVL1BS {
14
22
24
25 public:
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);
38
40 int emData(int slice, int channel) const;
42 int hadData(int slice, int channel) const;
44 int emError(int slice, int channel) const;
46 int hadError(int slice, int channel) const;
48 int timeslices() const;
50 bool anyTowerData(int channel) const;
51
53 bool pack();
55 bool unpack();
56
57 private:
59 static const int s_wordIdVal = 0xc;
61 static const int s_wordLength = 32;
62 // Trigger tower data word bit positions and masks
63 static const int s_ttDataABit = 0;
64 static const int s_ttDataBBit = 9;
65 static const int s_parityABit = 8;
66 static const int s_parityBBit = 17;
67 static const int s_linkDownABit = 19;
68 static const int s_linkDownBBit = 20;
69 static const int s_pairBit = 21;
70 static const int s_fpgaBit = 23;
71 static const int s_dataIdBit = 30;
72 static const int s_ttWordId = 0x1;
73 static const uint32_t s_ttDataMask = 0xff;
74 static const uint32_t s_pairPinMask = 0x7f;
75 static const uint32_t s_dataIdMask = 0x3;
76 // G-Link/Neutral format
77 static const int s_pairsPerPin = 4;
78 static const int s_wordsPerPin = 8;
79 static const int s_ttBits = 8;
80 static const int s_errBits = 2;
81 static const int s_bcnBits = 3;
82 static const int s_bcnPin = 16;
83 static const int s_glinkPins = 20;
84 static const int s_glinkBitsPerSlice = 84;
85
87 int dataId(uint32_t word) const;
89 int data(int slice, int channel, int offset) const;
91 int error(int slice, int channel, int offset) const;
93 int index(int slice) const;
95 void resize(std::vector<uint32_t>& vec, int channels);
96
98 bool packNeutral();
100 bool packUncompressed();
102 bool unpackNeutral();
104 bool unpackUncompressed();
105
107 std::vector<uint32_t> m_ttData;
109 std::vector<int> m_chanPresent;
112
113};
114
115inline int CpmSubBlockV2::dataId(const uint32_t word) const
116{
117 return (word >> s_dataIdBit) & s_dataIdMask;
118}
119
120inline bool CpmSubBlockV2::anyTowerData(const int channel) const
121{
122 return m_chanPresent[channel];
123}
124
125} // end namespace
126
127#endif
std::vector< size_t > vec
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
int hadData(int slice, int channel) const
Return Had data for given channel.
bool unpackNeutral()
Unpack neutral data.
static const int s_linkDownBBit
static const int s_wordIdVal
CPM header word ID.
int hadError(int slice, int channel) const
Return Had error for given channel.
int dataId(uint32_t word) const
Return data WordID.
static const int s_glinkBitsPerSlice
static const int s_bcnBits
static const int s_fpgaBit
bool pack()
Pack data.
int m_channels
Number of Trigger tower channels per module.
static const int s_linkDownABit
bool unpackUncompressed()
Unpack uncompressed data.
int emError(int slice, int channel) const
Return Em error for given channel.
static const int s_pairBit
bool unpack()
Unpack data.
static const uint32_t s_ttDataMask
static const int s_parityABit
void resize(std::vector< uint32_t > &vec, int channels)
Resize a data vector according to format.
int emData(int slice, int channel) const
Return Em data for given channel.
static const int s_wordLength
Data word length.
static const int s_pairsPerPin
void clear()
Clear all data.
int timeslices() const
Return number of timeslices.
static const int s_ttDataBBit
bool packUncompressed()
Pack uncompressed data.
static const uint32_t s_dataIdMask
std::vector< int > m_chanPresent
Channel present flags vector.
static const int s_parityBBit
void fillTowerData(int slice, int channel, int em, int had, int emErr, int hadErr)
Store trigger tower data.
static const int s_ttWordId
static const int s_glinkPins
std::vector< uint32_t > m_ttData
Trigger tower data.
void setCpmHeader(int version, int format, int slice, int crate, int module, int timeslices)
Store CPM header.
static const int s_ttBits
bool packNeutral()
Pack neutral data.
static const uint32_t s_pairPinMask
static const int s_errBits
static const int s_bcnPin
static const int s_wordsPerPin
static const int s_ttDataABit
bool anyTowerData(int channel) const
Return true if there is tower data for given channel.
static const int s_dataIdBit
Definition index.py:1