ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/FGolf/Tools/fliprate_egun.cc
Revision: 1.4
Committed: Fri Jul 8 09:16:48 2011 UTC (13 years, 10 months ago) by fgolf
Content type: text/plain
Branch: MAIN
CVS Tags: ss_summer2011approvalV2, ss_summer2011approval, HEAD
Changes since 1.3: +273 -274 lines
Log Message:
updates

File Contents

# Content
1 //-------------------------------------------------------------------
2 // Returns the sign flip rate from the electron gun
3 // Note that the electron gun only goes up to 100 GeV
4 // For electron pt>100 returns the flip rate in the 90-100 Gev bin
5 // For electron pt<10 returns zero
6 // For electron abs(eta)>2.4 returns zero & prints out an error
7 //
8 // Usage:
9 // double flipRate = getSingleEleFlipRate(el_pt, el_eta)
10 // double fliRateErr = getSingleEleFlipRateError(el_pt, el_eta)
11 //
12 // Claudio & Derek 23 July 2009
13 //-------------------------------------------------------------
14 #include "fliprate_egun.h"
15 #include <iostream>
16 #include <stdio.h>
17 #include <math.h>
18
19 using namespace std;
20
21 double getSingleEleNum(double el_pt, double el_eta) {
22
23 el_eta = fabs(el_eta);
24
25 if( el_eta < 0.5 ){
26 if( el_pt > 95 ) return 13;
27 if( el_pt > 90 ) return 6;
28 if( el_pt > 85 ) return 7;
29 if( el_pt > 80 ) return 13;
30 if( el_pt > 75 ) return 9;
31 if( el_pt > 70 ) return 6;
32 if( el_pt > 65 ) return 11;
33 if( el_pt > 60 ) return 11;
34 if( el_pt > 55 ) return 3;
35 if( el_pt > 50 ) return 8;
36 if( el_pt > 45 ) return 10;
37 if( el_pt > 40 ) return 9;
38 if( el_pt > 35 ) return 11;
39 if( el_pt > 30 ) return 12;
40 if( el_pt > 25 ) return 3;
41 if( el_pt > 20 ) return 3;
42 if( el_pt > 10 ) return 2;
43 return 0.0;
44 }
45 if( el_eta < 1 ){
46 if( el_pt > 95 ) return 20;
47 if( el_pt > 90 ) return 20;
48 if( el_pt > 85 ) return 26;
49 if( el_pt > 80 ) return 26;
50 if( el_pt > 75 ) return 20;
51 if( el_pt > 70 ) return 17;
52 if( el_pt > 65 ) return 20;
53 if( el_pt > 60 ) return 25;
54 if( el_pt > 55 ) return 16;
55 if( el_pt > 50 ) return 24;
56 if( el_pt > 45 ) return 19;
57 if( el_pt > 40 ) return 23;
58 if( el_pt > 35 ) return 13;
59 if( el_pt > 30 ) return 10;
60 if( el_pt > 25 ) return 6;
61 if( el_pt > 20 ) return 11;
62 if( el_pt > 10 ) return 7;
63 return 0.0;
64 }
65 if( el_eta < 1.479 ){
66 if( el_pt > 95 ) return 177;
67 if( el_pt > 90 ) return 155;
68 if( el_pt > 85 ) return 147;
69 if( el_pt > 80 ) return 163;
70 if( el_pt > 75 ) return 145;
71 if( el_pt > 70 ) return 159;
72 if( el_pt > 65 ) return 152;
73 if( el_pt > 60 ) return 142;
74 if( el_pt > 55 ) return 115;
75 if( el_pt > 50 ) return 121;
76 if( el_pt > 45 ) return 112;
77 if( el_pt > 40 ) return 99;
78 if( el_pt > 35 ) return 90;
79 if( el_pt > 30 ) return 64;
80 if( el_pt > 25 ) return 54;
81 if( el_pt > 20 ) return 41;
82 if( el_pt > 10 ) return 13;
83 return 0.0;
84 }
85 if( el_eta < 1.8 ){
86 if( el_pt > 95 ) return 290;
87 if( el_pt > 90 ) return 302;
88 if( el_pt > 85 ) return 260;
89 if( el_pt > 80 ) return 274;
90 if( el_pt > 75 ) return 280;
91 if( el_pt > 70 ) return 251;
92 if( el_pt > 65 ) return 193;
93 if( el_pt > 60 ) return 223;
94 if( el_pt > 55 ) return 209;
95 if( el_pt > 50 ) return 158;
96 if( el_pt > 45 ) return 163;
97 if( el_pt > 40 ) return 144;
98 if( el_pt > 35 ) return 138;
99 if( el_pt > 30 ) return 98;
100 if( el_pt > 25 ) return 69;
101 if( el_pt > 20 ) return 46;
102 if( el_pt > 10 ) return 11;
103 return 0.0;
104 }
105 if( el_eta < 2 ){
106 if( el_pt > 95 ) return 166;
107 if( el_pt > 90 ) return 153;
108 if( el_pt > 85 ) return 141;
109 if( el_pt > 80 ) return 146;
110 if( el_pt > 75 ) return 148;
111 if( el_pt > 70 ) return 157;
112 if( el_pt > 65 ) return 117;
113 if( el_pt > 60 ) return 133;
114 if( el_pt > 55 ) return 129;
115 if( el_pt > 50 ) return 107;
116 if( el_pt > 45 ) return 117;
117 if( el_pt > 40 ) return 119;
118 if( el_pt > 35 ) return 96;
119 if( el_pt > 30 ) return 74;
120 if( el_pt > 25 ) return 49;
121 if( el_pt > 20 ) return 31;
122 if( el_pt > 10 ) return 20;
123 return 0.0;
124 }
125 if( el_eta < 2.1 ){
126 if( el_pt > 95 ) return 70;
127 if( el_pt > 90 ) return 72;
128 if( el_pt > 85 ) return 69;
129 if( el_pt > 80 ) return 66;
130 if( el_pt > 75 ) return 73;
131 if( el_pt > 70 ) return 66;
132 if( el_pt > 65 ) return 60;
133 if( el_pt > 60 ) return 50;
134 if( el_pt > 55 ) return 58;
135 if( el_pt > 50 ) return 58;
136 if( el_pt > 45 ) return 64;
137 if( el_pt > 40 ) return 46;
138 if( el_pt > 35 ) return 33;
139 if( el_pt > 30 ) return 30;
140 if( el_pt > 25 ) return 25;
141 if( el_pt > 20 ) return 26;
142 if( el_pt > 10 ) return 4;
143 return 0.0;
144 }
145 if( el_eta < 2.2 ){
146 if( el_pt > 95 ) return 77;
147 if( el_pt > 90 ) return 65;
148 if( el_pt > 85 ) return 83;
149 if( el_pt > 80 ) return 73;
150 if( el_pt > 75 ) return 81;
151 if( el_pt > 70 ) return 58;
152 if( el_pt > 65 ) return 56;
153 if( el_pt > 60 ) return 54;
154 if( el_pt > 55 ) return 49;
155 if( el_pt > 50 ) return 46;
156 if( el_pt > 45 ) return 43;
157 if( el_pt > 40 ) return 37;
158 if( el_pt > 35 ) return 37;
159 if( el_pt > 30 ) return 30;
160 if( el_pt > 25 ) return 22;
161 if( el_pt > 20 ) return 24;
162 if( el_pt > 10 ) return 22;
163 return 0.0;
164 }
165 if( el_eta <= 2.4 ){
166 if( el_pt > 95 ) return 151;
167 if( el_pt > 90 ) return 135;
168 if( el_pt > 85 ) return 138;
169 if( el_pt > 80 ) return 116;
170 if( el_pt > 75 ) return 119;
171 if( el_pt > 70 ) return 123;
172 if( el_pt > 65 ) return 99;
173 if( el_pt > 60 ) return 107;
174 if( el_pt > 55 ) return 89;
175 if( el_pt > 50 ) return 73;
176 if( el_pt > 45 ) return 85;
177 if( el_pt > 40 ) return 66;
178 if( el_pt > 35 ) return 63;
179 if( el_pt > 30 ) return 55;
180 if( el_pt > 25 ) return 46;
181 if( el_pt > 20 ) return 41;
182 if( el_pt > 10 ) return 25;
183 return 0.0;
184 }
185 std::cout << "Error: eta > 2.4 value found" << endl;
186 return 0.0;
187 }
188
189
190 double getSingleEleDenom(double el_pt, double el_eta) {
191
192 el_eta = fabs(el_eta);
193
194 if( el_eta < 0.5 ){
195 if( el_pt > 95 ) return 146039;
196 if( el_pt > 90 ) return 145996;
197 if( el_pt > 85 ) return 145655;
198 if( el_pt > 80 ) return 145579;
199 if( el_pt > 75 ) return 145586;
200 if( el_pt > 70 ) return 146280;
201 if( el_pt > 65 ) return 145877;
202 if( el_pt > 60 ) return 145949;
203 if( el_pt > 55 ) return 145744;
204 if( el_pt > 50 ) return 145034;
205 if( el_pt > 45 ) return 145704;
206 if( el_pt > 40 ) return 145591;
207 if( el_pt > 35 ) return 144881;
208 if( el_pt > 30 ) return 143408;
209 if( el_pt > 25 ) return 142485;
210 if( el_pt > 20 ) return 138025;
211 if( el_pt > 10 ) return 211781;
212 return 0.0;
213 }
214 if( el_eta < 1 ){
215 if( el_pt > 95 ) return 144904;
216 if( el_pt > 90 ) return 144773;
217 if( el_pt > 85 ) return 144301;
218 if( el_pt > 80 ) return 144859;
219 if( el_pt > 75 ) return 144819;
220 if( el_pt > 70 ) return 144986;
221 if( el_pt > 65 ) return 145269;
222 if( el_pt > 60 ) return 144663;
223 if( el_pt > 55 ) return 144649;
224 if( el_pt > 50 ) return 144620;
225 if( el_pt > 45 ) return 145117;
226 if( el_pt > 40 ) return 144704;
227 if( el_pt > 35 ) return 143959;
228 if( el_pt > 30 ) return 143506;
229 if( el_pt > 25 ) return 141976;
230 if( el_pt > 20 ) return 137829;
231 if( el_pt > 10 ) return 226752;
232 return 0.0;
233 }
234 if( el_eta < 1.479 ){
235 if( el_pt > 95 ) return 130698;
236 if( el_pt > 90 ) return 130670;
237 if( el_pt > 85 ) return 131265;
238 if( el_pt > 80 ) return 130788;
239 if( el_pt > 75 ) return 130542;
240 if( el_pt > 70 ) return 130913;
241 if( el_pt > 65 ) return 130703;
242 if( el_pt > 60 ) return 131326;
243 if( el_pt > 55 ) return 130205;
244 if( el_pt > 50 ) return 130500;
245 if( el_pt > 45 ) return 128679;
246 if( el_pt > 40 ) return 127828;
247 if( el_pt > 35 ) return 126136;
248 if( el_pt > 30 ) return 124081;
249 if( el_pt > 25 ) return 120124;
250 if( el_pt > 20 ) return 113099;
251 if( el_pt > 10 ) return 171132;
252 return 0.0;
253 }
254 if( el_eta < 1.8 ){
255 if( el_pt > 95 ) return 67948;
256 if( el_pt > 90 ) return 67662;
257 if( el_pt > 85 ) return 68025;
258 if( el_pt > 80 ) return 67695;
259 if( el_pt > 75 ) return 67964;
260 if( el_pt > 70 ) return 67763;
261 if( el_pt > 65 ) return 68007;
262 if( el_pt > 60 ) return 67484;
263 if( el_pt > 55 ) return 67503;
264 if( el_pt > 50 ) return 67047;
265 if( el_pt > 45 ) return 66825;
266 if( el_pt > 40 ) return 66613;
267 if( el_pt > 35 ) return 64770;
268 if( el_pt > 30 ) return 63052;
269 if( el_pt > 25 ) return 60261;
270 if( el_pt > 20 ) return 55350;
271 if( el_pt > 10 ) return 68121;
272 return 0.0;
273 }
274 if( el_eta < 2 ){
275 if( el_pt > 95 ) return 49578;
276 if( el_pt > 90 ) return 50082;
277 if( el_pt > 85 ) return 50358;
278 if( el_pt > 80 ) return 50193;
279 if( el_pt > 75 ) return 50708;
280 if( el_pt > 70 ) return 50537;
281 if( el_pt > 65 ) return 50322;
282 if( el_pt > 60 ) return 50720;
283 if( el_pt > 55 ) return 50076;
284 if( el_pt > 50 ) return 50555;
285 if( el_pt > 45 ) return 50261;
286 if( el_pt > 40 ) return 49947;
287 if( el_pt > 35 ) return 49041;
288 if( el_pt > 30 ) return 48351;
289 if( el_pt > 25 ) return 46704;
290 if( el_pt > 20 ) return 43626;
291 if( el_pt > 10 ) return 55808;
292 return 0.0;
293 }
294 if( el_eta < 2.1 ){
295 if( el_pt > 95 ) return 24458;
296 if( el_pt > 90 ) return 24811;
297 if( el_pt > 85 ) return 24682;
298 if( el_pt > 80 ) return 24646;
299 if( el_pt > 75 ) return 25254;
300 if( el_pt > 70 ) return 25106;
301 if( el_pt > 65 ) return 25073;
302 if( el_pt > 60 ) return 25313;
303 if( el_pt > 55 ) return 25093;
304 if( el_pt > 50 ) return 25157;
305 if( el_pt > 45 ) return 25310;
306 if( el_pt > 40 ) return 25348;
307 if( el_pt > 35 ) return 24817;
308 if( el_pt > 30 ) return 24641;
309 if( el_pt > 25 ) return 24511;
310 if( el_pt > 20 ) return 23796;
311 if( el_pt > 10 ) return 33407;
312 return 0.0;
313 }
314 if( el_eta < 2.2 ){
315 if( el_pt > 95 ) return 23971;
316 if( el_pt > 90 ) return 24140;
317 if( el_pt > 85 ) return 24021;
318 if( el_pt > 80 ) return 24273;
319 if( el_pt > 75 ) return 23960;
320 if( el_pt > 70 ) return 24085;
321 if( el_pt > 65 ) return 24132;
322 if( el_pt > 60 ) return 24303;
323 if( el_pt > 55 ) return 24450;
324 if( el_pt > 50 ) return 24511;
325 if( el_pt > 45 ) return 24325;
326 if( el_pt > 40 ) return 24191;
327 if( el_pt > 35 ) return 24301;
328 if( el_pt > 30 ) return 24104;
329 if( el_pt > 25 ) return 23691;
330 if( el_pt > 20 ) return 22936;
331 if( el_pt > 10 ) return 33778;
332 return 0.0;
333 }
334 if( el_eta <= 2.4 ){
335 if( el_pt > 95 ) return 45660;
336 if( el_pt > 90 ) return 46147;
337 if( el_pt > 85 ) return 46462;
338 if( el_pt > 80 ) return 46245;
339 if( el_pt > 75 ) return 45964;
340 if( el_pt > 70 ) return 45963;
341 if( el_pt > 65 ) return 46431;
342 if( el_pt > 60 ) return 46485;
343 if( el_pt > 55 ) return 46067;
344 if( el_pt > 50 ) return 46443;
345 if( el_pt > 45 ) return 46323;
346 if( el_pt > 40 ) return 46183;
347 if( el_pt > 35 ) return 46043;
348 if( el_pt > 30 ) return 45490;
349 if( el_pt > 25 ) return 44732;
350 if( el_pt > 20 ) return 43611;
351 if( el_pt > 10 ) return 60727;
352 return 0.0;
353 }
354 std::cout << "Error: eta > 2.5 value found" << endl;
355 return 0.0;
356 }
357
358
359 double getSingleEleFlipRate(double el_pt, double el_eta) {
360 if( el_pt < 10.0 || fabs(el_eta) > 2.5 ){
361 std::cout << "Error in 'getSingleEleFlipRate': pt or eta value found out of range" << endl;
362 return 0.0;
363 }
364 return getSingleEleNum(el_pt, fabs(el_eta))/getSingleEleDenom(el_pt, fabs(el_eta));
365 }
366
367 double getSingleEleFlipRateError(double el_pt, double el_eta) {
368 //the binomial error
369 if( el_pt < 10.0 || fabs(el_eta) > 2.5 ){
370 std::cout << "Error in 'getSingleEleFlipRate': pt or eta value found out of range" << endl;
371 return 0.0;
372 }
373 double num = getSingleEleNum(el_pt, fabs(el_eta));
374 double denom = getSingleEleDenom(el_pt, fabs(el_eta));
375 double p = num/denom;
376 return sqrt(p*(1-p)/denom);
377 }