This commit is contained in:
2018-08-15 17:04:21 +02:00
parent 1de8ced3d5
commit 3e41debde1
55 changed files with 1015 additions and 277 deletions

View File

@@ -15,7 +15,7 @@
# Library loading and Hardware setup
###################################################################################################
#1- Create a MontorGroup with the diffractometer motors
#1- Create a MotorGroup with the diffractometer motors
# e.g. 'sixc', containing mu, delta, gam, eta, chi, phi motors (gam = nu)
# or 'fivec', containing delta, gam, eta, chi, phi motors
# or 'fourc', containing delta, eta, chi, phi motors
@@ -35,7 +35,7 @@ if not diffcalc_path in sys.path:
import diffcalc
from diffcalc import settings
from diffcalc.hkl.you.geometry import SixCircle, FiveCircle, FourCircle
from diffcalc.hkl.you.geometry import YouGeometry,SixCircle, FiveCircle, FourCircle, YouPosition
from diffcalc.hardware import HardwareAdapter
from diffcalc.ub.persistence import UbCalculationNonPersister
from diffcalc.gdasupport.minigda.scannable import ScannableBase, ScannableGroup
@@ -80,31 +80,13 @@ class PositionerScannable(ScannableBase):
class PositionerScannableGroup(ScannableGroup):
def __init__(self, name, motors):
self.name = name
if len(motors)==6:
[mu, delta, gam, eta, chi, phi] = motors
self.mu = PositionerScannable(mu, "mu")
self.delta = PositionerScannable(delta, "delta")
self.gam = PositionerScannable(gam, "gam")
self.eta = PositionerScannable(eta, "eta")
self.chi = PositionerScannable(chi, "chi")
self.phi = PositionerScannable(phi, "phi")
ScannableGroup.__init__(self, self.name, [self.mu, self.delta, self.gam, self.eta, self.chi, self.phi])
elif len(motors)==5:
[delta, gam, eta, chi, phi] = motors
self.delta = PositionerScannable(delta, "delta")
self.gam = PositionerScannable(gam, "gam")
self.eta = PositionerScannable(eta, "eta")
self.chi = PositionerScannable(chi, "chi")
self.phi = PositionerScannable(phi, "phi")
ScannableGroup.__init__(self, self.name, [self.delta, self.gam, self.eta, self.chi, self.phi])
elif len(motors)==4:
[delta, eta, chi, phi] = motors
self.delta = PositionerScannable(delta, "delta")
self.eta = PositionerScannable(eta, "eta")
self.chi = PositionerScannable(chi, "chi")
self.phi = PositionerScannable(phi, "phi")
ScannableGroup.__init__(self, self.name, [self.delta, self.eta, self.chi, self.phi])
print self.getInputNames()
positioners = []
for m in motors:
exec('self.' + m.name + ' = PositionerScannable(' + m.name + ', "' + m.name + '")')
exec('positioners.append(self.' + m.name + ')' )
ScannableGroup.__init__(self, self.name, positioners)
class MotorGroupScannable(PositionerScannableGroup):
def __init__(self, motor_group):
self.motor_group = motor_group
@@ -223,18 +205,21 @@ class HklGroup(RegisterBase, Register.RegisterArray):
you = None
dc, ub, hardware, hkl = None, None, None, None
_motor_group = None
def setup_diff(diffractometer, energy):
def setup_diff(diffractometer, energy, geometry=None):
"""
diffractometer: Motor group containing:
- mu, delta, gam, eta, chi, phi (six circle) or
- delta, gam, eta, chi, phi (ficve circle) or
- delta, eta, chi, phi (four circle)
energy: Positioner having energy in kev
geometry: YouGeometry extension. If none, uses default
"""
global you, dc, ub, hardware, hkl, _motor_group
_motor_group = diffractometer
you =None
if len(diffractometer.motors) == 6:
you = None
if geometry is not None:
settings.geometry = geometry
elif len(diffractometer.motors) == 6:
settings.geometry = SixCircle()
elif len(diffractometer.motors) == 5:
settings.geometry = FiveCircle()
@@ -348,14 +333,14 @@ def hklscan(vector, readables,latency = 0.0, passes = 1, **pars):
return scan.result
def test_difcalc():
def test_diffcalc():
en.move(20.0)
delta.config.maxSpeed = 50.0
delta.speed = 50.0
delta.move(1.0)
#Setup
setup_sixc(sixc, en)
setup_diff(sixc, en)
setup_axis('gam', 0, 179)
setup_axis('delta', 0, 179)
setup_axis('delta', min=0)