File indexing completed on 2024-04-06 12:10:35
0001 #include "EventFilter/EcalRawToDigi/interface/DCCEESRPBlock.h"
0002 #include "EventFilter/EcalRawToDigi/interface/DCCDataBlockPrototype.h"
0003 #include "EventFilter/EcalRawToDigi/interface/DCCDataUnpacker.h"
0004 #include "EventFilter/EcalRawToDigi/interface/EcalElectronicsMapper.h"
0005
0006 DCCEESRPBlock::DCCEESRPBlock(DCCDataUnpacker *u, EcalElectronicsMapper *m, DCCEventBlock *e, bool unpack)
0007 : DCCSRPBlock(u, m, e, unpack) {}
0008
0009 void DCCEESRPBlock::updateCollectors() {
0010
0011 eeSrFlagsDigis_ = unpacker_->eeSrFlagsCollection();
0012 }
0013
0014 void DCCEESRPBlock::addSRFlagToCollection() {
0015
0016 data_++;
0017 const uint16_t *my16Bitp_ = reinterpret_cast<const uint16_t *>(data_);
0018
0019 for (unsigned int n = 0; n < expNumbSrFlags_; ++n) {
0020 if (n != 0 && n % 4 == 0)
0021 my16Bitp_++;
0022
0023 unsigned short srFlag = (*my16Bitp_ >> ((n - (n / 4) * 4) * 3)) & SRP_SRFLAG_MASK;
0024 srFlags_[n] = srFlag;
0025 if (unpackInternalData_) {
0026 std::vector<EcalSrFlag *> srs = mapper_->getSrFlagPointer(n + 1);
0027 for (size_t i = 0; i < srs.size(); ++i) {
0028 srs[i]->setValue(srFlag);
0029 (*eeSrFlagsDigis_)->push_back(*((EESrFlag *)srs[i]));
0030 }
0031 }
0032 }
0033 }
0034
0035 bool DCCEESRPBlock::checkSrpIdAndNumbSRFlags() {
0036 expNumbSrFlags_ = 36;
0037
0038 int dccId = mapper_->getActiveDCC() - 600;
0039 if (dccId == SECTOR_EEM_CCU_JUMP || dccId == SECTOR_EEP_CCU_JUMP)
0040 expNumbSrFlags_ = 41;
0041
0042
0043 return true;
0044 }