ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/FGolf/Tools/ScaleFactors.cc
Revision: 1.5
Committed: Sat Jul 14 22:53:12 2012 UTC (12 years, 9 months ago) by fgolf
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.4: +28 -17 lines
Log Message:
update scale factors

File Contents

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