Esempio n. 1
0
def test_resolution_norm():
    """Tests resolution gaussian
    """
    p = np.array([0., 0., 1., 0., 0., 1.43, 23867.71, 22311.93, 20739.82])
    a, b = np.linspace(-1, 1, 501), np.linspace(-1, 1, 501)
    q = np.meshgrid(a, b, sparse=True)
    y = functions.resolution(p, q)
    integ = simps(simps(y, b), a)
    assert (abs(integ - 1.) < 1e-5)
from neutronpy import Instrument, Sample
from neutronpy.functions import resolution

EXP = Instrument()
EXP.arms = [1560, 600, 260, 300]
EXP.method = 1

hkle = [1., 1., 0., 5.]
EXP.sample.u = [1,0,0]
EXP.sample.v = [0,1,0]
EXP.calc_projections(hkle)

x, y = np.meshgrid(np.linspace(-0.05, 0.05, 101), np.linspace(-0.05, 0.05, 101), sparse=True)

R0, RMxx, RMyy, RMxy = EXP.get_resolution_params(hkle, 'QxQy', mode='project')
p = np.array([0., 0., 1., 0, 0, R0, RMxx, RMyy, RMxy])
z = resolution(p, (x, y))

fig = plt.figure(facecolor='w', edgecolor='k')

plt.pcolormesh(x, y, z, cmap=cm.jet)

[x1, y1] = EXP.projections['QxQy'][0]
plt.fill(x1, y1, 'r', alpha=0.25)
[x1, y1] = EXP.projections['QxQySlice'][0]
plt.plot(x1, y1, 'w--')

plt.xlim(-0.05, 0.05)
plt.ylim(-0.05, 0.05)

plt.show()
EXP = Instrument()
EXP.arms = [1560, 600, 260, 300]
EXP.method = 1

hkle = [1., 1., 0., 5.]
EXP.sample.u = [1, 0, 0]
EXP.sample.v = [0, 1, 0]
EXP.calc_projections(hkle)

x, y = np.meshgrid(np.linspace(-0.05, 0.05, 101),
                   np.linspace(-0.05, 0.05, 101),
                   sparse=True)

R0, RMxx, RMyy, RMxy = EXP.get_resolution_params(hkle, 'QxQy', mode='project')
p = np.array([0., 0., 1., 0, 0, R0, RMxx, RMyy, RMxy])
z = resolution(p, (x, y))

fig = plt.figure(facecolor='w', edgecolor='k')

plt.pcolormesh(x, y, z, cmap=cm.jet)

[x1, y1] = EXP.projections['QxQy'][:, :, 0]
plt.fill(x1, y1, 'r', alpha=0.25)
[x1, y1] = EXP.projections['QxQySlice'][:, :, 0]
plt.plot(x1, y1, 'w--')

plt.xlim(-0.05, 0.05)
plt.ylim(-0.05, 0.05)

plt.show()