Rayonix HS camera¶
The MX-HS series from Rayonix incorporates the new, exclusive HS frame-transfer technology for high speed X-ray data collection without compromising resolution or data quality. The result is a new type of high speed and ultra-low noise area detector that delivers the highest performance available for X-ray diffraction applications.
The Rayonix MX-HS detectors are ideal for taking advantage of high brilliance synchrotron sources, or for any other high frame rate application. Examples include: high throughput protein crystallography, Laue diffraction, time-resolved or static small-angle X-ray scattering (SAXS), wide-angle X-ray scattering (WAXS), powder diffraction, X-ray computed tomography (CT), X-ray imaging, and coherent diffraction imaging (CDI). With no count rate limitation, these detectors are also ideal for XFEL applications.
The Lima module as been tested only with the following models :
- MX170-HS (2x2 mdules)
The Rayonix HS detector is been delivered today with its own control computer, a powerful computer embedded at leat 8GB of RAM, dual 4-Core CPU (8 cores) and a GPU card for the online image correction (background, flatfield …). The computer is running redhat entprise Linux 6 (64bits).
The rayonix SDK is preinstalled on the detector node under the directory
There is no special prerequisite, you can test that the device works properly by running the rayonix GUI,
Installation & Module configuration¶
Follow the generic instructions in Build and Install. If using CMake directly, add the following flag:
For the Tango server installation, refers to PyTango Device Server.
Initialisation and Capabilities¶
Implementing a new plugin for new detector is driven by the LIMA framework but the developer has some freedoms to choose which standard and specific features will be made available. This section is supposed to give you the correct information regarding how the camera is exported within the LIMA framework.
The camera has to be initialized using the RayonixHsCamera class. The default constructor does not need any input parameter.
This plugin has been implemented in respect of the mandatory capabilites but with some limitations which are due to the camera and SDK features. We only provide here extra information for a better understanding of the capabilities.
The detector is set to full image size at startup which means a binning of 1x1.
The recommended binning for most of the experiment is 2x2.
- The minimum latency time is 1 ms.
- The supported trigger modes are depending of the chosen frame mode. There are:
- ExtTrigMult (only for SINGLE frame mode)
- ExtGate (only for SINGLE frame mode)
- ExtTrigReadout (only for FAST_TRANSFER frame mode).
The supported hardware binning are 2x2, 3x3, 4x4, 5x5, 6x6, 7x7, 8x8, 9x9 and 10x10. By increasing the binning factor you can increase the readout speed from 2.6 fps to 140 fps which corresponds respectively to a pixel size of 44um and 440 um.
The Rayonix HS detectors provides 2 output channels one can choose a different source for each (see specific control parameters for more details about the output source control). For the SHUTTER source both opening and closing delay can be set.
The Rayonix HS shutter capability only supports two modes:
Specific control parameters¶
Some specific paramaters are available within the camera hardware interface. Those parameters should be used carefully and one should refer to the camera SDK (or user’s guide) documentation for a better understanding.
- get/setFrameTriggerType(type): signal type for the frame trigger input (channel #1)
- get/setSequenceGateSignalType(type): signal type for the gate input (channel #2), The supported signal types:
get/setOutputSignalType(channel, type): the signal type for the output channel (CHANNEL_1 or CHANNEL_2)
get/setOutputSignalID(channel, id): the source id for the output channel, possible sources are:
get/setElectronicShutterEnabled(): active or unactive the electronic shutter
get/setCoolerTemperatureSetpoint(): the cooler temperature set-point
get/setSensorTemperatureSetpoint(): the sensor temperature set-point
get/setSensorTemperature(): the detector measured temperature
get/setCooler(): stop or start the cooler controller
get/setVacuumValve(): close or open the vacuum valve
get/setFrameMode(): modes are SINGLE or FAST_TRANSFER.
in FAST_TRANSFER mode the latency time is disabled and it has a fixed value of 1 ms which corresponds to the readout time. In addition to this the supported trigger mode will depend on the frame mode. The list of supported trigger modes is available in this document below.
The detector head should be connected to the detector computer on the cameralink and USB links. You must connect the USB on the PCI board (not the motherboard ones) and the cameralink on the first channel, the top connector.
For an optimized condition wit dark current the detector has to be cooled down, the sensor temperature set-point should be at -120 deg and the cooler temperature set-point at -90 deg Celsuis. And of course the cooler controller should be started.
How to use¶
This is a simple python test program:
from Lima import RayonixHs from lima import Core cam = RayonixHs.Camera() hwint = RayonixHs.Interface(cam) control = Core.CtControl(hwint) acq = control.acquisition() # configure some hw parameters sens_temp = hwint.getSensorTemperature() cool_temp = hwint.getCoolerTemperatureSetpoint() if sens_temp > -50: print " Hoops, detector is not cooled down, temp = ", sens_temp # setting new file parameters and autosaving mode saving=control.saving() pars=saving.getParameters() pars.directory='/somewhere/' pars.prefix='test1_' pars.suffix='.edf' pars.fileFormat=Core.CtSaving.EDF pars.savingMode=Core.CtSaving.AutoFrame saving.setParameters(pars) # set a new binning to increase the frame rate image = control.image() image.setBin(Core.Bin(2,2)) # now ask for 10ms sec. exposure and 100 frames acq.setAcqExpoTime(0.01) acq.setNbImages(100) control.prepareAcq() control.startAcq() # wait for last image (#xi99) ready lastimg = control.getStatus().ImageCounters.LastImageReady while lastimg !=99: time.sleep(1) lastimg = control.getStatus().ImageCounters.LastImageReady # read the first image im0 = control.ReadImage(0)