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

File Contents

# User Rev Content
1 bortigno 1.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 bortigno 1.3 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 bortigno 1.1 (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 bortigno 1.3 for i in range(7,9):
44 bortigno 1.1 if 'VH' in histo.GetName():
45     s+=histo.GetBinContent(i)
46     else:
47     b+=histo.GetBinContent(i)
48     return s/b
49    
50 bortigno 1.2 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 bortigno 1.3 for i in range(7,9):
58 bortigno 1.2 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 bortigno 1.1 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 bortigno 1.3 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 bortigno 1.1 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 bortigno 1.3
107 bortigno 1.1 histosL = []
108 bortigno 1.3
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 bortigno 1.1 for file in fileList:
121     print file
122     print get_s_over_b(file)
123 bortigno 1.3 if eval(opts.rescale) == False:
124     max_sb = 1.
125     max_ssb = 1.
126 bortigno 1.1 for th1 in get_th1(file):
127 bortigno 1.4 th1.Sumw2()
128 bortigno 1.3 if 's/b' in opts.fom:
129     th1.Scale(get_s_over_b(file)/max_sb)
130     elif 's/s+b' in opts.fom:
131     th1.Scale(get_s_over_sb(file)/max_ssb)
132     if 'VV' in th1.GetName():
133     th1.SetName('VV')
134 bortigno 1.1 histosL.append(th1)
135    
136     print 'histoL'
137     print histosL
138     typs = []
139     typsL = []
140     datas = []
141     datasL = []
142    
143     #append the name just once
144     for histo in histosL:
145 bortigno 1.3 typsL.append(histo.GetName())
146     if 'data' in histo.GetName():
147 bortigno 1.1 datasL.append(histo)
148    
149     #datasL.append(datas)
150     #typsL.append(typs)
151     print typsL
152    
153     stack.histos = histosL
154     stack.typs = typsL
155     stack.datas = datasL
156     # stack.datatyps = Ldatatyps[v]
157     stack.datanames='data_obs'
158     #if signalRegion:
159     # stack.overlay = ['VH','VVHF','VVLF']
160     # stack.options['pdfName'] = stack.options['pdfName'].replace('.pdf','_preFit.pdf')
161 bortigno 1.3
162     appendix = ''
163     if(eval(opts.rescale) == True):
164     appendix = '_rescaled_'
165    
166     if 's/s+b' in opts.fom:
167     stack.options['pdfName'] = stack.options['pdfName'].replace('.pdf','_combined78tev_postFit_s_over_sb'+appendix+'.pdf')
168     elif 's/b' in opts.fom:
169     stack.options['pdfName'] = stack.options['pdfName'].replace('.pdf','_combined78tev_postFit_s_over_b'+appendix+'.pdf')
170     else:
171     stack.options['pdfName'] = stack.options['pdfName'].replace('.pdf','_unweighted.pdf')
172    
173 bortigno 1.1 # stack.options['pdfName'] = stack.options['pdfName'].replace('.pdf','_highPt_7tev.pdf')
174 bortigno 1.2 # stack.options['pdfName'] = stack.options['pdfName'].replace('.pdf','_combined_postFit_s_over_b_Hpt_weight_1.pdf'
175 bortigno 1.1 stack.lumi = 19040
176 bortigno 1.3
177    
178     mjj_sub = eval(opts.sub)
179    
180     if mjj_sub == False:
181     stack.doPlot()
182     elif mjj_sub == True:
183 bortigno 1.4 stack.options['pdfName'] = stack.options['pdfName'].replace('.pdf','_subtracted.pdf')
184 bortigno 1.3 stack.doSubPlot(['VH','VV'])
185 bortigno 1.1 print 'i am done!\n'
186    
187    
188     plot()
189     sys.exit(0)
190    
191    
192    
193    
194