32 {
34 std::vector<bool> &
status=element_status->getElementStatus();
37 }
38 std::vector<InDet::ChipFlags_t> &chip_status=element_status->getElementChipStatus();
39 if (chip_status.empty()) {
40 chip_status.resize(
status.size(),0xffff);
41 }
42
43 if (whandle) {
44 ATH_MSG_ERROR(
"PixelByteStreamErrorDetectorStatusTool is not for use with conditions objects");
46 }
47
50 if (!idcErrCont.isValid()) {
52 }
53 else {
54
56
69
80
81
82
84 unsigned int element_offset_i = (active_only ? 52736 : 0);
85
86 unsigned int element_i=0;
87 unsigned int maxHash =
m_pixelID->wafer_hash_max();
88
89 constexpr uint64_t missingErrorInfo{std::numeric_limits<uint64_t>::max()-3000000000};
90
91 for (const InDetDD::SiDetectorElement *element : element_status->getDetectorElements()) {
92 const InDetDD::PixelModuleDesign *p_design = static_cast<const InDetDD::PixelModuleDesign*>(&element->design());
95
96
97 status.at(element_i) =
status.at(element_i) && not ( readout_technology_flags
98 && ( !active_only
99 ? isBSError(
static_cast<uint64_t>(idcCachePtr->
retrieve(element_i)), missingErrorInfo, error_mask)
100 : idcCachePtr->
retrieve(element_i+element_offset_i)!=1 ));
101
102
103 if (status[element_i]) {
106 assert( chip_mask != 0 );
108 if (!active_only) {
109 for (unsigned int chip_i =0; chip_i < number_of_chips; ++chip_i) {
110
111 unsigned int indexFE = (1+chip_i)*maxHash + element_i;
113 && (isBSError(
static_cast<uint64_t>(idcCachePtr->
retrieve(indexFE)), missingErrorInfo, chip_error_mask)));
114 bs_status_flags |= (chip_flag << chip_i);
115 }
116 }
117 chip_status[element_i] &= (bs_status_flags & chip_mask);
118 }
119 else {
120 chip_status[element_i] = 0;
121 }
122 ++element_i;
123 }
124 }
125 }
126
127 return element_status;
128}
IdentifiableValueCache< IDCInDetBSErrContainer::ErrorCode > IDCInDetBSErrContainer_Cache
T retrieve(size_t i)
Retrieve the Value stored in that hash.
PixelReadoutTechnology getReadoutTechnology() const
int numberOfCircuits() const
Total number of circuits:
unsigned short ChipFlags_t
constexpr IDCInDetBSErrContainer::ErrorCode makeError(PixelErrorsEnum errType)
helper to be used in clients to fetch error information
unsigned int makeReadoutTechnologyBit(InDetDD::PixelReadoutTechnology technology, unsigned int bit_val=1)
Create a word with a bit representing the given readout technology to the given value.