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

# User Rev Content
1 fgolf 1.1 #include "ScaleFactors.h"
2 kelley 1.4 #include "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 kelley 1.4 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 fgolf 1.3
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 kelley 1.4 return 0.0;
95 kelley 1.2 }
96    
97 kelley 1.4 float triggerScaleFactor(enum TrigEffType trig_eff_type, int id, const LorentzVector &p4)
98 kelley 1.2 {
99 kelley 1.4 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 kelley 1.2 }