ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/dhidas/OSUAnalysis/Tools/scripts/getSkimEfficiency.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 numberOfEventsPassingJetCuts = skimHist.GetBinContent(6)
22
23 numberOfEventsAfterAllFilters = skimInfo[1]
24 electronSkimEfficiency = numberOfEventsPassingHBHENoiseFilter / numberOfTotalEvents
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['JetCuts'] = int(numberOfEventsPassingJetCuts)
37
38
39 totals['HBHENoiseFilter'] = numberOfEventsPassingHBHENoiseFilter / numberOfTotalEvents
40 totals['ScrapingVeto'] = numberOfEventsPassingScrapingVeto / numberOfTotalEvents
41 totals['GoodPrimaryVertex'] = numberOfEventsHavingGoodPrimaryVertex / numberOfTotalEvents
42 totals['ElectronCuts'] = numberOfEventsPassingElectronCuts / numberOfTotalEvents
43 totals['JetCuts'] = numberOfEventsPassingJetCuts / numberOfTotalEvents
44
45 lastStep['HBHENoiseFilter'] = numberOfEventsPassingHBHENoiseFilter / numberOfTotalEvents
46 lastStep['ScrapingVeto'] = numberOfEventsPassingScrapingVeto / numberOfEventsPassingHBHENoiseFilter
47 lastStep['GoodPrimaryVertex'] = numberOfEventsHavingGoodPrimaryVertex / numberOfEventsPassingScrapingVeto
48 lastStep['ElectronCuts'] = numberOfEventsPassingElectronCuts / numberOfEventsHavingGoodPrimaryVertex
49 lastStep['JetCuts'] = numberOfEventsPassingJetCuts / numberOfEventsPassingElectronCuts
50
51 return dataSetDescription, totals, lastStep
52
53 # return {'total': numberOfTotalEvents,
54 # 'skimmed':numberOfEventsAfterAllFilters,
55 # 'electronSkimEfficiency':electronSkimEfficiency,
56 # 'afterSkimAndNoiseFilter':numberOfEventsAfterAllFilters,
57 # 'totalSkimEfficiency':TotalSkimEfficiency}
58
59 def getSkimInfo(files):
60 skimHist = None
61 eventBranch = None
62 eventTree = None
63 n_skim = 0
64 TfOpen = TFile.Open
65 gcd = gROOT.cd
66
67 for file in files:
68 f = TfOpen(file)
69 gcd()
70 eventTree = f.Get(pathToEventTree)
71 if eventTree is None:
72 print 'Could not find tree', pathToEventTree, 'in file', file
73 else:
74 eventBranch = eventTree.GetBranch('Event.Number')
75
76 if eventBranch is None:
77 print 'Could not find branch', pathToEventTree + '/Event.Number', 'in file', file
78 else:
79 n_skim += eventBranch.GetEntries()
80
81 if skimHist is None:
82 skimHist = f.Get(pathToSkimHist)
83 if skimHist is None:
84 print 'Could not find histogram', pathToSkimHist, 'in file', file
85 continue
86 else:
87 hist = f.Get(pathToSkimHist)
88 if hist is None:
89 print 'Could not find histogram', pathToSkimHist, 'in file', file
90 continue
91 skimHist.Add(hist)
92 return (skimHist, n_skim)
93
94
95 def formatSkimEfficiencies(dataSetDescription, totals, lastStep):
96 print 'Local merged files:', dataSetDescription['path']
97 print
98 print 'Total number of files:', int(dataSetDescription['numberOfFiles'])
99 print
100 print 'Process recognised:', dataSetDescription['process']
101 print
102 print 'Total number of events:', int(dataSetDescription['numberOfEvents'])
103 print
104 print
105 print '| *Filter Name* | *# passing* | *efficiency(total) in %* | *efficiency(last step) in %* |'
106 print '| HBHENoiseFilter | ', dataSetDescription['HBHENoiseFilter'], '| ', totals['HBHENoiseFilter'], '| ', lastStep['HBHENoiseFilter'], '|'
107 print '| ScrapingVeto | ', dataSetDescription['ScrapingVeto'], '| ', totals['ScrapingVeto'], '| ', lastStep['ScrapingVeto'], '|'
108 print '| GoodPrimaryVertex | ', dataSetDescription['GoodPrimaryVertex'], '| ', totals['GoodPrimaryVertex'], '| ', lastStep['GoodPrimaryVertex'], '|'
109 print '| ElectronCuts | ', dataSetDescription['ElectronCuts'], '| ', totals['ElectronCuts'], '| ', lastStep['ElectronCuts'], '|'
110 print '| JetCuts | ', dataSetDescription['JetCuts'], '| ', totals['JetCuts'], '| ', lastStep['JetCuts'], '|'
111 print '| total | ', int(dataSetDescription['numberOfEventsAfterSkim']), '| ',
112 print dataSetDescription['totalSkimEfficiency'], '| --- |'
113
114
115
116 if __name__ == "__main__":
117 args = sys.argv
118 if not len(args) == 2:
119 print "Please specify a folder to merge files in."
120 sys.exit()
121
122 path = sys.argv[1]
123 files = getROOTFiles(path)
124 dataSetDescription, totals, lastStep = getSkimmedEvents(files)
125 dataSetDescription['numberOfFiles'] = len(files)
126 dataSetDescription['process'] = getProcess(files[0])
127 dataSetDescription['path'] = path
128 formatSkimEfficiencies(dataSetDescription, totals, lastStep)
129
130 # print '=' * 100
131 # print '{0:70} : {1:15d}'.format('Total number of files', len(files))
132 # print '{0:70} : {1:15s}'.format('Process recognised', getProcess(files[0]))
133 # print '{0:70} : {1:15d}'.format('Total number of events', int(events['total']))
134 # print '{0:70} : {1:15d}'.format('Number of events after electron skim', int(events['skimmed']))
135 # print '{0:70} : {1:15d}'.format('Number of events after electron skim and HBHE noise filter', events['afterSkimAndNoiseFilter'])
136 # print
137 # print '{0:70} : {1:15f}'.format('Electron skim efficiency', events['electronSkimEfficiency'])
138 # print '{0:70} : {1:15f}'.format('Total skim efficiency', events['totalSkimEfficiency'])
139 # print '=' * 100