138 lines
4.6 KiB
Python
138 lines
4.6 KiB
Python
from startup._common_imports import * # @UnusedWildImport
|
|
|
|
if not GDA:
|
|
import startup._demo
|
|
else:
|
|
# import __main__ # @UnresolvedImport
|
|
from __main__ import tth,th,chi,pgm_energy, simtth,simth,simchi,simalpha # @UnresolvedImport
|
|
|
|
LOCAL_MANUAL = ""
|
|
|
|
SIM_MODE=False
|
|
|
|
### Create dummy scannables ###
|
|
if GDA:
|
|
###map GDA scannable to diffcalc axis name###
|
|
phi = Dummy('phi')
|
|
_fourc = ScannableGroup('_fourc', (tth, th, chi, phi))
|
|
en=pgm_energy
|
|
if float(en.getPosition()) == 0: # no energy value - dummy mode
|
|
en(800)
|
|
else:
|
|
#Create dummy axes to run outside GDA in IPython#
|
|
delta = Dummy('delta')
|
|
eta = Dummy('eta')
|
|
chi = Dummy('chi')
|
|
phi = Dummy('phi')
|
|
_fourc = ScannableGroup('_fourc', (delta, eta, chi, phi))
|
|
en = Dummy('en')
|
|
en(800)
|
|
|
|
en.level = 3
|
|
|
|
### Configure and import diffcalc objects ###
|
|
ESMTGKeV = 0.001
|
|
settings.hardware = ScannableHardwareAdapter(_fourc, en, ESMTGKeV)
|
|
settings.geometry = diffcalc.hkl.you.geometry.FourCircle() # @UndefinedVariable
|
|
settings.energy_scannable = en
|
|
settings.axes_scannable_group= _fourc
|
|
settings.energy_scannable_multiplier_to_get_KeV = ESMTGKeV
|
|
|
|
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 i10 specific limits
|
|
def setLimitsAndCuts(delta,eta,chi,phi):
|
|
''' set motor limits for diffcalc, these are within the actual motor limits
|
|
'''
|
|
setmin(delta, -60.0)
|
|
setmax(delta, 165.0)
|
|
setmin(eta, -94.408)
|
|
setmax(eta, 190.591)
|
|
setmin(chi, 85.5)
|
|
setmax(chi, 94.5)
|
|
setmin(phi, 0)
|
|
setmax(phi, 360.0)
|
|
print "Current hardware limits set to:"
|
|
hardware()
|
|
|
|
if not GDA:
|
|
setLimitsAndCuts(delta,eta,chi,phi)
|
|
|
|
if GDA:
|
|
def swithMotors(delta, mu, eta, chi, phi):
|
|
import __main__
|
|
from diffcalc.dc import dcyou as _dc
|
|
|
|
### update Wrap i21 names to get diffcalc names
|
|
_fourc = ScannableGroup('_fourc', (delta, mu, eta, chi, phi))
|
|
#update diffcalc objects
|
|
__main__.settings.hardware = ScannableHardwareAdapter(_fourc, __main__.en, ESMTGKeV) # @UndefinedVariable
|
|
__main__.settings.geometry = diffcalc.hkl.you.geometry.FourCircle() # @UndefinedVariable
|
|
__main__.settings.energy_scannable = __main__.en # @UndefinedVariable
|
|
__main__.settings.axes_scannable_group= _fourc
|
|
__main__.settings.energy_scannable_multiplier_to_get_KeV = ESMTGKeV
|
|
|
|
__main__.fourc=DiffractometerScannableGroup('fourc', _dc, _fourc)
|
|
__main__.hkl = Hkl('hkl', _fourc, _dc)
|
|
__main__.h, __main__.k, __main__.l = hkl.h, hkl.k, hkl.l
|
|
|
|
from diffcalc.gdasupport.you import _virtual_angles
|
|
from diffcalc.gdasupport.scannable.simulation import SimulatedCrystalCounter
|
|
from diffcalc.gdasupport.scannable.wavelength import Wavelength
|
|
__main__.hklverbose = Hkl('hklverbose', _fourc, _dc, _virtual_angles)
|
|
__main__.wl = Wavelength('wl',__main__.en,ESMTGKeV) # @UndefinedVariable
|
|
__main__.ct = SimulatedCrystalCounter('ct', _fourc, __main__.settings.geometry,__main__.wl) # @UndefinedVariable
|
|
|
|
def stopMotors(delta, eta, chi, phi):
|
|
delta.stop()
|
|
eta.stop()
|
|
chi.stop()
|
|
phi.stop()
|
|
|
|
def simdc():
|
|
''' switch to use dummy motors in diffcalc
|
|
'''
|
|
print "Stop real motors"
|
|
stopMotors(tth,th,chi,phi)
|
|
|
|
global SIM_MODE
|
|
SIM_MODE=True
|
|
import __main__
|
|
__main__.en=Dummy("en")
|
|
print "Set energy to 12398.425 eV in simulation mode!"
|
|
__main__.en(12398.425) #1 Angstrom wavelength @UndefinedVariable
|
|
print "Switch to simulation motors"
|
|
swithMotors(simtth,simalpha,simth,simchi,phi)
|
|
setLimitsAndCuts(simtth,simalpha,simth,simchi,phi)
|
|
|
|
def realdc():
|
|
''' switch to use real motors in diffcalc
|
|
'''
|
|
print "Stop simulation motors"
|
|
stopMotors(simtth,simalpha,simth,simchi,phi)
|
|
|
|
global SIM_MODE
|
|
SIM_MODE=False
|
|
import __main__
|
|
print "Set energy to current beamline energy in real mode!"
|
|
__main__.en=pgm_energy
|
|
print "Switch to real motors"
|
|
swithMotors(tth,th,chi,phi)
|
|
setLimitsAndCuts(tth,th,chi,phi)
|
|
|
|
from gda.jython.commands.GeneralCommands import alias # @UnresolvedImport
|
|
print "Created commands: 'simdc' and 'realdc' to switch between real and simulated motors."
|
|
alias("simdc")
|
|
alias("realdc")
|
|
|
|
### Demo ###
|
|
if not GDA:
|
|
demo = demo = startup._demo.Demo(globals(), 'fourc')
|