115 {
116 SG::ReadCondHandle<SCT_MonitorCondData> condDataHandle{
m_condKey, ctx};
117 if (not condDataHandle.
isValid()) {
119 return;
120 }
121 const SCT_MonitorCondData* condData{condDataHandle.
cptr() };
122 if (whandle) {
124 }
125 if (condData) {
129 }
132 }
133
135 if (chip_status.empty()) {
138 chip_status.resize(
m_pHelper->wafer_hash_max(),all_chips_set);
139 }
140
141 std::vector<std::vector<unsigned short> > &bad_strips = element_status.
getBadCells();
142 if (bad_strips.empty()) {
143 bad_strips.resize(
status.size());
144 }
145
146 std::vector<std::pair<unsigned int, unsigned int> > tmp_bad_strips;
147 for (
unsigned int module_hash=0; module_hash<
status.size(); ++module_hash) {
148 IdentifierHash moduleHash(module_hash);
149
150 std::vector<unsigned short> &bad_module_strips_out = bad_strips.at(module_hash);
151 std::array<unsigned int, SCT::N_CHIPS_PER_SIDE> bad_strip_counts{};
152
153 const std::array<std::bitset<SCT_ConditionsData::STRIPS_PER_CHIP>,
156
157 unsigned int strip_i=0;
158 tmp_bad_strips.clear();
160
161 for (const auto& chip_i : bad_module_strips_in) {
163
164 for (unsigned int strip_per_chip_i=0; strip_per_chip_i<chip_i.size(); ++strip_per_chip_i) {
165 if (chip_i.test(strip_per_chip_i)) {
166 tmp_bad_strips.emplace_back(geoemtrical_chip_id,strip_i);
167 ++bad_strip_counts.at(geoemtrical_chip_id);
168 }
169 ++strip_i;
170 }
171 }
172
174 for (unsigned int the_chip=0; the_chip< bad_strip_counts.size(); ++the_chip) {
176 }
177 chip_status[module_hash] &= ~bad_chips;
178
179 for (const std::pair<unsigned int, unsigned int> &chip_and_strip : tmp_bad_strips) {
180 unsigned int strip_i=chip_and_strip.second;
181 std::vector<unsigned short>::const_iterator
iter = std::lower_bound(bad_module_strips_out.begin(),bad_module_strips_out.end(),strip_i);
182 if (iter == bad_module_strips_out.end() || *iter != strip_i) {
183 bad_module_strips_out.insert( iter, strip_i);
184 }
185 }
186 }
187 }
188}
const std::vector< bool > & getElementStatus() const
const std::vector< ChipFlags_t > & getElementChipStatus() const
const std::vector< std::vector< unsigned short > > & getBadCells() const
unsigned short ChipFlags_t
const std::array< std::bitset< SCT_ConditionsData::STRIPS_PER_CHIP >, SCT_ConditionsData::CHIPS_PER_SIDE > & badStripsForModule(const IdentifierHash &waferHash) const
std::size_t nBadStripsForWafer(const IdentifierHash &waferHash) const
Get the number of bad strips for a wafer.
const_pointer_type cptr()
void addDependency(const EventIDRange &range)
constexpr unsigned int N_CHIPS_PER_SIDE
constexpr unsigned int getGeometricalChipID(unsigned int strip)
Get the geometrical chip ID for the given strip.
constexpr unsigned int N_SIDES