5 from optparse
import OptionParser
9 __author__ =
'James Walder'
11 __usage__ =
'%prog [options] '
14 names = s.split(token)
17 parser = OptionParser(usage=__usage__, version=__version__)
18 parser.add_option(
'-f',
'--files',dest=
'files', default=
'bs.root', help=
'Root files for data plots')
19 parser.add_option(
'-d',
'--dir',dest=
'dir', default=
'Beamspot', help=
'Root directory for beamspots')
20 parser.add_option(
'-b',
'--batch', dest=
'batch', action=
'store_true', default=
False, help=
'Run in batch mode')
22 (options,args) = parser.parse_args()
25 os.unsetenv(
'DISPLAY')
28 from ROOT
import TH1D, TCanvas
29 from ROOT
import gSystem, gROOT, TFile, TH1D, TH2D, TCanvas, TTree, TChain
30 from ROOT
import TGraphErrors
31 from ROOT
import TMultiGraph
32 from ROOT
import EColor
33 from ROOT
import TLegend,TLine
34 from ROOT
import TLatex,TGaxis
48 gROOT.ProcessLine(
".L AtlasStyle.C")
49 gROOT.ProcessLine(
".L AtlasUtils.C")
50 gROOT.ProcessLine(
"SetAtlasStyle();")
54 from ROOT
import gDirectory
56 p = re.compile(pattern)
58 n = gDirectory.GetListOfKeys().GetSize()
62 name = gDirectory.GetListOfKeys().At(i).GetName()
67 h = gDirectory.Get(gDirectory.GetListOfKeys().At(i).GetName())
76 subs = {
'p':
'.',
'm':
'-' }
87 t = title.split(cutToken)
88 namestring = t[0].strip(
'_')
89 cutstring = t[-1].strip(
'_')
90 cuts = cutstring.split(
'_')
92 for i
in range(0,len(cuts),2):
95 return output,namestring
98 tr = file.Get( dir +
"/" + name)
103 def makePull( tree, xval='x0',xcov='x0x0', xTrue=0., isCovErr=True, xlow=-8, xhigh=8, xbins=100, doGausFit=False, cuts=""):
104 h = TH1D(
"hPull_"+tree.GetName()+
"_"+xval,
"hPull_"+tree.GetName()+
"_"+xval, xbins, xlow,xhigh)
106 p =
'(%(x)s - %(t)s)/sqrt(%(e)s) >> %(h)s' % {
'x':xval,
't':xTrue,
'e':xcov,
'h':h.GetName()}
108 p =
'(%(x)s - %(t)s)/(%(e)s) >> %(h)s' % {
'x':xval,
't':xTrue,
'e':xcov,
'h':h.GetName()}
110 tree.Draw( p , cuts);
114 meanErr = h.GetMeanError()
116 rmsErr = h.GetRMSError()
119 f = h.GetFunction(
"gaus")
120 mean = f.GetParameter(1)
121 meanErr = f.GetParError(1)
122 rms = f.GetParameter(2)
123 rmsErr = f.GetParError(2)
125 return (mean, meanErr, rms, rmsErr)
134 fii = TFile(files[0])
136 print "Multiple files not yet supported"
143 nPoints = len(points)
145 x = TGraphErrors(nPoints)
147 x.SetTitle(name +
" x")
148 y = TGraphErrors(nPoints)
150 y.SetTitle(name +
" y")
151 z = TGraphErrors(nPoints)
153 z.SetTitle(name +
" z")
154 sx = TGraphErrors(nPoints)
156 sx.SetTitle(name +
" sx")
157 sy = TGraphErrors(nPoints)
159 sy.SetTitle(name +
" sy")
160 sz = TGraphErrors(nPoints)
162 sz.SetTitle(name +
" sz")
164 xrms = TGraphErrors(nPoints)
165 xrms.SetName(name+
"_rms")
166 xrms.SetTitle(name+
"_rms" +
" x")
167 yrms = TGraphErrors(nPoints)
168 yrms.SetName(name+
"_rms")
169 yrms.SetTitle(name+
"_rms" +
" y")
170 zrms = TGraphErrors(nPoints)
171 zrms.SetName(name+
"_rms")
172 zrms.SetTitle(name+
"_rms" +
" z")
173 sxrms = TGraphErrors(nPoints)
174 sxrms.SetName(name+
"_rms")
175 sxrms.SetTitle(name+
"_rms" +
" sx")
176 syrms = TGraphErrors(nPoints)
177 syrms.SetName(name+
"_rms")
178 syrms.SetTitle(name+
"_rms" +
" sy")
179 szrms = TGraphErrors(nPoints)
180 szrms.SetName(name+
"_rms")
181 szrms.SetTitle(name+
"_rms" +
" sz")
183 graphs.extend([x,y,z,sx,sy,sz,xrms,yrms,zrms,sxrms,syrms,szrms])
185 for i
in range(len(points)):
191 x.SetPoint(i, xval, yvals[0][0])
192 y.SetPoint(i, xval, yvals[1][0])
193 z.SetPoint(i, xval, yvals[2][0])
194 sx.SetPoint(i, xval, yvals[3][0])
195 sy.SetPoint(i, xval, yvals[4][0])
196 sz.SetPoint(i, xval, yvals[5][0])
198 x.SetPointError(i, xerr, yvals[0][1])
199 y.SetPointError(i, xerr, yvals[1][1])
200 z.SetPointError(i, xerr, yvals[2][1])
201 sx.SetPointError(i, xerr, yvals[3][1])
202 sy.SetPointError(i, xerr, yvals[4][1])
203 sz.SetPointError(i, xerr, yvals[5][1])
206 xrms.SetPoint(i, xval, yvals[0][2])
207 yrms.SetPoint(i, xval, yvals[1][2])
208 zrms.SetPoint(i, xval, yvals[2][2])
209 sxrms.SetPoint(i, xval, yvals[3][2])
210 syrms.SetPoint(i, xval, yvals[4][2])
211 szrms.SetPoint(i, xval, yvals[5][2])
213 xrms.SetPointError(i, xerr, yvals[0][3])
214 yrms.SetPointError(i, xerr, yvals[1][3])
215 zrms.SetPointError(i, xerr, yvals[2][3])
216 sxrms.SetPointError(i, xerr, yvals[3][3])
217 syrms.SetPointError(i, xerr, yvals[4][3])
218 szrms.SetPointError(i, xerr, yvals[5][3])
227 yaxis_xrms = TGaxis( -1, 0.2, 1 ,0.2, -1, 2,510,
"+R")
228 yaxis_xrms.ImportAxisAttributes( y.GetHistogram().GetYaxis() )
247 trueVals = {
'x0':-0.15,
'y0':1.,
'z':-9.,
'sx':
'0.72',
'sy':
'0.42',
'sz':44,
'ax':
'0.',
'ay':0.,
'k':1,
'rhoxy':0.0}
257 xval = o[o.keys()[0]]
259 xpos =
makePull(
getTree( i.GetName(), file, dir), xval=
'x0', xcov=
'x0x0', xTrue=trueVals[
'x0'])
260 ypos =
makePull(
getTree( i.GetName(), file, dir), xval=
'y0', xcov=
'y0y0', xTrue=trueVals[
'y0'])
261 zpos =
makePull(
getTree( i.GetName(), file, dir), xval=
'z', xcov=
'zz', xTrue=trueVals[
'z'])
263 sx =
makePull(
getTree( i.GetName(), file, dir), xval=
'sx', xcov=
'sxsx', xTrue=trueVals[
'sx'])
264 sy =
makePull(
getTree( i.GetName(), file, dir), xval=
'sy', xcov=
'sysy', xTrue=trueVals[
'sy'])
265 sz =
makePull(
getTree( i.GetName(), file, dir), xval=
'sz', xcov=
'szsz', xTrue=trueVals[
'sz'])
266 ax =
makePull(
getTree( i.GetName(), file, dir), xval=
'ax', xcov=
'axax', xTrue=trueVals[
'ax'])
267 ay =
makePull(
getTree( i.GetName(), file, dir), xval=
'ay', xcov=
'ayay', xTrue=trueVals[
'ay'])
268 k =
makePull(
getTree( i.GetName(), file, dir), xval=
'k', xcov=
'kk', xTrue=trueVals[
'k'])
269 rhoxy =
makePull(
getTree( i.GetName(), file, dir), xval=
'rhoxy', xcov=
'rhoxyrhoxy', xTrue=trueVals[
'rhoxy'])
270 points.append( (xval, [xpos, ypos, zpos, sx, sy, sz, ax, ay, k, rhoxy ]) )
291 s = raw_input(
'--> ')