14 canPositions = [[10, 10, 600, 450],[615, 10, 600, 450], [10, 480, 600, 450], [615, 480, 600, 450]]
24 cans.append(TCanvas(
"can" +
str(canNum), title))
25 cans[canNum].SetWindowPosition(canPositions[canNum % 4][0], canPositions[canNum % 4][1])
26 cans[canNum].SetWindowSize(canPositions[canNum % 4][2], canPositions[canNum % 4][3])
34 for i
in range(0, len(cans)):
40 for i
in range(0, len(cans)):
41 cans[i].
SaveAs(prefix + cans[i].GetTitle() + suffix)
45 for i
in range(0,len(canPositions)):
46 canPositions[i][0] += 30
47 canPositions[i][1] += 30
51 for i
in range(0, len(list)):
61 def drawOverlay(listOfHists, name="", opt="hist", varOpts=[""], colors=[kRed, kBlue -4, kGreen + 2, kMagenta + 1,kOrange+2, kBlack, kViolet - 7], lineStyles=[1], \
62 legEntries = [], logY =
False, axisMin = 0, legPos =
"right", legTextSize=0, inputCan=
None, legHeight=0.15, legWidth=0.2, supressZero=
False,\
63 padFactor=1.1, lineWidths=[gStyle.GetHistLineWidth()], fillStyles=[0], preserveStyle=
False,
71 histMin = sys.float_info.max
72 for hist
in listOfHists:
73 hist.GetYaxis().SetTitleOffset(yOffset)
74 if hist.GetBinContent(hist.GetMaximumBin()) > histMax:
75 histMax = hist.GetBinContent(hist.GetMaximumBin())
77 for i
in range(1, hist.GetNbinsX()+ 1):
78 content = hist.GetBinContent(i)
79 if content >0
and content < histMin:
82 axisMin = 0.9 * histMin
85 can =
newCan(
"Overlay" +
str(overlayNum) )
87 can =
newCan(name +
"Overlay")
97 for hist
in listOfHists:
98 hist.SetLineColor(colors[counter % len(colors)])
99 hist.SetLineWidth(lineWidths[counter % len(lineWidths)])
100 hist.SetLineStyle(lineStyles[counter % len(lineStyles)])
101 if fillStyles[counter % len(fillStyles)]:
102 hist.SetFillStyle(fillStyles[counter % len(fillStyles)])
103 hist.SetFillColor(colors[counter % len(colors)])
106 for hist
in listOfHists:
107 hist.GetYaxis().SetRangeUser(axisMin, padFactor * histMax)
108 hist.Draw(opt + varOpts[counter % len(varOpts)])
109 line = TLine(0,1,10,0)
111 line.SetLineColor(kGray)
114 if hist.GetSize() > 40:
115 line.DrawLineNDC(0.863,0.1,0.863,0.9)
117 line.DrawLineNDC(0.72,0.1,0.72,0.9)
121 if not "SAME" in opt:
126 if legPos ==
"right":
127 legs.append(TLegend(0.65, 0.6, 0.65 + legWidth, 0.6 + legHeight))
128 elif legPos ==
"mid":
129 legs.append(TLegend(0.4, 0.6, 0.4 + legWidth, 0.6 + legHeight))
130 elif legPos ==
"auto":
132 elif legPos ==
"left":
133 legs.append(TLegend(0.15, 0.6, 0.15 + legWidth, 0.6 + legHeight))
134 elif type(legPos) == type([])
and len(legPos) == 2:
135 legs.append(TLegend(legPos[0], legPos[1], legPos[0] + legWidth, legPos[1] + legHeight))
137 print "Legend position", legPos,
"is invalid." 144 for hist
in listOfHists:
146 if hist.GetFillStyle != 0:
148 if hist.GetLineWidth != 0:
150 if len(legEntries) == 0:
151 legs[overlayNum].
AddEntry(hist, hist.GetName(), legStyle)
153 legs[overlayNum].
AddEntry(hist, legEntries[counter], legStyle)
157 legs[overlayNum].
Draw()
159 listOfHists[0].
Draw(
"sameaxis")
163 for hist
in listOfHists:
164 c =
newCan(hist.GetName())
170 c =
newCan(hist.GetName())
177 fileName = os.path.split(filePath)[1]
178 extPos = fileName.find(
".")
179 fileId = fileName[0:extPos]
204 if x > x0
and x < x1
and y > y0
and y < y1:
214 if x > x0
and x < x1:
219 if y > y0
and y < y1:
231 dx *= (gPad.GetX2()-gPad.GetX1())
232 dy *= (gPad.GetY2()-gPad.GetY1())
247 for fallback
in [
False,
True]:
250 for x
in drange(x0+dx/2, x1-dx/2, X/
float(gridPoints)):
251 for y
in drange(y0+dy/2, y1-dy/2, Y/
float(gridPoints)):
258 dToEdges = [sqr((x-dx/2-x0)/X), sqr((x+dx/2-x1)/X), sqr((y-dy/2-y0)/Y), sqr((y+dy/2-y1)/Y)] 259 for dToEdge in dToEdges: 261 if math.fabs(dToEdge) < 0.05: 267 d =
min(d,
sqr((x-dx/2-x0)/X))
268 d =
min(d,
sqr((x+dx/2-x1)/X))
269 d =
min(d,
sqr((y-dy/2-y0)/Y))
270 d =
min(d,
sqr((y+dy/2-y1)/Y))
274 prims = gPad.GetListOfPrimitives()
277 if not obj.InheritsFrom(TH1.Class()):
281 for n
in range(0, h.GetNbinsX() + 1):
282 px = h.GetBinCenter(n)
283 py = h.GetBinContent(n)
294 (x-dx/2)/X, (y-dy/2)/Y,
295 (x+dx/2)/X, (y+dy/2)/Y))
316 nx =
float(bestx-gPad.GetX1())/(gPad.GetX2()-gPad.GetX1());
317 ny =
float(besty-gPad.GetY1())/(gPad.GetY2()-gPad.GetY1());
319 ndx = dx/
float(gPad.GetX2()-gPad.GetX1());
320 ndy = dy/
float(gPad.GetY2()-gPad.GetY1());
322 return TLegend(nx-ndx/2, ny-ndy/2, nx+ndx/2, ny+ndy/2);
331 self.table.append(row)
337 colDef =
"| " + (
" c |" * nCol)
338 str +=
"\\begin{center} \n \\begin{tabular} {" + colDef +
"} \n \hline \n" 340 col_width = [
max(len(x)
for x
in col)
for col
in zip(*table)]
342 str +=
" " +
" & ".join(
"{:{}}".
format(x, col_width[i])
343 for i, x
in enumerate(line)) +
" \\\\ \hline \n" 344 str +=
" \\end{tabular} \n \\end{center}" 350 col_width = [
max(len(x)
for x
in col)
for col
in zip(*table)]
352 str +=
"| " +
" | ".join(
"{:{}}".
format(x, col_width[i])
353 for i, x
in enumerate(line)) +
" | \n"
bin1_2sigma SetFillColor(3)
def writeLatex(self, outputFile)
prelim SetTextSize(2/30.)
def drange(start, stop, step=1)
def autoPlaceLegend(dx, dy, gridPoints=30)
def drawHists(listOfHists, opt="", logY=False)
leg AddEntry(GRdata,"data","p")
std::string format(const int32_t &value, const int &ndigits=8)
def getTVectorFromList(list)
static float min(const float a, const float b, const float c)
def saveCans(prefix="", suffix=".pdf")
cosmicTree SaveAs("cosmicTree.root")
T max(sqlite3 *const db, std::string const &table_name, std::string const &column_name)
def drawHist(hist, opt="", logY=False)
def __init__(self, tree, increment=10000)
def drawOverlay(listOfHists, name="", opt="hist", varOpts=[""], colors=[kRed, kBlue, kGreen, kMagenta, kOrange, kBlack, kViolet, lineStyles=[1], legEntries=[], logY=False, axisMin=0, legPos="right", legTextSize=0, inputCan=None, legHeight=0.15, legWidth=0.2, supressZero=False, padFactor=1.1, lineWidths=[gStyle.GetHistLineWidth()], fillStyles=[0], preserveStyle=False, yOffset=1.05)
def PointDistanceToBox(x, y, x0, y0, x1, y1)