19 return StatusCode::SUCCESS;
22 template <
class WriteCont>
27 return StatusCode::SUCCESS;
32 return StatusCode::SUCCESS;
41 if (writeHandle.isValid()) {
42 ATH_MSG_DEBUG(
"CondHandle " << writeHandle.fullKey() <<
" is already valid."
43 <<
" In theory this should not be called, but may happen"
44 <<
" if multiple concurrent events are being processed out of order.");
45 return StatusCode::SUCCESS;
50 std::unique_ptr<RpcCondDbData> writeCdo{std::make_unique<RpcCondDbData>()};
54 ATH_CHECK(writeHandle.record(std::move(writeCdo)));
55 ATH_MSG_DEBUG(
"Recorded new " << writeHandle.key() <<
" with range " << writeHandle.getRange() <<
" into Conditions Store");
57 return StatusCode::SUCCESS;
64 ATH_MSG_DEBUG(
"Size of CondAttrListCollection " << readCdo.fullKey() <<
" readCdo->size()= " << readCdo->size());
67 unsigned int chan_index = 0;
68 unsigned int iFracDeadStrip = 0;
69 for (itr = readCdo->begin(); itr != readCdo->end(); ++itr) {
76 eff_panel = *(
static_cast<const std::string*
>((atr[
"PanelRes"]).addressOfData()));
77 striplist = *(
static_cast<const std::string*
>((atr[
"StripStatus"]).addressOfData()));
79 ATH_MSG_DEBUG(
"-----------------------------entry #" << chan_index);
82 ATH_MSG_DEBUG(
"striplist load is " << striplist <<
" " << striplist.size());
85 constexpr std::string_view
delimiter{
" "};
112 if (info_panel.size() > 20) {
121 ATH_MSG_DEBUG(
"Panel with incomplete info in the DB, size = " << info_panel.size() <<
" instead of required >20");
123 ATH_MSG_DEBUG(
"Cluster Size 1 and 2 fractions are set to 0.6 and 0.2 for this chamber.");
129 int countdeadstrip = 0;
130 int countdeadstripinfidarea = 0;
131 int countpanelstrip = 0;
135 constexpr std::string_view delimiter_strip{
"|"};
139 if (info_strip.size() > 1) {
140 for (
unsigned int i = 0;
i < info_strip.size(); ++
i) {
141 const std::string &ch_strip2 = info_strip[
i];
143 constexpr std::string_view delimiter_strip2{
" "};
149 const auto &strip_status = info_strip2[0];
154 stripnum = channum +
i * 4;
155 strip_id = channum +
i * 4;
157 ATH_MSG_DEBUG(
"strip " << strip_id <<
" has time " <<
Time <<
" and " << SigmaTime);
161 ATH_MSG_VERBOSE(
"strip #" <<
i + 1 <<
" strip_id " << stripnum <<
" expanded "
166 if (strip_status[0] ==
'0') {
168 if (
i > 1 &&
i < info_strip.size() - 2) {
170 ++countdeadstripinfidarea;
177 for (
unsigned int i = 0;
i < striplist.size();
i++) {
178 char part_strip = striplist[
i];
180 char ch_panel = part_strip;
186 ATH_MSG_VERBOSE(
"strip #" <<
i + 1 <<
" info_strip " << part_strip <<
" strip_id " << stripnum <<
" expanded "
187 <<
m_idHelperSvc->toString(strip_id) <<
" panel = " << ch_panel);
191 if (part_strip ==
'0') {
193 if (
i > 1 &&
i < striplist.size() - 2) {
195 ++countdeadstripinfidarea;
201 if (countpanelstrip != npanelstrip)
203 "WARNING (no side effects for this, just a reminder for a proper fix of the DB content) no matching strip number!!! "
204 << countpanelstrip <<
" != " << npanelstrip <<
" Identifier: " << channum);
206 float FracDeadStripMap = 0;
207 if (countpanelstrip - 4 > 0) FracDeadStripMap =
float(countdeadstripinfidarea) /
float(countpanelstrip - 4);
213 std::stringstream
ss;
215 ss <<
"Size of RPC_PanelFracDeadStripMap " << iFracDeadStrip <<
"; in panel ";
216 ss << channum <<
" FracDeadStri(in fid.area) " << FracDeadStripMap <<
" (incl. borders) ";
217 if (countpanelstrip == 0)
218 ss <<
"DIVISION BY ZERO IMPOSSIBLE";
221 ss <<
" nDeadStrips,InFidArea/nStrips " << countdeadstrip <<
",";
222 ss << countdeadstripinfidarea <<
"/" << countpanelstrip;
226 ATH_MSG_DEBUG(
"Efficiency is " << Efficiency <<
" and fraction is " << FracDeadStripMap <<
" and thus "
227 << Efficiency - (0.99 - FracDeadStripMap));
230 (Efficiency < 0.995 || FracDeadStripMap > 0.01) && (Efficiency > 0.005 || FracDeadStripMap < 0.99)) {
231 std::stringstream
msg;
232 msg <<
"WARNING: Inconsistent panel eff.=" << Efficiency <<
" and 0.99-dead_frac=" << 0.99 - FracDeadStripMap
233 <<
" nDeadStrips,InFidArea/nStrips " << countdeadstrip <<
"," << countdeadstripinfidarea <<
"/" << countpanelstrip
235 if (Efficiency - (0.99 - FracDeadStripMap) > 0.2)
236 msg <<
" difference >0.2";
237 else if (Efficiency - (0.99 - FracDeadStripMap) > 0.1)
238 msg <<
" difference >0.1";
239 else if (Efficiency - (0.99 - FracDeadStripMap) > 0.05)
240 msg <<
" difference >0.05";
241 else if (Efficiency - (0.99 - FracDeadStripMap) > 0.025)
242 msg <<
" difference >0.025";
243 else if (Efficiency - (0.99 - FracDeadStripMap) > 0.01)
244 msg <<
" difference >0.01";
246 msg <<
" difference >0 but <=0.01";
251 return StatusCode::SUCCESS;