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

# 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 jengbou 1.3 dataDir_ = "merged_Data/36.15pb-1_v1/"
9     mcDir_ = "skimmed_MC/V00-01-05_v1_PF/"
10     txtDir_ = srcDir_+"cutFlowTable_v1/"
11 jengbou 1.1
12 jengbou 1.3 lint_ = 36.
13     lumi = "36pb-1"
14 jengbou 1.1
15     ## PATNtuples
16     ## Data
17 jengbou 1.3 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 jengbou 1.1 ## MC
21 jengbou 1.3 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 jengbou 1.1
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 jengbou 1.3 skfiles["WW"] = srcDir_+mcDir_ +"WW_Sel5_PF_TCHEM.root"
44 jengbou 1.1
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 jengbou 1.3 'QCD':84679.3,
66     'WW':43
67     }
68 jengbou 1.1
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 jengbou 1.2 if not os.path.exists(txtDir_):
104     print "Creating output directory: " + txtDir_
105     os.makedirs(txtDir_)
106    
107 jengbou 1.1 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 jengbou 1.2 for nr in range(8,n_row-1):
123 jengbou 1.1 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 jengbou 1.2 for nr in range(8,n_row-1):
149 jengbou 1.1 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()