ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/FGolf/Tools/ScaleFactors.cc
(Generate patch)

Comparing UserCode/FGolf/Tools/ScaleFactors.cc (file contents):
Revision 1.1 by fgolf, Mon May 28 15:18:22 2012 UTC vs.
Revision 1.5 by fgolf, Sat Jul 14 22:53:12 2012 UTC

# Line 1 | Line 1
1   #include "ScaleFactors.h"
2   #include "CORE/CMS2.h"
3 < #include "bTagEff_BTV.h"
3 > #include "DileptonHypType.h"
4  
5 < float dileptonTagAndProbeScaleFactor(int idx)
5 > float dileptonTagAndProbeScaleFactor(int hyp_idx)
6   {
7 <    float sf1 = tagAndProbeScaleFactor(cms2.hyp_lt_id().at(idx), cms2.hyp_lt_p4().at(idx).pt(), cms2.hyp_lt_p4().at(idx).eta());
8 <    float sf2 = tagAndProbeScaleFactor(cms2.hyp_ll_id().at(idx), cms2.hyp_ll_p4().at(idx).pt(), cms2.hyp_ll_p4().at(idx).eta());
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   }
# Line 16 | Line 16 | float tagAndProbeScaleFactor(int id, flo
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;
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.;
25 >                return 0.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;
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.;
33 >                return 0.0;
34          }
35 <        else return 0.;
35 >        else return 0.0;
36      }
37      else if (aid == 13) {
38 <        if (feta < .1479) {
39 <            if (pt < 40. && pt > 20.)
40 <                return 1.0116;
38 >        if (feta < 0.1479) {
39 >            if (pt < 40.0 && pt > 20.0)
40 >                return 0.9863;
41              else if (pt > 40.)
42 <                return 1.0163;
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.9965;
49 <            else if (pt > 40.)
50 <                return 1.0114;
48 >                return 0.9941;
49 >            else if (pt > 40.0)
50 >                return 0.9921;
51              else
52 <                return 0.;
52 >                return 0.0;
53          }
54 <        else return 0.;
54 >        else return 0.0;
55     }
56  
57 <    return 0.;
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 + }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines