56 def Plot(self):
57 h = self.M.h
58
59 q05=np.array([0.5])
60 med=np.array([0.])
61 signal_attributes={}
62 for xi in self.xing:
63 if not self.M.fsdict and not self.M.hasBunchInfo and xi!='': continue
64 ut.bookCanvas(h,detector+'hitmaps'+xi,' ',1024,768,6,5)
65 ut.bookCanvas(h,detector+'signal'+xi,' ',1024,768,6,5)
66 ut.bookCanvas(h,detector+'tdc'+xi,' ',1024,768,6,5)
67 for mat in range(self.nMatsAll):
68 tc = self.M.h[detector+'hitmaps'+xi].cd(mat+1)
69 tc.SetLogy(1)
70 self.M.h[detector+'mat_'+str(mat)+xi].Draw()
71 ROOT.gStyle.SetOptStat(10)
72 tc = self.M.h[detector+'signal'+xi].cd(mat+1)
73 rc = self.M.h[detector+'sig_'+str(mat)+xi]
74 rc.Draw()
75 rc.GetQuantiles(1,med,q05)
76 signal_attributes[mat]={"median":med[0],
77 "std":rc.GetStdDev(),
78 "max":rc.FindLastBinAbove(0),
79 "percent_overflow":rc.GetBinContent(rc.GetNbinsX()+1)/rc.Integral()*100. if rc.Integral()>0 else 0.}
80 tc = self.M.h[detector+'tdc'+xi].cd(mat+1)
81 self.M.h[detector+'tdc_'+str(mat)+xi].Draw()
82
83
84
85 ut.bookCanvas(h,detector+'signalsSummary'+xi,' ',1024,768,1,1)
86 signal_medians, signal_maxima = ROOT.TGraphErrors(), ROOT.TGraphErrors()
87 signal_medians.SetTitle("Median of signal per mat")
88 signal_medians.GetYaxis().SetTitle("median QDC [a.u.]")
89 signal_maxima.SetTitle("Maximal signal per mat")
90 signal_maxima.GetYaxis().SetTitle("maximum QDC [a.u.]")
91 Area = {}
92 for mat in range(self.nMatsAll):
93 signal_medians.SetPoint(mat, mat,signal_attributes[mat]["median"])
94 signal_medians.SetPointError(mat,0,signal_attributes[mat]["std"])
95 signal_maxima.SetPoint(mat, mat,signal_attributes[mat]["max"])
96 signal_maxima.SetPointError(mat,0,0)
97 graph_list = [signal_medians]
98 for counter, graph in enumerate(graph_list):
99 h[detector+'signalsSummary'+xi].cd(counter+1)
100 ROOT.gPad.SetBottomMargin(0.2)
101 ROOT.gPad.SetGrid(0)
102 graph.Draw('AP')
103 xAxis = graph.GetXaxis()
104
105 xAxis.SetTickLength(0)
106 ymin = graph.GetHistogram().GetMinimum()
107 ymax = graph.GetHistogram().GetMaximum()
108 for mat in range(self.nMatsAll):
109 bin_index = xAxis.FindBin(mat)
110 xAxis.SetBinLabel(bin_index,self.mat_label[mat])
111
112 grid = ROOT.TLine(graph.GetPointX(mat), ymin, graph.GetPointX(mat), ymax)
113 grid.SetLineStyle(3)
114 grid.DrawClone()
115
116 tick = ROOT.TLine(graph.GetPointX(mat), ymin, graph.GetPointX(mat), ymin + 0.03*(ymax-ymin))
117 tick.DrawClone()
118
119 graph.Draw('P,same')
120
121 Area[counter] = ROOT.TBox(ROOT.TMath.MinElement(graph.GetN(), graph.GetX()),
122 graph.GetHistogram().GetMinimum(),
123 ROOT.TMath.MaxElement(graph.GetN(), graph.GetX()),
124 graph.GetHistogram().GetMaximum())
125 Area[counter].SetLineWidth(0)
126 Area[counter].SetFillStyle(3003)
127 Area[counter].SetFillColor(ROOT.kBlue)
128 Area[counter].Draw("same")
129 graph.SetMarkerStyle(20)
130 graph.SetMarkerColor(ROOT.kBlue)
131 graph.SetLineColor(ROOT.kBlue)
132
133
134 ut.bookCanvas(h,detector+'positions'+xi,' ',2048,768,5,2)
135 ut.bookCanvas(h,detector+'mult'+xi,' ',2048,768,5,2)
136 for s in range(5):
137 tc = self.M.h[detector+'positions'+xi].cd(s+1)
138 self.M.h[detector+'posY_'+str(2*s)+xi].Draw()
139 tc = self.M.h[detector+'positions'+xi].cd(s+6)
140 self.M.h[detector+'posX_'+str(2*s+1)+xi].Draw()
141
142 tc = self.M.h[detector+'mult'+xi].cd(s+1)
143 tc.SetLogy(1)
144 self.M.h[detector+'mult_'+str(2*s)+xi].Draw()
145 tc = self.M.h[detector+'mult'+xi].cd(s+6)
146 tc.SetLogy(1)
147 self.M.h[detector+'mult_'+str(2*s+1)+xi].Draw()
148
149 for item in h:
150 if isinstance(h[item], ROOT.TH2):
151 h[item].SetStats(0)
152
153 canvas = detector+'signalsSummary'+xi
154 self.M.h[canvas].Update()
155 if xi!='': self.M.myPrint(self.M.h[canvas],"Scifi-"+canvas,subdir='scifi/shifter/'+xi)
156 else: self.M.myPrint(self.M.h[canvas],"Scifi-"+canvas,subdir='scifi/shifter')
157
158 for canvas in [detector+'hitmaps'+xi,detector+'signal'+xi,detector+'mult'+xi]:
159 self.M.h[canvas].Update()
160 if canvas.find('hitmaps')>0: role='shifter'
161 else : role='expert'
162 if xi!='': self.M.myPrint(self.M.h[canvas],"Scifi-"+canvas,subdir='scifi/'+role+'/'+xi)
163 else: self.M.myPrint(self.M.h[canvas],"Scifi-"+canvas,subdir='scifi/'+role)
164