ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbb/python/tree_stack.py
Revision: 1.42
Committed: Wed Jan 16 16:22:47 2013 UTC (12 years, 3 months ago) by peller
Content type: text/x-python
Branch: MAIN
CVS Tags: workingVersionAfterHCP
Changes since 1.41: +8 -18 lines
Log Message:
reorganized the whole repository. Macros im myutils, config files in subdirectories. Config file split in parts. Path config file restructured. Moved all path options to the path config. Changed the code accordingly.

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