ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/dhidas/OSUAnalysis/Tools/scripts/getSkimEfficiencyOv3.py
Revision: 1.1.1.1 (vendor branch)
Committed: Thu Dec 1 16:28:48 2011 UTC (13 years, 5 months ago) by dhidas
Content type: text/x-python
Branch: dhidas, MAIN
CVS Tags: START, HEAD
Changes since 1.1: +0 -0 lines
Log Message:
osu copy modified

File Contents

# Content
1 from __future__ import division
2
3 from optparse import OptionParser
4 import sys
5 from fileInfo import *
6 from ROOT import *
7 from mergeROOTFilesWithCompression import getProcess
8
9 pathToSkimHist = "EventFilter/EventCounter"
10 pathToEventTree = "rootTupleTree/tree"
11
12 def getSkimmedEvents(files):
13 skimInfo = getSkimInfo(files)
14 skimHist = skimInfo[0]
15
16 numberOfTotalEvents = skimHist.GetBinContent(1)
17 numberOfEventsPassingHBHENoiseFilter = skimHist.GetBinContent(2)
18 numberOfEventsPassingScrapingVeto = skimHist.GetBinContent(3)
19 numberOfEventsHavingGoodPrimaryVertex = skimHist.GetBinContent(4)
20 numberOfEventsPassingElectronCuts = skimHist.GetBinContent(5)
21 numberOfEventsPassingMuonCuts = skimHist.GetBinContent(6)
22 numberOfEventsPassingJetCuts = skimHist.GetBinContent(7)
23
24 numberOfEventsAfterAllFilters = skimInfo[1]
25 TotalSkimEfficiency = numberOfEventsAfterAllFilters / numberOfTotalEvents
26
27
28 dataSetDescription, totals, lastStep = {}, {}, {}
29 dataSetDescription['numberOfEvents'] = numberOfTotalEvents
30 dataSetDescription['numberOfEventsAfterSkim'] = numberOfEventsAfterAllFilters
31 dataSetDescription['totalSkimEfficiency'] = dataSetDescription['numberOfEventsAfterSkim'] / dataSetDescription['numberOfEvents']
32 dataSetDescription['HBHENoiseFilter'] = int(numberOfEventsPassingHBHENoiseFilter)
33 dataSetDescription['ScrapingVeto'] = int(numberOfEventsPassingScrapingVeto)
34 dataSetDescription['GoodPrimaryVertex'] = int(numberOfEventsHavingGoodPrimaryVertex)
35 dataSetDescription['ElectronCuts'] = int(numberOfEventsPassingElectronCuts)
36 dataSetDescription['MuonCuts'] = int(numberOfEventsPassingMuonCuts)
37 dataSetDescription['JetCuts'] = int(numberOfEventsPassingJetCuts)
38
39
40 totals['HBHENoiseFilter'] = numberOfEventsPassingHBHENoiseFilter / numberOfTotalEvents
41 totals['ScrapingVeto'] = numberOfEventsPassingScrapingVeto / numberOfTotalEvents
42 totals['GoodPrimaryVertex'] = numberOfEventsHavingGoodPrimaryVertex / numberOfTotalEvents
43 totals['ElectronCuts'] = numberOfEventsPassingElectronCuts / numberOfTotalEvents
44 totals['MuonCuts'] = numberOfEventsPassingMuonCuts / numberOfTotalEvents
45 totals['JetCuts'] = numberOfEventsPassingJetCuts / numberOfTotalEvents
46
47 lastStep['HBHENoiseFilter'] = numberOfEventsPassingHBHENoiseFilter / numberOfTotalEvents
48 lastStep['ScrapingVeto'] = numberOfEventsPassingScrapingVeto / numberOfEventsPassingHBHENoiseFilter
49 lastStep['GoodPrimaryVertex'] = numberOfEventsHavingGoodPrimaryVertex / numberOfEventsPassingScrapingVeto
50 lastStep['ElectronCuts'] = numberOfEventsPassingElectronCuts / numberOfEventsHavingGoodPrimaryVertex
51 lastStep['MuonCuts'] = numberOfEventsPassingMuonCuts / numberOfEventsHavingGoodPrimaryVertex
52 lastStep['JetCuts'] = numberOfEventsPassingJetCuts / numberOfEventsHavingGoodPrimaryVertex
53
54 return dataSetDescription, totals, lastStep
55
56 # return {'total': numberOfTotalEvents,
57 # 'skimmed':numberOfEventsAfterAllFilters,
58 # 'electronSkimEfficiency':electronSkimEfficiency,
59 # 'afterSkimAndNoiseFilter':numberOfEventsAfterAllFilters,
60 # 'totalSkimEfficiency':TotalSkimEfficiency}
61
62 def getSkimInfo(files):
63 skimHist = None
64 eventBranch = None
65 eventTree = None
66 n_skim = 0
67 TfOpen = TFile.Open
68 gcd = gROOT.cd
69
70 for file in files:
71 f = TfOpen(file)
72 gcd()
73 eventTree = f.Get(pathToEventTree)
74 if eventTree is None:
75 print 'Could not find tree', pathToEventTree, 'in file', file
76 else:
77 eventBranch = eventTree.GetBranch('Event.Number')
78
79 if eventBranch is None:
80 print 'Could not find branch', pathToEventTree + '/Event.Number', 'in file', file
81 else:
82 n_skim += eventBranch.GetEntries()
83
84 if skimHist is None:
85 skimHist = f.Get(pathToSkimHist)
86 if skimHist is None:
87 print 'Could not find histogram', pathToSkimHist, 'in file', file
88 continue
89 else:
90 hist = f.Get(pathToSkimHist)
91 if hist is None:
92 print 'Could not find histogram', pathToSkimHist, 'in file', file
93 continue
94 skimHist.Add(hist)
95 return (skimHist, n_skim)
96
97
98 def formatSkimEfficiencies(dataSetDescription, totals, lastStep):
99 print 'Local merged files:', dataSetDescription['path']
100 print
101 print 'Total number of files:', int(dataSetDescription['numberOfFiles'])
102 print
103 print 'Process recognised:', dataSetDescription['process']
104 print
105 print 'Total number of events:', int(dataSetDescription['numberOfEvents'])
106 print
107 print
108 print '| *Filter Name* | *# passing* | *efficiency(total) in %* | *efficiency(last step) in %* |'
109 print '| HBHENoiseFilter | ', dataSetDescription['HBHENoiseFilter'], '| ', totals['HBHENoiseFilter'], '| ', lastStep['HBHENoiseFilter'], '|'
110 print '| ScrapingVeto | ', dataSetDescription['ScrapingVeto'], '| ', totals['ScrapingVeto'], '| ', lastStep['ScrapingVeto'], '|'
111 print '| GoodPrimaryVertex | ', dataSetDescription['GoodPrimaryVertex'], '| ', totals['GoodPrimaryVertex'], '| ', lastStep['GoodPrimaryVertex'], '|'
112 print '| ElectronCuts | ', dataSetDescription['ElectronCuts'], '| ', totals['ElectronCuts'], '| ', lastStep['ElectronCuts'], '|'
113 print '| MuonCuts | ', dataSetDescription['MuonCuts'], '| ', totals['MuonCuts'], '| ', lastStep['MuonCuts'], '|'
114 # print '| JetCuts | ', dataSetDescription['JetCuts'], '| ', totals['JetCuts'], '| ', lastStep['JetCuts'], '|'
115 print '| Combined e or mu cuts | ', dataSetDescription['JetCuts'], '| ', totals['JetCuts'], '| ', lastStep['JetCuts'], '|'
116 print '| total | ', int(dataSetDescription['numberOfEventsAfterSkim']), '| ',
117 print dataSetDescription['totalSkimEfficiency'], '| --- |'
118
119
120
121 if __name__ == "__main__":
122 args = sys.argv
123 if not len(args) == 2:
124 print "Please specify a folder to merge files in."
125 sys.exit()
126
127 path = sys.argv[1]
128 files = getROOTFiles(path)
129 dataSetDescription, totals, lastStep = getSkimmedEvents(files)
130 dataSetDescription['numberOfFiles'] = len(files)
131 dataSetDescription['process'] = getProcess(files[0])
132 dataSetDescription['path'] = path
133 formatSkimEfficiencies(dataSetDescription, totals, lastStep)
134
135 # print '=' * 100
136 # print '{0:70} : {1:15d}'.format('Total number of files', len(files))
137 # print '{0:70} : {1:15s}'.format('Process recognised', getProcess(files[0]))
138 # print '{0:70} : {1:15d}'.format('Total number of events', int(events['total']))
139 # print '{0:70} : {1:15d}'.format('Number of events after electron skim', int(events['skimmed']))
140 # print '{0:70} : {1:15d}'.format('Number of events after electron skim and HBHE noise filter', events['afterSkimAndNoiseFilter'])
141 # print
142 # print '{0:70} : {1:15f}'.format('Electron skim efficiency', events['electronSkimEfficiency'])
143 # print '{0:70} : {1:15f}'.format('Total skim efficiency', events['totalSkimEfficiency'])
144 # print '=' * 100