105def recover_empties(new_calib, ref_calib):
106
107 report_dict = dict()
108 report_counter_dict = {"empty" : 0 , "all_zeros":0}
109
110 for module, frontEnds in new_calib.items():
111
112 nFE = len(frontEnds)
113
114 for itr_fe in range(nFE):
115
116 failures = frontEnds[itr_fe].
count(0) + frontEnds[itr_fe].
count(-28284.3)
117
118 if failures != 0 :
119 if module not in report_dict:
120 report_dict[module] = []
121
122
123 if failures != len(frontEnds[itr_fe]):
124 report_counter_dict["empty"] += 1
125 report_dict[module].append(" FE%02d with %i zeros. Positions:" % (itr_fe,failures))
126
127
128 for itr_par in range(len(frontEnds[itr_fe])):
129 if( frontEnds[itr_fe][itr_par] == 0
or frontEnds[itr_fe][itr_par] == -28284.3):
130
131 report_dict[module][-1] = report_dict[module][-1] + (" %s,"%(str(itr_par)))
132
133
134 val_list = [new_calib[module][i][itr_par] for i in range(nFE) if new_calib[module][i][itr_par] != 0 ]
135 val_list_fit = [new_calib[module][i][itr_par] for i in range(nFE) if new_calib[module][i][itr_par] != 0 and new_calib[module][i][itr_par] != -28284.3 ]
136
137
138 if itr_par == 0:
139 new_calib[module][itr_fe][itr_par] = recover_thr(frontEnds[itr_fe][4], frontEnds[itr_fe][8], val_list, ref_calib[module][itr_fe][itr_par] )
140
141
142 elif itr_par == 4:
143 new_calib[module][itr_fe][itr_par] = recover_thr(frontEnds[itr_fe][0], frontEnds[itr_fe][8], val_list, ref_calib[module][itr_fe][itr_par])
144
145
146 elif itr_par == 8:
147 new_calib[module][itr_fe][itr_par] = recover_thr(frontEnds[itr_fe][0], frontEnds[itr_fe][4], val_list, ref_calib[module][itr_fe][itr_par])
148
149
150 else:
151
152 if itr_par == 13 or itr_par == 16:
153 new_calib[module][itr_fe][itr_par] = recover(val_list_fit, ref_calib[module][itr_fe][itr_par])
154 else:
155 new_calib[module][itr_fe][itr_par] = recover(val_list, ref_calib[module][itr_fe][itr_par])
156
157
158 else :
159 report_counter_dict["all_zeros"] += 1
160 report_dict[module].append(" FE%02d full copy" % itr_fe)
161 new_calib[module][itr_fe] = ref_calib[module][itr_fe]
162
163 return report_dict, report_counter_dict
164
int count(std::string s, const std::string ®x)
count how many occurances of a regx are in a string