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, 9 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

# User Rev Content
1 fgolf 1.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 fgolf 1.3 if( el_eta < 0.5 ){
26 fgolf 1.4 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 fgolf 1.3 return 0.0;
44     }
45     if( el_eta < 1 ){
46 fgolf 1.4 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 fgolf 1.1 return 0.0;
64     }
65 fgolf 1.3 if( el_eta < 1.479 ){
66 fgolf 1.4 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 fgolf 1.3 return 0.0;
84     }
85     if( el_eta < 1.8 ){
86 fgolf 1.4 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 fgolf 1.3 return 0.0;
104     }
105     if( el_eta < 2 ){
106 fgolf 1.4 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 fgolf 1.1 return 0.0;
124     }
125 fgolf 1.3 if( el_eta < 2.1 ){
126 fgolf 1.4 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 fgolf 1.1 return 0.0;
144     }
145 fgolf 1.3 if( el_eta < 2.2 ){
146 fgolf 1.4 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 fgolf 1.3 return 0.0;
164     }
165     if( el_eta <= 2.4 ){
166 fgolf 1.4 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 fgolf 1.1 return 0.0;
184     }
185 fgolf 1.3 std::cout << "Error: eta > 2.4 value found" << endl;
186 fgolf 1.1 return 0.0;
187     }
188    
189    
190     double getSingleEleDenom(double el_pt, double el_eta) {
191    
192 fgolf 1.4 el_eta = fabs(el_eta);
193 fgolf 1.1
194 fgolf 1.3 if( el_eta < 0.5 ){
195 fgolf 1.4 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 fgolf 1.3 return 0.0;
213     }
214     if( el_eta < 1 ){
215 fgolf 1.4 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 fgolf 1.3 return 0.0;
233     }
234     if( el_eta < 1.479 ){
235 fgolf 1.4 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 fgolf 1.3 return 0.0;
253     }
254     if( el_eta < 1.8 ){
255 fgolf 1.4 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 fgolf 1.3 return 0.0;
273     }
274     if( el_eta < 2 ){
275 fgolf 1.4 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 fgolf 1.3 return 0.0;
293     }
294     if( el_eta < 2.1 ){
295 fgolf 1.4 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 fgolf 1.3 return 0.0;
313     }
314     if( el_eta < 2.2 ){
315 fgolf 1.4 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 fgolf 1.3 return 0.0;
333     }
334     if( el_eta <= 2.4 ){
335 fgolf 1.4 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 fgolf 1.1 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     }