ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/FGolf/Tools/ScaleFactors.cc
Revision: 1.2
Committed: Mon May 28 19:31:28 2012 UTC (12 years, 11 months ago) by kelley
Content type: text/plain
Branch: MAIN
Changes since 1.1: +378 -4 lines
Log Message:
added implementation for triggerScaleFactor functions

File Contents

# User Rev Content
1 fgolf 1.1 #include "ScaleFactors.h"
2     #include "CORE/CMS2.h"
3 kelley 1.2 //#include "bTagEff_BTV.h"
4 fgolf 1.1
5 kelley 1.2 float dileptonTagAndProbeScaleFactor(int hyp_idx)
6 fgolf 1.1 {
7 kelley 1.2 float sf1 = tagAndProbeScaleFactor(cms2.hyp_lt_id().at(hyp_idx), cms2.hyp_lt_p4().at(hyp_idx).pt(), cms2.hyp_lt_p4().at(hyp_idx).eta());
8     float sf2 = tagAndProbeScaleFactor(cms2.hyp_ll_id().at(hyp_idx), cms2.hyp_ll_p4().at(hyp_idx).pt(), cms2.hyp_ll_p4().at(hyp_idx).eta());
9 fgolf 1.1
10     return (sf1 * sf2);
11     }
12    
13     float tagAndProbeScaleFactor(int id, float pt, float eta)
14     {
15     unsigned int aid = abs(id);
16     float feta = fabs(eta);
17    
18     if (aid == 11) {
19     if (feta < .1479) {
20     if (pt < 40. && pt > 20.)
21     return 0.9989;
22     else if (pt > 40.)
23     return 0.9997;
24     else
25     return 0.;
26     }
27     else if (feta < 2.4) {
28     if (pt < 40. && pt > 20.)
29     return 1.0335;
30     else if (pt > 40.)
31     return 1.0114;
32     else
33     return 0.;
34     }
35     else return 0.;
36     }
37     else if (aid == 13) {
38     if (feta < .1479) {
39     if (pt < 40. && pt > 20.)
40     return 1.0116;
41     else if (pt > 40.)
42     return 1.0163;
43     else
44     return 0.;
45     }
46     else if (feta < 2.4) {
47     if (pt < 40. && pt > 20.)
48     return 0.9965;
49     else if (pt > 40.)
50     return 1.0114;
51     else
52     return 0.;
53     }
54     else return 0.;
55     }
56    
57     return 0.;
58     }
59    
60 kelley 1.2 float dilepTriggerScaleFactor(enum TrigEffType trig_eff_type, int hyp_idx)
61     {
62     float sf1 = triggerScaleFactor(trig_eff_type, cms2.hyp_lt_id().at(hyp_idx), cms2.hyp_lt_p4().at(hyp_idx).pt(), cms2.hyp_lt_p4().at(hyp_idx).eta());
63     float sf2 = triggerScaleFactor(trig_eff_type, cms2.hyp_ll_id().at(hyp_idx), cms2.hyp_ll_p4().at(hyp_idx).pt(), cms2.hyp_ll_p4().at(hyp_idx).eta());
64     return (sf1 * sf2);
65     }
66    
67     float triggerScaleFactor(enum TrigEffType trig_eff_type, int id, float pt, float eta)
68     {
69     unsigned int aid = abs(id);
70     float feta = fabs(eta);
71    
72     if (aid == 11)
73     {
74     switch (trig_eff_type)
75     {
76     case DzDbl:
77     if (fabs(eta) < 0.000) return 0.;
78     if (fabs(eta) > 2.500) return 0.;
79    
80     if (pt < 20.000) return 0.;
81     if (pt > 7000.000) return 0.;
82    
83     if (fabs(eta) < 0.800000) {
84     if (pt < 22.500000) return 1.000;
85     else if (pt < 25.000000) return 1.000;
86     else if (pt < 27.500000) return 0.999;
87     else if (pt < 30.000000) return 1.000;
88     else if (pt < 35.000000) return 1.000;
89     else if (pt < 40.000000) return 1.000;
90     else if (pt < 50.000000) return 1.000;
91     else if (pt < 7000.000000) return 1.000;
92     }
93     else if (fabs(eta) < 1.479000) {
94     if (pt < 22.500000) return 1.000;
95     else if (pt < 25.000000) return 1.000;
96     else if (pt < 27.500000) return 0.996;
97     else if (pt < 30.000000) return 1.000;
98     else if (pt < 35.000000) return 1.000;
99     else if (pt < 40.000000) return 1.000;
100     else if (pt < 50.000000) return 0.999;
101     else if (pt < 7000.000000) return 1.000;
102     }
103     else if (fabs(eta) < 2.000000) {
104     if (pt < 22.500000) return 1.000;
105     else if (pt < 25.000000) return 1.000;
106     else if (pt < 27.500000) return 1.000;
107     else if (pt < 30.000000) return 0.997;
108     else if (pt < 35.000000) return 0.999;
109     else if (pt < 40.000000) return 0.999;
110     else if (pt < 50.000000) return 0.998;
111     else if (pt < 7000.000000) return 0.997;
112     }
113     else if (fabs(eta) < 2.500000) {
114     if (pt < 22.500000) return 0.974;
115     else if (pt < 25.000000) return 0.990;
116     else if (pt < 27.500000) return 0.994;
117     else if (pt < 30.000000) return 1.000;
118     else if (pt < 35.000000) return 0.993;
119     else if (pt < 40.000000) return 0.987;
120     else if (pt < 50.000000) return 0.989;
121     else if (pt < 7000.000000) return 0.988;
122     }
123     break;
124     case LeadDbl:
125     if (fabs(eta) < 0.000) return 0.;
126     if (fabs(eta) > 2.500) return 0.;
127    
128     if (pt < 20.000) return 0.;
129     if (pt > 7000.000) return 0.;
130    
131     if (fabs(eta) < 0.800000) {
132     if (pt < 22.500000) return 0.943;
133     else if (pt < 25.000000) return 0.936;
134     else if (pt < 27.500000) return 0.960;
135     else if (pt < 30.000000) return 0.967;
136     else if (pt < 35.000000) return 0.974;
137     else if (pt < 40.000000) return 0.977;
138     else if (pt < 50.000000) return 0.977;
139     else if (pt < 7000.000000) return 0.971;
140     }
141     else if (fabs(eta) < 1.479000) {
142     if (pt < 22.500000) return 0.957;
143     else if (pt < 25.000000) return 0.969;
144     else if (pt < 27.500000) return 0.987;
145     else if (pt < 30.000000) return 0.987;
146     else if (pt < 35.000000) return 0.991;
147     else if (pt < 40.000000) return 0.993;
148     else if (pt < 50.000000) return 0.995;
149     else if (pt < 7000.000000) return 0.993;
150     }
151     else if (fabs(eta) < 2.000000) {
152     if (pt < 22.500000) return 0.982;
153     else if (pt < 25.000000) return 0.986;
154     else if (pt < 27.500000) return 0.984;
155     else if (pt < 30.000000) return 0.991;
156     else if (pt < 35.000000) return 0.994;
157     else if (pt < 40.000000) return 0.994;
158     else if (pt < 50.000000) return 0.996;
159     else if (pt < 7000.000000) return 0.995;
160     }
161     else if (fabs(eta) < 2.500000) {
162     if (pt < 22.500000) return 0.835;
163     else if (pt < 25.000000) return 0.981;
164     else if (pt < 27.500000) return 1.000;
165     else if (pt < 30.000000) return 0.987;
166     else if (pt < 35.000000) return 0.990;
167     else if (pt < 40.000000) return 0.986;
168     else if (pt < 50.000000) return 0.989;
169     else if (pt < 7000.000000) return 0.994;
170     }
171     break;
172     case Sgl:
173     if (fabs(eta) < 0.000) return 0.;
174     if (fabs(eta) > 2.500) return 0.;
175    
176     if (pt < 20.000) return 0.;
177     if (pt > 7000.000) return 0.;
178    
179     if (fabs(eta) < 0.800000) {
180     if (pt < 22.500000) return 0.000;
181     else if (pt < 25.000000) return 0.000;
182     else if (pt < 27.500000) return 0.059;
183     else if (pt < 30.000000) return 0.740;
184     else if (pt < 35.000000) return 0.904;
185     else if (pt < 40.000000) return 0.927;
186     else if (pt < 50.000000) return 0.945;
187     else if (pt < 7000.000000) return 0.950;
188     }
189     else if (fabs(eta) < 1.479000) {
190     if (pt < 22.500000) return 0.000;
191     else if (pt < 25.000000) return 0.035;
192     else if (pt < 27.500000) return 0.112;
193     else if (pt < 30.000000) return 0.647;
194     else if (pt < 35.000000) return 0.915;
195     else if (pt < 40.000000) return 0.939;
196     else if (pt < 50.000000) return 0.956;
197     else if (pt < 7000.000000) return 0.968;
198     }
199     else if (fabs(eta) < 2.000000) {
200     if (pt < 22.500000) return 0.000;
201     else if (pt < 25.000000) return 0.006;
202     else if (pt < 27.500000) return 0.108;
203     else if (pt < 30.000000) return 0.448;
204     else if (pt < 35.000000) return 0.687;
205     else if (pt < 40.000000) return 0.735;
206     else if (pt < 50.000000) return 0.767;
207     else if (pt < 7000.000000) return 0.766;
208     }
209     else if (fabs(eta) < 2.500000) {
210     if (pt < 22.500000) return 0.000;
211     else if (pt < 25.000000) return 0.009;
212     else if (pt < 27.500000) return 0.095;
213     else if (pt < 30.000000) return 0.305;
214     else if (pt < 35.000000) return 0.532;
215     else if (pt < 40.000000) return 0.640;
216     else if (pt < 50.000000) return 0.695;
217     else if (pt < 7000.000000) return 0.687;
218     }
219     break;
220     case TrailDbl:
221     if (fabs(eta) < 0.000) return 0.;
222     if (fabs(eta) > 2.500) return 0.;
223    
224     if (pt < 20.000) return 0.;
225     if (pt > 7000.000) return 0.;
226    
227     if (fabs(eta) < 0.800000) {
228     if (pt < 22.500000) return 0.943;
229     else if (pt < 25.000000) return 0.951;
230     else if (pt < 27.500000) return 0.963;
231     else if (pt < 30.000000) return 0.962;
232     else if (pt < 35.000000) return 0.970;
233     else if (pt < 40.000000) return 0.974;
234     else if (pt < 50.000000) return 0.974;
235     else if (pt < 7000.000000) return 0.970;
236     }
237     else if (fabs(eta) < 1.479000) {
238     if (pt < 22.500000) return 0.970;
239     else if (pt < 25.000000) return 0.974;
240     else if (pt < 27.500000) return 0.977;
241     else if (pt < 30.000000) return 0.984;
242     else if (pt < 35.000000) return 0.987;
243     else if (pt < 40.000000) return 0.987;
244     else if (pt < 50.000000) return 0.990;
245     else if (pt < 7000.000000) return 0.987;
246     }
247     else if (fabs(eta) < 2.000000) {
248     if (pt < 22.500000) return 0.982;
249     else if (pt < 25.000000) return 0.993;
250     else if (pt < 27.500000) return 0.979;
251     else if (pt < 30.000000) return 0.991;
252     else if (pt < 35.000000) return 0.988;
253     else if (pt < 40.000000) return 0.989;
254     else if (pt < 50.000000) return 0.993;
255     else if (pt < 7000.000000) return 0.992;
256     }
257     else if (fabs(eta) < 2.500000) {
258     if (pt < 22.500000) return 0.962;
259     else if (pt < 25.000000) return 0.981;
260     else if (pt < 27.500000) return 1.000;
261     else if (pt < 30.000000) return 0.987;
262     else if (pt < 35.000000) return 0.989;
263     else if (pt < 40.000000) return 0.985;
264     else if (pt < 50.000000) return 0.987;
265     else if (pt < 7000.000000) return 0.992;
266     }
267     break;
268     };
269     }
270     else if (aid == 13)
271     {
272     switch (trig_eff_type)
273     {
274     case DzDbl:
275     if (fabs(eta) < 0.000) return 0.;
276     if (fabs(eta) > 2.400) return 0.;
277    
278     if (pt < 20.000) return 0.;
279     if (pt > 7000.000) return 0.;
280    
281     if (fabs(eta) < 0.800000) {
282     if (pt < 22.500000) return 0.901;
283     else if (pt < 25.000000) return 0.883;
284     else if (pt < 27.500000) return 0.912;
285     else if (pt < 30.000000) return 0.905;
286     else if (pt < 35.000000) return 0.906;
287     else if (pt < 40.000000) return 0.909;
288     else if (pt < 50.000000) return 0.923;
289     else if (pt < 7000.000000) return 0.927;
290     }
291     else if (fabs(eta) < 1.200000) {
292     if (pt < 22.500000) return 0.904;
293     else if (pt < 25.000000) return 0.897;
294     else if (pt < 27.500000) return 0.926;
295     else if (pt < 30.000000) return 0.921;
296     else if (pt < 35.000000) return 0.903;
297     else if (pt < 40.000000) return 0.896;
298     else if (pt < 50.000000) return 0.890;
299     else if (pt < 7000.000000) return 0.876;
300     }
301     else if (fabs(eta) < 2.400000) {
302     if (pt < 22.500000) return 0.864;
303     else if (pt < 25.000000) return 0.847;
304     else if (pt < 27.500000) return 0.864;
305     else if (pt < 30.000000) return 0.862;
306     else if (pt < 35.000000) return 0.858;
307     else if (pt < 40.000000) return 0.840;
308     else if (pt < 50.000000) return 0.824;
309     else if (pt < 7000.000000) return 0.810;
310     }
311     break;
312     case LeadDbl:
313     if (fabs(eta) < 0.000) return 0.;
314     if (fabs(eta) > 2.400) return 0.;
315    
316     if (pt < 20.000) return 0.;
317     if (pt > 7000.000) return 0.;
318    
319     if (fabs(eta) < 0.800000) {
320     if (pt < 22.500000) return 0.983;
321     else if (pt < 25.000000) return 0.976;
322     else if (pt < 27.500000) return 0.982;
323     else if (pt < 30.000000) return 0.977;
324     else if (pt < 35.000000) return 0.976;
325     else if (pt < 40.000000) return 0.977;
326     else if (pt < 50.000000) return 0.976;
327     else if (pt < 7000.000000) return 0.977;
328     }
329     else if (fabs(eta) < 1.200000) {
330     if (pt < 22.500000) return 0.911;
331     else if (pt < 25.000000) return 0.935;
332     else if (pt < 27.500000) return 0.927;
333     else if (pt < 30.000000) return 0.925;
334     else if (pt < 35.000000) return 0.938;
335     else if (pt < 40.000000) return 0.939;
336     else if (pt < 50.000000) return 0.939;
337     else if (pt < 7000.000000) return 0.934;
338     }
339     else if (fabs(eta) < 2.400000) {
340     if (pt < 22.500000) return 0.900;
341     else if (pt < 25.000000) return 0.915;
342     else if (pt < 27.500000) return 0.903;
343     else if (pt < 30.000000) return 0.908;
344     else if (pt < 35.000000) return 0.917;
345     else if (pt < 40.000000) return 0.917;
346     else if (pt < 50.000000) return 0.921;
347     else if (pt < 7000.000000) return 0.916;
348     }
349     break;
350     case Sgl:
351     if (fabs(eta) < 0.000) return 0.;
352     if (fabs(eta) > 2.400) return 0.;
353    
354     if (pt < 20.000) return 0.;
355     if (pt > 7000.000) return 0.;
356    
357     if (fabs(eta) < 0.800000) {
358     if (pt < 22.500000) return 0.001;
359     else if (pt < 25.000000) return 0.390;
360     else if (pt < 27.500000) return 0.870;
361     else if (pt < 30.000000) return 0.883;
362     else if (pt < 35.000000) return 0.905;
363     else if (pt < 40.000000) return 0.916;
364     else if (pt < 50.000000) return 0.931;
365     else if (pt < 7000.000000) return 0.944;
366     }
367     else if (fabs(eta) < 1.200000) {
368     if (pt < 22.500000) return 0.005;
369     else if (pt < 25.000000) return 0.361;
370     else if (pt < 27.500000) return 0.803;
371     else if (pt < 30.000000) return 0.805;
372     else if (pt < 35.000000) return 0.829;
373     else if (pt < 40.000000) return 0.847;
374     else if (pt < 50.000000) return 0.856;
375     else if (pt < 7000.000000) return 0.850;
376     }
377     else if (fabs(eta) < 2.400000) {
378     if (pt < 22.500000) return 0.004;
379     else if (pt < 25.000000) return 0.312;
380     else if (pt < 27.500000) return 0.590;
381     else if (pt < 30.000000) return 0.608;
382     else if (pt < 35.000000) return 0.620;
383     else if (pt < 40.000000) return 0.653;
384     else if (pt < 50.000000) return 0.699;
385     else if (pt < 7000.000000) return 0.710;
386     }
387     break;
388     case TrailDbl:
389     if (fabs(eta) < 0.000) return 0.;
390     if (fabs(eta) > 2.400) return 0.;
391    
392     if (pt < 20.000) return 0.;
393     if (pt > 7000.000) return 0.;
394    
395     if (fabs(eta) < 0.800000) {
396     if (pt < 22.500000) return 0.985;
397     else if (pt < 25.000000) return 0.977;
398     else if (pt < 27.500000) return 0.984;
399     else if (pt < 30.000000) return 0.978;
400     else if (pt < 35.000000) return 0.977;
401     else if (pt < 40.000000) return 0.978;
402     else if (pt < 50.000000) return 0.978;
403     else if (pt < 7000.000000) return 0.978;
404     }
405     else if (fabs(eta) < 1.200000) {
406     if (pt < 22.500000) return 0.934;
407     else if (pt < 25.000000) return 0.946;
408     else if (pt < 27.500000) return 0.945;
409     else if (pt < 30.000000) return 0.934;
410     else if (pt < 35.000000) return 0.949;
411     else if (pt < 40.000000) return 0.948;
412     else if (pt < 50.000000) return 0.947;
413     else if (pt < 7000.000000) return 0.943;
414     }
415     else if (fabs(eta) < 2.400000) {
416     if (pt < 22.500000) return 0.933;
417     else if (pt < 25.000000) return 0.948;
418     else if (pt < 27.500000) return 0.934;
419     else if (pt < 30.000000) return 0.936;
420     else if (pt < 35.000000) return 0.940;
421     else if (pt < 40.000000) return 0.935;
422     else if (pt < 50.000000) return 0.936;
423     else if (pt < 7000.000000) return 0.931;
424     }
425     break;
426     };
427     }
428     else
429     {
430     return 0.0;
431     }
432     return 0.0;
433     }