ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Jeng/tools/cutFlowTableNew.py
Revision: 1.1
Committed: Fri Dec 3 19:23:27 2010 UTC (14 years, 4 months ago) by jengbou
Content type: text/x-python
Branch: MAIN
CVS Tags: gregj-20101212, gregj-20101211, gregj-20101210-new, gregj-20101210
Log Message:
add file

File Contents

# User Rev Content
1 jengbou 1.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/34.72pb-1/"
9     mcDir_ = "skimmed_MC/V00-01-04-07_NEW_PF/"
10     txtDir_ = srcDir_+"cutFlowTable/"
11    
12     lint_ = 34.72
13     lumi = "34.72pb-1"
14    
15     ## PATNtuples
16     ## Data
17     infiles["Data1"] = srcDir_+"/Data/21.89pb-1/ttmuj_21.89pb-1_Oct29.root"
18     infiles["Data2"] = srcDir_+"/Data/34.72pb-1/ttmuj_12.83pb-1_Nov5.root"
19     ## MC
20     infiles["TTbar"] = srcDir_+"/MC/V00-01-04-07/TTbar_Mu.root"
21     infiles["STtch"] = srcDir_+"/MC/V00-01-04-07/STtch_Mu.root"
22     infiles["STtWch"] = srcDir_+"/MC/V00-01-04-07/STtWch_Mu.root"
23     infiles["WJets"] = srcDir_+"/MC/V00-01-04-07/WJets_Mu.root"
24     infiles["ZJets"] = srcDir_+"/MC/V00-01-04-07/ZJets_Mu.root"
25     infiles["Vqq"] = srcDir_+"/MC/V00-01-04-07/Vqq_Mu.root"
26     infiles["Wc"] = srcDir_+"/MC/V00-01-04-07/Wc_Mu.root"
27     infiles["QCD"] = srcDir_+"/MC/V00-01-04-07/QCD_Mu.root"
28    
29     ## skimmed files
30     ## Data
31     skfiles["Data"] = srcDir_+dataDir_+"Data_Sel5_PF_TCHEM.root"
32     ## MC
33     skfiles["TTbar"] = srcDir_+mcDir_ +"TTbar_Sel5_PF_TCHEM.root"
34     skfiles["STtch"] = srcDir_+mcDir_ +"STtch_Sel5_PF_TCHEM.root"
35     skfiles["STtWch"] = srcDir_+mcDir_ +"STtWch_Sel5_PF_TCHEM.root"
36     skfiles["WJets"] = srcDir_+mcDir_ +"WJets_Sel5_PF_TCHEM.root"
37     skfiles["ZJets"] = srcDir_+mcDir_ +"ZJets_Sel5_PF_TCHEM.root"
38     skfiles["Vqq"] = srcDir_+mcDir_ +"Vqq_Sel5_PF_TCHEM.root"
39     skfiles["Wc"] = srcDir_+mcDir_ +"Wc_Sel5_PF_TCHEM.root"
40     skfiles["QCD"] = srcDir_+mcDir_ +"QCD_Sel5_PF_TCHEM.root"
41    
42     n_col = len(skfiles)
43    
44     tmpfile = TFile(skfiles["Data"])
45     tmpfile.cd()
46     tmpHist = ROOT.gDirectory.Get('cutFlowTable')
47     n_row = tmpHist.GetNbinsX()
48    
49     mtxVal = [[0 for col in range(n_col)] for row in range(n_row)]
50     vecNam = [0 for col in range(n_col)]
51     vecWgt = {}
52     vecWgt["Data"] = 1. ## Data
53    
54     vecXsec = {'Data':1.,
55     'TTbar':157.5,
56     'WJets':31314,
57     'ZJets':3048,
58     'STtch':20.93,
59     'STtWch':10.6,
60     'Wc':606,
61     'Vqq':36,
62     'QCD':79688}
63    
64     nTotData = 0
65    
66     gROOT.Reset()
67    
68     for fName,infile in infiles.iteritems():
69     tfile = TFile(infile)
70     tfile.cd()
71     TrigHist = ROOT.gDirectory.Get('/triggerFilter/eventCount')
72     nevtTot = TrigHist.GetBinContent(1)
73    
74     print "Total number of " + fName + " = " + str(int(nevtTot))
75     if fName.lower().find("data") != -1:
76     nTotData = nTotData + nevtTot
77     else:
78     vecWgt[fName] = float(vecXsec[fName])*float(lint_)/int(nevtTot)
79    
80    
81     ncol = 0
82    
83     for fName,infile in skfiles.iteritems():
84     tfile = TFile(infile)
85     tfile.cd()
86     cutFlowHist = ROOT.gDirectory.Get('cutFlowTable')
87     for nrow in range(n_row):
88     mtxVal[nrow][ncol] = cutFlowHist.GetBinContent(nrow+1)
89     vecNam[ncol] = fName
90    
91     ncol = ncol + 1
92    
93     print "Total number of events (Data) = " + str(int(nTotData))
94     print vecWgt
95     print vecNam
96     print mtxVal
97    
98     #sys.exit()
99     fout = open(txtDir_+"CutFlow_"+lumi+".html","w")
100    
101     fout.write('<STYLE type="text/css">')
102     fout.write('td.alr {text-align: right}')
103     fout.write('</STYLE>\n')
104    
105     ## Raw numbers of MC
106     fout.write('<table border="1">')
107     fout.write('<tr><th BGCOLOR="#99CCFF" width=100> Njets (raw) </th>')
108     for n in range(n_col):
109     if vecNam[n].lower() != "data":
110     fout.write('<th BGCOLOR="#78c7c7" width=60>' + vecNam[n] + '</th>')
111     fout.write('</tr>\n')
112    
113     nrr = 0
114     for nr in range(7,n_row-1):
115     nrr = nrr + 1
116     if nrr != 4:
117     fout.write('<th BGCOLOR="#99CCFF"> ' + str(int(nrr)) + '</th>')
118     for nc in range(n_col):
119     if vecNam[nc].lower() != "data":
120     fout.write('<th>' + str(int(mtxVal[nr][nc]-mtxVal[nr+1][nc])) + '</th>')
121     else:
122     fout.write('<th BGCOLOR="#99CCFF"> &ge; ' + str(int(nrr)) + '</th>')
123     for nc in range(n_col):
124     if vecNam[nc].lower() != "data":
125     fout.write('<th>' + str(int(mtxVal[nr][nc])) + '</th>')
126     fout.write('</tr>\n')
127    
128     fout.write('</table>\n')
129    
130     fout.write('<br><br>\n')
131    
132     ## Weighed numbers
133     fout.write('<table border="1">')
134     fout.write('<tr><th BGCOLOR="#99CCFF" width=100> Njets (weighted) </th>')
135     for n in range(n_col):
136     fout.write('<th BGCOLOR="#78c7c7" width=60>' + vecNam[n] + '</th>')
137     fout.write('</tr>\n')
138    
139     nrr = 0
140     for nr in range(7,n_row-1):
141     nrr = nrr + 1
142     if nrr != 4:
143     fout.write('<th BGCOLOR="#99CCFF"> ' + str(int(nrr)) + '</th>')
144     for nc in range(n_col):
145     fout.write('<th>' + str(round((mtxVal[nr][nc]-mtxVal[nr+1][nc])*vecWgt[vecNam[nc]],1)) + '</th>')
146     else:
147     fout.write('<th BGCOLOR="#99CCFF"> &ge; ' + str(int(nrr)) + '</th>')
148     for nc in range(n_col):
149     fout.write('<th>' + str(round(mtxVal[nr][nc]*vecWgt[vecNam[nc]],1)) + '</th>')
150     fout.write('</tr>\n')
151    
152     fout.write('</table>')
153    
154    
155     fout.close()