ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbb/python/tree_stack.py
Revision: 1.31
Committed: Thu Oct 18 13:44:02 2012 UTC (12 years, 6 months ago) by nmohr
Content type: text/x-python
Branch: MAIN
Changes since 1.30: +16 -257 lines
Log Message:
Stack as class

File Contents

# User Rev Content
1 peller 1.1 #!/usr/bin/env python
2     from samplesclass import sample
3     from printcolor import printc
4     import pickle
5     import ROOT
6     from array import array
7 nmohr 1.3 from BetterConfigParser import BetterConfigParser
8 peller 1.11 import sys, os
9 peller 1.1 from mvainfos import mvainfo
10 peller 1.10 #from gethistofromtree import getHistoFromTree, orderandadd
11 peller 1.8 from optparse import OptionParser
12 peller 1.10 from HistoMaker import HistoMaker, orderandadd
13 peller 1.25 from copy import deepcopy
14 nmohr 1.31 from StackMaker import StackMaker
15 peller 1.1
16 peller 1.7 #CONFIGURE
17     argv = sys.argv
18     parser = OptionParser()
19     parser.add_option("-P", "--path", dest="path", default="",
20     help="path to samples")
21 peller 1.10 parser.add_option("-R", "--reg", dest="region", default="",
22     help="region to plot")
23 peller 1.7 parser.add_option("-C", "--config", dest="config", default=[], action="append",
24     help="configuration file")
25     (opts, args) = parser.parse_args(argv)
26     if opts.config =="":
27     opts.config = "config"
28     print opts.config
29     config = BetterConfigParser()
30     config.read(opts.config)
31 peller 1.17
32 peller 1.7 path = opts.path
33 peller 1.10 region = opts.region
34 peller 1.7
35 peller 1.10 #get locations:
36     Wdir=config.get('Directories','Wdir')
37 nmohr 1.28 samplesinfo=config.get('Directories','samplesinfo')
38 peller 1.1
39 peller 1.10 section='Plot:%s'%region
40 peller 1.1
41 nmohr 1.28 infofile = open(samplesinfo,'r')
42 peller 1.10 info = pickle.load(infofile)
43     infofile.close()
44 peller 1.1
45 peller 1.10 #options = plot.split(',')
46 peller 1.1
47 peller 1.10 vars = (config.get(section, 'vars')).split(',')
48 peller 1.1
49 peller 1.25 if 'ZLight' in region or 'TTbar' in region or 'Zbb' in region: SignalRegion = False
50     else:
51     SignalRegion = True
52     print 'You are in the Signal Region!'
53    
54 peller 1.10 data = config.get(section,'Datas')
55 peller 1.1
56 peller 1.11 samples=config.get('Plot_general','samples')
57 peller 1.8 samples=samples.split(',')
58    
59 peller 1.1 weightF=config.get('Weights','weightF')
60 peller 1.14 Group = eval(config.get('Plot_general','Group'))
61 peller 1.1
62    
63 peller 1.10 #GETALL AT ONCE
64 nmohr 1.31 options = []
65     Stacks = []
66     for i in range(len(vars)):
67     Stacks.append(StackMaker(config,vars[i],region,SignalRegion))
68     options.append(Stacks[i].options)
69 peller 1.1
70 peller 1.22 Plotter=HistoMaker(path,config,region,options)
71 peller 1.17
72 peller 1.10 #print '\nProducing Plot of %s\n'%vars[v]
73     Lhistos = [[] for _ in range(0,len(vars))]
74     Ltyps = [[] for _ in range(0,len(vars))]
75     Ldatas = [[] for _ in range(0,len(vars))]
76     Ldatatyps = [[] for _ in range(0,len(vars))]
77     Ldatanames = [[] for _ in range(0,len(vars))]
78 peller 1.1
79 peller 1.12
80     #Find out Lumi:
81 peller 1.25 lumicounter=0.
82     lumi=0.
83 peller 1.12 for job in info:
84 peller 1.25 if job.name in data:
85     lumi+=float(job.lumi)
86     lumicounter+=1.
87 peller 1.12
88 peller 1.25 if lumicounter > 0:
89     lumi=lumi/lumicounter
90    
91     Plotter.lumi=lumi
92 nmohr 1.31 mass = Stacks[0].mass
93    
94 peller 1.12
95 peller 1.6 for job in info:
96     if eval(job.active):
97     if job.subsamples:
98     for subsample in range(0,len(job.subnames)):
99    
100 peller 1.8 if job.subnames[subsample] in samples:
101 peller 1.10 hTempList, typList = Plotter.getHistoFromTree(job,subsample)
102     for v in range(0,len(vars)):
103     Lhistos[v].append(hTempList[v])
104     Ltyps[v].append(Group[job.subnames[subsample]])
105 peller 1.22 print job.subnames[subsample]
106 peller 1.6
107     else:
108 peller 1.8 if job.name in samples:
109 peller 1.25 if job.name == mass:
110     print job.name
111     hTempList, typList = Plotter.getHistoFromTree(job)
112     for v in range(0,len(vars)):
113     if SignalRegion:
114     Lhistos[v].append(hTempList[v])
115     Ltyps[v].append(Group[job.name])
116     Overlaylist= deepcopy(hTempList)
117    
118     else:
119     print job.name
120     hTempList, typList = Plotter.getHistoFromTree(job)
121     for v in range(0,len(vars)):
122     Lhistos[v].append(hTempList[v])
123     Ltyps[v].append(Group[job.name])
124 peller 1.6
125     elif job.name in data:
126     #print 'DATA'
127 peller 1.10 hTemp, typ = Plotter.getHistoFromTree(job)
128     for v in range(0,len(vars)):
129     Ldatas[v].append(hTemp[v])
130     Ldatatyps[v].append(typ[v])
131     Ldatanames[v].append(job.name)
132    
133    
134     for v in range(0,len(vars)):
135    
136     histos = Lhistos[v]
137     typs = Ltyps[v]
138 nmohr 1.31 Stacks[v].histos = Lhistos[v]
139     Stacks[v].typs = Ltyps[v]
140     Stacks[v].datas = Ldatas[v]
141     Stacks[v].datatyps = Ldatatyps[v]
142     Stacks[v].datanames= Ldatanames[v]
143     Stacks[v].overlay = Overlaylist[v]
144     Stacks[v].lumi = lumi
145 nmohr 1.15
146 nmohr 1.31 Stacks[v].doPlot()
147 peller 1.10
148 peller 1.11
149 peller 1.10 print 'i am done!\n'
150 peller 1.11
151 peller 1.5 sys.exit(0)