16 declareInterface<DerivationFramework::IAugmentationTool>(
this);
22 ATH_MSG_WARNING(
"No decoration prefix name provided for the output of EventInfoPixelModuleStatusMonitoring!");
42 std::vector<std::string> moduleConditionList;
43 moduleConditionList.emplace_back(
"PixelBiasVoltagePerLB");
44 moduleConditionList.emplace_back(
"PixelTemperaturePerLB");
49 std::vector<std::string> moduleFEmaskList;
50 moduleFEmaskList.emplace_back(
"PixelFEmaskIndex");
51 moduleFEmaskList.emplace_back(
"PixelFEmaskPerLB");
52 moduleFEmaskList.emplace_back(
"PixelDCSStatePerLB");
53 moduleFEmaskList.emplace_back(
"PixelDCSStatusPerLB");
58 std::vector<std::string> moduleBSErrList;
59 moduleBSErrList.emplace_back(
"PixelBSErrIndex");
60 moduleBSErrList.emplace_back(
"PixelBSErrWord");
64 return StatusCode::SUCCESS;
68 return StatusCode::SUCCESS;
75 const EventContext& ctx = Gaudi::Hive::currentContext();
83 if (chkLB==0) { chkLB=-1; }
95 std::vector<float> biasVoltage;
96 std::vector<float> temperature;
97 std::vector<int> activeState;
98 std::vector<int> activeStatus;
99 std::vector<int> feMaskIndex;
100 std::vector<int> feMaskStatus;
101 bool storeLB =
false;
116 for (
int ihash=0; ihash<maxHash; ihash++) {
124 if (moduleStatus || chipStatus) {
125 feMaskIndex.push_back(ihash);
127 feMaskStatus.push_back(0);
130 feMaskStatus.push_back(chipStatus);
169 std::vector<uint64_t> bsErrIndex;
170 std::vector<uint64_t> bsErrWord;
183 for (
int ihash=0; ihash<maxHash; ihash++) {
184 for (
int chFE=0; chFE<16; chFE++) {
185 int indexFE = (1+chFE)*maxHash+ihash;
194 bsErrIndex.push_back(indexFE);
195 bsErrWord.push_back(word);
200 int indexOffset = 17*maxHash;
201 for (
int ihash=156; ihash<436; ihash++) {
202 for (
int chFE=0; chFE<2; chFE++) {
203 for (
int serviceCode=0; serviceCode<32; serviceCode++) {
204 int indexSvcCounter = indexOffset+serviceCode*280*2+2*(ihash-156)+chFE;
213 bsErrIndex.push_back(indexSvcCounter);
214 bsErrWord.push_back(word);
222 assert(decorModuleCondition.size()==2);
223 decorModuleCondition[0](*eventInfo) = std::move(biasVoltage);
224 decorModuleCondition[1](*eventInfo) = std::move(temperature);
227 assert(decorModuleFEmask.size()==2);
228 decorModuleFEmask[0](*eventInfo) = std::move(feMaskIndex);
229 decorModuleFEmask[1](*eventInfo) = std::move(feMaskStatus);
230 decorModuleFEmask[2](*eventInfo) = std::move(activeState);
231 decorModuleFEmask[3](*eventInfo) = std::move(activeStatus);
234 assert(decorModuleBSErr.size()==2);
235 decorModuleBSErr[0](*eventInfo) = std::move(bsErrIndex);
236 decorModuleBSErr[1](*eventInfo) = std::move(bsErrWord);
238 return StatusCode::SUCCESS;