134 Define TGraphs for filling
145 legsum = ROOT.TLegend(0.75, 0.65, 0.90, 0.85)
146 legsum.SetFillStyle(0)
147 legsum.SetBorderSize(0)
148 legsum.SetTextFont(43)
149 legsum.SetTextSize(18)
150 legocc = deepcopy(legsum)
151 self.
sum_graphs[
"TLegends"] = {
"sum": legsum,
"occ": legocc}
153 for category, style_dict
in plot_type_dict.items():
154 agraph = ROOT.TGraph()
155 agraph.SetLineColor(style_dict[
"color"])
156 agraph.SetMarkerColor(style_dict[
"color"])
157 agraph.SetMarkerStyle(20)
158 if category ==
"hot_dead":
159 agraph.GetYaxis().SetTitle(
'Total Hot/Dead pixels [%]')
160 agraph.SetMaximum(style_dict[
"max"])
161 elif category ==
"occ_no_mask":
162 agraph.GetYaxis().SetTitle(
'Average occupancy [%]')
163 agraph.SetMaximum(style_dict[
"max"])
164 agraph.GetXaxis().SetTitle(
'run #')
165 agraph.GetYaxis().SetTitleOffset(0.9)
166 agraph.SetMinimum(0.0)
171 Fill TGraphs, will be executed for each run
178 current_run = dead_checker.run
182 sum_deadfraction = 0.
183 sum_hotdeadfraction = 0.
184 sum_occupancymasked = 0.
185 sum_occupancynomask = 0.
186 for sensorID
in sensorID_list:
187 numID = sensorID.getID()
189 g1 = masked_graphs[numID]
190 g2 = dead_graphs[numID]
191 g3 = occ_graphs[numID]
193 hotfraction = g1.GetPointY(g1.GetN() - 1)
194 deadfraction = g2.GetPointY(g2.GetN() - 1)
195 occupancymasked = g3.GetPointY(g3.GetN() - 1)
198 saved_run = max(g1.GetPointX(g1.GetN() - 1), g2.GetPointX(g2.GetN() - 1))
199 saved_run_occ = max(saved_run, g3.GetPointX(g3.GetN() - 1))
200 if current_run == saved_run:
201 self.
hotdead_graphs[numID].append(current_run, hotfraction + deadfraction)
202 sum_hotfraction += hotfraction
203 sum_deadfraction += deadfraction
204 sum_hotdeadfraction += hotfraction + deadfraction
205 if current_run == saved_run_occ:
208 if deadfraction != 100.:
209 occupancynomask = (occupancymasked + hotfraction) / (1. - deadfraction / 100)
210 occupancymasked = occupancymasked / (1. - deadfraction / 100)
213 sum_occupancymasked += occupancymasked
214 sum_occupancynomask += occupancynomask
222 nSensors = len(sensorID_list)
223 if current_run == saved_run:
224 self.
sum_graphs[
"hot"].append(current_run, sum_hotfraction / nSensors)
225 self.
sum_graphs[
"dead"].append(current_run, sum_deadfraction / nSensors)
226 self.
sum_graphs[
"hot_dead"].append(current_run, sum_hotdeadfraction / nSensors)
228 nSensors = nSensors - len(dead_checker.dbObj.getDeadSensorMap())
229 if current_run == saved_run_occ
and nSensors > 0:
230 self.
sum_graphs[
"occ_masked"].append(current_run, sum_occupancymasked / nSensors)
231 self.
sum_graphs[
"occ_no_mask"].append(current_run, sum_occupancynomask / nSensors)
235 Generate summary plots from TGraphs of all condition checkers
245 canvas = ROOT.TCanvas(
'c_pxd',
'c_pxd', 1000, 400)
252 canvas=canvas, cname=
"PXDHotnDeadPixel", ymin=0., ymax=plot_type_dict[
"hot_dead"][
"max"])
253 checker.draw_plots(canvas=canvas, cname=
"PXDHotnDeadPixel", ymin=0., ymax=
None, logy=
True)
258 canvas=canvas, cname=
"PXDOccupancyWithMask", ymin=0., ymax=plot_type_dict[
"occ_masked"][
"max"])
259 checker.draw_plots(canvas=canvas, cname=
"PXDOccupancyWithMask", ymin=0., ymax=
None, logy=
True)
263 canvas=canvas, cname=
"PXDOccupancyNoMask", ymin=0., ymax=plot_type_dict[
"occ_no_mask"][
"max"])
264 checker.draw_plots(canvas=canvas, cname=
"PXDOccupancyNoMask", ymin=0., ymax=
None, logy=
True)
279 leg.AddEntry(g1,
'Hot+Dead pixels',
'p')
280 leg.AddEntry(g2,
'Hot pixels',
'p')
281 leg.AddEntry(g3,
'Dead pixels',
'p')
283 checker.save_canvas(canvas,
"PXDTotalHotnDeadPixel", logy=
True)
285 checker.save_canvas(canvas,
"PXDTotalHotnDeadPixel", logy=
False)
293 leg.AddEntry(g1,
'No Mask',
'p')
294 leg.AddEntry(g2,
'With Mask',
'p')
296 checker.save_canvas(canvas,
"PXDTotalOccupancy", logy=
True)
298 checker.save_canvas(canvas,
"PXDTotalOccupancy", logy=
False)