1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
import ROOT
def drawHisto(histo,title,ymin,ymax,option="HISTOP",draw=True):
histo.SetStats(0)
histo.SetLineWidth(3)
histo.SetMarkerStyle(20)
histo.SetMarkerSize(0.9)
histo.GetYaxis().SetRangeUser(ymin,ymax)
histo.GetYaxis().SetTitle(title)
histo.GetXaxis().SetLabelSize(0.04)
histo.GetXaxis().SetTickLength(0.)
histo.LabelsOption("d","X")
fillColor = 0
canvas = None
if draw:
canvas = ROOT.TCanvas("c_" + histo.GetName())
canvas.SetGridy()
canvas.SetFillColor(fillColor)
if draw: histo.Draw(option)
linesWh = {}
linesSt = {}
labels = {}
for idx_st in range(1,5):
nSectors = 12
if idx_st == 4: nSectors = 14
for idx_wh in range(-1,3):
xline = (idx_st - 1)*60 + (idx_wh + 2)*nSectors
if xline >= histo.GetNbinsX(): continue
linesWh[(idx_st,idx_wh)] = ROOT.TLine(xline,ymin,xline,ymax)
linesWh[(idx_st,idx_wh)].SetLineStyle(2)
if draw: linesWh[(idx_st,idx_wh)].Draw("SAME")
for idx in range(1,4):
xline = idx*60
if xline >= histo.GetNbinsX(): continue
linesSt[idx] = ROOT.TLine(xline,ymin,xline,ymax)
linesSt[idx].SetLineStyle(2)
linesSt[idx].SetLineWidth(2)
if draw: linesSt[idx].Draw("SAME")
for idx in range(1,5):
xlabel = (idx - 1)*60 + 20
ylabel = ymin + 0.75*(ymax -ymin)
if xlabel >= histo.GetNbinsX(): continue
strSt = "MB%d" % idx
labels[idx] = ROOT.TPaveLabel(xlabel,ylabel,(xlabel+20),(ylabel + 0.10*(ymax -ymin)),strSt)
labels[idx].SetTextSize(0.5)
labels[idx].SetFillColor(fillColor)
if draw: labels[idx].Draw("SAME")
objects = []
objects.append(linesWh)
objects.append(linesSt)
objects.append(labels)
return (canvas,histo,objects)
|