1 |
import ROOT
|
2 |
import sys, re
|
3 |
sys.path.append("/afs/naf.desy.de/user/n/nowaf/UserCode/nowaf/PythonScripts/")
|
4 |
import definitions as Def
|
5 |
import styles as Style
|
6 |
import FakeHelper as FH
|
7 |
from array import array
|
8 |
import MakeRealTauEst_cff as RT
|
9 |
|
10 |
if __name__ == "__main__":
|
11 |
|
12 |
|
13 |
#doDynamicRebin = True
|
14 |
### 4 for GC, 10 for Pt only
|
15 |
dynamicRebin = 10
|
16 |
rebin = 2
|
17 |
#saveQCD = False
|
18 |
|
19 |
sampleList = []
|
20 |
sampleList.append( "QCDFlat" )
|
21 |
sampleList.append( "Data" )
|
22 |
#sampleList.append( "Zinv" )
|
23 |
#sampleList.append( "ZJets" )
|
24 |
#sampleList.append( "WWJets" )
|
25 |
|
26 |
fileDict = {}
|
27 |
fileDict[ "QCDFlat" ] = "/scratch/hh/lustre/cms/user/nowaf/2011Data/VersionII/Plots/QCDFlat_fakes_xxviii/QCDFlat_fakes_xxviii.root"
|
28 |
fileDict[ "Data" ] = "/scratch/hh/lustre/cms/user/nowaf/2011Data/VersionII/Plots/Data_fakes_xxviii/Data_fakes_xxviii.root"
|
29 |
#fileDict[ "WJets" ] = "/scratch/hh/lustre/cms/user/nowaf/2011Data/VersionII/Plots/WJets_fakes_xxviii/WJets_fakes_xxviii.root"
|
30 |
fileDict[ "Zinv" ] = "/scratch/hh/lustre/cms/user/nowaf/2011Data/VersionII/Plots/Zinv_fakes_xxviii/Zinv_fakes_xxviii.root"
|
31 |
fileDict[ "ZJets" ] = "/scratch/hh/lustre/cms/user/nowaf/2011Data/VersionII/Plots/ZJets_fakes_xxviii/ZJets_fakes_xxviii.root"
|
32 |
fileDict[ "WWJets" ] = "/scratch/hh/lustre/cms/user/nowaf/2011Data/VersionII/Plots/WWJets_fakes_xxviii/WWJets_fakes_xxviii.root"
|
33 |
|
34 |
xtitle = "P_{T}^{jet} [GeV]"
|
35 |
#xtitle = "N^{G} + N^{C}"
|
36 |
ytitle = "fake rate"
|
37 |
title = "H_{T}>350 GeV, 40<#slashH_{T}<60 GeV"
|
38 |
#title = "CMS Preliminary, H_{T}>350 GeV, 40<#slashH_{T}<60 GeV"
|
39 |
|
40 |
colorDict = {}
|
41 |
colorDict[ "JetTauPtJPTeta1" ] = ROOT.kRed - 9
|
42 |
colorDict[ "JetTauPtJPTeta1Data" ] = ROOT.kRed + 4
|
43 |
colorDict[ "JetTauPtJPTeta2" ] = ROOT.kOrange + 6
|
44 |
colorDict[ "JetTauPtJPTeta2Data" ] = ROOT.kOrange + 3
|
45 |
colorDict[ "JetTauPtJPTeta25" ] = ROOT.kYellow - 5
|
46 |
colorDict[ "JetTauPtJPTeta25Data" ] = ROOT.kYellow + 4
|
47 |
colorDict[ "JetTauPtJPT" ] = ROOT.kBlue - 9
|
48 |
colorDict[ "JetTauPtJPTData" ] = ROOT.kBlue + 3
|
49 |
colorDict[ "NVertexTau" ] = ROOT.kCyan - 2
|
50 |
colorDict[ "NVertexTauData" ] = ROOT.kCyan + 4
|
51 |
colorDict[ "JetTauDist" ] = ROOT.kCyan - 2
|
52 |
colorDict[ "JetTauDistData" ] = ROOT.kCyan + 4
|
53 |
colorDict[ "JetTauNCharged" ] = ROOT.kCyan - 2
|
54 |
colorDict[ "JetTauNChargedData" ] = ROOT.kCyan + 4
|
55 |
colorDict[ "JetTauNGamma" ] = ROOT.kCyan - 2
|
56 |
colorDict[ "JetTauNGammaData" ] = ROOT.kCyan + 4
|
57 |
colorDict[ "JetTauNNeutral" ] = ROOT.kCyan - 2
|
58 |
colorDict[ "JetTauNNeutralData" ] = ROOT.kCyan + 4
|
59 |
colorDict[ "JetTauNCPlusG" ] = ROOT.kBlue - 9
|
60 |
colorDict[ "JetTauNCPlusGData" ] = ROOT.kBlue + 3
|
61 |
colorDict[ "JetTauPtFC" ] = ROOT.kCyan - 2
|
62 |
colorDict[ "JetTauPtFCData" ] = ROOT.kCyan + 4
|
63 |
colorDict[ "JetTauChargedPt" ] = ROOT.kCyan - 2
|
64 |
colorDict[ "JetTauChargedPtData" ] = ROOT.kCyan + 4
|
65 |
colorDict[ "JetTauGammaPt" ] = ROOT.kCyan - 2
|
66 |
colorDict[ "JetTauGammaPtData" ] = ROOT.kCyan + 4
|
67 |
colorDict[ "JetTauDecayMode" ] = ROOT.kCyan - 2
|
68 |
colorDict[ "JetTauDecayModeData" ] = ROOT.kCyan + 4
|
69 |
colorDict[ "JetTauGCPt030" ] = ROOT.kViolet + 1
|
70 |
colorDict[ "JetTauGCPt030Data" ] = ROOT.kViolet + 3
|
71 |
colorDict[ "JetTauGCPt3050" ] = ROOT.kOrange - 5
|
72 |
colorDict[ "JetTauGCPt3050Data" ] = ROOT.kOrange + 3
|
73 |
colorDict[ "JetTauGCPt50100" ] = ROOT.kYellow - 6
|
74 |
colorDict[ "JetTauGCPt50100Data" ] = ROOT.kYellow + 4
|
75 |
colorDict[ "JetTauGCPt100" ] = ROOT.kGreen - 6
|
76 |
colorDict[ "JetTauGCPt100Data" ] = ROOT.kGreen + 4
|
77 |
|
78 |
colorDict[ "JetTauPt0GC" ] = ROOT.kViolet + 1
|
79 |
colorDict[ "JetTauPt0GCData" ] = ROOT.kViolet + 3
|
80 |
colorDict[ "JetTauPt1GC" ] = ROOT.kOrange - 5
|
81 |
colorDict[ "JetTauPt1GCData" ] = ROOT.kOrange + 3
|
82 |
colorDict[ "JetTauPt2GC" ] = ROOT.kYellow - 6
|
83 |
colorDict[ "JetTauPt2GCData" ] = ROOT.kYellow + 4
|
84 |
colorDict[ "JetTauPt3GC" ] = ROOT.kGreen - 6
|
85 |
colorDict[ "JetTauPt3GCData" ] = ROOT.kGreen + 4
|
86 |
colorDict[ "JetTauPt3InfGC" ] = ROOT.kGreen - 6
|
87 |
colorDict[ "JetTauPt3InfGCData" ] = ROOT.kGreen + 4
|
88 |
|
89 |
plotTitle = False
|
90 |
if not title == None:
|
91 |
plotTitle = True
|
92 |
pass
|
93 |
Def.SetGlobalStyles( withTitle=plotTitle )
|
94 |
if re.search( "slash", title ):
|
95 |
#ROOT.gStyle.SetTitleFontSize( 0.02 )
|
96 |
ROOT.gStyle.SetTitleH( 0.032 )
|
97 |
if re.search( "Preliminary", title ):
|
98 |
ROOT.gStyle.SetTitleH( 0.030 )
|
99 |
pass
|
100 |
pass
|
101 |
|
102 |
startAtBinCenter = 20
|
103 |
#startAtBinCenter = -1
|
104 |
|
105 |
dirs = []
|
106 |
#dirs.append( "FakeRateInvertMHTLoose/" )
|
107 |
dirs.append( "FakeRate40MHT60/" )
|
108 |
initialHistDict = {}
|
109 |
initialHistDict[ "JetTauPtJPT" ] = "JetPtJPT"
|
110 |
initialHistDict[ "JetTauPtJPTeta1" ] = "JetPtJPTeta1"
|
111 |
initialHistDict[ "JetTauPtJPTeta2" ] = "JetPtJPTeta2"
|
112 |
initialHistDict[ "JetTauPtJPTeta25" ] = "JetPtJPTeta25"
|
113 |
#initialHistDict[ "NVertexTau" ] = "NVertex"
|
114 |
#initialHistDict[ "JetTauDist" ] = "JetDist"
|
115 |
#initialHistDict[ "JetTauNCharged" ] = "JetNCharged"
|
116 |
#initialHistDict[ "JetTauNGamma" ] = "JetNGamma"
|
117 |
#initialHistDict[ "JetTauNNeutral" ] = "JetNNeutral"
|
118 |
#initialHistDict[ "JetTauNCPlusG" ] = "JetNCPlusG"
|
119 |
#initialHistDict[ "JetTauPtFC" ] = "JetPtFC"
|
120 |
##initialHistDict[ "JetTauPtFG" ] = "JetPtFG"
|
121 |
##initialHistDict[ "JetTauPtFCG" ] = "JetPtFCG"
|
122 |
#initialHistDict[ "JetTauChargedPt" ] = "JetChargedPt"
|
123 |
#initialHistDict[ "JetTauGammaPt" ] = "JetGammaPt"
|
124 |
#initialHistDict[ "JetTauDecayMode" ] = "JetDecayMode"
|
125 |
#initialHistDict[ "JetTauGCPt030" ] = "JetGCPt030"
|
126 |
#initialHistDict[ "JetTauGCPt3050" ] = "JetGCPt3050"
|
127 |
#initialHistDict[ "JetTauGCPt50100" ] = "JetGCPt50100"
|
128 |
#initialHistDict[ "JetTauGCPt100" ] = "JetGCPt100"
|
129 |
#initialHistDict[ "JetTauPt0GC" ] = "JetPt0GC"
|
130 |
#initialHistDict[ "JetTauPt1GC" ] = "JetPt1GC"
|
131 |
#initialHistDict[ "JetTauPt2GC" ] = "JetPt2GC"
|
132 |
#initialHistDict[ "JetTauPt3GC" ] = "JetPt3GC"
|
133 |
#initialHistDict[ "JetTauPt3InfGC" ] = "JetPt3InfGC"
|
134 |
|
135 |
legendDict = {}
|
136 |
legendDict[ "JetTauPtJPT" ] = "Simulation"
|
137 |
legendDict[ "JetTauPtJPTData" ] = "Data"
|
138 |
legendDict[ "JetTauPtJPTeta1" ] = "Sim |#eta|<1"
|
139 |
legendDict[ "JetTauPtJPTeta1Data" ] = "Data |#eta|<1"
|
140 |
legendDict[ "JetTauPtJPTeta2" ] = "Sim 1<|#eta|<1.5"
|
141 |
legendDict[ "JetTauPtJPTeta2Data" ] = "Data 1<|#eta|<1.5"
|
142 |
legendDict[ "JetTauPtJPTeta25" ] = "Sim 1.5<|#eta|<2.1"
|
143 |
legendDict[ "JetTauPtJPTeta25Data" ] = "Data 1.5<|#eta|<2.1"
|
144 |
legendDict[ "NVertexTau" ] = "Simulation"
|
145 |
legendDict[ "NVertexTauData" ] = "Data"
|
146 |
legendDict[ "JetTauDist" ] = "Simulation"
|
147 |
legendDict[ "JetTauDistData" ] = "Data"
|
148 |
legendDict[ "JetTauNCharged" ] = "Simulation"
|
149 |
legendDict[ "JetTauNChargedData" ] = "Data"
|
150 |
legendDict[ "JetTauNGamma" ] = "Simulation"
|
151 |
legendDict[ "JetTauNGammaData" ] = "Data"
|
152 |
legendDict[ "JetTauNNeutral" ] = "Simulation"
|
153 |
legendDict[ "JetTauNNeutralData" ] = "Data"
|
154 |
legendDict[ "JetTauNCPlusG" ] = "Simulation"
|
155 |
legendDict[ "JetTauNCPlusGData" ] = "Data"
|
156 |
legendDict[ "JetTauPtFC" ] = "Simulation"
|
157 |
legendDict[ "JetTauPtFCData" ] = "Data"
|
158 |
legendDict[ "JetTauChargedPt" ] = "Simulation"
|
159 |
legendDict[ "JetTauChargedPtData" ] = "Data"
|
160 |
legendDict[ "JetTauGammaPt" ] = "Simulation"
|
161 |
legendDict[ "JetTauGammaPtData" ] = "Data"
|
162 |
legendDict[ "JetTauDecayMode" ] = "Simulation"
|
163 |
legendDict[ "JetTauDecayModeData" ] = "Data"
|
164 |
legendDict[ "JetTauGCPt030" ] = "Simulation"
|
165 |
legendDict[ "JetTauGCPt030Data" ] = "Data"
|
166 |
legendDict[ "JetTauGCPt3050" ] = "Simulation"
|
167 |
legendDict[ "JetTauGCPt3050Data" ] = "Data"
|
168 |
legendDict[ "JetTauGCPt50100" ] = "Simulation"
|
169 |
legendDict[ "JetTauGCPt50100Data" ] = "Data"
|
170 |
legendDict[ "JetTauGCPt100" ] = "Simulation"
|
171 |
legendDict[ "JetTauGCPt100Data" ] = "Data"
|
172 |
legendDict[ "JetTauPt0GC" ] = "Simulation"
|
173 |
legendDict[ "JetTauPt0GCData" ] = "Data"
|
174 |
legendDict[ "JetTauPt1GC" ] = "Simulation"
|
175 |
legendDict[ "JetTauPt1GCData" ] = "Data"
|
176 |
legendDict[ "JetTauPt2GC" ] = "Simulation"
|
177 |
legendDict[ "JetTauPt2GCData" ] = "Data"
|
178 |
legendDict[ "JetTauPt3GC" ] = "Simulation"
|
179 |
legendDict[ "JetTauPt3GCData" ] = "Data"
|
180 |
legendDict[ "JetTauPt3InfGC" ] = "Simulation"
|
181 |
legendDict[ "JetTauPt3InfGCData" ] = "Data"
|
182 |
|
183 |
titleDict = {}
|
184 |
#titleDict[ "JetTauGCPt030" ] = ", P_{T}^{jet}<30 GeV"
|
185 |
#titleDict[ "JetTauGCPt030Data" ] = ", P_{T}^{jet}<30 GeV"
|
186 |
#titleDict[ "JetTauGCPt3050" ] = ", 30 GeV<P_{T}^{jet}<50 GeV"
|
187 |
#titleDict[ "JetTauGCPt3050Data" ] = ", 30 GeV<P_{T}^{jet}<50 GeV"
|
188 |
#titleDict[ "JetTauGCPt50100" ] = ", 50 GeV<P_{T}^{jet}<100 GeV"
|
189 |
#titleDict[ "JetTauGCPt50100Data" ] = ", 50 GeV<P_{T}^{jet}<100 GeV"
|
190 |
#titleDict[ "JetTauGCPt100" ] = ", P_{T}^{jet}>100 GeV"
|
191 |
#titleDict[ "JetTauGCPt100Data" ] = ", P_{T}^{jet}>100 GeV"
|
192 |
|
193 |
xtitleDict = {}
|
194 |
xtitleDict[ "JetTauGCPt030" ] = " (P_{T}^{jet}<30 GeV)"
|
195 |
xtitleDict[ "JetTauGCPt030Data" ] = " (P_{T}^{jet}<30 GeV)"
|
196 |
xtitleDict[ "JetTauGCPt3050" ] = " (30 GeV<P_{T}^{jet}<50 GeV)"
|
197 |
xtitleDict[ "JetTauGCPt3050Data" ] = " (30 GeV<P_{T}^{jet}<50 GeV)"
|
198 |
xtitleDict[ "JetTauGCPt50100" ] = " (50 GeV<P_{T}^{jet}<100 GeV)"
|
199 |
xtitleDict[ "JetTauGCPt50100Data" ] = " (50 GeV<P_{T}^{jet}<100 GeV)"
|
200 |
xtitleDict[ "JetTauGCPt100" ] = " (P_{T}^{jet}>100 GeV)"
|
201 |
xtitleDict[ "JetTauGCPt100Data" ] = " (P_{T}^{jet}>100 GeV)"
|
202 |
|
203 |
#yRangeDict = {}
|
204 |
#yRange[ "JetTauGCPt030" ] = ( 2, 9*10**-5 )
|
205 |
#yRange[ "JetTauGCPt030Data" ] = ( 2, 9*10**-5 )
|
206 |
#yRange[ "JetTauGCPt3050" ] = ( 2, 9*10**-5 )
|
207 |
#yRange[ "JetTauGCPt3050Data" ] = ( 2, 9*10**-5 )
|
208 |
#yRange[ "JetTauGCPt50100" ] = ( 2, 9*10**-5 )
|
209 |
#yRange[ "JetTauGCPt50100Data" ] = ( 2, 9*10**-5 )
|
210 |
#yRange[ "JetTauGCPt100" ] = ( 2, 9*10**-5 )
|
211 |
#yRange[ "JetTauGCPt100Data" ] = ( 2, 9*10**-5 )
|
212 |
|
213 |
|
214 |
yRange = ( 9*10**-5, 2*10**0 )
|
215 |
xRange = None
|
216 |
#xRange = ( 0,200 )
|
217 |
|
218 |
plotRatio = False
|
219 |
#fileName = "~/UserCode/nowaf/PythonScripts/2011/VersionII/" + "QCDFlat" + "_fakes.root"
|
220 |
|
221 |
###########################################################################################
|
222 |
histDict = {}
|
223 |
graph = {}
|
224 |
binListDict = {}
|
225 |
ratioDict = {}
|
226 |
for hist in initialHistDict.keys():
|
227 |
print "----- ", hist
|
228 |
histDict[ hist ] = {}
|
229 |
histDict[ initialHistDict[ hist ] ] = {}
|
230 |
graph[ hist ] = {}
|
231 |
binListDict[ hist ] = {}
|
232 |
binListDict[ initialHistDict[ hist ] ] = {}
|
233 |
for file in sampleList:
|
234 |
print "----- ", file
|
235 |
rootfile = ROOT.TFile.Open( fileDict[ file ] )
|
236 |
histDict[ hist ][ file ] = {}
|
237 |
histDict[ initialHistDict[ hist ] ][ file ] = {}
|
238 |
graph[ hist ][ file ] = {}
|
239 |
for dir in dirs:
|
240 |
print "----- ", dir
|
241 |
histDict[ hist ][ file ][ dir ] = rootfile.Get( dir + hist )
|
242 |
histDict[ hist ][ file ][ dir ].SetDirectory( 0 )
|
243 |
histDict[ hist ][ file ][ dir ].UseCurrentStyle()
|
244 |
histDict[ hist ][ file ][ dir ].Rebin( rebin )
|
245 |
|
246 |
histDict[ initialHistDict[ hist ] ][ file ][ dir ] = rootfile.Get( dir + initialHistDict[ hist ] )
|
247 |
histDict[ initialHistDict[ hist ] ][ file ][ dir ].SetDirectory( 0 )
|
248 |
histDict[ initialHistDict[ hist ] ][ file ][ dir ].UseCurrentStyle()
|
249 |
histDict[ initialHistDict[ hist ] ][ file ][ dir ].Rebin( rebin )
|
250 |
|
251 |
#if doDynamicRebin:
|
252 |
binListDict[ hist ][ file ] = FH.getLowerBins( histDict[ hist ][ file ][ dir ],
|
253 |
nEntries=dynamicRebin,
|
254 |
startAtBinCenter=startAtBinCenter
|
255 |
)
|
256 |
binListDict[ initialHistDict[ hist ] ][ file ] = FH.getLowerBins(
|
257 |
histDict[ initialHistDict[ hist ] ][ file ][ dir ],
|
258 |
nEntries=dynamicRebin,
|
259 |
startAtBinCenter=startAtBinCenter
|
260 |
)
|
261 |
|
262 |
pass
|
263 |
pass
|
264 |
pass
|
265 |
|
266 |
#print "number of events=", histDict[ "NVertex" ][ "QCDFlat" ][ dirs[ 0 ] ].Integral()
|
267 |
#print "number of Jets with NCPlusG=1or2:", histDict[ "JetNCPlusG" ][ "QCDFlat" ][ dirs[ 0 ] ].GetBinContent( 2 ) + \
|
268 |
# histDict[ "JetNCPlusG" ][ "QCDFlat" ][ dirs[ 0 ] ].GetBinContent( 3 )
|
269 |
#print "Test=", histDict[ "JetNCPlusG" ][ "QCDFlat" ][ dirs[ 0 ] ].FindBin( 1. )
|
270 |
|
271 |
|
272 |
|
273 |
for hist in initialHistDict.keys():
|
274 |
#rebinList = FH.mergeList( [ binListDict[ hist ][ "QCDFlat" ], binListDict[ hist ][ "Data" ],
|
275 |
# binListDict[ initialHistDict[ hist ] ][ "QCDFlat" ],
|
276 |
# binListDict[ initialHistDict[ hist ] ][ "Data" ] ] )
|
277 |
rebinList = FH.mergeList( [ binListDict[ hist ][ "Data" ], binListDict[ initialHistDict[ hist ] ][ "Data" ] ] )
|
278 |
#rebinList = FH.mergeList( [ binListDict[ hist ][ "QCDFlat" ], binListDict[ initialHistDict[ hist ] ][ "QCDFlat" ] ] )
|
279 |
print hist
|
280 |
print rebinList
|
281 |
obj = array( 'd' )
|
282 |
for b in rebinList:
|
283 |
obj.append( b )
|
284 |
pass
|
285 |
for file in sampleList:
|
286 |
histDict[ hist ][ file ][ dir ] = \
|
287 |
histDict[ hist ][ file ][ dir ].Rebin( len( rebinList ) -1 , hist , obj )
|
288 |
histDict[ initialHistDict[ hist ] ][ file ][ dir ] = \
|
289 |
histDict[ initialHistDict[ hist ] ][ file ][ dir ].Rebin( len( rebinList ) -1 , hist , obj )
|
290 |
graph[ hist ][ file ][ dir ] = ROOT.TGraphAsymmErrors()
|
291 |
graph[ hist ][ file ][ dir ].BayesDivide( histDict[ hist ][ file ][ dir ],
|
292 |
histDict[ initialHistDict[ hist ] ][ file ][ dir ] )
|
293 |
graph[ hist ][ file ][ dir ].UseCurrentStyle()
|
294 |
# remove very first bin
|
295 |
for p in range( 0, graph[ hist ][ file ][ dir ].GetN() ):
|
296 |
ix = ROOT.Double( 0 )
|
297 |
yps = ROOT.Double( 0 )
|
298 |
graph[ hist ][ file ][ dir ].GetPoint( p, ix, yps )
|
299 |
if ix < 20 and yps < 10**-12:
|
300 |
graph[ hist ][ file ][ dir ].SetPoint( p,0,0 )
|
301 |
graph[ hist ][ file ][ dir ].SetPointError( p,0,0,0,0 )
|
302 |
pass
|
303 |
pass
|
304 |
h = hist
|
305 |
markerStyle = 22
|
306 |
if file == "Data":
|
307 |
h = hist + file
|
308 |
markerStyle = 20
|
309 |
pass
|
310 |
titleAdd = ""
|
311 |
if hist in titleDict.keys():
|
312 |
titleAdd = titleDict[ hist ]
|
313 |
pass
|
314 |
xtitleAdd = ""
|
315 |
if hist in xtitleDict.keys():
|
316 |
xtitleAdd = xtitleDict[ hist ]
|
317 |
pass
|
318 |
Style.setHistStyle( graph[ hist ][ file ][ dir ],
|
319 |
status="Err",
|
320 |
color=colorDict[ h ],
|
321 |
xTitle=xtitle + xtitleAdd,
|
322 |
yTitle=ytitle,
|
323 |
title=title + titleAdd,
|
324 |
markerStyle=markerStyle
|
325 |
)
|
326 |
pass
|
327 |
pass
|
328 |
|
329 |
cDict = {}
|
330 |
legDict = {}
|
331 |
#for file in sampleList:
|
332 |
# cDict[ file ] = {}
|
333 |
# legDict[ file ] = {}
|
334 |
for hist in initialHistDict.keys():
|
335 |
cDict[ hist ] = ROOT.TCanvas( hist , hist )
|
336 |
cDict[ hist ].cd()
|
337 |
glist = []
|
338 |
llist = []
|
339 |
same = "A"
|
340 |
#dir = "FakeRateInvertMHTLoose/"
|
341 |
#dir = "FakeRate40MHT60/"
|
342 |
dir = dirs[ 0 ]
|
343 |
for file in sampleList:
|
344 |
graph[ hist ][ file ][ dir ].Draw( "P" + same )
|
345 |
if not yRange == None:
|
346 |
graph[ hist ][ file ][ dir ].GetYaxis().SetRangeUser( yRange[ 0 ], yRange[ 1 ] )
|
347 |
pass
|
348 |
if not xRange == None:
|
349 |
graph[ hist ][ file ][ dir ].GetXaxis().SetRangeUser( xRange[ 0 ], xRange[ 1 ] )
|
350 |
pass
|
351 |
same = "same"
|
352 |
glist.append( graph[ hist ][ file ][ dir ] )
|
353 |
h = hist
|
354 |
if file == "Data":
|
355 |
h = hist + file
|
356 |
pass
|
357 |
llist.append( legendDict[ h ] )
|
358 |
pass
|
359 |
|
360 |
|
361 |
legDict[ hist ] = Style.makeLegendSimple( glist,
|
362 |
llist,
|
363 |
#statusDict=statusDict,
|
364 |
style="ep",
|
365 |
position="umr" )
|
366 |
legDict[ hist ].Draw( "same" )
|
367 |
ROOT.gPad.SetLogy()
|
368 |
|
369 |
xmin = None
|
370 |
xmax = None
|
371 |
if not xRange == None:
|
372 |
xmin = xRange[ 0 ]
|
373 |
xmax = xRange[ 1 ]
|
374 |
pass
|
375 |
|
376 |
if plotRatio:
|
377 |
ratioDict[ hist ] = RT.Ratio( graph[ hist ][ "Data" ][ dir ],
|
378 |
graph[ hist ][ "QCDFlat" ][ dir ],
|
379 |
colorUp = ROOT.kBlack,
|
380 |
xmin=xmin,
|
381 |
xmax=xmax,
|
382 |
xtitle=xtitle )
|
383 |
|
384 |
ratioDict[ hist ].drawRatio( ROOT.gPad )
|
385 |
pass
|
386 |
pass
|
387 |
|
388 |
|
389 |
|
390 |
Def.DontQuit()
|