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__':
def renderPluginFPIX(lineList, ring)
def renderPluginBPIX(lineList, layer)
S & print(S &os, JobReport::InputFile const &f)
def maskBPixROC(boxList, xsign, ysign, layer, lad, mod, roc)
OutputIterator zip(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp)
def maskFPixROC(boxList, xsign, ysign, dsk, bld, pnl, roc)
def draw_line(lineList, x1, x2, y1, y2, width=1, style=1, color=1)
def draw_box(boxList, xl, xr, yl, yr, opacity=1, color=1, style=1001, lstyle=1, lw=3)
def dqm_get_dataset(server, match, run, type="offline_data")