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

# User Rev Content
1 peller 1.1 #!/usr/bin/env python
2     import pickle
3     import ROOT
4     from array import array
5 peller 1.11 import sys, os
6 peller 1.8 from optparse import OptionParser
7 peller 1.32 from copy import copy,deepcopy
8     from math import sqrt
9 nmohr 1.43 ROOT.gROOT.SetBatch(True)
10 peller 1.1
11 peller 1.7 #CONFIGURE
12     argv = sys.argv
13     parser = OptionParser()
14 bortigno 1.46 parser.add_option("-R", "--region", dest="region", default="",
15 peller 1.10 help="region to plot")
16 peller 1.7 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 nmohr 1.43
22     from myutils import BetterConfigParser, printc, ParseInfo, mvainfo, StackMaker, HistoMaker
23    
24 peller 1.7 print opts.config
25 peller 1.42 opts.config.append('8TeVconfig/vhbbPlotDef.ini')
26 peller 1.7 config = BetterConfigParser()
27     config.read(opts.config)
28 peller 1.17
29 peller 1.42 #path = opts.path
30 peller 1.10 region = opts.region
31 peller 1.7
32 peller 1.52 # 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 peller 1.10 #get locations:
39     Wdir=config.get('Directories','Wdir')
40 nmohr 1.28 samplesinfo=config.get('Directories','samplesinfo')
41 peller 1.41
42 peller 1.42 path = config.get('Directories','plottingSamples')
43 peller 1.41
44 peller 1.10 section='Plot:%s'%region
45 peller 1.1
46 nmohr 1.43 info = ParseInfo(samplesinfo,path)
47 peller 1.1
48 peller 1.32 #----------Histo from trees------------
49 nmohr 1.40 def doPlot():
50 peller 1.32 vars = (config.get(section, 'vars')).split(',')
51     data = config.get(section,'Datas')
52 bortigno 1.50 mc = eval(config.get('Plot_general','samples'))
53 peller 1.32
54 bortigno 1.50 SignalRegion = False
55     if config.has_option(section,'Signal'):
56 nmohr 1.49 mc.append(config.get(section,'Signal'))
57 nmohr 1.51 SignalRegion = True
58 bortigno 1.50
59 nmohr 1.43 datasamples = info.get_samples(data)
60     mcsamples = info.get_samples(mc)
61 peller 1.32
62 peller 1.44 GroupDict = eval(config.get('Plot_general','Group'))
63 peller 1.32
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 peller 1.45 print options
71 peller 1.32
72 peller 1.44 Plotter=HistoMaker(mcsamples+datasamples,path,config,options,GroupDict)
73 peller 1.32
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 nmohr 1.43 for job in datasamples:
85     lumi+=float(job.lumi)
86     lumicounter+=1.
87 peller 1.32
88     if lumicounter > 0:
89     lumi=lumi/lumicounter
90    
91     Plotter.lumi=lumi
92     mass = Stacks[0].mass
93    
94 nmohr 1.43 for job in mcsamples:
95 peller 1.44 #hTempList, typList = Plotter.get_histos_from_tree(job)
96 peller 1.52 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 nmohr 1.43 if job.name == mass:
101     print job.name
102 peller 1.44 Overlaylist= deepcopy([hDictList[v].values()[0] for v in range(0,len(vars))])
103 nmohr 1.43 for v in range(0,len(vars)):
104 peller 1.44 Lhistos[v].append(hDictList[v].values()[0])
105     Ltyps[v].append(hDictList[v].keys()[0])
106 nmohr 1.43
107     for job in datasamples:
108 peller 1.44 #hTemp, typ = Plotter.get_histos_from_tree(job)
109 peller 1.52 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 nmohr 1.43 for v in range(0,len(vars)):
114 peller 1.44 Ldatas[v].append(dDictList[v].values()[0])
115     Ldatatyps[v].append(dDictList[v].keys()[0])
116 nmohr 1.43 Ldatanames[v].append(job.name)
117 peller 1.32
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 nmohr 1.40 if SignalRegion:
128     Stacks[v].overlay = Overlaylist[v]
129 peller 1.32 Stacks[v].lumi = lumi
130     Stacks[v].doPlot()
131 nmohr 1.48 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 bortigno 1.47 Stacks[v].normalize = True
137     Stacks[v].options['pdfName'] = Stacks[v].options['pdfName'].replace('.pdf','_norm.pdf')
138     Stacks[v].doPlot()
139 peller 1.32 print 'i am done!\n'
140     #----------------------------------------------------
141 nmohr 1.40 doPlot()
142 peller 1.5 sys.exit(0)