ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbb/python/tree_stack.py
Revision: 1.52
Committed: Mon Apr 15 12:04:28 2013 UTC (12 years, 1 month ago) by peller
Content type: text/x-python
Branch: MAIN
CVS Tags: lhcp_UnblindFix, hcp_Unblind, HEAD
Changes since 1.51: +14 -2 lines
Log Message:
add blind cut fuer plotter

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("-C", "--config", dest="config", default=[], action="append",
17 help="configuration file")
18 (opts, args) = parser.parse_args(argv)
19 if opts.config =="":
20 opts.config = "config"
21
22 from myutils import BetterConfigParser, printc, ParseInfo, mvainfo, StackMaker, HistoMaker
23
24 print opts.config
25 opts.config.append('8TeVconfig/vhbbPlotDef.ini')
26 config = BetterConfigParser()
27 config.read(opts.config)
28
29 #path = opts.path
30 region = opts.region
31
32 # additional blinding cut:
33 addBlindingCut = None
34 if config.has_option('Plot_general','addBlindingCut'):
35 addBlindingCut = config.get('Plot_general','addBlindingCut')
36 print 'adding add. blinding cut'
37
38 #get locations:
39 Wdir=config.get('Directories','Wdir')
40 samplesinfo=config.get('Directories','samplesinfo')
41
42 path = config.get('Directories','plottingSamples')
43
44 section='Plot:%s'%region
45
46 info = ParseInfo(samplesinfo,path)
47
48 #----------Histo from trees------------
49 def doPlot():
50 vars = (config.get(section, 'vars')).split(',')
51 data = config.get(section,'Datas')
52 mc = eval(config.get('Plot_general','samples'))
53
54 SignalRegion = False
55 if config.has_option(section,'Signal'):
56 mc.append(config.get(section,'Signal'))
57 SignalRegion = True
58
59 datasamples = info.get_samples(data)
60 mcsamples = info.get_samples(mc)
61
62 GroupDict = eval(config.get('Plot_general','Group'))
63
64 #GETALL AT ONCE
65 options = []
66 Stacks = []
67 for i in range(len(vars)):
68 Stacks.append(StackMaker(config,vars[i],region,SignalRegion))
69 options.append(Stacks[i].options)
70 print options
71
72 Plotter=HistoMaker(mcsamples+datasamples,path,config,options,GroupDict)
73
74 #print '\nProducing Plot of %s\n'%vars[v]
75 Lhistos = [[] for _ in range(0,len(vars))]
76 Ltyps = [[] for _ in range(0,len(vars))]
77 Ldatas = [[] for _ in range(0,len(vars))]
78 Ldatatyps = [[] for _ in range(0,len(vars))]
79 Ldatanames = [[] for _ in range(0,len(vars))]
80
81 #Find out Lumi:
82 lumicounter=0.
83 lumi=0.
84 for job in datasamples:
85 lumi+=float(job.lumi)
86 lumicounter+=1.
87
88 if lumicounter > 0:
89 lumi=lumi/lumicounter
90
91 Plotter.lumi=lumi
92 mass = Stacks[0].mass
93
94 for job in mcsamples:
95 #hTempList, typList = Plotter.get_histos_from_tree(job)
96 if addBlindingCut:
97 hDictList = Plotter.get_histos_from_tree(job,config.get('Cuts',region)+' & ' + addBlindingCut)
98 else:
99 hDictList = Plotter.get_histos_from_tree(job)
100 if job.name == mass:
101 print job.name
102 Overlaylist= deepcopy([hDictList[v].values()[0] for v in range(0,len(vars))])
103 for v in range(0,len(vars)):
104 Lhistos[v].append(hDictList[v].values()[0])
105 Ltyps[v].append(hDictList[v].keys()[0])
106
107 for job in datasamples:
108 #hTemp, typ = Plotter.get_histos_from_tree(job)
109 if addBlindingCut:
110 dDictList = Plotter.get_histos_from_tree(job,config.get('Cuts',region)+' & ' + addBlindingCut)
111 else:
112 dDictList = Plotter.get_histos_from_tree(job)
113 for v in range(0,len(vars)):
114 Ldatas[v].append(dDictList[v].values()[0])
115 Ldatatyps[v].append(dDictList[v].keys()[0])
116 Ldatanames[v].append(job.name)
117
118 for v in range(0,len(vars)):
119
120 histos = Lhistos[v]
121 typs = Ltyps[v]
122 Stacks[v].histos = Lhistos[v]
123 Stacks[v].typs = Ltyps[v]
124 Stacks[v].datas = Ldatas[v]
125 Stacks[v].datatyps = Ldatatyps[v]
126 Stacks[v].datanames= Ldatanames[v]
127 if SignalRegion:
128 Stacks[v].overlay = Overlaylist[v]
129 Stacks[v].lumi = lumi
130 Stacks[v].doPlot()
131 Stacks[v].histos = Lhistos[v]
132 Stacks[v].typs = Ltyps[v]
133 Stacks[v].datas = Ldatas[v]
134 Stacks[v].datatyps = Ldatatyps[v]
135 Stacks[v].datanames= Ldatanames[v]
136 Stacks[v].normalize = True
137 Stacks[v].options['pdfName'] = Stacks[v].options['pdfName'].replace('.pdf','_norm.pdf')
138 Stacks[v].doPlot()
139 print 'i am done!\n'
140 #----------------------------------------------------
141 doPlot()
142 sys.exit(0)