21 ATH_MSG_WARNING(
"No decoration prefix name provided for the output of EventInfoPixelModuleStatusMonitoring!");
41 std::vector<std::string> moduleConditionList;
42 moduleConditionList.emplace_back(
"PixelBiasVoltagePerLB");
43 moduleConditionList.emplace_back(
"PixelTemperaturePerLB");
48 std::vector<std::string> moduleFEmaskList;
49 moduleFEmaskList.emplace_back(
"PixelFEmaskIndex");
50 moduleFEmaskList.emplace_back(
"PixelFEmaskPerLB");
51 moduleFEmaskList.emplace_back(
"PixelDCSStatePerLB");
52 moduleFEmaskList.emplace_back(
"PixelDCSStatusPerLB");
57 std::vector<std::string> moduleBSErrList;
58 moduleBSErrList.emplace_back(
"PixelBSErrIndex");
59 moduleBSErrList.emplace_back(
"PixelBSErrWord");
63 return StatusCode::SUCCESS;
67 return StatusCode::SUCCESS;
74 const EventContext& ctx = Gaudi::Hive::currentContext();
82 if (chkLB==0) { chkLB=-1; }
94 std::vector<float> biasVoltage;
95 std::vector<float> temperature;
96 std::vector<int> activeState;
97 std::vector<int> activeStatus;
98 std::vector<int> feMaskIndex;
99 std::vector<int> feMaskStatus;
100 bool storeLB =
false;
115 for (
int ihash=0; ihash<maxHash; ihash++) {
123 if (moduleStatus || chipStatus) {
124 feMaskIndex.push_back(ihash);
126 feMaskStatus.push_back(0);
129 feMaskStatus.push_back(chipStatus);
168 std::vector<uint64_t> bsErrIndex;
169 std::vector<uint64_t> bsErrWord;
182 for (
int ihash=0; ihash<maxHash; ihash++) {
183 for (
int chFE=0; chFE<16; chFE++) {
184 int indexFE = (1+chFE)*maxHash+ihash;
193 bsErrIndex.push_back(indexFE);
194 bsErrWord.push_back(word);
199 int indexOffset = 17*maxHash;
200 for (
int ihash=156; ihash<436; ihash++) {
201 for (
int chFE=0; chFE<2; chFE++) {
202 for (
int serviceCode=0; serviceCode<32; serviceCode++) {
203 int indexSvcCounter = indexOffset+serviceCode*280*2+2*(ihash-156)+chFE;
212 bsErrIndex.push_back(indexSvcCounter);
213 bsErrWord.push_back(word);
221 assert(decorModuleCondition.size()==2);
222 decorModuleCondition[0](*eventInfo) = std::move(biasVoltage);
223 decorModuleCondition[1](*eventInfo) = std::move(temperature);
226 assert(decorModuleFEmask.size()==2);
227 decorModuleFEmask[0](*eventInfo) = std::move(feMaskIndex);
228 decorModuleFEmask[1](*eventInfo) = std::move(feMaskStatus);
229 decorModuleFEmask[2](*eventInfo) = std::move(activeState);
230 decorModuleFEmask[3](*eventInfo) = std::move(activeStatus);
233 assert(decorModuleBSErr.size()==2);
234 decorModuleBSErr[0](*eventInfo) = std::move(bsErrIndex);
235 decorModuleBSErr[1](*eventInfo) = std::move(bsErrWord);
237 return StatusCode::SUCCESS;