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

# Content
1 #include "ScaleFactors.h"
2 #include "CORE/CMS2.h"
3 //#include "bTagEff_BTV.h"
4
5 float dileptonTagAndProbeScaleFactor(int hyp_idx)
6 {
7 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
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 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 }