ADEiger

author:

Bruno Martins, Diego Omitto, Mark Rivers

Introduction

This is an EPICS areaDetector driver for the Eiger and Eiger2 detectors from Dectris. It has been tested on the Eiger 500K, 1M, 4M and 16M with the firmware version 1.6.4+, and Eiger2 with firmware 2020.2. The driver communicates with the detector via its SIMPLON REST interface, so no library from Dectris is required. The images can pulled from the detector as HDF5 files, as a ZeroMQ stream or both. The files can be both saved to disk and passed to the areaDetector pipeline at the same time.

All trigger modes are supported, although Internal Enable mode seems to not be working properly. See Known Issues.

This driver inherits from ADDriver. It implements many of the parameters in asynNDArrayDriver and in ADDriver. It also implements a number of parameters that are specific to the Eiger detector. The eigerDetector class describes this class in detail.

This document does not attempt to explain the meaning of the Eiger- specific parameters, as they are explained in the SIMPLON API Reference and in the EIGER Detector Manual documents from Dectris. Sometimes it does, however, refer to those parameters as they are named in Dectris’ documentation.

The SIMPLON API provides ways to query parameter limits, valid values for enums, error conditions, etc. The driver will clamp values to their minimum or maximum value if they are outside the acceptable range. Setting a parameter will immediately push its value to the detector.

This driver was built upon a multithreaded architecture. A combination of threads is used to simultaneously pull files from the detector, save them to disk and parse them into NDArrays. A dedicated thread is used to receive images in a ZeroMQ stream.

A few Eiger parameters are set at IOC initialization time and are expected to not change. Namely:

  • detector/config/auto_summation = true

  • filewriter/config/image_nr_start = 1

  • monitor/config/buffer_size = 1

Accessing New Parameters

Some parameters are not relevant to the driver operation and as such are not exposed initially by the driver as PVs. However, there is a mechanism to access other parameters not created automatically by the driver by simply instantiating new records with the appropriate drvInfo string. Some of the PVs are created this way. For example, the PV XPixelSize_RBV has the following drvInfo:

EIG_DCD_x_pixel_size

For those parameters, the first four characters must be EIG_. Then the fifth character must be one of:

  • D: Detector subsystem

  • M: Monitor subsystem

  • F: FileWriter subsystem

  • S: Stream subsystem

The sixth character determines if the parameter is a configuration or a status parameter:

  • C: Configuration

  • S: Status

The seventh character determines which asyn parameter type to use:

  • I: Integer (asynParamInt32)

  • D: Double (asynParamFloat64)

  • S: String (asynParamOctet)

The eighth character must be a ‘_’, and the remaining characters are the parameter’s name according to the SIMPLON API Manual. Hence, for this example, this PV will be accessing the parameter:

detector/api/<version>/config/x_pixel_size

Trigger Modes

There are six trigger modes available:

  • Internal Series: one internal trigger pulse generates N images

  • Internal Enable: one internal trigger pulse generates one image

  • External Series: one external trigger pulse generates N images

  • External Enable: one external trigger pulse generates one image

  • Continuous: same as internal series, but automatically restarts after series

  • External Gate: This mode is used only with new firmware on the Eiger2

    which has 2 counters per pixel. The behavior depend on the setting the ExtGateMode PV.

The total number of images generated by Internal and External Series modes is given by the product of the NumImages and NumTriggers PVs (nimages and ntriggers in Dectris terminology).

On both Internal Enable and External Enable modes the total number of images generated is given solely by the NumTriggers PV (ntriggers). NumImages is set to 1 temporarily during the acquisition.

Triggers for Internal Enable mode are sent by processing the Trigger PV. The exposure for each individual image is given by the TriggerExposure PV and can change between triggers in the same acquisition. This mode is experimental as of firmware 1.5.0. See Known Issues.

Manual Trigger

On Internal Series and Internal Enable modes, if the ManualTrigger PV is set to Yes, the triggers are not auto generated by the driver. Instead, they are sent by processing the Trigger PV. On Internal Enable mode the trigger carries an exposure value that can change for each trigger, which is set by the TriggerExposure PV. Note that the Internal Enable mode is experimental as of firmware 1.5.0, see Known Issues.

Data Acquisition

Data generated by the Eiger can be pulled from the detector in a number of ways. The detector has three modules (in Dectris’ terminology) that make the results of the acquisition available in different ways. The FileWriter module writes the generated images to the detector disk as HDF5 files that consist of a master (header) file and a number of data files. The Stream module makes the images available as soon as they are captured as a ZeroMQ stream. The Monitor module produces TIFF images every so often to monitor how a long acquisition is progressing.

Data from the FileWriter or from the Stream mode can be parsed into NDArrays for the areaDetector pipeline. The actual source is selected with the DataSource PV. If DataSource is set to None, however, no data will be sent to the areaDetector pipeline but the detector will still be controllable via the areaDetector driver; third-party clients can then pull files or listen to the ZeroMQ stream independently of this driver.

Using FileWriter

The FileWriter module is activated when FWEnable is set to Yes. Files generated by the FileWriter have names according to the FWNamePattern PV. The default pattern is “series_$id”, where $id is replaced by the Sequence ID of the acquisition. A master file is generated as soon as the detector is successfully armed. A number of data files follow. The number of data files generated depends on the total number of images of the acquisition and the FWNFilesPerImage PV.

For example, if TriggerMode is External Enable, NumImages is 60, NumTriggers is 2, FWNImagesPerFile is 100, Sequence ID for the acquisition is 1 and FWNamePattern is “series_$id”, a total of three files will be generated:

  • series_1_master.h5

  • series_1_data_000001.h5 (with 100 images)

  • series_1_data_000002.h5 (with 20 images)

The generated files will be downloaded either if DataSource is set to FileWriter or if SaveFiles is set to Yes. Files are downloaded as soon as they are available. To determine if a file is available the driver polls the detector at a nominal rate of 10Hz. While a file is being processed the next file available is downloaded in parallel. All files will remain on the detector disk unless FWAutoRemove is set to Yes.

When saving files to disk (SaveFiles = Yes) it is possible to set the file’s owner, its group and its access permissions with FileOwner, FileOwnerGrp and FilePerms PVs. To be able to set arbitrary owners the IOC executable requires CAP_SETUID and CAP_SETGID capabilities, which can be given with the command:

sudo setcap cap_setuid,cap_setgid+ep eigerDetectorApp

All files on the detector disk can be deleted at once by processing the FWClear PV. This is only available with the Eiger1 and Simplon API version 1.6.0.

If the last data file of a series won’t be full (e.g. series_1_data_000002.h5 with 20 images) then it will only appear on the detector disk after a disarm command (issued when the acquisition is stopped), which flushes the FileWriter buffer.

Using Stream

The Stream module is activated when StreamEnable is set to Yes. Data will then be available on the detector’s tcp port 9999 as a ZMQ_PUSH socket. If DataSource is set to Stream, this driver opens a corresponding ZMQ_PULL socket and parses the incoming data as NDArrays. Otherwise a third-party client can listen on that socket for data. The format of the packets is specified in the Eiger SIMPLON API documentation.

Using Monitor

The Monitor module is activated when MonitorEnable is set to Yes. Data will be available whenever the monitor module buffer is full (has one image available). This driver waits MonitorTimeout ms for data to be available. There is a rate-limit of 10Hz. Once downloaded, the TIFF image is parsed into areaDetector’s NDArray on NDArrayAddr 1 (therefore, an independent NDArray stream).

Crystallography Parameters

A few parameters are available as metadata for the acquisition. These values are stored on the master file and sent as metadata in ZeroMQ stream, but otherwise don’t affect the acquisition, with the exception of the Wavelength parameter, which sets Photon Energy accordingly.

Implementation of standard driver parameters

The following table describes how the Eiger driver implements some of the standard driver parameters defined in asynNDArrayDriver.h and ADDriver.h, ADBase.template and NDFile.template

EPICS record name

Eiger Parameter

Description

$(P)$(R)TriggerMode, $(P)$(R)TriggerMode_RBV

detector/config/trigger_mode

Sets the trigger mode for the detector. Options are:

  • Internal Series

  • Internal Enable

  • External Series

  • External Enable

  • External Gate (Eiger2 with 2021 firmware only)

$(P)$(R)NumImages, $(P)$(R)NumImages_RBV

detector/config/nimages

Sets the number of images to take per trigger when on Internal Series or External Series mode.

$(P)$(R)NumExposures, $(P)$(R)NumExposures_RBV

detector/config/nexpi

Sets the number of exposures per image in External Gate trigger mode.

$(P)$(R)AcquireTime, $(P)$(R)AcquireTime_RBV

detector/config/count_time

Sets the parameter “count_time”, which is the exposure time for a single image in Internal Series or External Series mode.

$(P)$(R)AcquirePeriod, $(P)$(R)AcquirePeriod_RBV

detector/config/frame_time

Sets the parameter “frame_time”, which directly affects the frame rate of the detector. The resulting frame rate will be 1/AcquirePeriod.

$(P)$(R)DataType_RBV

N.A

The data type of the image data. This depends on the Eiger model, the AcquirePeriod (frame rate) and the AcquireTime (exposure time). At long exposure times it is UInt32, at intermediate frame rates it is UInt16, and at very high frame rates it is UInt8. For example, on an Eiger2 500K:

  • AcquireTime > 0.0066 ms: DataType_RBV=UInt32

  • AcquirePeriod < .00045 (2200 frames/s): DataType_RBV=UInt8

  • Neither of above conditions: DataType_RBV=UInt16

$(P)$(R)TemperatureActual

detector/status/board_000/th0_temp

Reads the actual temperature of the detector.

$(P)$(R)MaxSizeX_RBV

N.A

Detector sensor size in the X direction.

$(P)$(R)MaxSizeY_RBV

N.A

Detector sensor size in the Y direction.

$(P)$(R)ArraySizeX_RBV

detector/config/x_pixels_in_detector

Current detector sensor size in the X direction. This can change depending on the ROI Mode selected.

$(P)$(R)ArraySizeY_RBV

detector/config/y_pixels_in_detector

Current detector sensor size in the Y direction. This can change depending on the ROI Mode selected.

$(P)$(R)Manufacturer_RBV, $(P)$(R)Model_RBV

detector/config/description

Reads the detector manufacturer (Dectris) and model (Eiger xx M).

$(P)$(R)SerialNumber_RBV

detector/config/detector_number

Detector serial number

$(P)$(R)FirmwareVersion_RBV

detector/config/eiger_fw_version

Detector firmware version

$(P)$(R)SDKVersion_RBV

detector/api/version

Simplon API version

$(P)$(R)DriverVersion_RBV

N.A

This driver’s version

Eiger specific parameters

The Eiger driver implements the following parameters in addition to those in asynNDArrayDriver.h and ADDriver.h. Most records are in eigerBase.template, and are common to both the Eiger1 and Eiger2. The records specific to the Eiger1 are in eiger1.template, and those specific to the Eiger2 are in eiger2.template. exist on the Eiger1, and some only on the Eiger2. This is noted in the tables.

Detector Information

Eiger Parameter

Description

EPICS record name

EPICS record type

detector/config/description

Detector’s manufacturer and model

Description_RBV

stringin

detector/config/x_pixel_size

Detector’s pixel size in the X direction, in meters

XPixelSize_RBV

ai

detector/config/y_pixel_size

Detector’s pixel size in the Y direction, in meters

YPixelSize_RBV

ai

detector/config/sensor_material

Detector’s sensor material

SensorMaterial_RBV

stringin

detector/config/sensor_thickness

Detector’s sensor thickness, in meters

SensorThickness_RBV

ai

detector/config/detector_readout_time

Detector’s readout time (dead time) between frames. Changes with different Threshold Energies.

DeadTime_RBV

ai

Detector Status

Eiger Parameter

Description

EPICS record name

EPICS record type

N.A.

Initializes the detector DCU. This command takes many seconds.

Initialize

busy

detector/status/state

State of the detector

State_RBV

stringin

detector/status/error

List of parameters causing an error state

Error_RBV

stringin

detector/status/board_000/th0_temp

Temperature of the first module

Temp0_RBV

ai

detector/status/board_000/th0_humidity

Humidity of the first module

Humid0_RBV

ai

detector/status/link_0, detector/status/link_1, detector/status/link_2, detector/status/link_3

Status of the four links between the detector server and the head. Eiger1 only.

Link0_RBV, Link1_RBV, Link2_RBV, Link3_RBV

bi

detector/status/builder/dcu_buffer_free

Percentage of the detector’s internal buffer that is free. Low values may indicate a problem. Eiger1 only.

DCUBufferFree_RBV

ai

N.A.

High voltage reset time. Eiger2 only.

HVResetTime, HVResetTime_RBV

ao, ai

N.A.

High voltage reset command. Turns off high voltage for HVResetTime and then turns it back on. Eiger2 only.

HVReset

bo

detector/status/high_voltage/state

High voltage state. State of the high voltage. Eiger2 only.

HVState_RBV

stringin

Acquisition Setup

Eiger Parameter

Description

EPICS record name

EPICS record type

detector/config/threshold_energy

Energy threshold 1 for the acquisition. This is the only threshold on the Eiger1.

Threshold, Threshold_RBV

ao, ai

detector/config/threshold/1/mode

Enable or disable threshold 1. Eiger2 only.

Threshold1Enable, Threshold1Enable_RBV

bo, bi

detector/config/threshold/2/energy

Energy threshold 2 for the acquisition. Eiger2 only.

Threshold2, Threshold2_RBV

ao, ai

detector/config/threshold/2/mode

Enable or disable threshold 2. Eiger2 only.

Threshold2Enable, Threshold2Enable_RBV

bo, bi

detector/config/threshold/difference/mode

Enable or disable difference mode, where the output image is threshold1-threshold2. Eiger2 only.

ThresholdDiffEnable, ThresholdDiffEnable_RBV

bo, bi

detector/config/photon_energy

Photon energy for the acquisition

PhotonEnergy, PhotonEnergy_RBV

ao, ai

detector/config/counting_mode

Counting mode, “Normal” or “Retrigger”. Eiger2 only.

CountingMode, CountingMode_RBV

bo, bi

Trigger Setup

Eiger Parameter

Description

EPICS record name

EPICS record type

detector/config/extg_mode

Mode to be used when TriggerMode=External Gate. Choices are “Pump & Probe” and “HDR”. Eiger2 with 2021 firmware only.

ExtGateMode, ExtGateMode_RBV

mbbo, mbbi

detector/command/trigger

Software trigger to be used on modes Internal Series and Internal Enable when ManualTrigger is set

Trigger

ao

N.A.

Exposure to be used with the triggers on the Internal Enable trigger mode

TriggerExposure, TriggerExposure_RBV

ao, ai

detector/config/ntrigger

Number of triggers for the acquisition

NumTriggers, NumTriggers_RBV

ao, ai

N.A.

On Internal Series and Internal Enable modes, controls whether triggers will be issued automatically (0) or only via the Trigger PV (1).

ManualTrigger, ManualTrigger_RBV

bo, bi

detector/config/trigger_start_delay

Delay time in second after receipt of trigger signal before taking action. Eiger2 only.

TriggerStartDelay, TriggerStartDelay_RBV

ao, ai

Readout Setup

Eiger Parameter

Description

EPICS record name

EPICS record type

detector/config/roi_mode

Which ROI mode to use. Only supported on Eiger 9M and 16M. Options are:
  • Disabled

  • 4M

ROIMode, ROIMode_RBV

mbbo, mbbi

detector/config/flatfield_correction_applied

Controls whether the flatfield correction should be applied

FlatfieldApplied, FlatfieldApplied_RBV

bo, bi

detector/config/countrate_correction_applied

Controls whether the count rate correction should be applied

CountrateCorrApplied, CountrateCorrApplied_RBV

bo, bi

detector/config/pixel_mask_applied

Controls whether the pixel mask should be applied

PixelMaskApplied, PixelMaskApplied_RBV

bo, bi

detector/config/auto_summation

Controls whether autosummation should be done.

AutoSummation, AutoSummation_RBV

bo, bi

detector/config/compression

Compression algorithm to use when compression is enabled. Options are:
  • lz4

  • bslz4 (bitshuffle lz4)

  • None (API 1.8.0 only)

The selected algorithm will always be used on the Stream ZMQ interface. It will also be used for HDF5 files written by the FileWriter interface if FWCompression=Enabled.

CompressionAlgo, CompressionAlgo_RBV

mbbo, mbbi

N.A.

Which data source to use for areaDetector pipeline. Valid values:
  • None

  • FileWriter

  • Stream

DataSource, DataSource_RBV

mbbo, mbbi

Acquisition Status

Eiger Parameter

Description

EPICS record name

EPICS record type

N.A.

Armed state of the detector

Armed

bi

detector/config/bit_depth_image

The bit depth of the image data. This depends on the Eiger model, the AcquirePeriod (frame rate) and the AcquireTime (exposure time). At long exposure times it is 32, at intermediate frame rates it is 16, and at very high frame rates it is 8. For example, on an Eiger2 500K:

  • AcquireTime > 0.0066 ms: BitDepthImage_RBV=32

  • AcquirePeriod < .00045 (2200 frames/s): BitDepthImage_RBV=8

  • Neither of above conditions: BitDepthImage_RBV=16

$(P)$(R)BitDepthImage_RBV

longin

detector/config/countrate_correction_count_cutoff

Number of counts after which the detector will cutoff due to the count rate correction.

CountCutoff_RBV

ai

FileWriter Interface

Eiger Parameter

Description

EPICS record name

EPICS record type

filewriter/config/mode

Enables or disables the FileWriter module

FWEnable, FWEnable_RBV

bo, bi

filewriter/status/state

State of the FileWriter module

FWState_RBV

stringin

filewriter/config/compression_enabled

Enables or disables LZ4 or BSLZ4 compression for HDF5 files written by the DCU

FWCompression, FWCompression_RBV

bo, bi

filewriter/config/nimages_per_file

Number of images per HDF5 data file

FWNImgsPerFile, FWNImgsPerFile_RBV

ao, ai

filewriter/config/name_patttern

Name pattern for the generated HDF5 files. The pattern can be anything, but it must contain the string ‘$id’ in it. This string is replaced with the current sequence id of the acquisition. The default is: “series_$id”, which would generate the files:

* series_1_master.h5
* series_1_data_000001.h5
* series_1_data_000002.h5
* ...

For the sequence id 1. If ‘$id’ is omitted, files might get overwritten on the server, because then every acquisition would generate files with the same name

FWNamePattern, FWNamePattern_RBV

stringout, stringin

N.A.

Sequence ID of the current acquisition

SequenceId

ai

N.A.

Controls whether acquired files should be saved locally to disk

SaveFiles, SaveFiles_RBV

bo, bi

N.A.

Controls the owner of the file saved to disk. Requires the IOC to have the CAP_SETUID capability.

FileOwner, FileOwner_RBV

stringout, stringin

N.A.

Controls the owner group of the file saved to disk. Requires the IOC to have the CAP_SETGID capability.

FileOwnerGrp, FileOwnerGrp_RBV

stringout, stringin

N.A.

Controls the permissions for the files saved to disk. Normal Linux octal bitmask format, for Owner/Group/World, e.g. 0666 is r+w owner, group, and world.

FilePerms

ao

filewriter/status/buffer_free

Free space on detector disk.

FWFree_RBV

ai

N.A.

Controls whether downloaded files should be removed from the detector disk

FWAutoRemove, FWAutoRemove_RBV

bo, bi

filewriter/config/clear

Writing to this PV clears all files on the detector server disk. Eiger1 only.

FWClear

ao

Stream Interface

Eiger Parameter

Description

EPICS record name

EPICS record type

stream/config/mode

Enables or disables the Stream module

StreamEnable, StreamEnable_RBV

bo, bi

stream/status/state

State of the Stream module

StreamState_RBV

stringin

N.A.

Controls whether the NDArrays from the Stream interface are decompressed (Yes) or compressed (No)

StreamDecompress, StreamDecompress_RBV

bo, bi

stream/config/header_detail

Selects the level of detail for Stream API Headers. Options are:
  • All

  • Basic

  • None

StreamHdrDetail, StreamHdrDetail_RBV

mbbo, mbbi

stream/config/header_appendix

Sets the text to be appended to the Stream API headers

StreamHdrAppendix

waveform

stream/config/image_appendix

Sets the text to be appended to the Stream API images

StreamImgAppendix

waveform

stream/status/dropped

Indicates how many images were dropped in the last acquisition

StreamDropped_RBV

ai

Monitor Interface

Eiger Parameter

Description

EPICS record name

EPICS record type

monitor/config/mode

Enables or disables the Monitor module

MonitorEnable, MonitorEnable_RBV

bo, bi

monitor/status/state

State of the Monitor module

MonitorState_RBV

stringin

N.A.

Timeout for queries on the Monitor interface for new images

MonitorTimeout, MonitorTimeout_RBV

ao, ai

Acquisition Metadata

Eiger Parameter

Description

EPICS record name

EPICS record type

detector/config/beam_center_x

X position of the beam

BeamX, BeamX_RBV

ao, ai

detector/config/beam_center_y

Y position of the beam

BeamY, BeamY_RBV

ao, ai

detector/config/detector_distance

Detector distance

DetDist, DetDist_RBV

ao, ai

detector/config/wavelength

Wavelength of the beam. This parameter is automatically changed whenever the PhotonEnergy changes

Wavelength, Wavelength_RBV

ao, ai

Detector Metadata

Eiger Parameter

Description

EPICS record name

EPICS record type

detector/config/chi_start

Start value of the Chi angle

ChiStart, ChiStart_RBV

ao, ai

detector/config/chi_increment

Chi angle increment per frame

ChiIncr, ChiIncr_RBV

ao, ai

detector/config/kappa_start

Start value of the Kappa angle

KappaStart, KappaStart_RBV

ao, ai

detector/config/kappa_increment

Kappa angle increment per frame

KappaIncr, KappaIncr_RBV

ao, ai

detector/config/omega_start

Start value of the Omega angle

OmegaStart, OmegaStart_RBV

ao, ai

detector/config/omega_increment

Omega angle increment per frame

OmegaIncr, OmegaIncr_RBV

ao, ai

detector/config/phi_start

Start value of the Phi angle

PhiStart, PhiStart_RBV

ao, ai

detector/config/phi_increment

Phi angle increment per frame

PhiIncr, PhiIncr_RBV

ao, ai

detector/config/two_theta_start

Start value of the TwoTheta angle

TwoThetaStart, TwoThetaStart_RBV

ao, ai

detector/config/two_theta_increment

TwoTheta angle increment per frame

TwoThetaIncr, TwoThetaIncr_RBV

ao, ai

Minimum change allowed

Eiger Parameter

Description

EPICS record name

EPICS record type

N.A.

Minimum amount of change allowed to Wavelength, in Angstroms

WavelengthEps, WavelengthEps_RBV

ao, ai

N.A.

Minimum amount of change allowed to PhotonEnergy, Threshold and Threshold2, in eV

EnergyEps, EnergyEps_RBV

ao, ai

Unsupported standard driver parameters

All standard parameters not mentioned in this document are not supported.

Configuration

The Eiger driver is created with the eigerDetectorConfig command, either from C/C++ or from the EPICS IOC shell.:

int eigerDetectorConfig(const char *portName, const char *hostname,
                        int maxBuffers, size_t maxMemory, int priority, int stackSize)

For details on the meaning of the parameters to this function refer to the detailed documentation on the eigerDetectorConfig function in the eigerDetector and in the documentation for the constructor for the eigerDetector class

There an example IOC boot directory and startup script provided with areaDetector.

medm screens

The following shows the medm screens that are used to control the Eiger and Eiger2 detectors. Note that the general purpose screen ADBase.adl can be used, but it exposes a few PVs that are not applicable to the Eiger, and lacks many PVs that are important for the Eiger.

eigerDetector.adl is the screen used to control the Eiger1 detector.

../_images/eiger1.png

eiger2Detector.adl is the screen used to control the Eiger2 detector.

../_images/eiger2.png

Using 2 energy thresholds

The Eiger2 detector supports 2 energy thresholds. Threshold1 must always be lower in energy than threshold2. These can be independently enabled, but at least one of the thresholds must be enabled. If both are enabled then enabling ThresholdDiffEnable will result in the image being the difference of threshold1 - threshold2.

The following images were acquired with two radioactive sources placed in front of the detector. On the left is Fe55 which generates Mn Ka x-rays at about 5.9 keV. On the right is Cd109 which generates Ag Ka x-rays at about 23 keV. Threshold1 was set to 3.0 keV, about 50% of the Fe55 x-ray energy. Threshold2 was set to 11 keV, about 50% of the Cd109 x-ray energy.

This image was acquired with Threshold1Enable=Enable and Threshold2Enable=Disable. Note that both sources are detected because both are above 3 keV.

../_images/eigerThreshold1.png

This image was acquired with Threshold1Enable=Disable and Threshold2Enable=Enable. Note that the Fe55 source is not detected because it is below 11 keV.

../_images/eigerThreshold2.png

This image was acquired with Threshold1Enable=Enable and Threshold2Enable=Enable, and ThresholdDiffEnable=Enable. Note that only the Fe55 source is detected because any events that were above both 3 keV and 11 keV are discarded.

../_images/eigerThresholdDiff.png

Known Issues

Changing the Photon Energy

Changing the Photon Energy is a potentially slow operation, depending on the detector size. On the 16M it takes around ten seconds. Other parameters also take this long because they also affect the Photon Energy, namely Threshold Energy and Wavelength. The StatusMessage PV indicates when setting any of these parameters start and finish.

In order to prevent minute or accidental changes to Energy and Wavelength from taking too long to be applied, their values are only updated if the difference between the desired and current value is greater than some configurable parameters. Specifically, changes in Wavelength only take effect if they result in a difference greater than WavelengthEps (default: 0.0005 Angstroms). Similarly, changes to PhotonEnergy, Threshold and Threshold2 only take effect if they are greater than EnergyEps (default: 0.05 eV).

Status Parameters Polling

A few status parameters are read every time the ReadStatus PV is processed. A high rate polling causes issues, sometimes causing the detector to hang when, in conjunction, a parameter is set to an invalid value.

Internal Enable Mode

The Internal Enable mode is marked as experimental by Dectris. At the moment it is very flaky (firmware 1.5.0) and often doesn’t generate all the files it is supposed to.