Diamond Light Source Data Acquisition System Paul Gibbons
What has this got to do with EPICS? Surely just another channel access client!
How do we use the beam line to get an electron density map of a protein?
A complete experiment requires: User Login Sample Identification Initial data collection to characterise sample. Data collection Data processing Store all artefacts in database for remote access Repeat automatically for many samples.
At Diamond we delegate the tasks EPICS – Provide software abstraction of hardware GDA – Provide GUI, Experiment Logic, Access to external databases/file systems
XPS Motor Controller Delta-Tau Motor Controller'Soft' motor EPICS -Motor Record GDA - Scannable EpicsMotorAbstractMotorDetectorJython object
EPICS GDA Client GDA Server Photonic CCD I18 Beamline Components Jython Scripts Image Pro XsPress2 Multilayer Ion Chambers Vortex MCA Detectors
Sample Control
Experiment control
Data Acquisition Features GUI closely integrates the detector suite: Rapid2D Hotwaxs Hotsaxs TFG2 That is important for: short time experiments targeted user community
Data Analysis Features plugin system for external Java software user assisted q calibration upcoming: more analysis features –data visualisation –live view of incoming detector data
Jython Interpreter allows users to easily write very powerful experiment scripts.
Scan - PseudoDevice Get value Set value scan value
Scanning & reading data
I16 Hardware / Experiments Six circle diffractometer Five point and two Pilatus detectors. Goodies: –Incident polarisation selection –Reflected polarisation analyser –Sample coolers and magnets Wide range of diffraction experiments –Command line control only –Scan command… –Temporary scripts… –Pilatus GUI…
Illustrative Scans Versatile system of 1) Interchangeable Scannables: slits, phi, energy, hkl, ct, pil 2) Scan command Examples: –Scan to keep still –One-night-only scannable > scan energy hkl [1 0 1] pol 90 ct 1 > voltage = 1.54 > scan energy flipper [voltage 20 2]
Illustrative Experiment Script posHkl = [0,0,2] pos hkl posHkl for posPhi in frange(-90, 90, 1): pos phi phiPos if posPhi%45==0: scancn theta t 2 checkbeam pos eta FindScanPeak('APD')['eta']) scancn chi t 2 checkbeam pos chi FindScanPeak('APD')['chi']) posHkl = hkl() pos hkl hklPos pos pp111 [en() -.075] scancn eta ct 2 en pp111 pos pp111 [en() +.075] scancn eta ct 2 en pp111 1) Find a reflection’s exact hkl position 2) Move phi in loop: b) occasionally recentre on reflection i) centre eta on reflection ii) centre chi on reflection iii) store hkl position c) move to hkl position d) loop polarisation i) scan eta & read ct AlgorithmScript (night24sept08a.py)
Pilatus 2M > pos pil 10> scan phi pil 10
Combining Jython with EPICS objects Easy to use High level language Combine EPICS devices together to make full experiment with speed of execution of EPICS. Hardware interface is robust to user error
Epics Interface
Controls Group provides an IOC device description in XML – Automatic Object Creation
EPICS devices available to scripts and GUI without needing to know PV names. The GDA EpicsDevice and its methods are accessible over CORBA along with all other Java objects in GDA.
Access any field, e.g. DESC Access value in various format, e.g. DBR_CTRL
So What Next Support more complex EPICS devices e.g. motor controller trajectory scan object. Role Based Access Remote Access Eclipse RCP
The Eclipse framework is a mechanism for hosting various software written by different organisations to work together to create a single application. Allows more structured development on GDA as plugins. Breaks large monolithic structure into separately developed components. Professional looking product – context sensitive help, auto-completion. Make use of plugins written by others e.g. IDL visualisation plugins.
Main Panels now Eclipse Views
PyDev plugin used to provide script editor and console with context sensitive help.
Eclipse cheat sheets guide user interactively.
Putting it all together as a complete experiment application.