Exemple #1
0
def sig_uncert_pdf(name_year):
    name, _ = name_year.rsplit('_',1)
    kind, tau, mass = name2details(name)
    tau = int(tau*1000) # back to um

    fcns = {
          300: lambda x: 1.780e-07*x**2 + -0.0002978*x + 0.1333  if x < 877 else 3.109e-05*x + -0.01826,
         1000: lambda x: 1.180e-07*x**2 + -0.0001803*x + 0.07347 if x < 873 else 2.069e-05*x + -0.01206,
        10000: lambda x: 1.203e-07*x**2 + -0.0002023*x + 0.08985 if x < 877 else 1.413e-05*x + -0.007393,
          }

    ab = None
    if tau <= 300:
        p = fcns[300](mass)
    elif tau >= 10000:
        p = fcns[10000](mass)
    elif 300 < tau <= 1000:
        ab = 300,1000
    elif 1000 < tau <= 10000:
        ab = 1000,10000
    if ab is not None:
        a,b = ab
        fa = fcns[a](mass)
        fb = fcns[b](mass)
        p = lerp(tau, a, b, fa, fb)

    return p
Exemple #2
0
def sig_uncert_alphas(name_year):
    name, year = name_year.rsplit('_',1)
    kind, tau, mass = name2details(name)
    tau = int(tau*1000) # back to um

    fcns = {
            ('mfv_neu', 300, '2017') : lambda x: 8.412357E-02 + -1.492608E-04*x if x < 500 else 1.366428E-02 + -8.342191E-06*x if x < 1000 else 5.163025E-03,
            ('mfv_stopdbardbar', 300, '2017') : lambda x: 4.162419E-02 + -6.643979E-05*x if x < 500 else 1.544804E-02 + -1.408750E-05*x if x < 1000 else 2.704658E-03,
            ('mfv_neu', 1000, '2017') : lambda x: 2.482616E-02 + -1.677113E-05*x if x < 500 else 2.930580E-02 + -2.573041E-05*x if x < 1000 else 3.386116E-03,
            ('mfv_stopdbardbar', 1000, '2017') : lambda x: 2.941164E-02 + -4.224396E-05*x if x < 500 else 1.485796E-02 + -1.313661E-05*x if x < 1000 else 1.379749E-03,
            ('mfv_neu', 10000, '2017') : lambda x: 7.566047E-02 + -1.147594E-04*x if x < 500 else 3.476814E-02 + -3.297473E-05*x if x < 1000 else 1.611145E-03,
            ('mfv_stopdbardbar', 10000, '2017') : lambda x: 3.286446E-02 + -4.490090E-05*x if x < 500 else 1.932494E-02 + -1.782184E-05*x if x < 1000 else 1.427578E-03,
            ('mfv_neu', 300, '2018') : lambda x: 3.826184E-02 + -3.562455E-05*x if x < 500 else 3.727006E-02 + -3.570847E-05*x if x < 1000 else 4.543582E-03,
            ('mfv_stopdbardbar', 300, '2018') : lambda x: 5.826609E-02 + -9.844897E-05*x if x < 500 else 1.450902E-02 + -1.250891E-05*x if x < 1000 else 2.639510E-03,
            ('mfv_neu', 1000, '2018') : lambda x: 1.381364E-01 + -2.434682E-04*x if x < 500 else 3.364486E-02 + -3.615300E-05*x if x < 1000 else 2.315426E-03,
            ('mfv_stopdbardbar', 1000, '2018') : lambda x: 4.604910E-02 + -6.757893E-05*x if x < 500 else 2.369948E-02 + -2.466162E-05*x if x < 1000 else 1.553165E-03,
            ('mfv_neu', 10000, '2018') : lambda x: 1.395761E-01 + -2.494418E-04*x if x < 500 else 2.779135E-02 + -2.693736E-05*x if x < 1000 else 1.683538E-03,
            ('mfv_stopdbardbar', 10000, '2018') : lambda x: 6.065365E-02 + -1.067197E-04*x if x < 500 else 1.328695E-02 + -1.332486E-05*x if x < 1000 else 1.429334E-03,
          }

    ab = None
    if tau <= 300:
        p = fcns[(kind, 300, year)](mass)
    elif tau >= 10000:
        p = fcns[(kind, 10000, year)](mass)
    elif 300 < tau <= 1000:
        ab = 300,1000
    elif 1000 < tau <= 10000:
        ab = 1000,10000
    if ab is not None:
        a,b = ab
        fa = fcns[(kind, a, year)](mass)
        fb = fcns[(kind, b, year)](mass)
        p = lerp(tau, a, b, fa, fb)

    return p
Exemple #3
0
def sig_trackmover_per_event_unc(name_year, debug=False, syst=''):
    name, year = name_year.rsplit('_',1)
    kind, tau, mass = name2details(name)
    tau = int(tau*1000) # back to um

    masses = [400,600,800,1200,1600,3000]
    taus = [100,300,1000,10000,30000]
    kind = kind + syst

    trackmover = { # after kind and year indices, rows are masses, cols are taus, each in same order as above two lists
        'mfv_stopdbardbar': { '2017': ( (0.2384, 0.1904, 0.1492, 0.1050, 0.1002),
                                        (0.2496, 0.2014, 0.1604, 0.1152, 0.1104),
                                        (0.2534, 0.2100, 0.1716, 0.1264, 0.1194),
                                        (0.2584, 0.2142, 0.1756, 0.1278, 0.1204),
                                        (0.2582, 0.2144, 0.1752, 0.1264, 0.1192),
                                        (0.2684, 0.2186, 0.1760, 0.1244, 0.1158), ),
                              '2018': ( (0.3068, 0.2600, 0.2344, 0.2010, 0.1968),
                                        (0.3084, 0.2616, 0.2396, 0.2044, 0.1886),
                                        (0.3084, 0.2654, 0.2438, 0.1900, 0.1910),
                                        (0.3120, 0.2690, 0.2274, 0.1940, 0.1926),
                                        (0.3140, 0.2594, 0.2320, 0.1974, 0.1940),
                                        (0.3104, 0.2634, 0.2364, 0.2004, 0.1950), ), },
        'mfv_neu':          { '2017': ( (0.276, 0.193, 0.11, 0.058, 0.059),
                                        (0.243, 0.166, 0.093, 0.043, 0.044),
                                        (0.22, 0.153, 0.088, 0.036, 0.037),
                                        (0.189, 0.138, 0.081, 0.029, 0.029),
                                        (0.163, 0.124, 0.075, 0.024, 0.024),
                                        (0.132, 0.101, 0.063, 0.019, 0.016), ),
                              '2018': ( (-0.054, -0.002, 0.015, 0.01, 0.008),
                                        (-0.012, 0.019, 0.018, 0.008, 0.01),
                                        (0.003, 0.022, 0.018, 0.009, 0.009),
                                        (0.017, 0.028, 0.022, 0.009, 0.01),
                                        (0.029, 0.034, 0.027, 0.01, 0.009),
                                        (0.042, 0.043, 0.032, 0.011, 0.009), ), }, 
        'mfv_neu_stat_unc': { '2017': ( (5.157, 2.619, 1.565, 1.108, 1.516),
                                        (2.543, 1.175, 0.667, 0.395, 0.48),
                                        (1.811, 0.766, 0.422, 0.218, 0.245),
                                        (1.522, 0.592, 0.323, 0.151, 0.16),
                                        (1.381, 0.536, 0.286, 0.128, 0.133),
                                        (1.471, 0.486, 0.253, 0.107, 0.098), ),
                              '2018': ( (8.097, 3.639, 2.159, 1.6, 2.058),
                                        (3.7, 1.563, 0.836, 0.511, 0.608),
                                        (2.675, 1.024, 0.522, 0.273, 0.31),
                                        (2.186, 0.784, 0.399, 0.189, 0.202),
                                        (2.036, 0.694, 0.358, 0.165, 0.166),
                                        (1.966, 0.622, 0.313, 0.133, 0.127), ), },
         'mfv_neu_toc_unc': { '2017': ( (4.769, 1.527, 1.973, 4.487, 4.841),
                                        (4.752, 1.456, 1.061, 2.644, 3.087),
                                        (2.92, 0.477, 0.324, 1.73, 2.078),
                                        (0.176, 1.229, 0.894, 0.64, 0.972),
                                        (1.346, 2.293, 1.784, 0.181, 0.423),
                                        (3.692, 3.568, 2.717, 0.492, 0.182), ),
                              '2018': ( (13.768, 8.186, 6.416, 8.13, 7.676),
                                        (13.729, 7.804, 4.942, 4.641, 5.165),
                                        (12.017, 6.554, 4.069, 3.446, 3.771),
                                        (8.099, 4.175, 2.24, 2.102, 2.355),
                                        (5.819, 2.845, 1.346, 1.337, 1.51),
                                        (1.54, 0.141, 0.598, 0.28, 0.511), ), },
'mfv_neu_closeseedtk_unc':  { '2017': ( (3.155, 1.88, 1.087, 0.666, 0.718),
                                        (2.656, 1.586, 0.875, 0.481, 0.502),
                                        (2.248, 1.424, 0.807, 0.389, 0.409),
                                        (1.767, 1.191, 0.687, 0.291, 0.307),
                                        (1.423, 1.003, 0.593, 0.229, 0.24),
                                        (0.97, 0.7, 0.43, 0.156, 0.145), ),
                              '2018': ( (4.168, 2.175, 1.178, 0.791, 0.799),
                                        (3.21, 1.829, 0.936, 0.484, 0.497),
                                        (2.838, 1.633, 0.858, 0.393, 0.394),
                                        (2.2, 1.386, 0.762, 0.304, 0.296),
                                        (1.835, 1.17, 0.667, 0.249, 0.23),
                                        (1.182, 0.838, 0.507, 0.174, 0.159), ), }, }

    vtm = trackmover[kind][year]

    # just do linear interpolation--could fit, but the final result in the limits won't depend strongly on this

    mass, ms, mia, mib, mxa, mxb = mmm = hlp(mass, masses)
    tau,  ts, tia, tib, txa, txb = ttt = hlp(tau,  taus)

    if mia == mib and tia == tib:
        vtm = vtm[mia][tia]
    elif mia == mib:
        vtm = lerp(tau,  txa, txb, vtm[mia][tia], vtm[mia][tib])
    elif tia == tib:
        vtm = lerp(mass, mxa, mxb, vtm[mia][tia], vtm[mib][tia])
    else:
        points = [(mxa, txa, vtm[mia][tia]), (mxa, txb, vtm[mia][tib]), (mxb, txa, vtm[mib][tia]), (mxb, txb, vtm[mib][tib])]
        vtm = bilerp(mass, tau, points)

    if debug:
        print name_year, 'mmm', mmm, 'ttt', ttt

    return vtm