3 from __future__
import print_function
5 from ROOT
import TBufferFile, TH1F, TProfile, TProfile2D, TH2F, TFile, TH1D, TH2D
10 def draw_line(lineList,x1,x2,y1,y2,width=1,style=1,color=1):
11 from ROOT
import TLine
13 l.SetBit(ROOT.kCanDelete)
20 def draw_box(boxList,xl,xr,yl,yr,opacity=1,color=1,style=1001,lstyle=1,lw=3):
23 b.SetBit(ROOT.kCanDelete)
25 b.SetFillColorAlpha(color, opacity)
28 b.SetLineStyle(lstyle)
33 from ROOT
import TCanvas,TLine
35 coordSign=[(-1,-1),(-1,1),(1,-1),(1,1)]
36 for xsign,ysign
in coordSign:
40 yhigh= ysign*(0.5 + nlad[layer-1])
42 draw_line(lineList,xlow, xhigh, ylow, ylow)
43 draw_line(lineList,xlow, xhigh, yhigh, yhigh)
44 draw_line(lineList,xlow, xlow, ylow, yhigh)
45 draw_line(lineList,xhigh, xhigh, ylow, yhigh)
47 for lad
in range(nlad[layer-1]):
49 if lad != nlad[layer-1]:
53 draw_line(lineList,xlow, xhigh, y, y, 1, 3);
57 x = xsign * (mod + 0.5);
63 for lad
in range(nlad[layer-1]):
66 flipped = not(lad%2==0)
68 flipped = not(lad%2==1)
69 if flipped : roc0_orientation = -1
70 else : roc0_orientation = 1
71 if xsign==-1 : roc0_orientation *= -1
72 if ysign==-1 : roc0_orientation *= -1
73 x1 = xsign * (mod+0.5)
74 x2 = xsign * (mod+0.5 - 1./8);
76 y2 = ysign * (lad + roc0_orientation*1./2)
77 if layer == 1
and xsign == -1 :
78 x1 = xsign * (mod-0.5)
79 x2 = xsign * (mod-0.5 + 1./8)
81 y2 = ysign * (lad - roc0_orientation*1./2)
95 rocShiftX=(15-roc)*1./8
98 flipped = not(lad%2==0)
100 flipped = not(lad%2==1)
101 if flipped : roc0_orientation = -1
102 else : roc0_orientation = 1
103 if xsign==-1 : roc0_orientation *= -1
104 if ysign==-1 : roc0_orientation *= -1
105 x1 = xsign * (mod+0.5-rocShiftX)
106 x2 = xsign * (mod+0.5 - 1./8-rocShiftX);
107 y1 = ysign * (lad-roc0_orientation*rocShiftY)
108 y2 = ysign * (lad + roc0_orientation*1./2-roc0_orientation*rocShiftY)
109 if layer == 1
and xsign == -1 :
110 x1 = xsign * (mod-0.5)-rocShiftX
111 x2 = xsign * (mod-0.5 + 1./8)-rocShiftX
112 y1 = ysign * (lad +rocShiftY)
113 y2 = ysign * (lad - roc0_orientation*1./2+rocShiftY)
119 from ROOT
import TCanvas,TLine
120 coordSign=[(-1,-1),(-1,1),(1,-1),(1,1)]
121 for dsk
in range(3) :
123 for xsign,ysign
in coordSign:
124 for bld
in range(5+ring*6):
127 x1 = xsign * (0.5 + dsk - 1)
128 x2 = xsign * (0.5 + dsk)
130 y1 = ysign * (bld + sign*0.5)
132 yp2_mid = ysign * (bld - sign*0.25)
133 y3 = ysign * (bld - sign*0.5)
136 draw_line(lineList,x1, x2, yp2_mid, yp2_mid,1,2)
139 x = xsign * (0.5 + dsk - 1)
143 x = xsign * (0.5 + dsk)
147 x1 = xsign * (0.5 + dsk - 1/8.)
148 x2 = xsign * (0.5 + dsk)
149 y1_p1 = ysign * (bld + sign*0.25)
150 y2_p1 = ysign * (bld + sign*0.25 + xsign*ysign*0.25)
151 draw_line(lineList,x1, x2, y1_p1, y1_p1, 1)
152 draw_line(lineList,x1, x1, y1_p1, y2_p1, 1)
153 y1_p2 = ysign * (bld - sign*0.25)
154 y2_p2 = ysign * (bld - sign*0.25 - xsign*ysign*0.25)
159 from ROOT
import TCanvas,TLine
164 rocShiftX=(15-roc)*1./8
167 x1 = xsign * (0.5 + dsk - 1/8.-rocShiftX)
168 x2 = xsign * (0.5 + dsk-rocShiftX)
170 y1 = ysign * (bld + sign*0.25)-xsign*rocShiftY
171 y2 = ysign * (bld + sign*0.25 + xsign*ysign*0.25)-xsign*rocShiftY
173 y1 = ysign * (bld - sign*0.25)+xsign*rocShiftY
174 y2 = ysign * (bld - sign*0.25 - xsign*ysign*0.25)+xsign*rocShiftY
179 datareq = urllib2.Request((
'%s/data/json/samples?match=%s') % (server, match))
180 datareq.add_header(
'User-agent', ident)
182 data = eval(re.sub(
r"\bnan\b",
"0", urllib2.build_opener(X509CertOpen()).open(datareq).
read()),
183 {
"__builtins__":
None }, {})
185 for l
in data[
'samples']:
186 if l[
'type'] == type:
188 if int(x[
'run']) ==
int(run):
202 if len(sys.argv) != 3:
203 print(
"input files needed!")
208 print(filename+
" -- "+filename[19:25])
209 print(pclfile+
" -- "+pclfile[19:25])
210 runNum=filename[19:25]
212 dir=
"DQMData/Run " + runNum +
"/PixelPhase1/Run summary/Pahse1_MechanicalView/"
213 dirERROR=
"DQMData/Run " + runNum +
"/PixelPhase1/Run summary/SiPixelQualityPCL/BadROC_FEDerror/"
216 dirBPix=dir +
"PXBarrel/"
217 dirFPix=dir +
"PXForward/"
219 hoccB=
"digi_occupancy_per_SignedModuleCoord_per_SignedLadderCoord_PXLayer_"
220 hoccF=
"digi_occupancy_per_SignedDiskCoord_per_SignedBladePanelCoord_PXRing_"
221 hdeadB=
"Dead Channels per ROC_per_SignedModuleCoord_per_SignedLadderCoord_PXLayer_"
222 hdeadF=
"Dead Channels per ROC_per_SignedDiskCoord_per_SignedBladePanelCoord_PXRing_"
224 ROOT.gROOT.SetBatch(1)
225 ROOT.gStyle.SetOptStat(0)
226 ROOT.gStyle.SetPalette(52)
228 for i
in range(0,255):
229 color.append(ROOT.TColor.GetColorPalette(i))
230 ROOT.gStyle.SetPalette(1)
231 ROOT.gStyle.SetNumberContours(128)
232 rootf=ROOT.TFile(filename)
233 rootp=ROOT.TFile(pclfile)
237 c=ROOT.TCanvas(
"c",
"c",1250,1000)
239 print(
"----> Build maps for BPix")
242 for lyr
in range(1,5):
243 histOccList.append(rootf.FindObjectAny(hdeadB+
str(lyr)))
244 histDeadList.append(rootp.Get(dirERROR+hdeadB+
str(lyr)))
245 for hist1, hist2
in zip(histOccList, histDeadList):
246 if hist1 !=
None or hist2 !=
None:
248 match=re.search(
'(?<=PXLayer_)[0-9]',hist1.GetName())
249 if match !=
None and "per_SignedModuleCoord_per_SignedLadderCoord" in hist1.GetName():
250 lyr=
int(match.group(0))
251 hist1.SetTitle(
"Digi Occupancy Layer {0}".
format(lyr))
264 maxx=hist2.GetMaximum()
265 for biny
in range(1,hist2.GetNbinsY()+1):
267 x1=hist2.GetXaxis().GetBinLowEdge(binTBM[0])
268 x2=hist2.GetXaxis().GetBinUpEdge(binTBM[len(binTBM)-1])
269 y1=hist2.GetYaxis().GetBinLowEdge(biny-1)
270 y2=hist2.GetYaxis().GetBinUpEdge(biny-1)
271 draw_box(boxList,x1,x2,y1,y2,0.2,color[100+
int((224-100)*(1-hist2.GetBinContent(binTBM[0],biny-1)/maxx))],0,1,lineWd)
274 for binx
in range(1,hist2.GetNbinsX()+1):
277 elif hist2.GetBinContent(binx,biny)==hist2.GetBinContent(binTBM[len(binTBM)-1],biny):
281 if hist2.GetBinContent(binx,biny)!=0
and check:
285 if len(binTBM)==(tbmRoc):
286 x1=hist2.GetXaxis().GetBinLowEdge(binTBM[0])
287 x2=hist2.GetXaxis().GetBinUpEdge(binTBM[len(binTBM)-1])
288 y1=hist2.GetYaxis().GetBinLowEdge(biny)
289 y2=hist2.GetYaxis().GetBinUpEdge(biny)
290 draw_box(boxList,x1,x2,y1,y2,0.2,color[100+
int((224-100)*(1-hist2.GetBinContent(binTBM[0],biny)/maxx))],0,1,lineWd)
298 x1=hist2.GetXaxis().GetBinLowEdge(binTBM[0])
299 x2=hist2.GetXaxis().GetBinUpEdge(binTBM[len(binTBM)-1])
300 y1=hist2.GetYaxis().GetBinLowEdge(biny)
301 y2=hist2.GetYaxis().GetBinUpEdge(biny)
302 draw_box(boxList,x1,x2,y1,y2,0.2,color[100+
int((224-100)*(1-hist2.GetBinContent(binTBM[0],biny)/maxx))],0,1,lineWd)
304 if hist2.GetBinContent(binx,biny)!=0:
306 c.SaveAs(
'MergedFEDerror_BPix_Layer{0}_TBM.pdf'.
format(lyr))
307 os.system(
'gs -dBATCH -dNOPAUSE -sDEVICE=png16m -dUseCropBox -sOutputFile=MergedFEDerror_BPix_Layer{0}_TBM.png -r144 -q MergedFEDerror_BPix_Layer{0}_TBM.pdf'.
format(lyr))
308 os.system(
'rm -f MergedFEDerror_BPix_Layer{0}_TBM.pdf'.
format(lyr))
310 print(
"Some Error in get the histograms for FPIX")
312 print(
"----> Build maps for FPix")
313 for rng
in range(1,3):
314 histOccList.append(rootf.FindObjectAny(hdeadF+
str(rng)))
315 histDeadList.append(rootp.Get(dirERROR+hdeadF+
str(rng)))
316 for hist1, hist2
in zip(histOccList, histDeadList):
317 if hist1 !=
None or hist2 !=
None:
319 match=re.search(
'(?<=PXRing_)[0-9]',hist1.GetName())
320 if match !=
None and "per_SignedDiskCoord_per_SignedBladePanelCoord" in hist1.GetName():
321 ring=
int(match.group(0))
322 hist1.SetTitle(
"Digi Occupancy Ring {0}".
format(ring))
331 maxx=hist2.GetMaximum()
332 for biny
in range(1,hist2.GetNbinsY()+1):
334 x1=hist2.GetXaxis().GetBinLowEdge(binTBM[0])
335 x2=hist2.GetXaxis().GetBinUpEdge(binTBM[len(binTBM)-1])
336 y1=hist2.GetYaxis().GetBinLowEdge(biny-1)
337 y2=hist2.GetYaxis().GetBinUpEdge(biny-1)
338 draw_box(boxList,x1,x2,y1,y2,0.2,color[100+
int((224-100)*(1-hist2.GetBinContent(binTBM[0],biny-1)/maxx))],0,1,lineWd)
340 for binx
in range(1,hist2.GetNbinsX()+1):
343 elif hist2.GetBinContent(binx,biny)==hist2.GetBinContent(binTBM[len(binTBM)-1],biny):
347 if hist2.GetBinContent(binx,biny)!=0
and check:
351 if len(binTBM)==tbmRoc:
352 x1=hist2.GetXaxis().GetBinLowEdge(binTBM[0])
353 x2=hist2.GetXaxis().GetBinUpEdge(binTBM[len(binTBM)-1])
354 y1=hist2.GetYaxis().GetBinLowEdge(biny)
355 y2=hist2.GetYaxis().GetBinUpEdge(biny)
356 draw_box(boxList,x1,x2,y1,y2,0.2,color[100+
int((224-100)*(1-hist2.GetBinContent(binTBM[0],biny)/maxx))],0,1,lineWd)
363 x1=hist2.GetXaxis().GetBinLowEdge(binTBM[0])
364 x2=hist2.GetXaxis().GetBinUpEdge(binTBM[len(binTBM)-1])
365 y1=hist2.GetYaxis().GetBinLowEdge(biny)
366 y2=hist2.GetYaxis().GetBinUpEdge(biny)
367 draw_box(boxList,x1,x2,y1,y2,0.2,color[100+
int((224-100)*(1-hist2.GetBinContent(binTBM[0],biny)/maxx))],0,1,lineWd)
369 if hist2.GetBinContent(binx,biny)!=0:
371 c.SaveAs(
'MergedFEDerror_FPix_Ring{0}_TBM.pdf'.
format(ring))
372 os.system(
'gs -dBATCH -dNOPAUSE -sDEVICE=png16m -dUseCropBox -sOutputFile=MergedFEDerror_FPix_Ring{0}_TBM.png -r144 -q MergedFEDerror_FPix_Ring{0}_TBM.pdf'.
format(ring))
373 os.system(
'rm -f MergedFEDerror_FPix_Ring{0}_TBM.pdf'.
format(ring))
376 print(
"Some Error in get the histograms for FPIX")
381 if __name__ ==
'__main__':