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.3 by fgolf, Tue May 29 01:53:25 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 57 | Line 57 | float tagAndProbeScaleFactor(int id, flo
57      return 0.;
58   }
59  
60 + float dilepTriggerScaleFactor(int hyp_idx)
61 + {
62 +    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 + }
95 +
96 + float triggerScaleFactor(enum TrigEffType trig_eff_type, int id, LorentzVector &p4)
97 + {
98 +        unsigned int aid  = abs(id);
99 +        float eta = fabs(p4.eta());
100 +        float pt = p4.pt();
101 +
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 + }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines