ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/FGolf/Tools/ScaleFactors.cc
Revision: 1.4
Committed: Tue May 29 18:42:48 2012 UTC (12 years, 11 months ago) by kelley
Content type: text/plain
Branch: MAIN
Changes since 1.3: +401 -394 lines
Log Message:
updated trigger efficency and T&P numbers

File Contents

# Content
1 #include "ScaleFactors.h"
2 #include "CMS2.h"
3 #include "DileptonHypType.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 < 0.1479) {
20 if (pt < 40.0 && pt > 20.0)
21 return 0.9947;
22 else if (pt > 40.0)
23 return 0.9967;
24 else
25 return 0.0;
26 }
27 else if (feta < 2.4) {
28 if (pt < 40.0 && pt > 20.0)
29 return 0.9638;
30 else if (pt > 40.0)
31 return 0.9768;
32 else
33 return 0.0;
34 }
35 else return 0.0;
36 }
37 else if (aid == 13) {
38 if (feta < 0.1479) {
39 if (pt < 40.0 && pt > 20.0)
40 return 0.9863;
41 else if (pt > 40.)
42 return 0.9859;
43 else
44 return 0.;
45 }
46 else if (feta < 2.4) {
47 if (pt < 40. && pt > 20.)
48 return 0.9941;
49 else if (pt > 40.0)
50 return 0.9921;
51 else
52 return 0.0;
53 }
54 else return 0.0;
55 }
56
57 return 0.0;
58 }
59
60 float dilepTriggerScaleFactor(int hyp_idx)
61 {
62 double eff_1l = 0.0;
63 double eff_1t = 0.0;
64 double eff_2l = 0.0;
65 double eff_2t = 0.0;
66 double eff_z = 0.0;
67
68 DileptonHypType hyp_type = hyp_typeToHypType(cms2.hyp_type().at(hyp_idx));
69
70 if (hyp_type == DILEPTON_EE || hyp_type == DILEPTON_MUMU) {
71 eff_1l = triggerScaleFactor(LeadDbl, cms2.hyp_lt_id().at(hyp_idx), cms2.hyp_lt_p4().at(hyp_idx));
72 eff_1t = triggerScaleFactor(TrailDbl, cms2.hyp_lt_id().at(hyp_idx), cms2.hyp_lt_p4().at(hyp_idx));
73 eff_2l = triggerScaleFactor(LeadDbl, cms2.hyp_ll_id().at(hyp_idx), cms2.hyp_ll_p4().at(hyp_idx));
74 eff_2t = triggerScaleFactor(TrailDbl, cms2.hyp_ll_id().at(hyp_idx), cms2.hyp_ll_p4().at(hyp_idx));
75 if (cms2.hyp_lt_p4().at(hyp_idx).pt() > cms2.hyp_ll_p4().at(hyp_idx).pt())
76 eff_z = triggerScaleFactor(DzDbl, cms2.hyp_ll_id().at(hyp_idx), cms2.hyp_ll_p4().at(hyp_idx));
77 else
78 eff_z = triggerScaleFactor(DzDbl, cms2.hyp_lt_id().at(hyp_idx), cms2.hyp_lt_p4().at(hyp_idx));
79
80 return (eff_1l * eff_2t + eff_1t * eff_2l - eff_1l * eff_2l) * eff_z;
81 }
82 else if (hyp_type == DILEPTON_EMU) {
83 eff_1l = triggerScaleFactor(LeadDbl, cms2.hyp_lt_id().at(hyp_idx), cms2.hyp_lt_p4().at(hyp_idx));
84 eff_1t = triggerScaleFactor(TrailDbl, cms2.hyp_lt_id().at(hyp_idx), cms2.hyp_lt_p4().at(hyp_idx));
85 eff_2l = triggerScaleFactor(LeadDbl, cms2.hyp_ll_id().at(hyp_idx), cms2.hyp_ll_p4().at(hyp_idx));
86 eff_2t = triggerScaleFactor(TrailDbl, cms2.hyp_ll_id().at(hyp_idx), cms2.hyp_ll_p4().at(hyp_idx));
87 if (abs(cms2.hyp_ll_id().at(hyp_idx)) == 13)
88 eff_z = triggerScaleFactor(DzDbl, cms2.hyp_ll_id().at(hyp_idx), cms2.hyp_ll_p4().at(hyp_idx));
89 else
90 eff_z = triggerScaleFactor(DzDbl, cms2.hyp_lt_id().at(hyp_idx), cms2.hyp_lt_p4().at(hyp_idx));
91
92 return (eff_1l * eff_2t + eff_1t * eff_2l - eff_1l * eff_2l) * sqrt(eff_z);
93 }
94 return 0.0;
95 }
96
97 float triggerScaleFactor(enum TrigEffType trig_eff_type, int id, const LorentzVector &p4)
98 {
99 unsigned int aid = abs(id);
100 float eta = fabs(p4.eta());
101 float pt = p4.pt();
102
103 if (aid == 11)
104 {
105 switch (trig_eff_type)
106 {
107 case DzDbl:
108 if (fabs(eta) < 0.000) return 0.;
109 if (fabs(eta) > 2.500) return 0.;
110
111 if (pt < 20.000) return 0.;
112 if (pt > 7000.000) return 0.;
113
114 if (fabs(eta) < 0.800000) {
115 if (pt < 22.500000) return 1.000;
116 else if (pt < 25.000000) return 1.000;
117 else if (pt < 27.500000) return 0.999;
118 else if (pt < 30.000000) return 1.000;
119 else if (pt < 35.000000) return 1.000;
120 else if (pt < 40.000000) return 1.000;
121 else if (pt < 50.000000) return 1.000;
122 else if (pt < 7000.000000) return 1.000;
123 }
124 else if (fabs(eta) < 1.479000) {
125 if (pt < 22.500000) return 1.000;
126 else if (pt < 25.000000) return 1.000;
127 else if (pt < 27.500000) return 1.000;
128 else if (pt < 30.000000) return 0.999;
129 else if (pt < 35.000000) return 0.999;
130 else if (pt < 40.000000) return 0.999;
131 else if (pt < 50.000000) return 0.999;
132 else if (pt < 7000.000000) return 1.000;
133 }
134 else if (fabs(eta) < 2.000000) {
135 if (pt < 22.500000) return 1.000;
136 else if (pt < 25.000000) return 1.000;
137 else if (pt < 27.500000) return 0.994;
138 else if (pt < 30.000000) return 0.998;
139 else if (pt < 35.000000) return 0.999;
140 else if (pt < 40.000000) return 0.999;
141 else if (pt < 50.000000) return 0.998;
142 else if (pt < 7000.000000) return 0.997;
143 }
144 else if (fabs(eta) < 2.500000) {
145 if (pt < 22.500000) return 1.000;
146 else if (pt < 25.000000) return 1.000;
147 else if (pt < 27.500000) return 0.991;
148 else if (pt < 30.000000) return 0.987;
149 else if (pt < 35.000000) return 0.993;
150 else if (pt < 40.000000) return 0.987;
151 else if (pt < 50.000000) return 0.987;
152 else if (pt < 7000.000000) return 0.985;
153 }
154 break;
155 case LeadDbl:
156 if (fabs(eta) < 0.000) return 0.;
157 if (fabs(eta) > 2.500) return 0.;
158
159 if (pt < 20.000) return 0.;
160 if (pt > 7000.000) return 0.;
161
162 if (fabs(eta) < 0.800000) {
163 if (pt < 22.500000) return 0.929;
164 else if (pt < 25.000000) return 0.964;
165 else if (pt < 27.500000) return 0.961;
166 else if (pt < 30.000000) return 0.968;
167 else if (pt < 35.000000) return 0.972;
168 else if (pt < 40.000000) return 0.974;
169 else if (pt < 50.000000) return 0.975;
170 else if (pt < 7000.000000) return 0.977;
171 }
172 else if (fabs(eta) < 1.479000) {
173 if (pt < 22.500000) return 0.955;
174 else if (pt < 25.000000) return 0.972;
175 else if (pt < 27.500000) return 0.985;
176 else if (pt < 30.000000) return 0.985;
177 else if (pt < 35.000000) return 0.986;
178 else if (pt < 40.000000) return 0.992;
179 else if (pt < 50.000000) return 0.995;
180 else if (pt < 7000.000000) return 0.996;
181 }
182 else if (fabs(eta) < 2.000000) {
183 if (pt < 22.500000) return 0.980;
184 else if (pt < 25.000000) return 0.991;
185 else if (pt < 27.500000) return 0.986;
186 else if (pt < 30.000000) return 0.983;
187 else if (pt < 35.000000) return 0.990;
188 else if (pt < 40.000000) return 0.993;
189 else if (pt < 50.000000) return 0.995;
190 else if (pt < 7000.000000) return 0.994;
191 }
192 else if (fabs(eta) < 2.500000) {
193 if (pt < 22.500000) return 0.888;
194 else if (pt < 25.000000) return 0.988;
195 else if (pt < 27.500000) return 0.996;
196 else if (pt < 30.000000) return 0.992;
197 else if (pt < 35.000000) return 0.986;
198 else if (pt < 40.000000) return 0.989;
199 else if (pt < 50.000000) return 0.992;
200 else if (pt < 7000.000000) return 0.994;
201 }
202 break;
203 case Sgl:
204 if (fabs(eta) < 0.000) return 0.;
205 if (fabs(eta) > 2.500) return 0.;
206
207 if (pt < 20.000) return 0.;
208 if (pt > 7000.000) return 0.;
209
210 if (fabs(eta) < 0.800000) {
211 if (pt < 22.500000) return 0.000;
212 else if (pt < 25.000000) return 0.000;
213 else if (pt < 27.500000) return 0.059;
214 else if (pt < 30.000000) return 0.739;
215 else if (pt < 35.000000) return 0.906;
216 else if (pt < 40.000000) return 0.927;
217 else if (pt < 50.000000) return 0.944;
218 else if (pt < 7000.000000) return 0.952;
219 }
220 else if (fabs(eta) < 1.479000) {
221 if (pt < 22.500000) return 0.001;
222 else if (pt < 25.000000) return 0.028;
223 else if (pt < 27.500000) return 0.110;
224 else if (pt < 30.000000) return 0.660;
225 else if (pt < 35.000000) return 0.913;
226 else if (pt < 40.000000) return 0.940;
227 else if (pt < 50.000000) return 0.956;
228 else if (pt < 7000.000000) return 0.969;
229 }
230 else if (fabs(eta) < 2.000000) {
231 if (pt < 22.500000) return 0.000;
232 else if (pt < 25.000000) return 0.007;
233 else if (pt < 27.500000) return 0.113;
234 else if (pt < 30.000000) return 0.456;
235 else if (pt < 35.000000) return 0.691;
236 else if (pt < 40.000000) return 0.746;
237 else if (pt < 50.000000) return 0.767;
238 else if (pt < 7000.000000) return 0.769;
239 }
240 else if (fabs(eta) < 2.500000) {
241 if (pt < 22.500000) return 0.000;
242 else if (pt < 25.000000) return 0.003;
243 else if (pt < 27.500000) return 0.087;
244 else if (pt < 30.000000) return 0.313;
245 else if (pt < 35.000000) return 0.533;
246 else if (pt < 40.000000) return 0.646;
247 else if (pt < 50.000000) return 0.695;
248 else if (pt < 7000.000000) return 0.691;
249 }
250 break;
251 case TrailDbl:
252 if (fabs(eta) < 0.000) return 0.;
253 if (fabs(eta) > 2.500) return 0.;
254
255 if (pt < 20.000) return 0.;
256 if (pt > 7000.000) return 0.;
257
258 if (fabs(eta) < 0.800000) {
259 if (pt < 22.500000) return 0.948;
260 else if (pt < 25.000000) return 0.966;
261 else if (pt < 27.500000) return 0.963;
262 else if (pt < 30.000000) return 0.968;
263 else if (pt < 35.000000) return 0.969;
264 else if (pt < 40.000000) return 0.972;
265 else if (pt < 50.000000) return 0.972;
266 else if (pt < 7000.000000) return 0.976;
267 }
268 else if (fabs(eta) < 1.479000) {
269 if (pt < 22.500000) return 0.969;
270 else if (pt < 25.000000) return 0.972;
271 else if (pt < 27.500000) return 0.976;
272 else if (pt < 30.000000) return 0.982;
273 else if (pt < 35.000000) return 0.985;
274 else if (pt < 40.000000) return 0.986;
275 else if (pt < 50.000000) return 0.989;
276 else if (pt < 7000.000000) return 0.990;
277 }
278 else if (fabs(eta) < 2.000000) {
279 if (pt < 22.500000) return 0.973;
280 else if (pt < 25.000000) return 1.000;
281 else if (pt < 27.500000) return 0.983;
282 else if (pt < 30.000000) return 0.979;
283 else if (pt < 35.000000) return 0.988;
284 else if (pt < 40.000000) return 0.987;
285 else if (pt < 50.000000) return 0.990;
286 else if (pt < 7000.000000) return 0.991;
287 }
288 else if (fabs(eta) < 2.500000) {
289 if (pt < 22.500000) return 0.983;
290 else if (pt < 25.000000) return 0.981;
291 else if (pt < 27.500000) return 0.996;
292 else if (pt < 30.000000) return 0.989;
293 else if (pt < 35.000000) return 0.984;
294 else if (pt < 40.000000) return 0.986;
295 else if (pt < 50.000000) return 0.990;
296 else if (pt < 7000.000000) return 0.992;
297 }
298 break;
299 case N_TrigEffType:
300 default:
301 return 0;
302 };
303 }
304 else if (aid == 13)
305 {
306 switch (trig_eff_type)
307 {
308 case DzDbl:
309 if (fabs(eta) < 0.000) return 0.;
310 if (fabs(eta) > 2.400) return 0.;
311
312 if (pt < 20.000) return 0.;
313 if (pt > 7000.000) return 0.;
314
315 if (fabs(eta) < 0.800000) {
316 if (pt < 22.500000) return 0.925;
317 else if (pt < 25.000000) return 0.931;
318 else if (pt < 27.500000) return 0.923;
319 else if (pt < 30.000000) return 0.919;
320 else if (pt < 35.000000) return 0.926;
321 else if (pt < 40.000000) return 0.932;
322 else if (pt < 50.000000) return 0.936;
323 else if (pt < 7000.000000) return 0.941;
324 }
325 else if (fabs(eta) < 1.200000) {
326 if (pt < 22.500000) return 0.921;
327 else if (pt < 25.000000) return 0.926;
328 else if (pt < 27.500000) return 0.922;
329 else if (pt < 30.000000) return 0.931;
330 else if (pt < 35.000000) return 0.926;
331 else if (pt < 40.000000) return 0.911;
332 else if (pt < 50.000000) return 0.910;
333 else if (pt < 7000.000000) return 0.897;
334 }
335 else if (fabs(eta) < 2.400000) {
336 if (pt < 22.500000) return 0.879;
337 else if (pt < 25.000000) return 0.871;
338 else if (pt < 27.500000) return 0.874;
339 else if (pt < 30.000000) return 0.877;
340 else if (pt < 35.000000) return 0.880;
341 else if (pt < 40.000000) return 0.871;
342 else if (pt < 50.000000) return 0.854;
343 else if (pt < 7000.000000) return 0.846;
344 }
345 break;
346 case LeadDbl:
347 if (fabs(eta) < 0.000) return 0.;
348 if (fabs(eta) > 2.400) return 0.;
349
350 if (pt < 20.000) return 0.;
351 if (pt > 7000.000) return 0.;
352
353 if (fabs(eta) < 0.800000) {
354 if (pt < 22.500000) return 0.971;
355 else if (pt < 25.000000) return 0.972;
356 else if (pt < 27.500000) return 0.980;
357 else if (pt < 30.000000) return 0.970;
358 else if (pt < 35.000000) return 0.975;
359 else if (pt < 40.000000) return 0.977;
360 else if (pt < 50.000000) return 0.976;
361 else if (pt < 7000.000000) return 0.975;
362 }
363 else if (fabs(eta) < 1.200000) {
364 if (pt < 22.500000) return 0.905;
365 else if (pt < 25.000000) return 0.929;
366 else if (pt < 27.500000) return 0.950;
367 else if (pt < 30.000000) return 0.934;
368 else if (pt < 35.000000) return 0.935;
369 else if (pt < 40.000000) return 0.940;
370 else if (pt < 50.000000) return 0.942;
371 else if (pt < 7000.000000) return 0.935;
372 }
373 else if (fabs(eta) < 2.400000) {
374 if (pt < 22.500000) return 0.886;
375 else if (pt < 25.000000) return 0.927;
376 else if (pt < 27.500000) return 0.921;
377 else if (pt < 30.000000) return 0.916;
378 else if (pt < 35.000000) return 0.918;
379 else if (pt < 40.000000) return 0.921;
380 else if (pt < 50.000000) return 0.924;
381 else if (pt < 7000.000000) return 0.923;
382 }
383 break;
384 case Sgl:
385 if (fabs(eta) < 0.000) return 0.;
386 if (fabs(eta) > 2.400) return 0.;
387
388 if (pt < 20.000) return 0.;
389 if (pt > 7000.000) return 0.;
390
391 if (fabs(eta) < 0.800000) {
392 if (pt < 22.500000) return 0.001;
393 else if (pt < 25.000000) return 0.396;
394 else if (pt < 27.500000) return 0.886;
395 else if (pt < 30.000000) return 0.893;
396 else if (pt < 35.000000) return 0.914;
397 else if (pt < 40.000000) return 0.923;
398 else if (pt < 50.000000) return 0.935;
399 else if (pt < 7000.000000) return 0.945;
400 }
401 else if (fabs(eta) < 1.200000) {
402 if (pt < 22.500000) return 0.001;
403 else if (pt < 25.000000) return 0.369;
404 else if (pt < 27.500000) return 0.817;
405 else if (pt < 30.000000) return 0.823;
406 else if (pt < 35.000000) return 0.833;
407 else if (pt < 40.000000) return 0.854;
408 else if (pt < 50.000000) return 0.862;
409 else if (pt < 7000.000000) return 0.857;
410 }
411 else if (fabs(eta) < 2.400000) {
412 if (pt < 22.500000) return 0.006;
413 else if (pt < 25.000000) return 0.305;
414 else if (pt < 27.500000) return 0.597;
415 else if (pt < 30.000000) return 0.617;
416 else if (pt < 35.000000) return 0.624;
417 else if (pt < 40.000000) return 0.658;
418 else if (pt < 50.000000) return 0.703;
419 else if (pt < 7000.000000) return 0.711;
420 }
421 break;
422 case TrailDbl:
423 if (fabs(eta) < 0.000) return 0.;
424 if (fabs(eta) > 2.400) return 0.;
425
426 if (pt < 20.000) return 0.;
427 if (pt > 7000.000) return 0.;
428
429 if (fabs(eta) < 0.800000) {
430 if (pt < 22.500000) return 0.975;
431 else if (pt < 25.000000) return 0.973;
432 else if (pt < 27.500000) return 0.983;
433 else if (pt < 30.000000) return 0.971;
434 else if (pt < 35.000000) return 0.977;
435 else if (pt < 40.000000) return 0.978;
436 else if (pt < 50.000000) return 0.978;
437 else if (pt < 7000.000000) return 0.977;
438 }
439 else if (fabs(eta) < 1.200000) {
440 if (pt < 22.500000) return 0.925;
441 else if (pt < 25.000000) return 0.938;
442 else if (pt < 27.500000) return 0.962;
443 else if (pt < 30.000000) return 0.942;
444 else if (pt < 35.000000) return 0.945;
445 else if (pt < 40.000000) return 0.950;
446 else if (pt < 50.000000) return 0.950;
447 else if (pt < 7000.000000) return 0.943;
448 }
449 else if (fabs(eta) < 2.400000) {
450 if (pt < 22.500000) return 0.927;
451 else if (pt < 25.000000) return 0.951;
452 else if (pt < 27.500000) return 0.947;
453 else if (pt < 30.000000) return 0.942;
454 else if (pt < 35.000000) return 0.941;
455 else if (pt < 40.000000) return 0.938;
456 else if (pt < 50.000000) return 0.939;
457 else if (pt < 7000.000000) return 0.936;
458 }
459 break;
460 case N_TrigEffType:
461 default:
462 return 0;
463 };
464 }
465 else
466 {
467 return 0.0;
468 }
469 return 0.0;
470 }