ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbb/python/manualStack.py
Revision: 1.3
Committed: Mon Apr 29 18:10:46 2013 UTC (12 years ago) by bortigno
Content type: text/x-python
Branch: MAIN
Changes since 1.2: +74 -56 lines
Log Message:
@update

File Contents

# Content
1 #!/usr/bin/env python
2 import pickle
3 import ROOT
4 from array import array
5 import sys, os
6 from optparse import OptionParser
7 from copy import copy,deepcopy
8 from math import sqrt
9 ROOT.gROOT.SetBatch(True)
10
11 #CONFIGURE
12 argv = sys.argv
13 parser = OptionParser()
14 parser.add_option("-R", "--region", dest="region", default="",
15 help="region to plot")
16 parser.add_option("-M", "--figure_of_merit", dest="fom", default="",
17 help="figure of merit to be used to weight the plots. Possibilities: s/b, s/sqrt(b)")
18 parser.add_option("-C", "--config", dest="config", default=[], action="append",
19 help="configuration file")
20 parser.add_option("-S", "--subtructed", dest="sub", default="False",
21 help="subtruction plot")
22 parser.add_option("-L", "--rescale", dest="rescale", default="False",
23 help="rescale by 1/max_weight")
24
25 (opts, args) = parser.parse_args(argv)
26 if opts.config =="":
27 opts.config = "config"
28
29 from myutils import BetterConfigParser, printc, ParseInfo, mvainfo, StackMaker, HistoMaker
30
31 print opts.config
32 opts.config.append('8TeVconfig/vhbbPlotDef.ini')
33 config = BetterConfigParser()
34 config.read(opts.config)
35
36 def get_s_over_b(fName):
37 #using bin 9, 10, 11
38 s=0
39 b=0
40 histos = get_th1(fName)
41 for histo in histos:
42 if 'data' in histo.GetName(): continue
43 for i in range(7,9):
44 if 'VH' in histo.GetName():
45 s+=histo.GetBinContent(i)
46 else:
47 b+=histo.GetBinContent(i)
48 return s/b
49
50 def get_s_over_sb(fName):
51 #using bin 9, 10, 11
52 s=0
53 b=0
54 histos = get_th1(fName)
55 for histo in histos:
56 if 'data' in histo.GetName(): continue
57 for i in range(7,9):
58 if 'VH' in histo.GetName():
59 s+=histo.GetBinContent(i)
60 else:
61 b+=histo.GetBinContent(i)
62 return s/(s+b)
63
64
65 def get_th1(fName):
66 infile = ROOT.TFile.Open(fName,'read')
67 th1 = []
68 for key in ROOT.gDirectory.GetListOfKeys():
69 infile.cd()
70 th1.append(key.ReadObj())
71 return th1
72
73 def plot():
74 signalRegion = True
75 region = 'plot'
76 var = 'Hmass'
77
78 stack = StackMaker(config,var,region,signalRegion)
79
80
81 fileList = []
82
83 #MedPt
84 fileList += [ '/shome/bortigno/VHbbAnalysis/postPreApp//LHCP_PostFit_v0.1/MJJ_Zll_ZmmMedPt_PostFit_s.root',
85 '/shome/bortigno/VHbbAnalysis/postPreApp//LHCP_PostFit_v0.1/MJJ_Zll_ZeeMedPt_PostFit_s.root',
86 '/shome/bortigno/VHbbAnalysis/postPreApp//LHCP_PostFit_v0.1/MJJ_Znn_MedPt_ZnunuMedPt_8TeV_PostFit_s.root',
87 '/shome/bortigno/VHbbAnalysis/postPreApp//LHCP_PostFit_v0.1/MJJ_Wln_ch2_Wmunu2_PostFit_s.root']
88 #LowPt
89 fileList += [ '/shome/bortigno/VHbbAnalysis/postPreApp//LHCP_PostFit_v0.1/MJJ_Znn_LowPt_ZnunuLowPt_8TeV_PostFit_s.root',
90 '/shome/bortigno/VHbbAnalysis/postPreApp//LHCP_PostFit_v0.1/MJJ_Zll_ZmmLowPt_PostFit_s.root',
91 '/shome/bortigno/VHbbAnalysis/postPreApp//LHCP_PostFit_v0.1/MJJ_Zll_ZeeLowPt_PostFit_s.root',
92 '/shome/bortigno/VHbbAnalysis/postPreApp//LHCP_PostFit_v0.1/MJJ_Wln_ch1_Wenu_PostFit_s.root',
93 '/shome/bortigno/VHbbAnalysis/postPreApp//LHCP_PostFit_v0.1/MJJ_Wln_ch2_Wmunu_PostFit_s.root']
94 #highPt
95 fileList += [ '/shome/bortigno/VHbbAnalysis/postPreApp//LHCP_PostFit_v0.1/MJJ_Wln_ch1_WenuHighPt_PostFit_s.root',
96 '/shome/bortigno/VHbbAnalysis/postPreApp//LHCP_PostFit_v0.1/MJJ_Zll_ZeeHighPt_PostFit_s.root',
97 '/shome/bortigno/VHbbAnalysis/postPreApp//LHCP_PostFit_v0.1/MJJ_Znn_HighPt_ZnunuHighPt_8TeV_PostFit_s.root',
98 '/shome/bortigno/VHbbAnalysis/postPreApp//LHCP_PostFit_v0.1/MJJ_Wln_ch2_WmunuHighPt_PostFit_s.root',
99 '/shome/bortigno/VHbbAnalysis/postPreApp//LHCP_PostFit_v0.1/MJJ_Zll_ZmmHighPt_PostFit_s.root',
100 '/shome/bortigno/VHbbAnalysis/postPreApp//LHCP_PostFit_v0.1/MJJ_Wtn_Wtn_PostFit_s.root']
101
102 # 7tev
103 fileList += ['ZeeLowPt_7TeV.root','ZmmLowPt_7TeV.root','WmnLowPt_7TeV.root','ZnnLowPt_7TeV.root']
104 fileList += ['ZeeHighPt_7TeV.root','ZmmHighPt_7TeV.root','WmnHighPt_7TeV.root','ZnnHighPt_7TeV.root']
105
106
107 histosL = []
108
109 max_sb = 0
110 max_ssb = 0
111 for file in fileList:
112 if max_sb < get_s_over_b(file):
113 max_sb = get_s_over_b(file)
114 if max_ssb < get_s_over_sb(file):
115 max_ssb = get_s_over_sb(file)
116
117 print max_ssb
118 print max_sb
119
120 for file in fileList:
121 print file
122 print get_s_over_b(file)
123 if eval(opts.rescale) == False:
124 max_sb = 1.
125 max_ssb = 1.
126 for th1 in get_th1(file):
127 if 's/b' in opts.fom:
128 th1.Scale(get_s_over_b(file)/max_sb)
129 elif 's/s+b' in opts.fom:
130 th1.Scale(get_s_over_sb(file)/max_ssb)
131 if 'VV' in th1.GetName():
132 th1.SetName('VV')
133 histosL.append(th1)
134
135 print 'histoL'
136 print histosL
137 typs = []
138 typsL = []
139 datas = []
140 datasL = []
141
142 #append the name just once
143 for histo in histosL:
144 typsL.append(histo.GetName())
145 if 'data' in histo.GetName():
146 datasL.append(histo)
147
148 #datasL.append(datas)
149 #typsL.append(typs)
150 print typsL
151
152 stack.histos = histosL
153 stack.typs = typsL
154 stack.datas = datasL
155 # stack.datatyps = Ldatatyps[v]
156 stack.datanames='data_obs'
157 #if signalRegion:
158 # stack.overlay = ['VH','VVHF','VVLF']
159 # stack.options['pdfName'] = stack.options['pdfName'].replace('.pdf','_preFit.pdf')
160
161 appendix = ''
162 if(eval(opts.rescale) == True):
163 appendix = '_rescaled_'
164
165 if 's/s+b' in opts.fom:
166 stack.options['pdfName'] = stack.options['pdfName'].replace('.pdf','_combined78tev_postFit_s_over_sb'+appendix+'.pdf')
167 elif 's/b' in opts.fom:
168 stack.options['pdfName'] = stack.options['pdfName'].replace('.pdf','_combined78tev_postFit_s_over_b'+appendix+'.pdf')
169 else:
170 stack.options['pdfName'] = stack.options['pdfName'].replace('.pdf','_unweighted.pdf')
171
172 # stack.options['pdfName'] = stack.options['pdfName'].replace('.pdf','_highPt_7tev.pdf')
173 # stack.options['pdfName'] = stack.options['pdfName'].replace('.pdf','_combined_postFit_s_over_b_Hpt_weight_1.pdf'
174 stack.lumi = 19040
175
176
177 mjj_sub = eval(opts.sub)
178
179 if mjj_sub == False:
180 stack.doPlot()
181 elif mjj_sub == True:
182 stack.options['pdfName'] = stack.options['pdfName'].replace('.pdf','_subtructed.pdf')
183 stack.doSubPlot(['VH','VV'])
184 print 'i am done!\n'
185
186
187 plot()
188 sys.exit(0)
189
190
191
192
193