Startup
This commit is contained in:
90
script/__Lib/diffcalc/startup/i07EH2v.py
Executable file
90
script/__Lib/diffcalc/startup/i07EH2v.py
Executable file
@@ -0,0 +1,90 @@
|
||||
from startup._common_imports import * # @UnusedWildImport
|
||||
from diffcalc.hkl.you.constraints import NUNAME
|
||||
|
||||
if GDA:
|
||||
from __main__ import diff2delta, diff2alpha, diff2gamma, diff2omega, dcm1energy # @UnresolvedImport
|
||||
|
||||
from diffcalc.hkl.you.geometry import YouGeometry, YouPosition
|
||||
|
||||
|
||||
class FourCircleI07EH2v(YouGeometry):
|
||||
"""For a diffractometer with angles:
|
||||
delta, gam, mu, phi
|
||||
"""
|
||||
def __init__(self, beamline_axes_transform=None):
|
||||
YouGeometry.__init__(self, 'fourc', {'eta': 0, 'chi': 0}, beamline_axes_transform)
|
||||
|
||||
def physical_angles_to_internal_position(self, physical_angle_tuple):
|
||||
delta_phys, gam_phys, mu_phys, phi_phys = physical_angle_tuple
|
||||
return YouPosition(mu_phys, delta_phys, gam_phys, 0, 0, phi_phys, 'DEG')
|
||||
|
||||
def internal_position_to_physical_angles(self, internal_position):
|
||||
clone_position = internal_position.clone()
|
||||
clone_position.changeToDegrees()
|
||||
mu_phys, delta_phys, gam_phys, _, _, phi_phys = clone_position.totuple()
|
||||
return delta_phys, gam_phys, mu_phys, phi_phys
|
||||
|
||||
|
||||
### Create dummy scannables ###
|
||||
if GDA:
|
||||
###map GDA scannable to diffcalc axis name###
|
||||
_fourc = ScannableGroup('_fourc', (diff2delta, diff2gamma, diff2alpha, diff2omega))
|
||||
delta=_fourc.diff2delta
|
||||
gam=_fourc.diff2gamma
|
||||
mu=_fourc.diff2alpha
|
||||
phi=_fourc.diff2omega
|
||||
en=dcm1energy
|
||||
else:
|
||||
#Create dummy axes to run outside GDA in IPython#
|
||||
delta = Dummy('delta')
|
||||
gam = Dummy(NUNAME)
|
||||
mu = Dummy('mu')
|
||||
phi = Dummy('phi')
|
||||
_fourc = ScannableGroup('_fourc', (delta, gam, mu, phi))
|
||||
en = Dummy('en')
|
||||
|
||||
en.level = 3
|
||||
|
||||
### Configure and import diffcalc objects ###
|
||||
ESMTGKeV = 1
|
||||
settings.hardware = ScannableHardwareAdapter(_fourc, en, ESMTGKeV)
|
||||
settings.geometry = FourCircleI07EH2v() # @UndefinedVariable
|
||||
settings.energy_scannable = en
|
||||
settings.axes_scannable_group= _fourc
|
||||
settings.energy_scannable_multiplier_to_get_KeV = ESMTGKeV
|
||||
|
||||
# for aliasing completeness
|
||||
eta= settings.geometry.fixed_constraints['eta']
|
||||
chi= settings.geometry.fixed_constraints['chi']
|
||||
from diffcalc.gdasupport.you import * # @UnusedWildImport
|
||||
|
||||
if GDA:
|
||||
print "Running in GDA --- aliasing commands"
|
||||
alias_commands(globals())
|
||||
|
||||
# Load the last ub calculation used
|
||||
lastub()
|
||||
# Set reference vector direction returning betain and betaout angles as alpha and beta
|
||||
if ubcalc.name:
|
||||
setnphi('0; 0; 1')
|
||||
|
||||
### Set i07 specific limits
|
||||
def setLimitsAndCuts():
|
||||
''' set motor limits for diffcalc, these are within the actual motor limits
|
||||
'''
|
||||
setmin(delta, -0.60755)
|
||||
setmax(delta, 120.0)
|
||||
setmin(gam, -1.3913)
|
||||
setmax(gam, 48.160)
|
||||
setmin(mu, -2.5124)
|
||||
setmax(mu, 24.107)
|
||||
setcut(phi, -180.0)
|
||||
print "Current hardware limits set to:"
|
||||
hardware()
|
||||
|
||||
if not GDA:
|
||||
setLimitsAndCuts()
|
||||
|
||||
# TODO: make demo code for (2+2) diffractometer geometry
|
||||
#if not GDA:
|
||||
# demo = startup._demo.Demo(globals(), 'fourc')
|
||||
Reference in New Issue
Block a user