ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/nowaf/RootFilesInUse/MakeCutFlowPlots.py
Revision: 1.1.1.1 (vendor branch)
Committed: Tue Mar 20 13:12:08 2012 UTC (13 years, 1 month ago) by nowak
Content type: text/x-python
Branch: rootFilesInUse, MAIN
CVS Tags: start, HEAD
Changes since 1.1: +0 -0 lines
Log Message:
t files in use

File Contents

# Content
1 import ROOT
2 import sys, re, math
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
7 if __name__ == "__main__":
8
9 Def.SetGlobalStyles()
10
11 #lumi = 180.
12 lumi = 1000.
13 #lumi = 5000.
14
15 saveName = "plots/cutFlow_MHT_PreSelHT600_Bench_1fb"
16
17 saveToPS = False
18 saveToEPS = False
19
20
21 sampleList = []
22 sampleList.append( "LM13" )
23 #sampleList.append( "330_340" )
24 #sampleList.append( "330_390" )
25 ##sampleList.append( "LM8" )
26 ##sampleList.append( "LM7" )
27 #sampleList.append( "GMSBc" )
28 #sampleList.append( "LM3" )
29 #sampleList.append( "LM9" )
30 #sampleList.append( "LM12" )
31 sampleList.append( "TTbar" )
32 sampleList.append( "GVJets" )
33 #sampleList.append( "WWJets" )
34 sampleList.append( "Zinv" )
35 #sampleList.append( "ZJets" )
36 sampleList.append( "WJets" )
37 sampleList.append( "QCDFlat" )
38
39 fileDir = "/scratch/hh/lustre/cms/user/nowaf/2011Data/VersionII/Plots/RealTauEst/"
40 #bDir = "/scratch/hh/lustre/cms/user/nowaf/2011Data/VersionI/mSugraScanTan50_TaNC_cuts/"
41
42 add = ""
43 #add = "_tightID"
44
45 fileDict = {}
46 fileDict[ "Multijet" ] = fileDir + "QCDFlat_TaNC_cuts" + add + ".root"
47 fileDict[ "W+Jets" ] = fileDir + "WJets_TaNC_cuts" + add + ".root"
48 fileDict[ "Z+Jets" ] = fileDir + "ZJets_TaNC_cuts" + add + ".root"
49 fileDict[ "Zinv" ] = fileDir + "Zinv_TaNC_cuts" + add + ".root"
50 fileDict[ "VV+Jets" ] = fileDir + "VVJets_TaNC_cuts" + add + ".root"
51 fileDict[ "GV+Jets" ] = fileDir + "GVJets_TaNC_cuts" + add + ".root"
52 fileDict[ "TTbar" ] = fileDir + "TTbar_TaNC_cuts" + add + ".root"
53 fileDict[ "LM13" ] = fileDir + "LM13_TaNC_cuts" + add + ".root"
54 fileDict[ "LM7" ] = fileDir + "LM7_TaNC_cuts" + add + ".root"
55 fileDict[ "LM8" ] = fileDir + "LM8_TaNC_cuts" + add + ".root"
56 fileDict[ "GMSBc" ] = fileDir + "GMSBc_TaNC_cuts" + add + ".root"
57 fileDict[ "LM3" ] = fileDir + "LM3_TaNC_cuts" + add + ".root"
58 fileDict[ "LM9" ] = fileDir + "LM9_TaNC_cuts" + add + ".root"
59 fileDict[ "LM12" ] = fileDir + "LM12_TaNC_cuts" + add + ".root"
60 fileDict[ "330_340" ] = fileDir + "PhysicsProcesses_mSUGRA_tanbeta50v038xjob_66_RA2SelectionTau.root"
61 fileDict[ "330_390" ] = fileDir + "PhysicsProcesses_mSUGRA_tanbeta50v038xjob_405_RA2SelectionTau.root"
62
63 #dir = "finalPlotTauPreSelection/"
64 dir = "finalPlotTau/"
65
66 #histList = []
67 #histList.append( "MHTMHT" )
68 #hist = "MHTMHT"
69 hist = "HTHT"
70
71 colorDict = {}
72 colorDict[ "QCDFlat" ] = ROOT.kYellow + 3
73 colorDict[ "TTbar" ] = ROOT.kRed + 3
74 colorDict[ "GVJets" ] = ROOT.kRed
75 colorDict[ "ZJets" ] = ROOT.kOrange
76 colorDict[ "Zinv" ] = ROOT.kOrange - 3
77 colorDict[ "VVJets" ] = ROOT.kOrange + 7
78 colorDict[ "WJets" ] = ROOT.kYellow + 2
79 colorDict[ "LM13" ] = ROOT.kBlue
80 colorDict[ "LM7" ] = ROOT.kBlue - 7
81 colorDict[ "LM8" ] = ROOT.kAzure + 10
82 colorDict[ "GMSBc" ] = ROOT.kCyan + 2
83 colorDict[ "LM3" ] = ROOT.kViolet + 1
84 colorDict[ "LM9" ] = ROOT.kViolet - 6
85 colorDict[ "LM12" ] = ROOT.kTeal - 1
86 colorDict[ "330_340" ] = ROOT.kTeal - 6
87 colorDict[ "330_390" ] = ROOT.kTeal + 5
88
89 statusDict = {}
90 statusDict[ "QCDFlat" ] = "BG"
91 #statusDict[ "Multijet" ] = "Signal"
92 statusDict[ "TTbar" ] = "BG"
93 statusDict[ "GV+Jets" ] = "BG"
94 statusDict[ "Z+Jets" ] = "BG"
95 statusDict[ "Zinv" ] = "BG"
96 statusDict[ "VV+Jets" ] = "BG"
97 statusDict[ "W+Jets" ] = "BG"
98 statusDict[ "LM13" ] = "Signal"
99 statusDict[ "LM7" ] = "Signal"
100 statusDict[ "LM8" ] = "Signal"
101 statusDict[ "GMSBc" ] = "Signal"
102 statusDict[ "LM3" ] = "Signal"
103 statusDict[ "LM9" ] = "Signal"
104 statusDict[ "LM12" ] = "Signal"
105 statusDict[ "330_340" ] = "Signal"
106 statusDict[ "330_390" ] = "Signal"
107
108
109 scalingFactors = {}
110 if add == "":
111 scalingFactors[ "QCDFlat" ] = lumi/1000.
112 scalingFactors[ "ZJets" ] = lumi * 3048/( 36277961 *1. )
113 ##print "Warning: Wrong scaling Factor for: VVJets"
114 scalingFactors[ "VVJets" ] = lumi/100.
115 scalingFactors[ "WWJets" ] = lumi * 43. / ( 1197558. * 1. )
116 #scalingFactors[ "WJets" ] = lumi * 31300. / ( 81352581 )
117 scalingFactors[ "WJets" ] = lumi * 31300. / ( 81352581 )
118 scalingFactors[ "TTbar" ] = lumi * 165 / ( 3701947. * 1. )
119 scalingFactors[ "GVJets" ] = lumi * 173 / ( 1067879. * 1. )
120 ##print "Warning: Wrong scaling Factor for: Zinv"
121 scalingFactors[ "Zinv" ] = lumi * 32.92 / ( 3067017. )
122 scalingFactors[ "Data" ] = 1.
123 scalingFactors[ "LM13" ] = lumi * 6.899 / ( 77000. * 1. )
124 scalingFactors[ "LM3" ] = lumi * 3.438 / ( 36475. * 1. )
125 scalingFactors[ "LM8" ] = lumi * 0.73 / ( 10595. * 1. )
126
127
128 pass
129
130
131 initialEvts = {}
132 initialEvts[ "LM13" ] = 8.83 * lumi
133 initialEvts[ "LM7" ] = 1.51 * lumi
134 initialEvts[ "LM8" ] = 0.83 * lumi
135 initialEvts[ "GMSBc" ] = 0.33 * lumi
136 initialEvts[ "LM3" ] = 4.63 * lumi
137 initialEvts[ "LM9" ] = 7.93 * lumi
138 initialEvts[ "LM12" ] = 4.39 * lumi
139 initialEvts[ "TTbar" ] = 165.22 * lumi
140 initialEvts[ "GV+Jets" ] = 172.45 * lumi
141 initialEvts[ "VV+Jets" ] = 41.31 * lumi
142 initialEvts[ "Zinv" ] = 5753.01 * lumi
143 initialEvts[ "Z+Jets" ] = 2589.56 * lumi
144 initialEvts[ "W+Jets" ] = 31178.42 * lumi
145 initialEvts[ "Multijet" ] = 801107074.66 * lumi
146
147 initialEvts[ "330_340" ] = 0.5 * lumi
148 initialEvts[ "330_390" ] = 0.2 * lumi
149
150
151 #######################################################################
152 histDict = {}
153 histDict[ "Signal" ] = {}
154 histDict[ "BG" ] = {}
155 for sample in sampleList:
156 rootfile = ROOT.TFile.Open( fileDict[ sample ] )
157 print sample, " scalingFactor=", scalingFactors[ sample ]
158 if statusDict[ sample ] == "Signal":
159 histDict[ "Signal" ][ sample ] = rootfile.Get( dir + hist )
160 histDict[ "Signal" ][ sample ].SetDirectory( 0 )
161 histDict[ "Signal" ][ sample ].Scale( scalingFactors[ sample ] )
162 pass
163 else:
164 histDict[ "BG" ][ sample ] = rootfile.Get( dir + hist )
165 histDict[ "BG" ][ sample ].SetDirectory( 0 )
166 histDict[ "BG" ][ sample ].Scale( scalingFactors[ sample ] )
167 pass
168 pass
169
170 sb = Style.SB( histDict[ "Signal" ], histDict[ "BG" ] )
171 eyDict = sb.flowYields
172
173 for sample in sampleList:
174 print sample, ": ", round( eyDict[ sample ][ 1 ],2 )
175 pass
176 print "Background: ", round( eyDict[ "BG" ][ 1 ],2 )
177
178 newHistDict = {}
179 newHistDict[ "nEvts" ] = {}
180 newHistDict[ "eff" ] = {}
181 newHistDict[ "sb" ] = {}
182 newHistDict[ "ssqb" ] = {}
183 newHistDict[ "ssb" ] = {}
184 newHistDict[ "ssqsb" ] = {}
185
186 for sample in sampleList:
187 newHistDict[ "nEvts" ][ sample ] = ROOT.TH1F( "nEvts" + sample, "nEvts" + sample, \
188 histDict[ "BG" ][ "Multijet" ].GetNbinsX(),\
189 histDict[ "BG" ][ "Multijet" ].GetXaxis().GetXmin(),\
190 histDict[ "BG" ][ "Multijet" ].GetXaxis().GetXmax() )
191 newHistDict[ "eff" ][ sample ] = ROOT.TH1F( "eff" + sample, "eff" + sample, \
192 histDict[ "BG" ][ "Multijet" ].GetNbinsX(),\
193 histDict[ "BG" ][ "Multijet" ].GetXaxis().GetXmin(),\
194 histDict[ "BG" ][ "Multijet" ].GetXaxis().GetXmax() )
195 newHistDict[ "sb" ][ sample ] = ROOT.TH1F( "S/B" + sample, "S/B" + sample, \
196 histDict[ "BG" ][ "Multijet" ].GetNbinsX(),\
197 histDict[ "BG" ][ "Multijet" ].GetXaxis().GetXmin(),\
198 histDict[ "BG" ][ "Multijet" ].GetXaxis().GetXmax() )
199 newHistDict[ "ssqb" ][ sample ] = ROOT.TH1F( "S/sqrt(B)" + sample, "S/sqrt(B)" + sample, \
200 histDict[ "BG" ][ "Multijet" ].GetNbinsX(),\
201 histDict[ "BG" ][ "Multijet" ].GetXaxis().GetXmin(),\
202 histDict[ "BG" ][ "Multijet" ].GetXaxis().GetXmax() )
203 newHistDict[ "ssb" ][ sample ] = ROOT.TH1F( "S/(S+B)" + sample, "S/(S+B)" + sample, \
204 histDict[ "BG" ][ "Multijet" ].GetNbinsX(),\
205 histDict[ "BG" ][ "Multijet" ].GetXaxis().GetXmin(),\
206 histDict[ "BG" ][ "Multijet" ].GetXaxis().GetXmax() )
207 newHistDict[ "ssqsb" ][ sample ] = ROOT.TH1F( "S/sqrt(S+B)" + sample, "S/sqrt(S+B)" + sample, \
208 histDict[ "BG" ][ "Multijet" ].GetNbinsX(),\
209 histDict[ "BG" ][ "Multijet" ].GetXaxis().GetXmin(),\
210 histDict[ "BG" ][ "Multijet" ].GetXaxis().GetXmax() )
211 newHistDict[ "nEvts" ][ sample ].SetDirectory( 0 )
212 newHistDict[ "eff" ][ sample ].SetDirectory( 0 )
213 newHistDict[ "sb" ][ sample ].SetDirectory( 0 )
214 newHistDict[ "ssqb" ][ sample ].SetDirectory( 0 )
215 newHistDict[ "ssb" ][ sample ].SetDirectory( 0 )
216 newHistDict[ "ssqsb" ][ sample ].SetDirectory( 0 )
217 ### use signal style for all hists
218 Style.setHistStyle( newHistDict[ "nEvts" ][ sample ], "Signal", colorDict[ sample ], \
219 title = "", xTitle="cut at " + hist, yTitle="number of events" )
220 Style.setHistStyle( newHistDict[ "eff" ][ sample ], "Signal", colorDict[ sample ], \
221 title = "", xTitle="cut at " + hist, yTitle="efficiency" )
222 Style.setHistStyle( newHistDict[ "sb" ][ sample ], "Signal", colorDict[ sample ], \
223 title = "", xTitle="cut at " + hist, yTitle="S/B" )
224 Style.setHistStyle( newHistDict[ "ssqb" ][ sample ], "Signal", colorDict[ sample ], \
225 title = "", xTitle="cut at " + hist, yTitle="S/sqrt(B)" )
226 Style.setHistStyle( newHistDict[ "ssb" ][ sample ], "Signal", colorDict[ sample ], \
227 title = "", xTitle="cut at " + hist, yTitle="S/(S+B)" )
228 Style.setHistStyle( newHistDict[ "ssqsb" ][ sample ], "Signal", colorDict[ sample ], \
229 title = "", xTitle="cut at " + hist, yTitle="S/sqrt(S+B)" )
230 for bin in range( 1, histDict[ "BG" ][ "Multijet" ].GetNbinsX() + 1 ):
231 newHistDict[ "nEvts" ][ sample ].SetBinContent( bin, eyDict[ sample ][ bin ] )
232 if initialEvts[ sample ] > 0:
233 newHistDict[ "eff" ][ sample ].SetBinContent( bin, eyDict[ sample ][ bin ]/ initialEvts[ sample ] )
234 pass
235 if eyDict[ "BG" ][ bin ] > 0:
236 newHistDict[ "sb" ][ sample ].SetBinContent( bin, eyDict[ sample ][ bin ]/ eyDict[ "BG" ][ bin ] )
237 newHistDict[ "ssqb" ][ sample ].SetBinContent( bin, eyDict[ sample ][ bin ]/ \
238 math.sqrt( eyDict[ "BG" ][ bin ] ) )
239 pass
240 if eyDict[ sample ][ bin ] + eyDict[ "BG" ][ bin ] > 0:
241 newHistDict[ "ssqsb" ][ sample ].SetBinContent( bin, eyDict[ sample ][ bin ]/ \
242 math.sqrt( eyDict[ sample ][ bin ] + \
243 eyDict[ "BG" ][ bin ] ) )
244 newHistDict[ "ssb" ][ sample ].SetBinContent( bin, eyDict[ sample ][ bin ]/ \
245 ( eyDict[ sample ][ bin ] + eyDict[ "BG" ][ bin ] ) )
246 pass
247 pass
248
249 cDict = {}
250 cDict[ "nEvts_Sig" ] = ROOT.TCanvas( "nEvts_Sig", "nEvts_Sig" )
251 cDict[ "nEvts_BG" ] = ROOT.TCanvas( "nEvts_BG", "nEvts_BG" )
252 cDict[ "eff_Sig" ] = ROOT.TCanvas( "eff_Sig", "eff_Sig" )
253 cDict[ "eff_BG" ] = ROOT.TCanvas( "eff_BG", "eff_BG" )
254
255 cDict[ "sb" ] = ROOT.TCanvas( "sb", "sb" )
256 cDict[ "ssqb" ] = ROOT.TCanvas( "ssqb", "ssqb" )
257 cDict[ "ssb" ] = ROOT.TCanvas( "ssb", "ssb" )
258 cDict[ "ssqsb" ] = ROOT.TCanvas( "ssqsb", "ssqsb" )
259
260 legDict = {}
261
262 option = ""
263 cDict[ "nEvts_Sig" ].cd()
264 sigList = []
265 for sample in sampleList:
266 if statusDict[ sample ] == "Signal":
267 sigList.append( sample )
268 newHistDict[ "nEvts" ][ sample ].Draw( option )
269 option = "same"
270 pass
271 pass
272 legDict[ "nEvts" ] = Style.makeLegend( "nEvts" , newHistDict, sigList, statusDict, "ur" )
273 legDict[ "nEvts" ].Draw( "same" )
274
275 ROOT.gPad.SetLogy()
276 cDict[ "nEvts_Sig" ].Update()
277
278 cDict[ "nEvts_BG" ].cd()
279 bgList = []
280 option = ""
281 for sample in sampleList:
282 if statusDict[ sample ] == "BG":
283 bgList.append( sample )
284 newHistDict[ "nEvts" ][ sample ].Draw( option )
285 newHistDict[ "nEvts" ][ sample ].SetMinimum( 10**-1 )
286 newHistDict[ "nEvts" ][ sample ].SetMaximum( 2*10**2 )
287 option = "same"
288 pass
289 pass
290 legDict[ "nEvts_BG" ] = Style.makeLegend( "nEvts" , newHistDict, bgList, position="ur" )
291 legDict[ "nEvts_BG" ].Draw( "same" )
292
293 ROOT.gPad.SetLogy()
294 cDict[ "nEvts_BG" ].Update()
295
296 option = ""
297 cDict[ "eff_Sig" ].cd()
298 for sample in sampleList:
299 if statusDict[ sample ] == "Signal":
300 newHistDict[ "eff" ][ sample ].Draw( option )
301 option = "same"
302 pass
303 pass
304 legDict[ "eff" ] = Style.makeLegend( "eff" , newHistDict, sigList, statusDict, "ur" )
305 legDict[ "eff" ].Draw( "same" )
306
307 ROOT.gPad.SetLogy()
308 cDict[ "eff_Sig" ].Update()
309
310 cDict[ "eff_BG" ].cd()
311 option = ""
312 for sample in sampleList:
313 if statusDict[ sample ] == "BG":
314 newHistDict[ "eff" ][ sample ].Draw( option )
315 newHistDict[ "eff" ][ sample ].SetMinimum( 10**-11 )
316 newHistDict[ "eff" ][ sample ].SetMaximum( 10**-2 )
317 option = "same"
318 pass
319 pass
320 legDict[ "eff_BG" ] = Style.makeLegend( "eff" , newHistDict, bgList, position="ur" )
321 legDict[ "eff_BG" ].Draw( "same" )
322
323 ROOT.gPad.SetLogy()
324 cDict[ "eff_BG" ].Update()
325
326
327 cDict[ "sb" ].cd()
328 option = ""
329 for sample in sampleList:
330 if statusDict[ sample ] == "Signal":
331 newHistDict[ "sb" ][ sample ].Draw( option )
332 newHistDict[ "sb" ][ sample ].SetMinimum( 10**-2 )
333 #newHistDict[ "eff" ][ sample ].SetMaximum( 10**-2 )
334 option = "same"
335 pass
336 pass
337 legDict[ "sb" ] = Style.makeLegend( "sb" , newHistDict, sigList, position="ur" )
338 legDict[ "sb" ].Draw( "same" )
339
340 ROOT.gPad.SetLogy()
341 cDict[ "sb" ].Update()
342
343
344 cDict[ "ssqb" ].cd()
345 option = ""
346 for sample in sampleList:
347 if statusDict[ sample ] == "Signal":
348 newHistDict[ "ssqb" ][ sample ].Draw( option )
349 newHistDict[ "ssqb" ][ sample ].SetMinimum( 10**-2 )
350 #newHistDict[ "eff" ][ sample ].SetMaximum( 10**-2 )
351 option = "same"
352 pass
353 pass
354 legDict[ "ssqb" ] = Style.makeLegend( "ssqb" , newHistDict, sigList, position="ur" )
355 legDict[ "ssqb" ].Draw( "same" )
356
357 ROOT.gPad.SetLogy()
358 cDict[ "ssqb" ].Update()
359
360 cDict[ "ssb" ].cd()
361 option = ""
362 for sample in sampleList:
363 if statusDict[ sample ] == "Signal":
364 newHistDict[ "ssb" ][ sample ].Draw( option )
365 newHistDict[ "ssb" ][ sample ].SetMinimum( 10**-2 )
366 #newHistDict[ "eff" ][ sample ].SetMaximum( 10**-2 )
367 option = "same"
368 pass
369 pass
370 legDict[ "ssb" ] = Style.makeLegend( "ssb" , newHistDict, sigList, position="ur" )
371 legDict[ "ssb" ].Draw( "same" )
372
373 ROOT.gPad.SetLogy()
374 cDict[ "ssb" ].Update()
375
376
377 cDict[ "ssqsb" ].cd()
378 option = ""
379 for sample in sampleList:
380 if statusDict[ sample ] == "Signal":
381 newHistDict[ "ssqsb" ][ sample ].Draw( option )
382 newHistDict[ "ssqsb" ][ sample ].SetMinimum( 10**-2 )
383 #newHistDict[ "eff" ][ sample ].SetMaximum( 10**-2 )
384 option = "same"
385 pass
386 pass
387 legDict[ "ssqsb" ] = Style.makeLegend( "ssqsb" , newHistDict, sigList, position="ur" )
388 legDict[ "ssqsb" ].Draw( "same" )
389
390 ROOT.gPad.SetLogy()
391 cDict[ "ssqsb" ].Update()
392
393 if saveToPS:
394 Style.saveToPS( saveName, cDict, [ "nEvts_Sig", "nEvts_BG", "eff_Sig", "eff_BG", "sb", "ssqb", "ssb", "ssqsb" ] )
395 if saveToEPS:
396 Style.saveToEPS( saveName, cDict )
397 pass
398
399 Def.DontQuit()
400
401 pass
402
403
404
405
406
407