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

# User Rev Content
1 fgolf 1.1 #include "ScaleFactors.h"
2 fgolf 1.5 #include "CORE/CMS2.h"
3 fgolf 1.3 #include "DileptonHypType.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 kelley 1.4 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 fgolf 1.1 else
25 kelley 1.4 return 0.0;
26 fgolf 1.1 }
27     else if (feta < 2.4) {
28 kelley 1.4 if (pt < 40.0 && pt > 20.0)
29     return 0.9638;
30     else if (pt > 40.0)
31     return 0.9768;
32 fgolf 1.1 else
33 kelley 1.4 return 0.0;
34 fgolf 1.1 }
35 kelley 1.4 else return 0.0;
36 fgolf 1.1 }
37     else if (aid == 13) {
38 kelley 1.4 if (feta < 0.1479) {
39     if (pt < 40.0 && pt > 20.0)
40     return 0.9863;
41 fgolf 1.1 else if (pt > 40.)
42 kelley 1.4 return 0.9859;
43 fgolf 1.1 else
44     return 0.;
45     }
46     else if (feta < 2.4) {
47     if (pt < 40. && pt > 20.)
48 kelley 1.4 return 0.9941;
49     else if (pt > 40.0)
50     return 0.9921;
51 fgolf 1.1 else
52 kelley 1.4 return 0.0;
53 fgolf 1.1 }
54 kelley 1.4 else return 0.0;
55 fgolf 1.1 }
56    
57 kelley 1.4 return 0.0;
58 fgolf 1.1 }
59    
60 fgolf 1.3 float dilepTriggerScaleFactor(int hyp_idx)
61 kelley 1.2 {
62 fgolf 1.5 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 kelley 1.4 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 fgolf 1.3
74 fgolf 1.5 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 fgolf 1.3
80     if (hyp_type == DILEPTON_EE || hyp_type == DILEPTON_MUMU) {
81 fgolf 1.5 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 fgolf 1.3 else
88 fgolf 1.5 eff_z = triggerScaleFactor(DzDbl, id1, vec1);
89 fgolf 1.3
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 fgolf 1.5 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 fgolf 1.3 else
100 fgolf 1.5 eff_z = triggerScaleFactor(DzDbl, id1, vec1);
101 fgolf 1.3
102     return (eff_1l * eff_2t + eff_1t * eff_2l - eff_1l * eff_2l) * sqrt(eff_z);
103     }
104 fgolf 1.5
105     return 0.0;
106 kelley 1.2 }
107    
108 kelley 1.4 float triggerScaleFactor(enum TrigEffType trig_eff_type, int id, const LorentzVector &p4)
109 kelley 1.2 {
110 kelley 1.4 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 kelley 1.2 }