17 unsigned int numbOfPnBlocks = numbOfXtalBlocks / 5;
21 for (
unsigned int i = 0;
i < vectorSize;
i++) {
70 (*invalidMemBlockSizes_)->push_back(
id);
73 <<
" and tower block " <<
towerId_ <<
"\nExpected mem block size is " 85 <<
" bytes are available while " << (
blockLength_ * 8) <<
" are needed!";
89 (*invalidMemBlockSizes_)->push_back(
id);
102 <<
"Synchronization error for Mem block" 104 <<
" dccBx = " << dccBx <<
" bx_ = " <<
bx_ <<
" dccL1 = " << dccL1 <<
" l1_ = " <<
l1_ <<
"\n" 105 <<
" => Stop event unpacking";
128 (*invalidMemTtIds_)->push_back(
id);
169 for (
unsigned int expStripId = 1; expStripId <= 5; expStripId++) {
170 for (
unsigned int expXtalId = 1; expXtalId <= 5; expXtalId++) {
171 const uint16_t* xData_ =
reinterpret_cast<const uint16_t*
>(
data_);
177 bool errorOnDecoding(
false);
179 if (expStripId != stripId || expXtalId != xtalId) {
182 (*invalidMemChIds_)->push_back(
id);
187 <<
towerId_ <<
"\nThe expected strip is " << expStripId <<
" and " << stripId <<
" was found" 188 <<
"\nThe expected xtal is " << expXtalId <<
" and " << xtalId <<
" was found";
191 stripId = expStripId;
194 errorOnDecoding =
true;
199 unsigned int ipn,
index;
201 if ((stripId - 1) % 2 == 0) {
211 index = ipn * 50 + (stripId - 1) * nTSamples_ +
i;
220 if ((stripId - 1) % 2) {
222 for (
int ib = 0;
ib < 14;
ib++) {
224 sample |= (temp & 1);
233 unsigned int gain = sample >> 12;
237 (*invalidMemGains_)->push_back(
id);
242 <<
towerId_ <<
"\nIn strip " << stripId <<
" xtal " << xtalId <<
" the gain is " << gain
243 <<
" in sample " << (
i + 1);
246 errorOnDecoding =
true;
249 if (!errorOnDecoding && !
error_) {
262 for (
int pnId = 1; pnId <= 5; pnId++) {
263 bool errorOnPn(
false);
264 unsigned int realPnId = pnId;
289 edm::LogWarning(
"IncorrectMapping") <<
"\n mapper points to non existing dccid: " << activeSM;
300 if (pnDiodeData == -1) {
310 (*pnDiodeDigis_)->push_back(thePnDigi);
316 o <<
"\n Unpacked Info for DCC MEM Block" 317 <<
"\n DW1 ============================="
bool isSynced(const unsigned int dccBx, const unsigned int bx, const unsigned int dccL1, const unsigned int l1, const BlockType type, const unsigned int fov)
unsigned int getActiveDCC()
std::unique_ptr< EcalPnDiodeDigiCollection > * pnDiodeDigis_
std::unique_ptr< EcalElectronicsIdCollection > * invalidMemBlockSizesCollection()
unsigned int kSamplesPerPn_
Ecal readout channel identification [32:20] Unused (so far) [19:13] DCC id [12:6] tower [5:3] strip [...
unsigned int numbDWInXtalBlock_
unsigned int lastStripId_
std::unique_ptr< EcalElectronicsIdCollection > * invalidMemBlockSizes_
unsigned int expXtalTSamples_
unsigned int unfilteredTowerBlockLength_
std::unique_ptr< EcalElectronicsIdCollection > * invalidMemGainsCollection()
static std::atomic< bool > silentMode_
unsigned int blockLength_
std::unique_ptr< EcalPnDiodeDigiCollection > * pnDiodeDigisCollection()
unsigned int lastTowerBeforeMem_
void display(std::ostream &o) override
void setFESyncNumbers(short l1, short bx, short id)
unsigned int numbXtalTSamples()
std::unique_ptr< EcalElectronicsIdCollection > * invalidMemTtIdsCollection()
std::unique_ptr< EcalElectronicsIdCollection > * invalidMemChIdsCollection()
std::unique_ptr< EcalElectronicsIdCollection > * invalidMemChIds_
unsigned long long uint64_t
void fillPnDiodeDigisCollection()
unsigned int xtalBlockSize_
DCCDataUnpacker * unpacker_
unsigned int getUnfilteredTowerBlockLength()
char data[epos_bytes_allocation]
virtual void updateEventPointers()
void unpackMemTowerData()
void updateCollectors() override
std::unique_ptr< EcalElectronicsIdCollection > * invalidMemTtIds_
DCCMemBlock(DCCDataUnpacker *u, EcalElectronicsMapper *m, DCCEventBlock *e)
EcalElectronicsMapper * mapper_
void setSample(int i, const EcalFEMSample &sam)
std::unique_ptr< EcalElectronicsIdCollection > * invalidMemGains_
unsigned int getActiveSM()
int unpack(const uint64_t **data, unsigned int *dwToEnd, unsigned int expectedTowerID)