79 lines
2.6 KiB
Python
79 lines
2.6 KiB
Python
from startup._common_imports import * # @UnusedWildImport
|
|
from diffcalc.gdasupport.minigda.scannable import ScannableMotionWithScannableFieldsBase # @UnusedImport
|
|
|
|
from diffcalc.hkl.you.geometry import YouGeometry, YouPosition
|
|
from diffcalc.hkl.you.constraints import NUNAME
|
|
from diffcalc.hardware import setrange
|
|
from diffcalc.hkl.you.calc import SMALL
|
|
if not GDA:
|
|
import startup._demo
|
|
else:
|
|
# import __main__ # @UnresolvedImport
|
|
from __main__ import dd2th,ddth,dummychi,energy # @UnresolvedImport
|
|
LOCAL_MANUAL = "http://confluence.diamond.ac.uk/pages/viewpage.action?pageId=31853413"
|
|
# Diffcalc i06-1
|
|
# ======== ===
|
|
# delta dd2th
|
|
# eta ddth
|
|
# chi dummy
|
|
# phi 0
|
|
|
|
class ThreeCircleI06(YouGeometry):
|
|
"""For a diffractometer with theta two-theta geometry:
|
|
delta, eta
|
|
"""
|
|
def __init__(self, beamline_axes_transform=None):
|
|
YouGeometry.__init__(self, 'threec', {'mu': 0, NUNAME: 0, 'phi': 0}, beamline_axes_transform)
|
|
|
|
def physical_angles_to_internal_position(self, physical_angle_tuple):
|
|
# mu, delta, nu, eta, chi, phi
|
|
delta_phys, eta_phys, chi_phys = physical_angle_tuple
|
|
return YouPosition(0, delta_phys, 0, eta_phys, chi_phys, 0, 'DEG')
|
|
|
|
def internal_position_to_physical_angles(self, internal_position):
|
|
clone_position = internal_position.clone()
|
|
clone_position.changeToDegrees()
|
|
_, delta_phys, _, eta_phys, chi_phys, _ = clone_position.totuple()
|
|
return delta_phys, eta_phys, chi_phys
|
|
|
|
|
|
### Create dummy scannables ###
|
|
if GDA:
|
|
print "!!! Starting LIVE diffcalc with delta(dd2th), eta(ddth), chi(dummy) and denergy."
|
|
_threec = ScannableGroup('_threec', (dd2th, ddth, dummychi))
|
|
delta = _threec.dd2th
|
|
eta = _threec.ddth
|
|
en=energy
|
|
if float(en.getPosition()) == 0: # no energy value - dummy mode
|
|
en(800)
|
|
|
|
else:
|
|
delta = Dummy('delta')
|
|
eta = Dummy('eta')
|
|
chi = Dummy('chi')
|
|
_threec = ScannableGroup('_threec', (delta, eta, chi))
|
|
en = Dummy('en')
|
|
en(800)
|
|
|
|
en.level = 3
|
|
|
|
### Configure and import diffcalc objects ###
|
|
ESMTGKeV = 0.001
|
|
settings.hardware = ScannableHardwareAdapter(_threec, en, ESMTGKeV)
|
|
settings.geometry = ThreeCircleI06() # @UndefinedVariable
|
|
settings.energy_scannable = en
|
|
settings.axes_scannable_group= _threec
|
|
settings.energy_scannable_multiplier_to_get_KeV = ESMTGKeV
|
|
|
|
if not GDA:
|
|
setrange('chi', 90 - SMALL, 90 + SMALL)
|
|
|
|
from diffcalc.gdasupport.you import * # @UnusedWildImport
|
|
|
|
if GDA:
|
|
print "Running in GDA --- aliasing commands"
|
|
alias_commands(globals())
|
|
|
|
# Load the last ub calculation used
|
|
lastub()
|