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)
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)
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)
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)
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)
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)
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)