ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/FGolf/Tools/ScaleFactors.cc
Revision: 1.3
Committed: Tue May 29 01:53:25 2012 UTC (12 years, 11 months ago) by fgolf
Content type: text/plain
Branch: MAIN
Changes since 1.2: +37 -7 lines
Log Message:
add trigger efficiency model

File Contents

# User Rev Content
1 fgolf 1.1 #include "ScaleFactors.h"
2     #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     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 fgolf 1.3 float dilepTriggerScaleFactor(int hyp_idx)
61 kelley 1.2 {
62 fgolf 1.3 double eff_1l = 0.;
63     double eff_1t = 0.;
64     double eff_2l = 0.;
65     double eff_2t = 0.;
66     double eff_z = 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 kelley 1.2 }
95    
96 fgolf 1.3 float triggerScaleFactor(enum TrigEffType trig_eff_type, int id, LorentzVector &p4)
97 kelley 1.2 {
98     unsigned int aid = abs(id);
99 fgolf 1.3 float eta = fabs(p4.eta());
100     float pt = p4.pt();
101 kelley 1.2
102     if (aid == 11)
103     {
104     switch (trig_eff_type)
105     {
106     case DzDbl:
107     if (fabs(eta) < 0.000) return 0.;
108     if (fabs(eta) > 2.500) return 0.;
109    
110     if (pt < 20.000) return 0.;
111     if (pt > 7000.000) return 0.;
112    
113     if (fabs(eta) < 0.800000) {
114     if (pt < 22.500000) return 1.000;
115     else if (pt < 25.000000) return 1.000;
116     else if (pt < 27.500000) return 0.999;
117     else if (pt < 30.000000) return 1.000;
118     else if (pt < 35.000000) return 1.000;
119     else if (pt < 40.000000) return 1.000;
120     else if (pt < 50.000000) return 1.000;
121     else if (pt < 7000.000000) return 1.000;
122     }
123     else if (fabs(eta) < 1.479000) {
124     if (pt < 22.500000) return 1.000;
125     else if (pt < 25.000000) return 1.000;
126     else if (pt < 27.500000) return 0.996;
127     else if (pt < 30.000000) return 1.000;
128     else if (pt < 35.000000) return 1.000;
129     else if (pt < 40.000000) return 1.000;
130     else if (pt < 50.000000) return 0.999;
131     else if (pt < 7000.000000) return 1.000;
132     }
133     else if (fabs(eta) < 2.000000) {
134     if (pt < 22.500000) return 1.000;
135     else if (pt < 25.000000) return 1.000;
136     else if (pt < 27.500000) return 1.000;
137     else if (pt < 30.000000) return 0.997;
138     else if (pt < 35.000000) return 0.999;
139     else if (pt < 40.000000) return 0.999;
140     else if (pt < 50.000000) return 0.998;
141     else if (pt < 7000.000000) return 0.997;
142     }
143     else if (fabs(eta) < 2.500000) {
144     if (pt < 22.500000) return 0.974;
145     else if (pt < 25.000000) return 0.990;
146     else if (pt < 27.500000) return 0.994;
147     else if (pt < 30.000000) return 1.000;
148     else if (pt < 35.000000) return 0.993;
149     else if (pt < 40.000000) return 0.987;
150     else if (pt < 50.000000) return 0.989;
151     else if (pt < 7000.000000) return 0.988;
152     }
153     break;
154     case LeadDbl:
155     if (fabs(eta) < 0.000) return 0.;
156     if (fabs(eta) > 2.500) return 0.;
157    
158     if (pt < 20.000) return 0.;
159     if (pt > 7000.000) return 0.;
160    
161     if (fabs(eta) < 0.800000) {
162     if (pt < 22.500000) return 0.943;
163     else if (pt < 25.000000) return 0.936;
164     else if (pt < 27.500000) return 0.960;
165     else if (pt < 30.000000) return 0.967;
166     else if (pt < 35.000000) return 0.974;
167     else if (pt < 40.000000) return 0.977;
168     else if (pt < 50.000000) return 0.977;
169     else if (pt < 7000.000000) return 0.971;
170     }
171     else if (fabs(eta) < 1.479000) {
172     if (pt < 22.500000) return 0.957;
173     else if (pt < 25.000000) return 0.969;
174     else if (pt < 27.500000) return 0.987;
175     else if (pt < 30.000000) return 0.987;
176     else if (pt < 35.000000) return 0.991;
177     else if (pt < 40.000000) return 0.993;
178     else if (pt < 50.000000) return 0.995;
179     else if (pt < 7000.000000) return 0.993;
180     }
181     else if (fabs(eta) < 2.000000) {
182     if (pt < 22.500000) return 0.982;
183     else if (pt < 25.000000) return 0.986;
184     else if (pt < 27.500000) return 0.984;
185     else if (pt < 30.000000) return 0.991;
186     else if (pt < 35.000000) return 0.994;
187     else if (pt < 40.000000) return 0.994;
188     else if (pt < 50.000000) return 0.996;
189     else if (pt < 7000.000000) return 0.995;
190     }
191     else if (fabs(eta) < 2.500000) {
192     if (pt < 22.500000) return 0.835;
193     else if (pt < 25.000000) return 0.981;
194     else if (pt < 27.500000) return 1.000;
195     else if (pt < 30.000000) return 0.987;
196     else if (pt < 35.000000) return 0.990;
197     else if (pt < 40.000000) return 0.986;
198     else if (pt < 50.000000) return 0.989;
199     else if (pt < 7000.000000) return 0.994;
200     }
201     break;
202     case Sgl:
203     if (fabs(eta) < 0.000) return 0.;
204     if (fabs(eta) > 2.500) return 0.;
205    
206     if (pt < 20.000) return 0.;
207     if (pt > 7000.000) return 0.;
208    
209     if (fabs(eta) < 0.800000) {
210     if (pt < 22.500000) return 0.000;
211     else if (pt < 25.000000) return 0.000;
212     else if (pt < 27.500000) return 0.059;
213     else if (pt < 30.000000) return 0.740;
214     else if (pt < 35.000000) return 0.904;
215     else if (pt < 40.000000) return 0.927;
216     else if (pt < 50.000000) return 0.945;
217     else if (pt < 7000.000000) return 0.950;
218     }
219     else if (fabs(eta) < 1.479000) {
220     if (pt < 22.500000) return 0.000;
221     else if (pt < 25.000000) return 0.035;
222     else if (pt < 27.500000) return 0.112;
223     else if (pt < 30.000000) return 0.647;
224     else if (pt < 35.000000) return 0.915;
225     else if (pt < 40.000000) return 0.939;
226     else if (pt < 50.000000) return 0.956;
227     else if (pt < 7000.000000) return 0.968;
228     }
229     else if (fabs(eta) < 2.000000) {
230     if (pt < 22.500000) return 0.000;
231     else if (pt < 25.000000) return 0.006;
232     else if (pt < 27.500000) return 0.108;
233     else if (pt < 30.000000) return 0.448;
234     else if (pt < 35.000000) return 0.687;
235     else if (pt < 40.000000) return 0.735;
236     else if (pt < 50.000000) return 0.767;
237     else if (pt < 7000.000000) return 0.766;
238     }
239     else if (fabs(eta) < 2.500000) {
240     if (pt < 22.500000) return 0.000;
241     else if (pt < 25.000000) return 0.009;
242     else if (pt < 27.500000) return 0.095;
243     else if (pt < 30.000000) return 0.305;
244     else if (pt < 35.000000) return 0.532;
245     else if (pt < 40.000000) return 0.640;
246     else if (pt < 50.000000) return 0.695;
247     else if (pt < 7000.000000) return 0.687;
248     }
249     break;
250     case TrailDbl:
251     if (fabs(eta) < 0.000) return 0.;
252     if (fabs(eta) > 2.500) return 0.;
253    
254     if (pt < 20.000) return 0.;
255     if (pt > 7000.000) return 0.;
256    
257     if (fabs(eta) < 0.800000) {
258     if (pt < 22.500000) return 0.943;
259     else if (pt < 25.000000) return 0.951;
260     else if (pt < 27.500000) return 0.963;
261     else if (pt < 30.000000) return 0.962;
262     else if (pt < 35.000000) return 0.970;
263     else if (pt < 40.000000) return 0.974;
264     else if (pt < 50.000000) return 0.974;
265     else if (pt < 7000.000000) return 0.970;
266     }
267     else if (fabs(eta) < 1.479000) {
268     if (pt < 22.500000) return 0.970;
269     else if (pt < 25.000000) return 0.974;
270     else if (pt < 27.500000) return 0.977;
271     else if (pt < 30.000000) return 0.984;
272     else if (pt < 35.000000) return 0.987;
273     else if (pt < 40.000000) return 0.987;
274     else if (pt < 50.000000) return 0.990;
275     else if (pt < 7000.000000) return 0.987;
276     }
277     else if (fabs(eta) < 2.000000) {
278     if (pt < 22.500000) return 0.982;
279     else if (pt < 25.000000) return 0.993;
280     else if (pt < 27.500000) return 0.979;
281     else if (pt < 30.000000) return 0.991;
282     else if (pt < 35.000000) return 0.988;
283     else if (pt < 40.000000) return 0.989;
284     else if (pt < 50.000000) return 0.993;
285     else if (pt < 7000.000000) return 0.992;
286     }
287     else if (fabs(eta) < 2.500000) {
288     if (pt < 22.500000) return 0.962;
289     else if (pt < 25.000000) return 0.981;
290     else if (pt < 27.500000) return 1.000;
291     else if (pt < 30.000000) return 0.987;
292     else if (pt < 35.000000) return 0.989;
293     else if (pt < 40.000000) return 0.985;
294     else if (pt < 50.000000) return 0.987;
295     else if (pt < 7000.000000) return 0.992;
296     }
297     break;
298     };
299     }
300     else if (aid == 13)
301     {
302     switch (trig_eff_type)
303     {
304     case DzDbl:
305     if (fabs(eta) < 0.000) return 0.;
306     if (fabs(eta) > 2.400) return 0.;
307    
308     if (pt < 20.000) return 0.;
309     if (pt > 7000.000) return 0.;
310    
311     if (fabs(eta) < 0.800000) {
312     if (pt < 22.500000) return 0.901;
313     else if (pt < 25.000000) return 0.883;
314     else if (pt < 27.500000) return 0.912;
315     else if (pt < 30.000000) return 0.905;
316     else if (pt < 35.000000) return 0.906;
317     else if (pt < 40.000000) return 0.909;
318     else if (pt < 50.000000) return 0.923;
319     else if (pt < 7000.000000) return 0.927;
320     }
321     else if (fabs(eta) < 1.200000) {
322     if (pt < 22.500000) return 0.904;
323     else if (pt < 25.000000) return 0.897;
324     else if (pt < 27.500000) return 0.926;
325     else if (pt < 30.000000) return 0.921;
326     else if (pt < 35.000000) return 0.903;
327     else if (pt < 40.000000) return 0.896;
328     else if (pt < 50.000000) return 0.890;
329     else if (pt < 7000.000000) return 0.876;
330     }
331     else if (fabs(eta) < 2.400000) {
332     if (pt < 22.500000) return 0.864;
333     else if (pt < 25.000000) return 0.847;
334     else if (pt < 27.500000) return 0.864;
335     else if (pt < 30.000000) return 0.862;
336     else if (pt < 35.000000) return 0.858;
337     else if (pt < 40.000000) return 0.840;
338     else if (pt < 50.000000) return 0.824;
339     else if (pt < 7000.000000) return 0.810;
340     }
341     break;
342     case LeadDbl:
343     if (fabs(eta) < 0.000) return 0.;
344     if (fabs(eta) > 2.400) return 0.;
345    
346     if (pt < 20.000) return 0.;
347     if (pt > 7000.000) return 0.;
348    
349     if (fabs(eta) < 0.800000) {
350     if (pt < 22.500000) return 0.983;
351     else if (pt < 25.000000) return 0.976;
352     else if (pt < 27.500000) return 0.982;
353     else if (pt < 30.000000) return 0.977;
354     else if (pt < 35.000000) return 0.976;
355     else if (pt < 40.000000) return 0.977;
356     else if (pt < 50.000000) return 0.976;
357     else if (pt < 7000.000000) return 0.977;
358     }
359     else if (fabs(eta) < 1.200000) {
360     if (pt < 22.500000) return 0.911;
361     else if (pt < 25.000000) return 0.935;
362     else if (pt < 27.500000) return 0.927;
363     else if (pt < 30.000000) return 0.925;
364     else if (pt < 35.000000) return 0.938;
365     else if (pt < 40.000000) return 0.939;
366     else if (pt < 50.000000) return 0.939;
367     else if (pt < 7000.000000) return 0.934;
368     }
369     else if (fabs(eta) < 2.400000) {
370     if (pt < 22.500000) return 0.900;
371     else if (pt < 25.000000) return 0.915;
372     else if (pt < 27.500000) return 0.903;
373     else if (pt < 30.000000) return 0.908;
374     else if (pt < 35.000000) return 0.917;
375     else if (pt < 40.000000) return 0.917;
376     else if (pt < 50.000000) return 0.921;
377     else if (pt < 7000.000000) return 0.916;
378     }
379     break;
380     case Sgl:
381     if (fabs(eta) < 0.000) return 0.;
382     if (fabs(eta) > 2.400) return 0.;
383    
384     if (pt < 20.000) return 0.;
385     if (pt > 7000.000) return 0.;
386    
387     if (fabs(eta) < 0.800000) {
388     if (pt < 22.500000) return 0.001;
389     else if (pt < 25.000000) return 0.390;
390     else if (pt < 27.500000) return 0.870;
391     else if (pt < 30.000000) return 0.883;
392     else if (pt < 35.000000) return 0.905;
393     else if (pt < 40.000000) return 0.916;
394     else if (pt < 50.000000) return 0.931;
395     else if (pt < 7000.000000) return 0.944;
396     }
397     else if (fabs(eta) < 1.200000) {
398     if (pt < 22.500000) return 0.005;
399     else if (pt < 25.000000) return 0.361;
400     else if (pt < 27.500000) return 0.803;
401     else if (pt < 30.000000) return 0.805;
402     else if (pt < 35.000000) return 0.829;
403     else if (pt < 40.000000) return 0.847;
404     else if (pt < 50.000000) return 0.856;
405     else if (pt < 7000.000000) return 0.850;
406     }
407     else if (fabs(eta) < 2.400000) {
408     if (pt < 22.500000) return 0.004;
409     else if (pt < 25.000000) return 0.312;
410     else if (pt < 27.500000) return 0.590;
411     else if (pt < 30.000000) return 0.608;
412     else if (pt < 35.000000) return 0.620;
413     else if (pt < 40.000000) return 0.653;
414     else if (pt < 50.000000) return 0.699;
415     else if (pt < 7000.000000) return 0.710;
416     }
417     break;
418     case TrailDbl:
419     if (fabs(eta) < 0.000) return 0.;
420     if (fabs(eta) > 2.400) return 0.;
421    
422     if (pt < 20.000) return 0.;
423     if (pt > 7000.000) return 0.;
424    
425     if (fabs(eta) < 0.800000) {
426     if (pt < 22.500000) return 0.985;
427     else if (pt < 25.000000) return 0.977;
428     else if (pt < 27.500000) return 0.984;
429     else if (pt < 30.000000) return 0.978;
430     else if (pt < 35.000000) return 0.977;
431     else if (pt < 40.000000) return 0.978;
432     else if (pt < 50.000000) return 0.978;
433     else if (pt < 7000.000000) return 0.978;
434     }
435     else if (fabs(eta) < 1.200000) {
436     if (pt < 22.500000) return 0.934;
437     else if (pt < 25.000000) return 0.946;
438     else if (pt < 27.500000) return 0.945;
439     else if (pt < 30.000000) return 0.934;
440     else if (pt < 35.000000) return 0.949;
441     else if (pt < 40.000000) return 0.948;
442     else if (pt < 50.000000) return 0.947;
443     else if (pt < 7000.000000) return 0.943;
444     }
445     else if (fabs(eta) < 2.400000) {
446     if (pt < 22.500000) return 0.933;
447     else if (pt < 25.000000) return 0.948;
448     else if (pt < 27.500000) return 0.934;
449     else if (pt < 30.000000) return 0.936;
450     else if (pt < 35.000000) return 0.940;
451     else if (pt < 40.000000) return 0.935;
452     else if (pt < 50.000000) return 0.936;
453     else if (pt < 7000.000000) return 0.931;
454     }
455     break;
456     };
457     }
458     else
459     {
460     return 0.0;
461     }
462     return 0.0;
463     }