added angle conversion theta/q
This commit is contained in:
parent
eab1bcdb26
commit
a95b0aa10e
|
@ -216,3 +216,27 @@ def reshapeToBroadcast(what,ref):
|
||||||
shape = [ref.shape[0],] + [1,]*(ref.ndim-1)
|
shape = [ref.shape[0],] + [1,]*(ref.ndim-1)
|
||||||
return what.reshape(shape)
|
return what.reshape(shape)
|
||||||
|
|
||||||
|
def radToQ(theta,**kw):
|
||||||
|
""" theta is the scattering angle (theta_out - theta_in);
|
||||||
|
kw should be have either E or wavelength
|
||||||
|
it returns the scattering vector in the units of wavelength """
|
||||||
|
# Energy or wavelength should be in kw
|
||||||
|
assert "E" in kw or "wavelength" in kw
|
||||||
|
# but not both
|
||||||
|
assert not ("E" in kw and "wavelength" in kw)
|
||||||
|
if "E" in kw: kw["wavelength"] = 12.398/kw["E"]
|
||||||
|
return 4*np.pi/kw["wavelength"]*np.sin(theta)
|
||||||
|
|
||||||
|
def degToQ(theta,**kw):
|
||||||
|
theta = theta/180.*np.pi
|
||||||
|
return radToQ(theta,**kw)
|
||||||
|
degToQ.__doc__ = radToQ.__doc__
|
||||||
|
|
||||||
|
def qToTheta(q,**kw):
|
||||||
|
""" Return scattering angle from q (given E or wavelength) """
|
||||||
|
# Energy or wavelength should be in kw
|
||||||
|
assert "E" in kw or "wavelength" in kw
|
||||||
|
# but not both
|
||||||
|
assert not ("E" in kw and "wavelength" in kw)
|
||||||
|
if "E" in kw: kw["wavelength"] = 12.398/kw["E"]
|
||||||
|
return np.arcsin(q*kw["wavelength"]/4/np.pi)
|
||||||
|
|
Loading…
Reference in New Issue