5 Utilities for PXD calibration and performance study
6 Author: qingyuan.liu@desy.de
10 from ROOT
import Belle2
14 def get_name(self, separator="_"):
15 return f
"{self.getLayerNumber()}{separator}{self.getLadderNumber()}{separator}{self.getSensorNumber()}"
19 return self.getLayerNumber() * 1000 + self.getLadderNumber() * 10 + self.getSensorNumber()
23 def graph_append(self, x, y):
24 self.SetPoint(self.GetN(), x, y)
28 Belle2.VxdID.get_name = get_name
29 Belle2.VxdID.get_pxdid = get_pxdid
31 ROOT.TGraph.append = graph_append
45 sensorID_list = tuple([
Belle2.VxdID(label)
for label
in sensor_labels])
46 nsensors = len(sensorID_list)
55 ROOT.kRed + 1, ROOT.kOrange + 1, ROOT.kYellow - 3, ROOT.kSpring + 5, ROOT.kGreen + 3,
56 ROOT.kCyan - 6, ROOT.kAzure - 5, ROOT.kAzure - 6, ROOT.kBlue + 3, ROOT.kViolet - 1])
64 def get_sensor_graphs(ytitle=""):
66 Create TGraphs and related TLegends
68 ytitle (str): Title of the y-axis
70 A dictionary using sensorID as key and TGraph as value. A special key "TLegends"
71 is used for the list of TLegend objects for drawing.
76 xlegl = [0.60, 0.57, 0.78, 0.75]
77 xlegr = [0.72, 0.65, 0.90, 0.83]
80 Display format (content in a TLegend is bracketed):
81 (marker1 /) (marker2 label1/label2) (marker3 /) (markter4 label3/label4)
83 legs.append(ROOT.TLegend(xlegl[i], 0.62, xlegr[i], 0.85))
84 legs[i].SetFillStyle(0)
85 legs[i].SetBorderSize(0)
86 legs[i].SetTextFont(43)
87 legs[i].SetTextSize(18)
89 for i, sensorID
in enumerate(sensorID_list):
90 agraph = ROOT.TGraph()
92 agraph.SetName(sensorID.get_name())
93 agraph.GetXaxis().SetTitle(
'run #')
94 agraph.GetYaxis().SetTitle(ytitle)
95 agraph.GetYaxis().SetTitleOffset(0.9)
96 agraph.SetLineColor(colors[int(i / 2)])
97 agraph.SetLineWidth(4)
98 agraph.SetMarkerColor(colors[int(i / 2)])
99 agraph.SetMarkerStyle(26
if i % 2
else 24)
100 graphs[sensorID.getID()] = agraph
108 legs[i1].AddEntry(agraph, sensor_labels[i - 1] +
' / ' + sensor_labels[i],
'p')
110 legs[i2].AddEntry(agraph,
' / ',
'p')
111 graphs[
"TLegends"] = legs
117 name="MaskedPixels", title="Masked Pixels", ztitle="isMasked", run=0,
118 nUCells=nUCells, nVCells=nVCells, sensorID_list=sensorID_list
121 Create TH2F objects for saving pixel map
123 name (str): Name of a histogram
125 ztitle (str): Label for z-axis
126 run (int): run number of the map, to be appended into the title
127 sensorID_list (list): List of sensorID objects for which histograms are created.
129 A dictionary using sensorID as key and TH2F as value.
132 for sensorID
in sensorID_list:
133 hname = name +
"_{}_run_{:d}".format(sensorID.get_name(), run)
134 htitle = title +
" Sensor={:d} Run={:d}".format(sensorID.get_pxdid(), run)
135 h2 = ROOT.TH2F(hname, htitle, nUCells, 0, nUCells, nVCells, 0, nVCells)
136 h2.GetXaxis().SetTitle(
"uCell")
137 h2.GetYaxis().SetTitle(
"vCell")
138 h2.GetZaxis().SetTitle(ztitle)
140 hists[sensorID.getID()] = h2
145 latex_l = ROOT.TLatex()
146 latex_l.SetTextFont(43)
148 latex_l.SetTextSize(24)
149 latex_ls = ROOT.TLatex()
150 latex_ls.SetTextFont(43)
152 latex_ls.SetTextSize(19)
153 latex_r = ROOT.TLatex()
154 latex_r.SetTextFont(43)
156 latex_r.SetTextSize(24)
157 latex_r.SetTextAlign(31)
163 Author: maiko.takahashi@desy.de
168 ROOT.gStyle.SetCanvasBorderMode(0)
169 ROOT.gStyle.SetCanvasBorderSize(10)
170 ROOT.gStyle.SetCanvasColor(0)
171 ROOT.gStyle.SetCanvasDefH(450)
172 ROOT.gStyle.SetCanvasDefW(500)
173 ROOT.gStyle.SetCanvasDefX(10)
174 ROOT.gStyle.SetCanvasDefY(10)
176 ROOT.gStyle.SetPadBorderMode(0)
177 ROOT.gStyle.SetPadBorderSize(10)
178 ROOT.gStyle.SetPadColor(0)
179 ROOT.gStyle.SetPadBottomMargin(0.16)
180 ROOT.gStyle.SetPadTopMargin(0.10)
181 ROOT.gStyle.SetPadLeftMargin(0.17)
182 ROOT.gStyle.SetPadRightMargin(0.19)
183 ROOT.gStyle.SetPadGridX(1)
184 ROOT.gStyle.SetPadGridY(1)
185 ROOT.gStyle.SetGridStyle(2)
186 ROOT.gStyle.SetGridColor(ROOT.kGray + 1)
188 ROOT.gStyle.SetFrameFillStyle(0)
189 ROOT.gStyle.SetFrameFillColor(0)
190 ROOT.gStyle.SetFrameLineColor(1)
191 ROOT.gStyle.SetFrameLineStyle(0)
192 ROOT.gStyle.SetFrameLineWidth(2)
193 ROOT.gStyle.SetFrameBorderMode(0)
194 ROOT.gStyle.SetFrameBorderSize(10)
196 ROOT.gStyle.SetLabelFont(42,
"xyz")
197 ROOT.gStyle.SetLabelOffset(0.015,
"xyz")
198 ROOT.gStyle.SetLabelSize(0.048,
"xyz")
199 ROOT.gStyle.SetNdivisions(505,
"xyz")
200 ROOT.gStyle.SetTitleFont(42,
"xyz")
201 ROOT.gStyle.SetTitleSize(0.050,
"xyz")
202 ROOT.gStyle.SetTitleOffset(1.3,
"x")
203 ROOT.gStyle.SetTitleOffset(1.2,
"y")
204 ROOT.gStyle.SetTitleOffset(1.4,
"z")
205 ROOT.gStyle.SetPadTickX(1)
206 ROOT.gStyle.SetPadTickY(1)
208 ROOT.gStyle.SetTitleBorderSize(0)
209 ROOT.gStyle.SetTitleFillColor(10)
210 ROOT.gStyle.SetTitleAlign(12)
211 ROOT.gStyle.SetTitleFontSize(0.045)
212 ROOT.gStyle.SetTitleX(0.560)
213 ROOT.gStyle.SetTitleY(0.860)
214 ROOT.gStyle.SetTitleFont(42,
"")
216 ROOT.gStyle.SetStatBorderSize(0)
217 ROOT.gStyle.SetStatColor(10)
218 ROOT.gStyle.SetStatFont(42)
219 ROOT.gStyle.SetStatX(0.94)
220 ROOT.gStyle.SetStatY(0.91)
222 ROOT.gStyle.SetOptTitle(0)
223 ROOT.gStyle.SetOptStat(0)
224 ROOT.gStyle.SetHistLineWidth(3)
225 ROOT.TH2.SetDefaultSumw2()
228 if __name__ ==
'__main__':