예제 #1
0
def test_measure_ee(event, beta, theta_eps, kappa, normed):
    if kappa == 'pf' and normed:
        pytest.skip()

    Es = event[:, 0]

    emeas = ef.Measure('ee', beta, kappa, normed, 'epxpypz', True)
    ezs, ethetas = emeas.evaluate(event)

    # compute naively
    if kappa == 'pf':
        zs = np.ones(len(Es))
        phats = event
    else:
        if normed:
            zs = Es**kappa / np.sum(Es**kappa)
        else:
            zs = Es**kappa
        phats = event / Es[:, np.newaxis]

    thetas = np.asarray([[
        2 * abs(phti[0] * phtj[0] - np.dot(phti[1:], phtj[1:]))
        for phti in phats
    ] for phtj in phats])**(beta / 2)

    assert epsilon_diff(ezs, zs, 10**-13)
    assert epsilon_diff(ethetas, thetas, 10**-theta_eps)
예제 #2
0
def test_measure_hadrdot_ptyphi(event, beta, theta_eps, kappa, normed):
    if normed and kappa == 'pf':
        pytest.skip()

    pTs = event[:, 0]
    ps = np.asarray([
        pT * np.asarray(
            [np.cosh(y), np.cos(phi),
             np.sin(phi), np.sinh(y)]) for (pT, y, phi) in event
    ])

    # compute using the energyflow package
    hmeas = ef.Measure('hadrdot', beta, kappa, normed, 'ptyphim', True)
    hzs, hthetas = hmeas.evaluate(event)

    # compute naively
    norm = 1 if not normed else np.sum(pTs**kappa)
    zs = (pTs**kappa) / norm if kappa != 'pf' else np.ones(len(pTs))

    phats = np.asarray(
        [p / (pT if kappa != 'pf' else 1) for p, pT in zip(ps, pTs)])
    thetas = np.asarray([[
        2 * abs(phti[0] * phtj[0] - np.dot(phti[1:], phtj[1:]))
        for phti in phats
    ] for phtj in phats])**(beta / 2)

    assert epsilon_diff(hzs, zs, 10**-13)
    assert epsilon_diff(hthetas, thetas, 10**-theta_eps)
예제 #3
0
def test_measure_hadrdot_p4s(event, beta, theta_eps, kappa, normed,
                             kappa_normed_behavior):
    if normed and kappa == 'pf':
        pytest.skip()

    pTs = np.sqrt(event[:, 1]**2 + event[:, 2]**2)
    ps = event

    # compute using the energyflow package
    hmeas = ef.Measure('hadrdot', beta, kappa, normed, 'epxpypz', True,
                       kappa_normed_behavior)
    hzs, hthetas = hmeas.evaluate(event)

    # compute naively
    norm = 1 if not normed else (np.sum(pTs**kappa) if kappa_normed_behavior
                                 == 'orig' else np.sum(pTs)**kappa)
    zs = (pTs**kappa) / norm if kappa != 'pf' else np.ones(len(pTs))
    phats = np.asarray(
        [p / (pT if kappa != 'pf' else 1) for p, pT in zip(ps, pTs)])
    thetas = np.asarray([[
        2 * abs(phti[0] * phtj[0] - np.dot(phti[1:], phtj[1:]))
        for phti in phats
    ] for phtj in phats])**(beta / 2)

    assert epsilon_diff(hzs, zs, 10**-13)
    assert epsilon_diff(hthetas, thetas, 10**-theta_eps)
예제 #4
0
def test_measure_list_input(measure, event, check_input):
    meas = ef.Measure(measure, check_input=check_input)
    list_event = event.tolist()
    nd0, nd1 = meas.evaluate(event)
    try:
        list0, list1 = meas.evaluate(list_event)
    except:
        assert not check_input
    else:
        assert check_input
        assert epsilon_diff(nd0, list0, 10**-14)
        assert epsilon_diff(nd1, list1, 10**-14)
예제 #5
0
def test_measure_hadr_ptyphi(pts, ys, phis, beta, kappa, normed):
    M = len(pts)
    
    # compute using the energyflow package
    hmeas = ef.Measure('hadr', beta, kappa, normed, 'ptyphim', True)
    hzs, hthetas = hmeas.evaluate(np.vstack((pts,ys,phis)).T)
    
    # compute naively
    norm = 1 if not normed else np.sum(pts**kappa)
    zs = (pts**kappa)/norm
    thetas = np.asarray([[(ys[i]-ys[j])**2 + min(abs(phis[i]-phis[j]), 2*np.pi-abs(phis[i]-phis[j]))**2
                          for i in range(M)] for j in range(M)])**(beta/2)
    
    assert epsilon_diff(hzs, zs, 10**-13)
    assert epsilon_diff(hthetas, thetas, 10**-13)
예제 #6
0
def test_measure_ee(event, beta, theta_eps, kappa, normed, kappa_normed_behavior):
    if kappa == 'pf' and normed:
        pytest.skip()

    Es = event[:,0]

    emeas = ef.Measure('ee', beta, kappa, normed, 'epxpypz', True, kappa_normed_behavior)
    ezs, ethetas = emeas.evaluate(event)

    # compute naively
    norm = 1 if not normed else (np.sum(Es**kappa) if kappa_normed_behavior == 'orig' else np.sum(Es)**kappa)
    zs = (Es**kappa)/norm if kappa != 'pf' else np.ones(len(Es))
    phats = np.asarray([p/(E if kappa != 'pf' else 1) for p,E in zip(event,Es)])
    thetas = np.asarray([[2*abs(phti[0]*phtj[0]-np.dot(phti[1:],phtj[1:])) for phti in phats] for phtj in phats])**(beta/2)

    assert epsilon_diff(ezs, zs, 10**-13)
    assert epsilon_diff(ethetas, thetas, 10**-theta_eps)
예제 #7
0
def test_measure_hadr_p4s(event, beta, kappa, normed):
    M = len(event)
    pTs = np.sqrt(event[:,1]**2 + event[:,2]**2)
    ys = 0.5*np.log((event[:,0] + event[:,3])/(event[:,0] - event[:,3]))
    phis = np.arctan2(event[:,2], event[:,1])
    
    # compute using the energyflow package
    hmeas = ef.Measure('hadr', beta, kappa, normed, 'epxpypz', True)
    hzs, hthetas = hmeas.evaluate(event)
    
    # compute naively
    norm = 1 if not normed else np.sum(pTs**kappa)
    zs = (pTs**kappa)/norm
    thetas = np.asarray([[(ys[i]-ys[j])**2 + min(abs(phis[i]-phis[j]), 2*np.pi-abs(phis[i]-phis[j]))**2
                          for i in range(M)] for j in range(M)])**(beta/2)
    
    assert epsilon_diff(hzs, zs, 10**-12)
    assert epsilon_diff(hthetas, thetas, 10**-12)