16 ATH_MSG_WARNING(
"No decoration prefix name provided for the output of EventInfoPixelModuleStatusMonitoring!");
36 std::vector<std::string> moduleConditionList;
37 moduleConditionList.emplace_back(
"PixelBiasVoltagePerLB");
38 moduleConditionList.emplace_back(
"PixelTemperaturePerLB");
43 std::vector<std::string> moduleFEmaskList;
44 moduleFEmaskList.emplace_back(
"PixelFEmaskIndex");
45 moduleFEmaskList.emplace_back(
"PixelFEmaskPerLB");
46 moduleFEmaskList.emplace_back(
"PixelDCSStatePerLB");
47 moduleFEmaskList.emplace_back(
"PixelDCSStatusPerLB");
52 std::vector<std::string> moduleBSErrList;
53 moduleBSErrList.emplace_back(
"PixelBSErrIndex");
54 moduleBSErrList.emplace_back(
"PixelBSErrWord");
58 return StatusCode::SUCCESS;
70 ATH_CHECK(evtStore()->retrieve(eventInfoLB,
"EventInfo"));
73 if (chkLB==0) { chkLB=-1; }
84 int maxHash =
m_pixelID->wafer_hash_max();
85 std::vector<float> biasVoltage;
86 std::vector<float> temperature;
87 std::vector<int> activeState;
88 std::vector<int> activeStatus;
89 std::vector<int> feMaskIndex;
90 std::vector<int> feMaskStatus;
106 for (
int ihash=0; ihash<maxHash; ihash++) {
107 biasVoltage.push_back(dcsHV->getBiasVoltage(ihash));
108 temperature.push_back(dcsTemp->getTemperature(ihash));
109 activeState.push_back(dcsState->getModuleStatus(ihash));
110 activeStatus.push_back(dcsStatus->getModuleStatus(ihash));
112 int moduleStatus = deadMap->getModuleStatus(ihash);
113 int chipStatus = deadMap->getChipStatus(ihash);
114 if (moduleStatus || chipStatus) {
115 feMaskIndex.push_back(ihash);
117 feMaskStatus.push_back(0);
120 feMaskStatus.push_back(chipStatus);
159 std::vector<uint64_t> bsErrIndex;
160 std::vector<uint64_t> bsErrWord;
173 for (
int ihash=0; ihash<maxHash; ihash++) {
174 for (
int chFE=0; chFE<16; chFE++) {
175 int indexFE = (1+chFE)*maxHash+ihash;
184 bsErrIndex.push_back(indexFE);
185 bsErrWord.push_back(word);
190 int indexOffset = 17*maxHash;
191 for (
int ihash=156; ihash<436; ihash++) {
192 for (
int chFE=0; chFE<2; chFE++) {
193 for (
int serviceCode=0; serviceCode<32; serviceCode++) {
194 int indexSvcCounter = indexOffset+serviceCode*280*2+2*(ihash-156)+chFE;
203 bsErrIndex.push_back(indexSvcCounter);
204 bsErrWord.push_back(word);
212 assert(decorModuleCondition.size()==2);
213 decorModuleCondition[0](*eventInfo) = std::move(biasVoltage);
214 decorModuleCondition[1](*eventInfo) = std::move(temperature);
217 assert(decorModuleFEmask.size()==2);
218 decorModuleFEmask[0](*eventInfo) = std::move(feMaskIndex);
219 decorModuleFEmask[1](*eventInfo) = std::move(feMaskStatus);
220 decorModuleFEmask[2](*eventInfo) = std::move(activeState);
221 decorModuleFEmask[3](*eventInfo) = std::move(activeStatus);
224 assert(decorModuleBSErr.size()==2);
225 decorModuleBSErr[0](*eventInfo) = std::move(bsErrIndex);
226 decorModuleBSErr[1](*eventInfo) = std::move(bsErrWord);
228 return StatusCode::SUCCESS;
unsigned int getBSErrorWord(const InDet::SiDetectorElementStatus &elementStatus, const IDCInDetBSErrContainer &bsErrorContainer, const IdentifierHash &moduleIdHash, unsigned int index, unsigned int readOutTechnologyMask=(Pixel::makeReadoutTechnologyBit(InDetDD::PixelReadoutTechnology::FEI4)|(Pixel::makeReadoutTechnologyBit(InDetDD::PixelReadoutTechnology::FEI3))))
Retrieve the bytestream error word for the given module if the readout technology of the module is co...