areaDetector Andor driver

Release 3-1

January 9, 2017

Matthew Pearson, Oak Ridge National Laboratory

Mark Rivers, University of Chicago

Content

Introduction

This is an EPICS areaDetector driver for CCD detectors from Andor Technology using Version 2 of the Andor Software Development Kit (SDK). It has been tested on the Andor iKon and DU401 CCD cameras with USB interface, but should work with other cameras as well. The driver is supported on 32-bit and 64- bit Linux and 32-bit and 64-bit Windows.

The driver currently provides access to most of the features of the Andor cameras:

  • All Andor acquisition modes (Single Scan, Accumulate, Kinetics, Run Till Abort, and Fast Kinetics
  • Control of the exposure time, accumulate cycle time, and kinetic cycle time
  • Support for all of the Andor trigger modes
  • Support for all of the Andor shutter modes
  • Support for reading the detectors with 16-bit or 32-bit depth
  • Saving files using the Andor SDK and/or with the standard areaDetector plugins
  • Change the ADC sampling speed (0.05MHz and 2.5MHz on the iKon)
  • Set a region of interest (a smaller region can be read out faster)
  • Set and monitor the CCD temperature
  • Electron Multiplying (EM) Gain on supported detectors
  • Support for selecting between Full Vertical Binning (FVB) and Image readout modes

The Andor module includes a separate driver to control the Andor Shamrock spectrographs. If the detector data is saved in the Princeton Instruments SPE file format using the Andor driver then it will include the Shamrock wavelength calibration information. No other file formats support saving the calibration.

This driver inherits from ADDriver. It implements many of the parameters in asynNDArrayDriver.h and in ADArrayDriver.h. It also implements a number of parameters that are specific to the Andor detectors. The Andor class documentation describes this class in detail.

This document does not attempt to explain the meaning of the Andor-specific parameters. The Andor Software Development Kit documentation provides this detailed information. Andor does not allow me to redistribute the SDK documentation as part of areaDetector. It must be obtained from Andor’s Web site.

areaDetector includes the header and library files required to build the andor driver on any Linux or Windows computer. However, it does not include the shareable libraries, DLLs or drivers to actually run a detector. Those must be obtained from Andor, either by purchasing their SDK or their Solis application software. On Windows the path to the directory containing the Andor DLLs from the SDK or Solis must be added to the PATH environment variable when running the areaDetector IOC. On Linux the path to the directory containing the Andor shareable libraries from the SDK must be added to the LD_LIBRARY_PATH environment variable when running the areaDetector IOC.

NOTE: When using the Shamrock spectrograph on Windows the following DLLs must actually be copied from the SDK directory to the current working directory from which the IOC application is being run, e.g. iocBoot/iocAndor.

  • atmcd32d.dll
  • ShamrockCIF.dll
  • atshamrock.dll

This is a rather strange requirement of the Andor Shamrock SDK, which will hopefully be fixed by them in a future release.

Implementation of standard driver parameters

The following table describes how the Andor driver implements some of the standard driver parameters.

TABLE

Andor specific parameters

The Andor driver implements the following parameters in addition to those in asynNDArrayDriver.h and ADDriver.h.

TABLE

Unsupported standard driver parameters

ColorMode, ReverseX, and ReverseY are currently not supported.

TABLE

Shamrock spectrograph control

The Andor module also includes a driver for the Andor Shamrock spectrographs. This driver allows control of the grating, central wavelength, and slit sizes.

TABLE

Usage

Always use channel access put callback when setting parameters.

If any of the parameters set are out of range or fail in some way, then the PV will be put into alarm state. This should be checked after every PV set.

An example palette file for a TIFF file is GREY.PAL in the iocAndor directory.

Configuration

The Andor driver is created with the andorCCDConfig command, either from C/C++ or from the EPICS IOC shell.

The Shamrock driver is created with the shamrockConfig command, either from C/C++ or from the EPICS IOC shell.

int andorCCDConfig(const char *portName,
                int maxBuffers, size_t maxMemory,
                const char* installPath,
                int priority, int stackSize)

The Shamrock driver is created with the shamrockConfig command, either from C/C++ or from the EPICS IOC shell.

int shamrockConfig(const char *portName,
                  int shamrockId, const char *iniPath,
                  int priority, int stackSize)

For details on the meaning of the parameters to this function refer to the detailed documentation on the andorCCDConfig function in the shamrock.cpp documentation and in the documentation for the constructor for the shamrock class.

There an example IOC boot directory and startup script (iocBoot/iocAndor/st.cmd) provided with areaDetector.

MEDM screens

The following shows the MEDM screen that is used to control the Andor detector. Note that the general purpose screen ADBase.adl can be used, but it exposes a few controls that are not applicable to the Andor, and lacks some fields that are important for the Andor.

Andor.adl is the main screen used to control the Andor driver.

Andor

The following shows the MEDM screen that is used to save files directly with the Andor detector.

AndorFile

The following shows the MEDM screen that is used to control the Shamrock spectrograph.

Shamrock

Restrictions

The following are known restrictions of the Andor driver. These should be fixed in a future release.

No support for detector output signals (trigger and gate). Some Andor detectors (including the iKon) only support a single period when doing multiple accumulations in kinetic series mode. For these cameras ANDOR_ACCUMULATE_PERIOD has no effect, ACQUIRE_PERIOD determines the time between accumulations, and the time between images is 0, i.e. the next image starts as soon as the previous one is complete. Saving files using the Andor driver in Multiple and Continuous modes results in errors because the Andor SDK functions won’t save files if acquisition is in progress. Saving files in Single mode and Fast Kinetics mode works fine. Trigger modes have not been tested. The Shamrock wavelength calibration is only saved in SPE files. The Andor SDK file writers do not save the calibration, and it is not possible to pass the calibration to other file plugins as an attribute because array attributes are not currently supported in areaDetector. Single-Track, Multi-Track and Random-Track readout modes are not yet supported.