ATLAS Offline Software
Loading...
Searching...
No Matches
TileDigitsCollection.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TileDigitsCollection_H
6#define TileDigitsCollection_H
7
10
11// STL include
12#include <vector>
13
14// Lang include
15#include <inttypes.h>
16
18{
20public:
21
23 typedef MyBase::ID ID;
25
28 // Alternate constructor for use with ConstDataVector.
33
35 uint32_t lvl1Id, uint32_t lvl1Type, uint32_t detEvType, uint32_t rodBCID,
36 const std::vector<uint32_t>& fragChipCRCWords, const std::vector<uint32_t>& fragChipCRCWordsHIGH,
37 const std::vector<uint32_t>& fragChipHeaderWords, const std::vector<uint32_t>& fragChipHeaderWordsHIGH,
38 const std::vector<uint32_t>& fragExtraWords, uint32_t fragSize, uint32_t fragBCID)
39 : MyBase(id, ownPolicy, lvl1Id, lvl1Type, detEvType, rodBCID),
40 m_FragChipCRCWords(fragChipCRCWords), m_FragChipCRCWordsHIGH(fragChipCRCWordsHIGH),
41 m_FragChipHeaderWords(fragChipHeaderWords), m_FragChipHeaderWordsHIGH(fragChipHeaderWordsHIGH),
42 m_FragExtraWords(fragExtraWords), m_FragSize(fragSize), m_FragBCID(fragBCID) {}
43
50
57
59
63 void clear ();
64
69 bool isCalibMode() const { return (size() == 96); }
74 void setFragSize(uint32_t s) { m_FragSize = s; }
79 inline uint32_t getFragSize() const { return m_FragSize; }
84 void setFragExtraWords(const std::vector<uint32_t> & extra) {
85 m_FragExtraWords = extra;
86 if (extra.size() < 2) m_FragExtraWords.resize(2);
87 }
88 void setFragExtraWords(std::vector<uint32_t> && extra) {
89 m_FragExtraWords = std::move(extra);
90 if (m_FragExtraWords.size() < 2) m_FragExtraWords.resize(2);
91 }
92
96 inline const std::vector<uint32_t>& getFragExtraWords() const { return m_FragExtraWords; }
97 inline uint32_t getFragExtraWord(unsigned int i) const {
98 if (i<m_FragExtraWords.size()) return m_FragExtraWords[i]; else return 0; }
99
103 inline uint32_t getFragDMUMask() const { return m_FragExtraWords[0]; }
108 inline uint32_t getFragCRC() const { return m_FragExtraWords[1]; }
113 void setFragBCID(uint32_t bcid) { m_FragBCID = bcid; }
118 inline uint32_t getFragBCID() const { return (m_FragBCID & 0xFFFF); }
119 inline uint32_t getFragStatus() const { return (m_FragBCID >> 16); }
120
126 void setFragChipHeaderWords(const std::vector<uint32_t>& chipHWords) {
127 m_FragChipHeaderWords = chipHWords;
128 }
129 void setFragChipHeaderWords(std::vector<uint32_t>&& chipHWords) {
130 m_FragChipHeaderWords = std::move(chipHWords);
131 }
132
135 void setFragChipHeaderWordsHigh(const std::vector<uint32_t>& chipHWordsH) {
136 m_FragChipHeaderWordsHIGH = chipHWordsH;
137 }
138 void setFragChipHeaderWordsHigh(std::vector<uint32_t>&& chipHWordsH) {
139 m_FragChipHeaderWordsHIGH = std::move(chipHWordsH);
140 }
141
142
148 inline const std::vector<uint32_t>& getFragChipHeaderWords() const {
150 }
151
154 const std::vector<uint32_t>& getFragChipHeaderWordsHigh() const {
156 }
157
163 void setFragChipCRCWords(const std::vector<uint32_t>& chipCRCWords) {
164 m_FragChipCRCWords = chipCRCWords;
165 }
166 void setFragChipCRCWords(std::vector<uint32_t>&& chipCRCWords) {
167 m_FragChipCRCWords = std::move(chipCRCWords);
168 }
169
170
174 void setFragChipCRCWordsHigh(const std::vector<uint32_t>& chipCRCWordsH) {
175 m_FragChipCRCWordsHIGH = chipCRCWordsH;
176 }
177 void setFragChipCRCWordsHigh(std::vector<uint32_t>&& chipCRCWordsH) {
178 m_FragChipCRCWordsHIGH = std::move(chipCRCWordsH);
179 }
180
186 inline const std::vector<uint32_t>& getFragChipCRCWords() const {
187 return m_FragChipCRCWords;
188 }
189
192 inline const std::vector<uint32_t>& getFragChipCRCWordsHigh() const {
194 }
195
196 void printExtra() const;
197 void printExtra(std::ostream& os) const;
198
199
200private:
205 std::vector<uint32_t> m_FragChipCRCWords;
209 std::vector<uint32_t> m_FragChipCRCWordsHIGH;
214 std::vector<uint32_t> m_FragChipHeaderWords;
219 std::vector<uint32_t> m_FragChipHeaderWordsHIGH;
220
226 std::vector<uint32_t> m_FragExtraWords;
230 uint32_t m_FragSize;
234 uint32_t m_FragBCID;
235};
236
238
239#endif
240
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
SG::OwnershipPolicy ownPolicy() const
size_type size() const noexcept
TileDigitsCollection(SG::OwnershipPolicy ownPolicy=SG::OWN_ELEMENTS)
void setFragExtraWords(const std::vector< uint32_t > &extra)
Set vector of extra words for this collection.
const std::vector< uint32_t > & getFragChipCRCWords() const
Get chip CRC words for collection If calib mode, LOW gain CRC.
std::vector< uint32_t > m_FragChipHeaderWords
Header words from Frag data, one word for each chip LOW gain if calib mode.
void setFragChipCRCWordsHigh(std::vector< uint32_t > &&chipCRCWordsH)
friend class TileDigitsContainerCnv
const std::vector< uint32_t > & getFragChipHeaderWordsHigh() const
High gain headers.
void setFragSize(uint32_t s)
Set Frag size.
std::vector< uint32_t > m_FragChipCRCWordsHIGH
CRC words from Frag data, HIGH gain if in calib mode.
void clear()
Clear everything for next event.
const std::vector< uint32_t > & getFragChipHeaderWords() const
Get chip headers for this collcetion If calib mode, this is LOW gain headers.
const std::vector< uint32_t > & getFragChipCRCWordsHigh() const
High gain CRC.
TileDigitsCollection(TileDigitsCollection &&other)=default
Move constructor.
bool isCalibMode() const
Check if this Collection holds data from calibration mode.
uint32_t m_FragSize
Size of drawer fragment.
void setFragChipHeaderWords(const std::vector< uint32_t > &chipHWords)
Set chip header words for this collection If calib mode, this must be LOW gain headers.
std::vector< uint32_t > m_FragChipHeaderWordsHIGH
Header words from Frag data, one word for each chip HIGH gain if calib mode.
TileDigitsCollection(ID id, SG::OwnershipPolicy ownPolicy=SG::OWN_ELEMENTS)
uint32_t getFragSize() const
Get Frag size.
void setFragChipHeaderWords(std::vector< uint32_t > &&chipHWords)
TileDigitsCollection(SG::OwnershipPolicy ownPolicy, ID id)
std::vector< uint32_t > m_FragChipCRCWords
CRC words from Frag data, one word for each chip LOW gain if calib mode.
void setFragChipCRCWordsHigh(const std::vector< uint32_t > &chipCRCWordsH)
High gain CRC.
uint32_t getFragDMUMask() const
Get Frag DMU mask for this collection.
void setFragExtraWords(std::vector< uint32_t > &&extra)
uint32_t getFragBCID() const
Get BCID.
void setFragChipCRCWords(std::vector< uint32_t > &&chipCRCWords)
uint32_t getFragCRC() const
Set CRC word for collection.
uint32_t getFragStatus() const
void setFragChipCRCWords(const std::vector< uint32_t > &chipCRCWords)
Set chip CRC words for collection If calib mode, this is LOW gain CRC.
TileDigitsCollection(SG::OwnershipPolicy ownPolicy, ID id, uint32_t lvl1Id, uint32_t lvl1Type, uint32_t detEvType, uint32_t rodBCID, const std::vector< uint32_t > &fragChipCRCWords, const std::vector< uint32_t > &fragChipCRCWordsHIGH, const std::vector< uint32_t > &fragChipHeaderWords, const std::vector< uint32_t > &fragChipHeaderWordsHIGH, const std::vector< uint32_t > &fragExtraWords, uint32_t fragSize, uint32_t fragBCID)
void setFragChipHeaderWordsHigh(const std::vector< uint32_t > &chipHWordsH)
Header words in calib mode.
uint32_t getFragExtraWord(unsigned int i) const
void setFragBCID(uint32_t bcid)
Set BCID.
std::vector< uint32_t > m_FragExtraWords
all extra words from the trailer of the drawer fragment first two words are always DMU Mask and CRC w...
TileRawDataCollection< TileDigits > MyBase
void setFragChipHeaderWordsHigh(std::vector< uint32_t > &&chipHWordsH)
const std::vector< uint32_t > & getFragExtraWords() const
Get Frag extra words for this collection.
TileRawDataCollection(ID id, SG::OwnershipPolicy ownPolicy=SG::OWN_ELEMENTS)
OwnershipPolicy
@ OWN_ELEMENTS
this data object owns its elements