1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#include "EventFilter/EcalRawToDigi/interface/DCCEESRPBlock.h"
#include "EventFilter/EcalRawToDigi/interface/DCCDataBlockPrototype.h"
#include "EventFilter/EcalRawToDigi/interface/DCCDataUnpacker.h"
#include "EventFilter/EcalRawToDigi/interface/EcalElectronicsMapper.h"
DCCEESRPBlock::DCCEESRPBlock(DCCDataUnpacker *u, EcalElectronicsMapper *m, DCCEventBlock *e, bool unpack)
: DCCSRPBlock(u, m, e, unpack) {}
void DCCEESRPBlock::updateCollectors() {
// Set SR flag digis
eeSrFlagsDigis_ = unpacker_->eeSrFlagsCollection();
}
void DCCEESRPBlock::addSRFlagToCollection() {
// Point to SR flags
data_++;
const uint16_t *my16Bitp_ = reinterpret_cast<const uint16_t *>(data_);
for (unsigned int n = 0; n < expNumbSrFlags_; ++n) {
if (n != 0 && n % 4 == 0)
my16Bitp_++;
unsigned short srFlag = (*my16Bitp_ >> ((n - (n / 4) * 4) * 3)) & SRP_SRFLAG_MASK;
srFlags_[n] = srFlag;
if (unpackInternalData_) {
std::vector<EcalSrFlag *> srs = mapper_->getSrFlagPointer(n + 1);
for (size_t i = 0; i < srs.size(); ++i) {
srs[i]->setValue(srFlag);
(*eeSrFlagsDigis_)->push_back(*((EESrFlag *)srs[i]));
}
}
}
}
bool DCCEESRPBlock::checkSrpIdAndNumbSRFlags() {
expNumbSrFlags_ = 36; //to be corrected
int dccId = mapper_->getActiveDCC() - 600;
if (dccId == SECTOR_EEM_CCU_JUMP || dccId == SECTOR_EEP_CCU_JUMP)
expNumbSrFlags_ = 41;
//todo : checks to be implemented...
return true;
}
|