ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/FGolf/Tools/fliprate_egun.cc
Revision: 1.3
Committed: Mon May 23 23:13:14 2011 UTC (13 years, 11 months ago) by fgolf
Content type: text/plain
Branch: MAIN
CVS Tags: synchMay2011v1
Changes since 1.2: +311 -70 lines
Log Message:
first 2011 version of flip rate from single electron gun

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 fgolf 1.3 #include <cmath>
19 fgolf 1.1
20     using namespace std;
21    
22     double getSingleEleNum(double el_pt, double el_eta) {
23    
24     el_eta = fabs(el_eta);
25    
26 fgolf 1.3 if( el_eta < 0.5 ){
27     if( el_pt > 95 ) return 9;
28     if( el_pt > 90 ) return 5;
29     if( el_pt > 85 ) return 4;
30     if( el_pt > 80 ) return 6;
31     if( el_pt > 75 ) return 7;
32     if( el_pt > 70 ) return 5;
33     if( el_pt > 65 ) return 8;
34     if( el_pt > 60 ) return 4;
35     if( el_pt > 55 ) return 4;
36     if( el_pt > 50 ) return 3;
37     if( el_pt > 45 ) return 6;
38     if( el_pt > 40 ) return 6;
39     if( el_pt > 35 ) return 6;
40     if( el_pt > 30 ) return 3;
41     if( el_pt > 25 ) return 5;
42     if( el_pt > 20 ) return 0;
43     if( el_pt > 10 ) return 1;
44     return 0.0;
45     }
46     if( el_eta < 1 ){
47     if( el_pt > 95 ) return 17;
48     if( el_pt > 90 ) return 25;
49     if( el_pt > 85 ) return 16;
50     if( el_pt > 80 ) return 9;
51     if( el_pt > 75 ) return 18;
52     if( el_pt > 70 ) return 10;
53     if( el_pt > 65 ) return 17;
54     if( el_pt > 60 ) return 15;
55     if( el_pt > 55 ) return 13;
56     if( el_pt > 50 ) return 21;
57     if( el_pt > 45 ) return 14;
58     if( el_pt > 40 ) return 7;
59     if( el_pt > 35 ) return 8;
60 fgolf 1.1 if( el_pt > 30 ) return 9;
61 fgolf 1.3 if( el_pt > 25 ) return 12;
62     if( el_pt > 20 ) return 4;
63     if( el_pt > 10 ) return 2;
64 fgolf 1.1 return 0.0;
65     }
66 fgolf 1.3 if( el_eta < 1.479 ){
67     if( el_pt > 95 ) return 88;
68     if( el_pt > 90 ) return 76;
69     if( el_pt > 85 ) return 95;
70     if( el_pt > 80 ) return 73;
71     if( el_pt > 75 ) return 84;
72     if( el_pt > 70 ) return 72;
73     if( el_pt > 65 ) return 75;
74     if( el_pt > 60 ) return 75;
75     if( el_pt > 55 ) return 77;
76     if( el_pt > 50 ) return 65;
77     if( el_pt > 45 ) return 45;
78     if( el_pt > 40 ) return 39;
79     if( el_pt > 35 ) return 48;
80     if( el_pt > 30 ) return 33;
81     if( el_pt > 25 ) return 25;
82     if( el_pt > 20 ) return 19;
83     if( el_pt > 10 ) return 8;
84     return 0.0;
85     }
86     if( el_eta < 1.8 ){
87     if( el_pt > 95 ) return 144;
88     if( el_pt > 90 ) return 138;
89     if( el_pt > 85 ) return 129;
90     if( el_pt > 80 ) return 116;
91     if( el_pt > 75 ) return 122;
92     if( el_pt > 70 ) return 103;
93     if( el_pt > 65 ) return 111;
94     if( el_pt > 60 ) return 108;
95     if( el_pt > 55 ) return 90;
96     if( el_pt > 50 ) return 93;
97     if( el_pt > 45 ) return 91;
98     if( el_pt > 40 ) return 69;
99     if( el_pt > 35 ) return 46;
100     if( el_pt > 30 ) return 44;
101     if( el_pt > 25 ) return 30;
102     if( el_pt > 20 ) return 16;
103     if( el_pt > 10 ) return 9;
104     return 0.0;
105     }
106     if( el_eta < 2 ){
107     if( el_pt > 95 ) return 70;
108     if( el_pt > 90 ) return 60;
109     if( el_pt > 85 ) return 70;
110     if( el_pt > 80 ) return 60;
111     if( el_pt > 75 ) return 56;
112     if( el_pt > 70 ) return 74;
113     if( el_pt > 65 ) return 58;
114     if( el_pt > 60 ) return 54;
115     if( el_pt > 55 ) return 59;
116     if( el_pt > 50 ) return 60;
117     if( el_pt > 45 ) return 51;
118     if( el_pt > 40 ) return 43;
119     if( el_pt > 35 ) return 25;
120     if( el_pt > 30 ) return 28;
121     if( el_pt > 25 ) return 17;
122     if( el_pt > 20 ) return 10;
123     if( el_pt > 10 ) return 6;
124 fgolf 1.1 return 0.0;
125     }
126 fgolf 1.3 if( el_eta < 2.1 ){
127     if( el_pt > 95 ) return 40;
128     if( el_pt > 90 ) return 33;
129     if( el_pt > 85 ) return 33;
130     if( el_pt > 80 ) return 29;
131     if( el_pt > 75 ) return 28;
132     if( el_pt > 70 ) return 23;
133     if( el_pt > 65 ) return 27;
134     if( el_pt > 60 ) return 21;
135     if( el_pt > 55 ) return 27;
136     if( el_pt > 50 ) return 15;
137     if( el_pt > 45 ) return 18;
138     if( el_pt > 40 ) return 17;
139     if( el_pt > 35 ) return 11;
140     if( el_pt > 30 ) return 12;
141     if( el_pt > 25 ) return 8;
142     if( el_pt > 20 ) return 8;
143 fgolf 1.1 if( el_pt > 10 ) return 6;
144     return 0.0;
145     }
146 fgolf 1.3 if( el_eta < 2.2 ){
147     if( el_pt > 95 ) return 35;
148     if( el_pt > 90 ) return 35;
149     if( el_pt > 85 ) return 27;
150     if( el_pt > 80 ) return 29;
151     if( el_pt > 75 ) return 36;
152     if( el_pt > 70 ) return 20;
153     if( el_pt > 65 ) return 24;
154     if( el_pt > 60 ) return 21;
155     if( el_pt > 55 ) return 19;
156     if( el_pt > 50 ) return 32;
157     if( el_pt > 45 ) return 21;
158     if( el_pt > 40 ) return 19;
159     if( el_pt > 35 ) return 12;
160     if( el_pt > 30 ) return 10;
161     if( el_pt > 25 ) return 13;
162     if( el_pt > 20 ) return 5;
163     if( el_pt > 10 ) return 9;
164     return 0.0;
165     }
166     if( el_eta <= 2.4 ){
167     if( el_pt > 95 ) return 64;
168     if( el_pt > 90 ) return 84;
169     if( el_pt > 85 ) return 68;
170     if( el_pt > 80 ) return 64;
171     if( el_pt > 75 ) return 56;
172     if( el_pt > 70 ) return 57;
173     if( el_pt > 65 ) return 54;
174     if( el_pt > 60 ) return 47;
175     if( el_pt > 55 ) return 38;
176     if( el_pt > 50 ) return 46;
177     if( el_pt > 45 ) return 39;
178     if( el_pt > 40 ) return 29;
179     if( el_pt > 35 ) return 23;
180     if( el_pt > 30 ) return 25;
181     if( el_pt > 25 ) return 14;
182     if( el_pt > 20 ) return 20;
183     if( el_pt > 10 ) return 14;
184 fgolf 1.1 return 0.0;
185     }
186 fgolf 1.3 std::cout << "Error: eta > 2.4 value found" << endl;
187 fgolf 1.1 return 0.0;
188     }
189    
190    
191     double getSingleEleDenom(double el_pt, double el_eta) {
192    
193 fgolf 1.3 el_eta = std::fabs(el_eta);
194 fgolf 1.1
195 fgolf 1.3 if( el_eta < 0.5 ){
196     if( el_pt > 95 ) return 80174;
197     if( el_pt > 90 ) return 79910;
198     if( el_pt > 85 ) return 79820;
199     if( el_pt > 80 ) return 79722;
200     if( el_pt > 75 ) return 79890;
201     if( el_pt > 70 ) return 79653;
202     if( el_pt > 65 ) return 79892;
203     if( el_pt > 60 ) return 80077;
204     if( el_pt > 55 ) return 80011;
205     if( el_pt > 50 ) return 79597;
206     if( el_pt > 45 ) return 80053;
207     if( el_pt > 40 ) return 79263;
208     if( el_pt > 35 ) return 79239;
209     if( el_pt > 30 ) return 78273;
210     if( el_pt > 25 ) return 77894;
211     if( el_pt > 20 ) return 75100;
212     if( el_pt > 10 ) return 114108;
213     return 0.0;
214     }
215     if( el_eta < 1 ){
216     if( el_pt > 95 ) return 79315;
217     if( el_pt > 90 ) return 79561;
218     if( el_pt > 85 ) return 79406;
219     if( el_pt > 80 ) return 79842;
220     if( el_pt > 75 ) return 79654;
221     if( el_pt > 70 ) return 79671;
222     if( el_pt > 65 ) return 79640;
223     if( el_pt > 60 ) return 79599;
224     if( el_pt > 55 ) return 79540;
225     if( el_pt > 50 ) return 79343;
226     if( el_pt > 45 ) return 79944;
227     if( el_pt > 40 ) return 79623;
228     if( el_pt > 35 ) return 78557;
229     if( el_pt > 30 ) return 78303;
230     if( el_pt > 25 ) return 77378;
231     if( el_pt > 20 ) return 75091;
232     if( el_pt > 10 ) return 122322;
233     return 0.0;
234     }
235     if( el_eta < 1.479 ){
236     if( el_pt > 95 ) return 71523;
237     if( el_pt > 90 ) return 70668;
238     if( el_pt > 85 ) return 71662;
239     if( el_pt > 80 ) return 71434;
240     if( el_pt > 75 ) return 71467;
241     if( el_pt > 70 ) return 71204;
242     if( el_pt > 65 ) return 70951;
243     if( el_pt > 60 ) return 71044;
244     if( el_pt > 55 ) return 70664;
245     if( el_pt > 50 ) return 70559;
246     if( el_pt > 45 ) return 70218;
247     if( el_pt > 40 ) return 69528;
248     if( el_pt > 35 ) return 68507;
249     if( el_pt > 30 ) return 67672;
250     if( el_pt > 25 ) return 65776;
251     if( el_pt > 20 ) return 61672;
252     if( el_pt > 10 ) return 93412;
253     return 0.0;
254     }
255     if( el_eta < 1.8 ){
256     if( el_pt > 95 ) return 37802;
257     if( el_pt > 90 ) return 38002;
258     if( el_pt > 85 ) return 37636;
259     if( el_pt > 80 ) return 38035;
260     if( el_pt > 75 ) return 38432;
261     if( el_pt > 70 ) return 37862;
262     if( el_pt > 65 ) return 37989;
263     if( el_pt > 60 ) return 37686;
264     if( el_pt > 55 ) return 37738;
265     if( el_pt > 50 ) return 37321;
266     if( el_pt > 45 ) return 37092;
267     if( el_pt > 40 ) return 36538;
268     if( el_pt > 35 ) return 35582;
269     if( el_pt > 30 ) return 34886;
270     if( el_pt > 25 ) return 32819;
271     if( el_pt > 20 ) return 30064;
272     if( el_pt > 10 ) return 36945;
273     return 0.0;
274     }
275     if( el_eta < 2 ){
276     if( el_pt > 95 ) return 27683;
277     if( el_pt > 90 ) return 27689;
278     if( el_pt > 85 ) return 27736;
279     if( el_pt > 80 ) return 27917;
280     if( el_pt > 75 ) return 27924;
281     if( el_pt > 70 ) return 27763;
282     if( el_pt > 65 ) return 28018;
283     if( el_pt > 60 ) return 27977;
284     if( el_pt > 55 ) return 28120;
285     if( el_pt > 50 ) return 27549;
286     if( el_pt > 45 ) return 27622;
287     if( el_pt > 40 ) return 27251;
288     if( el_pt > 35 ) return 26803;
289     if( el_pt > 30 ) return 26001;
290     if( el_pt > 25 ) return 25559;
291     if( el_pt > 20 ) return 23249;
292     if( el_pt > 10 ) return 29668;
293     return 0.0;
294     }
295     if( el_eta < 2.1 ){
296     if( el_pt > 95 ) return 13372;
297     if( el_pt > 90 ) return 13612;
298     if( el_pt > 85 ) return 13518;
299     if( el_pt > 80 ) return 13317;
300     if( el_pt > 75 ) return 13707;
301     if( el_pt > 70 ) return 13562;
302     if( el_pt > 65 ) return 13637;
303     if( el_pt > 60 ) return 13714;
304     if( el_pt > 55 ) return 13635;
305     if( el_pt > 50 ) return 13628;
306     if( el_pt > 45 ) return 13481;
307     if( el_pt > 40 ) return 13384;
308     if( el_pt > 35 ) return 13437;
309     if( el_pt > 30 ) return 13341;
310     if( el_pt > 25 ) return 13083;
311     if( el_pt > 20 ) return 12750;
312     if( el_pt > 10 ) return 17362;
313     return 0.0;
314     }
315     if( el_eta < 2.2 ){
316     if( el_pt > 95 ) return 12545;
317     if( el_pt > 90 ) return 12730;
318     if( el_pt > 85 ) return 12914;
319     if( el_pt > 80 ) return 12765;
320     if( el_pt > 75 ) return 12899;
321     if( el_pt > 70 ) return 12897;
322     if( el_pt > 65 ) return 12758;
323     if( el_pt > 60 ) return 12824;
324     if( el_pt > 55 ) return 13093;
325     if( el_pt > 50 ) return 12773;
326     if( el_pt > 45 ) return 12724;
327     if( el_pt > 40 ) return 12958;
328     if( el_pt > 35 ) return 12976;
329     if( el_pt > 30 ) return 12877;
330     if( el_pt > 25 ) return 12626;
331     if( el_pt > 20 ) return 12046;
332     if( el_pt > 10 ) return 17226;
333     return 0.0;
334     }
335     if( el_eta <= 2.4 ){
336     if( el_pt > 95 ) return 23896;
337     if( el_pt > 90 ) return 24146;
338     if( el_pt > 85 ) return 24045;
339     if( el_pt > 80 ) return 24087;
340     if( el_pt > 75 ) return 24197;
341     if( el_pt > 70 ) return 24369;
342     if( el_pt > 65 ) return 24486;
343     if( el_pt > 60 ) return 24379;
344     if( el_pt > 55 ) return 24598;
345     if( el_pt > 50 ) return 24470;
346     if( el_pt > 45 ) return 24531;
347     if( el_pt > 40 ) return 24214;
348     if( el_pt > 35 ) return 24295;
349     if( el_pt > 30 ) return 24178;
350     if( el_pt > 25 ) return 23611;
351     if( el_pt > 20 ) return 23022;
352     if( el_pt > 10 ) return 31178;
353 fgolf 1.1 return 0.0;
354     }
355     std::cout << "Error: eta > 2.5 value found" << endl;
356     return 0.0;
357     }
358    
359    
360     double getSingleEleFlipRate(double el_pt, double el_eta) {
361     if( el_pt < 10.0 || fabs(el_eta) > 2.5 ){
362     std::cout << "Error in 'getSingleEleFlipRate': pt or eta value found out of range" << endl;
363     return 0.0;
364     }
365     return getSingleEleNum(el_pt, fabs(el_eta))/getSingleEleDenom(el_pt, fabs(el_eta));
366     }
367    
368     double getSingleEleFlipRateError(double el_pt, double el_eta) {
369     //the binomial error
370     if( el_pt < 10.0 || fabs(el_eta) > 2.5 ){
371     std::cout << "Error in 'getSingleEleFlipRate': pt or eta value found out of range" << endl;
372     return 0.0;
373     }
374     double num = getSingleEleNum(el_pt, fabs(el_eta));
375     double denom = getSingleEleDenom(el_pt, fabs(el_eta));
376     double p = num/denom;
377     return sqrt(p*(1-p)/denom);
378     }