# slsDetectorUsers Class Reference

Class for detector functionalitiesto embed the detector controls in the users custom interface e.g. EPICS, Lima etc. More...

`#include <slsDetectorUsers.h>`

List of all members.

## Public Member Functions

| slsDetectorUsers (int id=0)
| default constructor
virtual | ~slsDetectorUsers ()
| virtual destructor
string | getDetectorDeveloper ()
| useful to define subset of working functions
int | setOnline (int const online=-1)
| sets the onlineFlag
void | startMeasurement ()
| start measurement and acquires
int | stopMeasurement ()
| stop measurement
int | getDetectorStatus ()
| get run status
string | getFilePath ()
| returns the default output files path
string | setFilePath (string s)
| sets the default output files path
string | getFileName ()
string | setFileName (string s)
| sets the default output files path
int | getFileIndex ()
int | setFileIndex (int i)
| sets the default output file index
string | getFlatFieldCorrectionDir ()
| get flat field corrections file directory
string | setFlatFieldCorrectionDir (string dir)
| set flat field corrections file directory
string | getFlatFieldCorrectionFile ()
| get flat field corrections file name
int | setFlatFieldCorrectionFile (string fname="")
| set flat field correction file
int | enableFlatFieldCorrection (int i=-1)
| enable/disable flat field corrections (without changing file name)
int | enableCountRateCorrection (int i=-1)
| enable/disable count rate corrections
int | enablePixelMaskCorrection (int i=-1)
| enable/disable bad channel corrections
int | enableAngularConversion (int i=-1)
| enable/disable angular conversion
int | enableWriteToFile (int i=-1)
int | setPositions (int nPos, double *pos)
| set positions for the acquisition
int | getPositions (double *pos=NULL)
| get positions for the acquisition
int | setDetectorSize (int x0=-1, int y0=-1, int nx=-1, int ny=-1)
| sets the detector size
int | getDetectorSize (int &x0, int &y0, int &nx, int &ny)
| gets detector size
int | getMaximumDetectorSize (int &nx, int &ny)
| setsthe maximum detector size
int | setBitDepth (int i=-1)
| set/get dynamic range
int | setSettings (int isettings=-1)
| set detector settings
int | getThresholdEnergy ()
| get threshold energy
int | setThresholdEnergy (int e_eV)
| set threshold energy
int | getBeamEnergy ()
| get beam energy -- only for dectris!
int | setBeamEnergy (int e_eV)
| set beam energy -- only for dectris!
double | setExposureTime (double t=-1, bool inseconds=false)
| set/get exposure time value
double | setExposurePeriod (double t=-1, bool inseconds=false)
| set/get exposure period
double | setDelayAfterTrigger (double t=-1, bool inseconds=false)
| set/get delay after trigger
int64_t | setNumberOfGates (int64_t t=-1)
| set/get number of gates
int64_t | setNumberOfFrames (int64_t t=-1)
| set/get number of frames i.e. number of exposure per trigger
int64_t | setNumberOfCycles (int64_t t=-1)
| set/get number of cycles i.e. number of triggers
int | setTimingMode (int pol=-1)
| set/get the external communication mode
int | readConfigurationFile (string const fname)
| Reads the configuration file -- will contain all the informations needed for the configuration (e.g. for a PSI detector caldir, settingsdir, angconv, badchannels, hostname etc.).
int | dumpDetectorSetup (string const fname)
| Reads the parameters from the detector and writes them to file.
int | retrieveDetectorSetup (string const fname)
| Loads the detector setup from file.
string | getDetectorType ()
| useful for data plotting etc.
int | setReceiverMode (int n=-1)
| sets the mode by which gui requests data from receiver
void | registerDataCallback (int(*userCallback)(detectorData *d, int f, void *), void *pArg)
| register calbback for accessing detector final data
void | registerRawDataCallback (int(*userCallback)(double *p, int n, void *), void *pArg)
| register callback for accessing raw data - if the rawDataCallback is registered, no filewriting/postprocessing will be carried on automatically by the software - the raw data are deleted by the software
virtual void | initDataset (int refresh)
| function to initalize a set of measurements (reset binning if angular conversion, reset summing otherwise) - can be overcome by the user's functions thanks to the virtual property
virtual void | addFrame (double *data, double pos, double i0, double t, string fname, double var)
| adds frame to merging/summation - can be overcome by the user's functions thanks to the virtual property
virtual void | finalizeDataset (double *a, double *v, double *e, int &np)
| finalizes the data set returning the array of angles, values and errors to be used as final data - can be overcome by the user's functions thanks to the virtual property
int64_t | getModuleFirmwareVersion ()
int64_t | getModuleSerialNumber (int imod=-1)
int64_t | getDetectorFirmwareVersion ()
int64_t | getDetectorSerialNumber ()
int64_t | getDetectorSoftwareVersion ()
int64_t | getThisSoftwareVersion ()
void | registerAcquisitionFinishedCallback (int(*func)(double, int, void *), void *pArg)
| register calbback for accessing detector final data
void | registerGetPositionCallback (double(*func)(void *), void *arg)
| register calbback for reading detector position
void | registerConnectChannelsCallback (int(*func)(void *), void *arg)
| register callback for connecting to the epics channels
void | registerDisconnectChannelsCallback (int(*func)(void *), void *arg)
| register callback to disconnect the epics channels
void | registerGoToPositionCallback (int(*func)(double, void *), void *arg)
| register callback for moving the detector
void | registerGoToPositionNoWaitCallback (int(*func)(double, void *), void *arg)
| register callback for moving the detector without waiting
void | registerGetI0Callback (double(*func)(int, void *), void *arg)
| register calbback reading to I0
string | putCommand (int narg, char *args[], int pos=-1)
| sets parameters in command interface http://www.psi.ch/detectors/UsersSupportEN/slsDetectorClientHowTo.pdf
string | getCommand (int narg, char *args[], int pos=-1)
| gets parameters in command interface http://www.psi.ch/detectors/UsersSupportEN/slsDetectorClientHowTo.pdf

## Static Public Member Functions

static string | runStatusType (int s)
| returns string from run status index
static int | getDetectorSettings (string s)
| returns detector settings string from index
static string | getDetectorSettings (int s)
| returns detector settings string from index
static string | getTimingMode (int f)
| returns external communication mode string from index
static int | getTimingMode (string s)
| returns external communication mode string from index

## Detailed Description

Class for detector functionalitiesto embed the detector controls in the users custom interface e.g. EPICS, Lima etc.

Definition at line 84 of file slsDetectorUsers.h.

## Constructor & Destructor Documentation

slsDetectorUsers::slsDetectorUsers | ( | int | id = `0` | ) |

default constructor

virtual slsDetectorUsers::~slsDetectorUsers | ( |  | ) | `[virtual]`

virtual destructor

## Member Function Documentation

virtual void slsDetectorUsers::addFrame | ( | double * | data,
|  | double | pos,
|  | double | i0,
|  | double | t,
|  | string | fname,
|  | double | var |
| ) |  |  | `[virtual]`

adds frame to merging/summation - can be overcome by the user's functions thanks to the virtual property

Parameters:

  | data | pointer to the raw data
  | pos | encoder position
  | i0 | beam monitor readout for intensity normalization (if 0 not performed)
  | t | exposure time in seconds, required only if rate corrections
  | fname | file name (unused since filewriting would be performed by the user)
  | var | optional parameter - unused.

int slsDetectorUsers::dumpDetectorSetup | ( | string const | fname | ) |

Reads the parameters from the detector and writes them to file.

Parameters:

  | fname | file to write to

Returns:
  OK or FAIL

int slsDetectorUsers::enableAngularConversion | ( | int | i = `-1` | ) |

enable/disable angular conversion

Parameters:

  | i | 0 disables, 1 enables, -1 gets

Returns:
  0 if angular conversion disabled, 1 if enabled

int slsDetectorUsers::enableCountRateCorrection | ( | int | i = `-1` | ) |

enable/disable count rate corrections

Parameters:

  | i | 0 disables, 1 enable, -1 gets

Returns:
  0 if count corrections disabled, 1 if enabled

int slsDetectorUsers::enableFlatFieldCorrection | ( | int | i = `-1` | ) |

enable/disable flat field corrections (without changing file name)

Parameters:

  | i | 0 disables, 1 enables, -1 gets

Returns:
  0 if ff corrections disabled, 1 if enabled

int slsDetectorUsers::enablePixelMaskCorrection | ( | int | i = `-1` | ) |

enable/disable bad channel corrections

Parameters:

  | i | 0 disables, 1 enables, -1 gets

Returns:
  0 if bad channels corrections disabled, 1 if enabled

int slsDetectorUsers::enableWriteToFile | ( | int | i = `-1` | ) |

Enable write file function included

virtual void slsDetectorUsers::finalizeDataset | ( | double * | a,
|  | double * | v,
|  | double * | e,
|  | int & | np |
| ) |  |  | `[virtual]`

finalizes the data set returning the array of angles, values and errors to be used as final data - can be overcome by the user's functions thanks to the virtual property

Parameters:

  | a | pointer to the array of angles - can be null if no angular coversion is required
  | v | pointer to the array of values
  | e | pointer to the array of errors
  | np | reference returning the number of points

int slsDetectorUsers::getBeamEnergy | ( |  | ) |

get beam energy -- only for dectris!

Returns:
  current beam energy

string slsDetectorUsers::getCommand | ( | int | narg,
|  | char * | args[],
|  | int | pos = `-1` |
| ) |  |  |

gets parameters in command interface http://www.psi.ch/detectors/UsersSupportEN/slsDetectorClientHowTo.pdf

Parameters:

  | narg | value to be set
  | args | value to be set
  | pos | position of detector in multislsdetector list

Returns:
  answer string

Referenced by main().

string slsDetectorUsers::getDetectorDeveloper | ( |  | ) |

useful to define subset of working functions

Returns:
  "PSI" or "Dectris"

Referenced by main().

int64_t slsDetectorUsers::getDetectorFirmwareVersion | ( |  | ) |

get get Detector Firmware Version

Returns:
  id

int64_t slsDetectorUsers::getDetectorSerialNumber | ( |  | ) |

get get Detector Serial Number

Returns:
  id

static string slsDetectorUsers::getDetectorSettings | ( | int | s | ) | `[inline, static]`

returns detector settings string from index

Parameters:

  | s | settings index

Returns:
  standard, fast, highgain, dynamicgain, lowgain, mediumgain, veryhighgain, undefined when wrong index

Definition at line 589 of file slsDetectorUsers.h.

static int slsDetectorUsers::getDetectorSettings | ( | string | s | ) | `[inline, static]`

returns detector settings string from index

Parameters:

  | s | can be standard, fast, highgain, dynamicgain, lowgain, mediumgain, veryhighgain

Returns:
  setting index (-1 unknown string)

Definition at line 575 of file slsDetectorUsers.h.

Referenced by main().

int slsDetectorUsers::getDetectorSize | ( | int & | x0,
|  | int & | y0,
|  | int & | nx,
|  | int & | ny |
| ) |  |  |

gets detector size

Parameters:

  | x0 | horizontal position origin in channel number
  | y0 | vertical position origin in channel number
  | nx | number of channels in horiziontal
  | ny | number of channels in vertical

Returns:
  OK/FAIL

Referenced by main().

int64_t slsDetectorUsers::getDetectorSoftwareVersion | ( |  | ) |

get get Detector Software Version

Returns:
  id

int slsDetectorUsers::getDetectorStatus | ( |  | ) |

get run status

Returns:
  status mask

Referenced by main().

string slsDetectorUsers::getDetectorType | ( |  | ) |

useful for data plotting etc.

Returns:
  Mythen, Eiger, Gotthard etc.

int slsDetectorUsers::getFileIndex | ( |  | ) |

Returns:
  the default output file index

string slsDetectorUsers::getFileName | ( |  | ) |

Returns:
  the default output files root name

string slsDetectorUsers::getFilePath | ( |  | ) |

returns the default output files path

string slsDetectorUsers::getFlatFieldCorrectionDir | ( |  | ) |

get flat field corrections file directory

Returns:
  flat field correction file directory

string slsDetectorUsers::getFlatFieldCorrectionFile | ( |  | ) |

get flat field corrections file name

Returns:
  flat field correction file name

int slsDetectorUsers::getMaximumDetectorSize | ( | int & | nx,
|  | int & | ny |
| ) |  |  |

setsthe maximum detector size

Parameters:

  | x0 | horizontal position origin in channel number
  | y0 | vertical position origin in channel number
  | nx | number of channels in horiziontal
  | ny | number of channels in vertical

Returns:
  OK/FAIL

int64_t slsDetectorUsers::getModuleFirmwareVersion | ( |  | ) |

get get Module Firmware Version

Returns:
  id

int64_t slsDetectorUsers::getModuleSerialNumber | ( | int | imod = `-1` | ) |

get get Module Serial Number

Parameters:

  | imod | module number

Returns:
  id

int slsDetectorUsers::getPositions | ( | double * | pos = `NULL` | ) |

get positions for the acquisition

Parameters:

  | pos | array which will contain the encoder positions

Returns:
  number of positions

int64_t slsDetectorUsers::getThisSoftwareVersion | ( |  | ) |

get this Software Version

Returns:
  id

int slsDetectorUsers::getThresholdEnergy | ( |  | ) |

get threshold energy

Returns:
  current threshold value for imod in ev (-1 failed)

static int slsDetectorUsers::getTimingMode | ( | string | s | ) | `[inline, static]`

returns external communication mode string from index

Parameters:

  | f | index for communication mode

Returns:
  auto, trigger, ro_trigger, gating, triggered_gating, unknown when wrong mode

Definition at line 625 of file slsDetectorUsers.h.

static string slsDetectorUsers::getTimingMode | ( | int | f | ) | `[inline, static]`

returns external communication mode string from index

Parameters:

  | f | index for communication mode

Returns:
  auto, trigger, ro_trigger, gating, triggered_gating, unknown when wrong mode

Definition at line 609 of file slsDetectorUsers.h.

virtual void slsDetectorUsers::initDataset | ( | int | refresh | ) | `[virtual]`

function to initalize a set of measurements (reset binning if angular conversion, reset summing otherwise) - can be overcome by the user's functions thanks to the virtual property

Parameters:

  | refresh | if 1, all parameters like ffcoefficients, badchannels, ratecorrections etc. are reset (should be called at least onece with this option), if 0 simply reset merging/ summation

string slsDetectorUsers::putCommand | ( | int | narg,
|  | char * | args[],
|  | int | pos = `-1` |
| ) |  |  |

sets parameters in command interface http://www.psi.ch/detectors/UsersSupportEN/slsDetectorClientHowTo.pdf

Parameters:

  | narg | value to be set
  | args | value to be set
  | pos | position of detector in multislsdetector list

Returns:
  answer string

int slsDetectorUsers::readConfigurationFile | ( | string const | fname | ) |

Reads the configuration file -- will contain all the informations needed for the configuration (e.g. for a PSI detector caldir, settingsdir, angconv, badchannels, hostname etc.).

Parameters:

  | fname | file name

Returns:
  OK or FAIL

Referenced by main().

void slsDetectorUsers::registerAcquisitionFinishedCallback | ( | int(*)(double, int, void *) | func,
|  | void * | pArg |
| ) |  |  |

register calbback for accessing detector final data

Parameters:

  | func | function to be called at the end of the acquisition. gets detector status and progress index as arguments

void slsDetectorUsers::registerConnectChannelsCallback | ( | int(*)(void *) | func,
|  | void * | arg |
| ) |  |  |

register callback for connecting to the epics channels

Parameters:

  | func | function for connecting to the epics channels

void slsDetectorUsers::registerDataCallback | ( | int(*)(detectorData *d, int f, void *) | userCallback,
|  | void * | pArg |
| ) |  |  |

register calbback for accessing detector final data

Parameters:

  | userCallback | function for plotting/analyzing the data. Its arguments are the data structure d and the frame number f.

Referenced by main().

void slsDetectorUsers::registerDisconnectChannelsCallback | ( | int(*)(void *) | func,
|  | void * | arg |
| ) |  |  |

register callback to disconnect the epics channels

Parameters:

  | func | function to disconnect the epics channels

void slsDetectorUsers::registerGetI0Callback | ( | double(*)(int, void *) | func,
|  | void * | arg |
| ) |  |  |

register calbback reading to I0

Parameters:

  | func | function for reading the I0 (called with parameter 0 before the acquisition, 1 after and the return value used as I0)

void slsDetectorUsers::registerGetPositionCallback | ( | double(*)(void *) | func,
|  | void * | arg |
| ) |  |  |

register calbback for reading detector position

Parameters:

  | func | function for reading the detector position

void slsDetectorUsers::registerGoToPositionCallback | ( | int(*)(double, void *) | func,
|  | void * | arg |
| ) |  |  |

register callback for moving the detector

Parameters:

  | func | function for moving the detector

void slsDetectorUsers::registerGoToPositionNoWaitCallback | ( | int(*)(double, void *) | func,
|  | void * | arg |
| ) |  |  |

register callback for moving the detector without waiting

Parameters:

  | func | function for moving the detector

void slsDetectorUsers::registerRawDataCallback | ( | int(*)(double *p, int n, void *) | userCallback,
|  | void * | pArg |
| ) |  |  |

register callback for accessing raw data - if the rawDataCallback is registered, no filewriting/postprocessing will be carried on automatically by the software - the raw data are deleted by the software

Parameters:

  | userCallback | function for postprocessing and saving the data - p is the pointer to the data, n is the number of channels

int slsDetectorUsers::retrieveDetectorSetup | ( | string const | fname | ) |

Loads the detector setup from file.

Parameters:

  | fname | file to read from

Returns:
  OK or FAIL

Referenced by main().

static string slsDetectorUsers::runStatusType | ( | int | s | ) | `[inline, static]`

returns string from run status index

Parameters:

  | s | run status index

Returns:
  string error, waiting, running, data, finished or unknown when wrong index

Definition at line 557 of file slsDetectorUsers.h.

Referenced by main().

int slsDetectorUsers::setBeamEnergy | ( | int | e_eV | ) |

set beam energy -- only for dectris!

Parameters:

  | e_eV | beam in eV

Returns:
  current beam energyin ev (-1 failed)

int slsDetectorUsers::setBitDepth | ( | int | i = `-1` | ) |

set/get dynamic range

Parameters:

  | i | dynamic range (-1 get)

Returns:
  current dynamic range

double slsDetectorUsers::setDelayAfterTrigger | ( | double | t = `-1`,
|  | bool | inseconds = `false` |
| ) |  |  |

set/get delay after trigger

Parameters:

  | t | time in ns (-1 gets)
  | inseconds | true if the value is in s, else ns

Returns:
  timer set value in ns, or s if specified

int slsDetectorUsers::setDetectorSize | ( | int | x0 = `-1`,
|  | int | y0 = `-1`,
|  | int | nx = `-1`,
|  | int | ny = `-1` |
| ) |  |  |

sets the detector size

Parameters:

  | x0 | horizontal position origin in channel number (-1 unchanged)
  | y0 | vertical position origin in channel number (-1 unchanged)
  | nx | number of channels in horiziontal (-1 unchanged)
  | ny | number of channels in vertical (-1 unchanged)

Returns:
  OK/FAIL

Referenced by main().

double slsDetectorUsers::setExposurePeriod | ( | double | t = `-1`,
|  | bool | inseconds = `false` |
| ) |  |  |

set/get exposure period

Parameters:

  | t | time in ns (-1 gets)
  | inseconds | true if the value is in s, else ns

Returns:
  timer set value in ns, or s if specified

Referenced by main().

double slsDetectorUsers::setExposureTime | ( | double | t = `-1`,
|  | bool | inseconds = `false` |
| ) |  |  |

set/get exposure time value

Parameters:

  | t | time in sn (-1 gets)
  | inseconds | true if the value is in s, else ns

Returns:
  timer set value in ns, or s if specified

Referenced by main().

int slsDetectorUsers::setFileIndex | ( | int | i | ) |

sets the default output file index

Parameters:

  | i | file index

Returns:
  the default output file index

string slsDetectorUsers::setFileName | ( | string | s | ) |

sets the default output files path

Parameters:

  | s | file name

Returns:
  the default output files root name

string slsDetectorUsers::setFilePath | ( | string | s | ) |

sets the default output files path

Parameters:

  | s | file path

Returns:
  file path

string slsDetectorUsers::setFlatFieldCorrectionDir | ( | string | dir | ) |

set flat field corrections file directory

Parameters:

  | dir | flat field correction file directory

Returns:
  flat field correction file directory

int slsDetectorUsers::setFlatFieldCorrectionFile | ( | string | fname = `""` | ) |

set flat field correction file

Parameters:

  | fname | name of the flat field file (or "" if disable)

Returns:
  0 if disable (or file could not be read), >0 otherwise

int64_t slsDetectorUsers::setNumberOfCycles | ( | int64_t | t = `-1` | ) |

set/get number of cycles i.e. number of triggers

Parameters:

  | t | number of frames (-1 gets)

Returns:
  number of frames

int64_t slsDetectorUsers::setNumberOfFrames | ( | int64_t | t = `-1` | ) |

set/get number of frames i.e. number of exposure per trigger

Parameters:

  | t | number of frames (-1 gets)

Returns:
  number of frames

Referenced by main().

int64_t slsDetectorUsers::setNumberOfGates | ( | int64_t | t = `-1` | ) |

set/get number of gates

Parameters:

  | t | number of gates (-1 gets)

Returns:
  number of gates

int slsDetectorUsers::setOnline | ( | int const | online = `-1` | ) |

sets the onlineFlag

Parameters:

  | online | can be: -1 returns wether the detector is in online (1) or offline (0) state; 0 detector in offline state; 1 detector in online state

Returns:
  0 (offline) or 1 (online)

Referenced by main().

int slsDetectorUsers::setPositions | ( | int | nPos,
|  | double * | pos |
| ) |  |  |

set positions for the acquisition

Parameters:

  | nPos | number of positions
  | pos | array with the encoder positions

Returns:
  number of positions

int slsDetectorUsers::setReceiverMode | ( | int | n = `-1` | ) |

sets the mode by which gui requests data from receiver

Parameters:

  | n | is 0 for random requests for fast acquisitions and greater than 0 for nth read requests

Returns:
  the mode set in the receiver

int slsDetectorUsers::setSettings | ( | int | isettings = `-1` | ) |

set detector settings

Parameters:

  | isettings | settings index (-1 gets)

Returns:
  current settings

Referenced by main().

int slsDetectorUsers::setThresholdEnergy | ( | int | e_eV | ) |

set threshold energy

Parameters:

  | e_eV | threshold in eV

Returns:
  current threshold value for imod in ev (-1 failed)

int slsDetectorUsers::setTimingMode | ( | int | pol = `-1` | ) |

set/get the external communication mode

Parameters:

  | pol | value to be set

See also:
  getTimingMode

Returns:
  current external communication mode

void slsDetectorUsers::startMeasurement | ( |  | ) |

start measurement and acquires

Returns:
  OK/FAIL

Referenced by main().

int slsDetectorUsers::stopMeasurement | ( |  | ) |

stop measurement

Returns:
  OK/FAIL

The documentation for this class was generated from the following file:

- slsDetectorUsers.h