ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Jeng/tools/cutFlowTableNew.py
Revision: 1.3
Committed: Wed Dec 22 22:42:05 2010 UTC (14 years, 4 months ago) by jengbou
Content type: text/x-python
Branch: MAIN
CVS Tags: gregj-20110107, gregj-20101223
Changes since 1.2: +21 -16 lines
Log Message:
update

File Contents

# Content
1 #!/usr/bin/env python
2 from ROOT import *
3 import sys,os,commands,fnmatch
4
5 infiles = {}
6 skfiles = {}
7 srcDir_ = "./"
8 dataDir_ = "merged_Data/36.15pb-1_v1/"
9 mcDir_ = "skimmed_MC/V00-01-05_v1_PF/"
10 txtDir_ = srcDir_+"cutFlowTable_v1/"
11
12 lint_ = 36.
13 lumi = "36pb-1"
14
15 ## PATNtuples
16 ## Data
17 infiles["Data1"] = srcDir_+"/Data/36pb-1_Nov4ReReco/Run2010A_Mu9.root"
18 infiles["Data2"] = srcDir_+"/Data/36pb-1_Nov4ReReco/Run2010B_Mu9.root"
19 infiles["Data3"] = srcDir_+"/Data/36pb-1_Nov4ReReco/Run2010B_Mu15.root"
20 ## MC
21 infiles["TTbar"] = srcDir_+"/MC/V00-01-05/TTbar_D6T_Mu.root"
22 infiles["STtch"] = srcDir_+"/MC/V00-01-05/STtch_Z2_Mu.root"
23 infiles["STtWch"] = srcDir_+"/MC/V00-01-05/STtWch_Z2_Mu.root"
24 infiles["WJets"] = srcDir_+"/MC/V00-01-05/WJets_D6T_Mu.root"
25 infiles["ZJets"] = srcDir_+"/MC/V00-01-05/ZJets_D6T_Mu.root"
26 infiles["Vqq"] = srcDir_+"/MC/V00-01-05/Vqq_D6T_Mu.root"
27 infiles["Wc"] = srcDir_+"/MC/V00-01-05/Wc_D6T_Mu.root"
28 infiles["QCD"] = srcDir_+"/MC/V00-01-05/QCD_Z2_Mu.root"
29 infiles["WW"] = srcDir_+"/MC/V00-01-05/WW_Z2_Mu.root"
30
31 ## skimmed files
32 ## Data
33 skfiles["Data"] = srcDir_+dataDir_+"Data_Sel5_PF_TCHEM.root"
34 ## MC
35 skfiles["TTbar"] = srcDir_+mcDir_ +"TTbar_Sel5_PF_TCHEM.root"
36 skfiles["STtch"] = srcDir_+mcDir_ +"STtch_Sel5_PF_TCHEM.root"
37 skfiles["STtWch"] = srcDir_+mcDir_ +"STtWch_Sel5_PF_TCHEM.root"
38 skfiles["WJets"] = srcDir_+mcDir_ +"WJets_Sel5_PF_TCHEM.root"
39 skfiles["ZJets"] = srcDir_+mcDir_ +"ZJets_Sel5_PF_TCHEM.root"
40 skfiles["Vqq"] = srcDir_+mcDir_ +"Vqq_Sel5_PF_TCHEM.root"
41 skfiles["Wc"] = srcDir_+mcDir_ +"Wc_Sel5_PF_TCHEM.root"
42 skfiles["QCD"] = srcDir_+mcDir_ +"QCD_Sel5_PF_TCHEM.root"
43 skfiles["WW"] = srcDir_+mcDir_ +"WW_Sel5_PF_TCHEM.root"
44
45 n_col = len(skfiles)
46
47 tmpfile = TFile(skfiles["Data"])
48 tmpfile.cd()
49 tmpHist = ROOT.gDirectory.Get('cutFlowTable')
50 n_row = tmpHist.GetNbinsX()
51
52 mtxVal = [[0 for col in range(n_col)] for row in range(n_row)]
53 vecNam = [0 for col in range(n_col)]
54 vecWgt = {}
55 vecWgt["Data"] = 1. ## Data
56
57 vecXsec = {'Data':1.,
58 'TTbar':157.5,
59 'WJets':31314,
60 'ZJets':3048,
61 'STtch':20.93,
62 'STtWch':10.6,
63 'Wc':606,
64 'Vqq':36,
65 'QCD':84679.3,
66 'WW':43
67 }
68
69 nTotData = 0
70
71 gROOT.Reset()
72
73 for fName,infile in infiles.iteritems():
74 tfile = TFile(infile)
75 tfile.cd()
76 TrigHist = ROOT.gDirectory.Get('/triggerFilter/eventCount')
77 nevtTot = TrigHist.GetBinContent(1)
78
79 print "Total number of " + fName + " = " + str(int(nevtTot))
80 if fName.lower().find("data") != -1:
81 nTotData = nTotData + nevtTot
82 else:
83 vecWgt[fName] = float(vecXsec[fName])*float(lint_)/int(nevtTot)
84
85
86 ncol = 0
87
88 for fName,infile in skfiles.iteritems():
89 tfile = TFile(infile)
90 tfile.cd()
91 cutFlowHist = ROOT.gDirectory.Get('cutFlowTable')
92 for nrow in range(n_row):
93 mtxVal[nrow][ncol] = cutFlowHist.GetBinContent(nrow+1)
94 vecNam[ncol] = fName
95
96 ncol = ncol + 1
97
98 print "Total number of events (Data) = " + str(int(nTotData))
99 print vecWgt
100 print vecNam
101 print mtxVal
102
103 if not os.path.exists(txtDir_):
104 print "Creating output directory: " + txtDir_
105 os.makedirs(txtDir_)
106
107 fout = open(txtDir_+"CutFlow_"+lumi+".html","w")
108
109 fout.write('<STYLE type="text/css">')
110 fout.write('td.alr {text-align: right}')
111 fout.write('</STYLE>\n')
112
113 ## Raw numbers of MC
114 fout.write('<table border="1">')
115 fout.write('<tr><th BGCOLOR="#99CCFF" width=100> Njets (raw) </th>')
116 for n in range(n_col):
117 if vecNam[n].lower() != "data":
118 fout.write('<th BGCOLOR="#78c7c7" width=60>' + vecNam[n] + '</th>')
119 fout.write('</tr>\n')
120
121 nrr = 0
122 for nr in range(8,n_row-1):
123 nrr = nrr + 1
124 if nrr != 4:
125 fout.write('<th BGCOLOR="#99CCFF"> ' + str(int(nrr)) + '</th>')
126 for nc in range(n_col):
127 if vecNam[nc].lower() != "data":
128 fout.write('<th>' + str(int(mtxVal[nr][nc]-mtxVal[nr+1][nc])) + '</th>')
129 else:
130 fout.write('<th BGCOLOR="#99CCFF"> &ge; ' + str(int(nrr)) + '</th>')
131 for nc in range(n_col):
132 if vecNam[nc].lower() != "data":
133 fout.write('<th>' + str(int(mtxVal[nr][nc])) + '</th>')
134 fout.write('</tr>\n')
135
136 fout.write('</table>\n')
137
138 fout.write('<br><br>\n')
139
140 ## Weighed numbers
141 fout.write('<table border="1">')
142 fout.write('<tr><th BGCOLOR="#99CCFF" width=100> Njets (weighted) </th>')
143 for n in range(n_col):
144 fout.write('<th BGCOLOR="#78c7c7" width=60>' + vecNam[n] + '</th>')
145 fout.write('</tr>\n')
146
147 nrr = 0
148 for nr in range(8,n_row-1):
149 nrr = nrr + 1
150 if nrr != 4:
151 fout.write('<th BGCOLOR="#99CCFF"> ' + str(int(nrr)) + '</th>')
152 for nc in range(n_col):
153 fout.write('<th>' + str(round((mtxVal[nr][nc]-mtxVal[nr+1][nc])*vecWgt[vecNam[nc]],1)) + '</th>')
154 else:
155 fout.write('<th BGCOLOR="#99CCFF"> &ge; ' + str(int(nrr)) + '</th>')
156 for nc in range(n_col):
157 fout.write('<th>' + str(round(mtxVal[nr][nc]*vecWgt[vecNam[nc]],1)) + '</th>')
158 fout.write('</tr>\n')
159
160 fout.write('</table>')
161
162
163 fout.close()