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

# User Rev Content
1 nowak 1.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