1 |
from ROOT import *
|
2 |
|
3 |
import sys,os
|
4 |
|
5 |
|
6 |
#________________________________________________________________
|
7 |
def get_list_files(directory,pattern = ""):
|
8 |
|
9 |
dir = []
|
10 |
|
11 |
dir = os.listdir(directory)
|
12 |
|
13 |
lfiles = []
|
14 |
for f in dir:
|
15 |
|
16 |
if f.find(pattern) != -1 and f.find("match") == -1 and f.endswith("root"):
|
17 |
|
18 |
lfiles.append(directory+"/"+f)
|
19 |
|
20 |
lfiles.sort()
|
21 |
return lfiles
|
22 |
|
23 |
|
24 |
def main():
|
25 |
format = 'all' ## 'html' or 'all' for html+twiki
|
26 |
|
27 |
if len(sys.argv) < 2:
|
28 |
print "[usage] make_table.py <dir> <weight=true/false> or"
|
29 |
print "[usage] make_table.py <dir> <weight=true/false> <sampleName> <weight>"
|
30 |
print "e.g. make_table.py /Users/jengbou/Desktop/TopWork/Analysis/Validation/7TeV/ true"
|
31 |
sys.exit()
|
32 |
|
33 |
path = sys.argv[1]
|
34 |
applyWeight = sys.argv[2]
|
35 |
|
36 |
files = []
|
37 |
files.append(path+'TTbar_mcatnlo_Summer09_2_all.root')
|
38 |
files.append(path+'TTbar_madgraph_Summer09_2_all.root')
|
39 |
files.append(path+'TTbar_pythia_Summer09_all.root')
|
40 |
# files.append(path+'TTbar_Summer09_all.root') ## 10 TeV
|
41 |
files.append(path+'WJets_madgraph_Summer09_2_all.root')
|
42 |
files.append(path+'Zjets_madgraph_Summer09_2_all.root')
|
43 |
files.append(path+'WcJets_madgraph_Summer09_2_all.root')
|
44 |
files.append(path+'AstarJets_madgraph_Summer09_3_all.root')
|
45 |
|
46 |
sampleNames = ['ttbar mc@nlo','ttbar madgraph','ttbar pythia', 'W+Jets','Z+Jets','Wc+Jets','Astar']
|
47 |
weightList = [0.0321, 0.0169, 0.006, 0.1817, 0.1012, 0.0026, 0.0277]
|
48 |
|
49 |
## sampleNames = ['ttbar mc@nlo','ttbar madgraph','ttbar pythia', 'ttbar pythia(10 TeV)', 'W+Jets','Z+Jets','Wc+Jets','Astar']
|
50 |
## weightList = [0.0321, 0.0169, 0.006, 0.0156, 0.1817, 0.1012, 0.0026, 0.0277]
|
51 |
## print len(sys.argv)
|
52 |
|
53 |
if len(sys.argv) == 5: ## actually 4 arguments
|
54 |
del sampleNames[:]
|
55 |
del weightList[:]
|
56 |
del files[:]
|
57 |
sampleNames.append(sys.argv[3])
|
58 |
weightList = [float(sys.argv[4])]
|
59 |
## print sampleNames
|
60 |
## print sys.argv[3]
|
61 |
## print weightList
|
62 |
files = get_list_files(path, sys.argv[3])
|
63 |
## print files
|
64 |
|
65 |
nfiles = 0
|
66 |
hlist = []
|
67 |
|
68 |
|
69 |
for f in files:
|
70 |
|
71 |
print "\n Open File: " + f
|
72 |
|
73 |
tf = TFile(f);
|
74 |
nfiles += 1
|
75 |
h = ROOT.gDirectory.Get("DQMData/muonJetsChecker/Selection")
|
76 |
h.SetDirectory(0)
|
77 |
#h.Print("all")
|
78 |
hlist.append(h)
|
79 |
|
80 |
|
81 |
select = ['All events','HLT: HLT_Mu9','>= 1 muon','>= 1 good muon','>= 1 isolated muon','= 1 isolated muon','Veto on electron','>= 1 jet','>= 2 jets','>= 3 jets','>= 4 jets','Veto Loose muon','Veto Loose electron (M3)','M3 prime']
|
82 |
|
83 |
selectLabel = ['All events','HLT: HLT_Mu9','>= 1 muon','>= 1 good muon','>= 1 isolated muon','= 1 isolated muon','Veto on electron','>= 1 jet','>= 2 jets','>= 3 jets','>= 4 jets','Veto Loose muon','Veto Loose electron (M3)','M3 prime']
|
84 |
|
85 |
outName = "Summary_cut_flow"
|
86 |
if len(sys.argv) == 5:
|
87 |
outName = outName + "_" + sys.argv[3]
|
88 |
outName += ".txt"
|
89 |
outfile = open(outName, 'w')
|
90 |
|
91 |
outfile.write("<STYLE type=\"text/css\">\n")
|
92 |
outfile.write("td.alr {text-align: right}\n")
|
93 |
outfile.write("</STYLE>\n")
|
94 |
outfile.write("<table border=\"1\">\n")
|
95 |
outfile.write("<tr>")
|
96 |
outfile.write("<th>Selection</th>")
|
97 |
|
98 |
if format == 'all':
|
99 |
outfile1 = open('TWiki_cut_flow.txt', 'w')
|
100 |
outfile1.write("| *Selection step* |")
|
101 |
|
102 |
i_sample = 0
|
103 |
for s in sampleNames:
|
104 |
if i_sample < nfiles:
|
105 |
outfile.write("<th>"+s+"</th>")
|
106 |
if format == 'all':
|
107 |
outfile1.write(" *"+s+"* |")
|
108 |
|
109 |
i_sample += 1
|
110 |
outfile.write("</tr>\n")
|
111 |
if format == 'all':
|
112 |
outfile1.write("\n")
|
113 |
|
114 |
for cut in select:
|
115 |
|
116 |
events = []
|
117 |
i_hlist = 0
|
118 |
|
119 |
for h in hlist:
|
120 |
weight = 1.
|
121 |
|
122 |
if applyWeight =="true":
|
123 |
weight = weightList[i_hlist]
|
124 |
i_hlist += 1
|
125 |
labels = h.GetXaxis().GetLabels()
|
126 |
labelsize = len(labels)
|
127 |
ibin = 1
|
128 |
for il in labels:
|
129 |
if il == cut:
|
130 |
events.append(weight*h.GetBinContent(ibin))
|
131 |
|
132 |
ibin = ibin + 1
|
133 |
|
134 |
line = "<tr><th>" + cut + "</th>"
|
135 |
if format == 'all':
|
136 |
line1 = "| " + cut + " |"
|
137 |
|
138 |
for ev in events:
|
139 |
line = line + "<td class=\"alr\">" + str(int(round(ev,0))) + "</td>"
|
140 |
if format == 'all':
|
141 |
line1 = line1 + " " + str(int(round(ev,0))) + " |"
|
142 |
|
143 |
outfile.write(line+"</tr>\n")
|
144 |
if format == 'all':
|
145 |
outfile1.write(line1+"\n")
|
146 |
|
147 |
outfile.write("</table>")
|
148 |
## print line
|
149 |
|
150 |
outfile.close()
|
151 |
if format == 'all':
|
152 |
outfile1.close()
|
153 |
|
154 |
if __name__ =='__main__':
|
155 |
sys.exit(main())
|
156 |
|