ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/DeMattia/Python/QCDRate.py
Revision: 1.1
Committed: Fri Dec 7 14:54:31 2007 UTC (17 years, 4 months ago) by demattia
Content type: text/x-python
Branch: MAIN
CVS Tags: HEAD
Error occurred while calculating annotation data.
Log Message:
*** empty log message ***

File Contents

# Content
1 #!/usr/bin/python
2
3 import string
4 from math import sqrt
5
6 # Define the tuple containing the cross sections
7 # Including high luminosity factor
8 crossSections = [ 163000000.*0.01,
9 21600000.*0.01,
10 3080000.*0.01,
11 494000.*0.01,
12 101000.*0.01,
13 24500.*0.01,
14 6240.*0.01]
15
16 # Define the tuple with the names
17 qcdNames = [ "30-50", "50-80", "80-120", "120-170",
18 "170-230", "230-300", "300-380" ]
19
20 singleBinMultijetRate = [ 0, 0, 0, 0, 0, 0, 0 ]
21 singleBinMultijetOfflineRate = [0] * 7
22 singleBinMEtJetRate = [ 0, 0, 0, 0, 0, 0, 0 ]
23 singleBinMEtJetOfflineRate = [0] * 7
24 binEvents = [ 0, 0, 0, 0, 0, 0, 0 ]
25 binEffPassingMultijet = [ 0, 0, 0, 0, 0, 0, 0 ]
26 binEffPassingMultijetOffline = [0] * 7
27 binEffPassingMEtJet = [ 0, 0, 0, 0, 0, 0, 0 ]
28 binEffPassingMEtJetOffline = [0] * 7
29
30 counter = 0
31 cumulativeMultijetRate = 0.
32 cumulativeMultijetOfflineRate = 0.
33 cumulativeMEtJetRate = 0.
34 cumulativeMEtJetOfflineRate = 0.
35 # Loop on the cross sections
36 for x in crossSections:
37
38 # Open a file in read mode
39 name = "/data/demattia/Merge/TK3/Efficiency_QCD_" + qcdNames[counter] + "_tk3.txt"
40 f=open(name, 'r')
41
42 # ',' at the end needed to avoid newline
43 for line in f:
44 # No parenthesys needed, put them for clarity
45 # if "Eff multijet" in line:
46 if (line.find("Eff multijet") != -1) & (line.find("no-forward") == -1):
47 """ Using string.split and .join to produce a
48 tuple and emulate a simple awk"""
49 tupleLine = string.split(line)
50 cumulativeMultijetRate += float(tupleLine[3])*x
51 singleBinMultijetRate[counter] = float(tupleLine[3])*x
52 binEffPassingMultijet[counter] = float(tupleLine[3])
53 elif (line.find("offline efficiency after multijet") != -1):
54 tupleLine = string.split(line)
55 cumulativeMultijetOfflineRate += float(tupleLine[6])*x
56 singleBinMultijetOfflineRate[counter] = float(tupleLine[6])*x
57 binEffPassingMultijetOffline[counter] = float(tupleLine[6])
58 elif (line.find("Eff MEt + Jet") != -1) & (line.find("no-forward") == -1):
59 tupleLine = string.split(line)
60 cumulativeMEtJetRate += float(tupleLine[5])*x
61 singleBinMEtJetRate[counter] = float(tupleLine[5])*x
62 binEffPassingMEtJet[counter] = float(tupleLine[5])
63 elif (line.find("offline efficiency after MEt + Jet") != -1):
64 tupleLine = string.split(line)
65 cumulativeMEtJetOfflineRate += float(tupleLine[8])*x
66 singleBinMEtJetOfflineRate[counter] = float(tupleLine[8])*x
67 binEffPassingMEtJetOffline[counter] = float(tupleLine[8])
68 elif "Total events" in line:
69 tupleLine = string.split(line)
70 binEvents[counter] = int(tupleLine[3])
71 counter = counter+1
72
73 # Print the Multijet trigger rates in each qcd bin
74 print "Multijet rates"
75 print "--------------"
76 counter = 0
77 effTotalErr = 0.
78 for rate in singleBinMultijetRate:
79 # print "events passing = ",
80 # print binEffPassingMultijet[counter]*binEvents[counter]
81 print "QCD_" + qcdNames[counter] + " Multijet rate = ",
82 print rate,
83 print " +- ",
84 effErr = sqrt(binEffPassingMultijet[counter]*binEvents[counter])/binEvents[counter]
85 effTotalErr += effErr*effErr*crossSections[counter]*crossSections[counter]
86 print crossSections[counter]*effErr
87 counter += 1
88
89 print
90 print "Offline after Multijet cumulative rate = ",
91 print cumulativeMultijetRate,
92 print " +- ",
93 print sqrt(effTotalErr)
94 print
95
96 # Print the offline rate after Multijet
97 print "Offline after Multijet rates"
98 print "----------------------------"
99 counter = 0
100 effTotalErr = 0.
101 for rate in singleBinMultijetOfflineRate:
102 # print "events passing = ",
103 # print binEffPassingMultijetOffline[counter]*binEvents[counter]
104 print "QCD_" + qcdNames[counter] + " Offline after Multijet rate = ",
105 print rate,
106 print " +- ",
107 effErr = sqrt(binEffPassingMultijetOffline[counter]*binEvents[counter])/binEvents[counter]
108 effTotalErr += effErr*effErr*crossSections[counter]*crossSections[counter]
109 print crossSections[counter]*effErr
110 counter += 1
111
112 print
113 print "Offline after Multijet cumulative rate = ",
114 print cumulativeMultijetOfflineRate,
115 print " +- ",
116 print sqrt(effTotalErr)
117 print
118
119 # Print the MEt + Jet trigger rates in each qcd bin
120 print "MEt + Jet rates"
121 print "---------------"
122 counter = 0
123 effTotalErr = 0.
124 for rate in singleBinMEtJetRate:
125 print "QCD_" + qcdNames[counter] + " MEt + Jet rate = ",
126 print rate,
127 print " +- ",
128 effErr = sqrt(binEffPassingMEtJet[counter]*binEvents[counter])/binEvents[counter]
129 effTotalErr += effErr*effErr*crossSections[counter]*crossSections[counter]
130 print crossSections[counter]*effErr
131 counter += 1
132
133 print
134 print "MEt + Jet cumulative rate = ",
135 print cumulativeMEtJetRate,
136 print " +- ",
137 print sqrt(effTotalErr)
138 print
139
140 # Print the Offline rates after MEt + Jet trigger in each qcd bin
141 print "Offline after MEt + Jet rates"
142 print "---------------"
143 counter = 0
144 effTotalErr = 0.
145 for rate in singleBinMEtJetOfflineRate:
146 print "QCD_" + qcdNames[counter] + " MEt + Jet rate = ",
147 print rate,
148 print " +- ",
149 effErr = sqrt(binEffPassingMEtJetOffline[counter]*binEvents[counter])/binEvents[counter]
150 effTotalErr += effErr*effErr*crossSections[counter]*crossSections[counter]
151 print crossSections[counter]*effErr
152 counter += 1
153
154 print
155 print "MEt + Jet cumulative rate = ",
156 print cumulativeMEtJetOfflineRate,
157 print " +- ",
158 print sqrt(effTotalErr)
159 print
160
161 # Print the total number of events in each bin
162 print "Number of events"
163 print "----------------"
164 counter = 0
165 for num in binEvents:
166 print "Events in qcd bin " + qcdNames[counter] + " = ",
167 print num
168 counter += 1