Class for detector functionalitiesto embed the detector controls in the users custom interface e.g. EPICS, Lima etc. More...
#include <slsDetectorUsers.h>
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 | |
int | setReceiverOnline (int const online=-1) |
sets the receivers 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 | |
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, int s, void *), void *pArg) |
register calbback for accessing detector final data, also enables data streaming in client and receiver (if receiver exists) | |
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 | |
int | enableDataStreamingFromReceiver (int i=-1) |
int | enableDataStreamingToClient (int i=-1) |
int | setReceiverDataStreamingOutPort (int i=-1) |
int | setClientDataStreamingInPort (int i=-1) |
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 | |
int | setClockDivider (int value) |
sets clock divider of detector | |
int | setParallelMode (int value) |
sets parallel mode | |
int | setAllTrimbits (int val, int id=-1) |
sets all trimbits to value (only available for eiger) | |
int | setDAC (string dac, int val, int id=-1) |
set dac value | |
int | getADC (string adc, int id=-1) |
get adc value | |
int | startReceiver () |
start receiver listening mode | |
int | stopReceiver () |
stop receiver listening mode | |
int | startAcquisition () |
int | stopAcquisition () |
int | setReceiverSilentMode (int i) |
int | setHighVoltage (int i) |
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 |
Class for detector functionalitiesto embed the detector controls in the users custom interface e.g. EPICS, Lima etc.
The slsDetectorUsers class is a minimal interface class which should be instantiated by the users in their acquisition software (EPICS, spec etc.). More advanced configuration functions are not implemented and can be written in a configuration or parameters file that can be read/written.
Definition at line 85 of file slsDetectorUsers.h.
slsDetectorUsers::slsDetectorUsers | ( | int | id = 0 |
) |
default constructor
virtual slsDetectorUsers::~slsDetectorUsers | ( | ) | [virtual] |
virtual destructor
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
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.
fname | file to write to |
int slsDetectorUsers::enableAngularConversion | ( | int | i = -1 |
) |
enable/disable angular conversion
i | 0 disables, 1 enables, -1 gets |
int slsDetectorUsers::enableCountRateCorrection | ( | int | i = -1 |
) |
enable/disable count rate corrections
i | 0 disables, 1 enables with default values, -1 gets |
int slsDetectorUsers::enableDataStreamingFromReceiver | ( | int | i = -1 |
) |
Enable or disable streaming data from receiver (creates transmitting sockets)
enable | 0 to disable 1 to enable -1 to only get the value |
int slsDetectorUsers::enableDataStreamingToClient | ( | int | i = -1 |
) |
Enable data streaming to client (creates receiving sockets)
i | 0 to disable, 1 to enable, -1 to get the value |
int slsDetectorUsers::enableFlatFieldCorrection | ( | int | i = -1 |
) |
enable/disable flat field corrections (without changing file name)
i | 0 disables, 1 enables, -1 gets |
int slsDetectorUsers::enablePixelMaskCorrection | ( | int | i = -1 |
) |
enable/disable bad channel corrections
i | 0 disables, 1 enables, -1 gets |
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
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::getADC | ( | string | adc, | |
int | id = -1 | |||
) |
get adc value
adc | adc as string. can be temp_fpga, temp_fpgaext, temp_10ge, temp_dcdc, temp_sodl, temp_sodr, temp_fpgafl, temp_fpgafr. others not supported | |
id | module index (-1 for all) |
string slsDetectorUsers::getCommand | ( | int | narg, | |
char * | args[], | |||
int | pos = -1 | |||
) |
gets parameters in command interface http://www.psi.ch/detectors/UsersSupportEN/slsDetectorClientHowTo.pdf
narg | value to be set | |
args | value to be set | |
pos | position of detector in multislsdetector list |
string slsDetectorUsers::getDetectorDeveloper | ( | ) |
useful to define subset of working functions
int64_t slsDetectorUsers::getDetectorFirmwareVersion | ( | ) |
get get Detector Firmware Version
int64_t slsDetectorUsers::getDetectorSerialNumber | ( | ) |
get get Detector Serial Number
static string slsDetectorUsers::getDetectorSettings | ( | int | s | ) | [inline, static] |
returns detector settings string from index
s | settings index |
Definition at line 698 of file slsDetectorUsers.h.
static int slsDetectorUsers::getDetectorSettings | ( | string | s | ) | [inline, static] |
returns detector settings string from index
s | can be standard, fast, highgain, dynamicgain, lowgain, mediumgain, veryhighgain |
Definition at line 684 of file slsDetectorUsers.h.
int slsDetectorUsers::getDetectorSize | ( | int & | x0, | |
int & | y0, | |||
int & | nx, | |||
int & | ny | |||
) |
gets detector size
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 |
int64_t slsDetectorUsers::getDetectorSoftwareVersion | ( | ) |
get get Detector Software Version
int slsDetectorUsers::getDetectorStatus | ( | ) |
get run status
string slsDetectorUsers::getDetectorType | ( | ) |
useful for data plotting etc.
int slsDetectorUsers::getFileIndex | ( | ) |
string slsDetectorUsers::getFileName | ( | ) |
string slsDetectorUsers::getFilePath | ( | ) |
returns the default output files path
string slsDetectorUsers::getFlatFieldCorrectionDir | ( | ) |
get flat field corrections file directory
string slsDetectorUsers::getFlatFieldCorrectionFile | ( | ) |
get flat field corrections file name
int slsDetectorUsers::getMaximumDetectorSize | ( | int & | nx, | |
int & | ny | |||
) |
setsthe maximum detector size
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 |
int64_t slsDetectorUsers::getModuleFirmwareVersion | ( | ) |
get get Module Firmware Version
int64_t slsDetectorUsers::getModuleSerialNumber | ( | int | imod = -1 |
) |
get get Module Serial Number
imod | module number |
int slsDetectorUsers::getPositions | ( | double * | pos = NULL |
) |
get positions for the acquisition
pos | array which will contain the encoder positions |
int64_t slsDetectorUsers::getThisSoftwareVersion | ( | ) |
get this Software Version
int slsDetectorUsers::getThresholdEnergy | ( | ) |
get threshold energy
static int slsDetectorUsers::getTimingMode | ( | string | s | ) | [inline, static] |
returns external communication mode string from index
s | index for communication mode |
Definition at line 734 of file slsDetectorUsers.h.
static string slsDetectorUsers::getTimingMode | ( | int | f | ) | [inline, static] |
returns external communication mode string from index
f | index for communication mode |
Definition at line 718 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
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
narg | value to be set | |
args | value to be set | |
pos | position of detector in multislsdetector list |
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.).
fname | file name |
void slsDetectorUsers::registerAcquisitionFinishedCallback | ( | int(*)(double, int, void *) | func, | |
void * | pArg | |||
) |
register calbback for accessing detector final data
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
func | function for connecting to the epics channels |
void slsDetectorUsers::registerDataCallback | ( | int(*)(detectorData *d, int f, int s, void *) | userCallback, | |
void * | pArg | |||
) |
register calbback for accessing detector final data, also enables data streaming in client and receiver (if receiver exists)
userCallback | function for plotting/analyzing the data. Its arguments are the data structure d and the frame number f, s is for subframe number for eiger for 32 bit mode |
void slsDetectorUsers::registerDisconnectChannelsCallback | ( | int(*)(void *) | func, | |
void * | arg | |||
) |
register callback to disconnect the epics channels
func | function to disconnect the epics channels |
void slsDetectorUsers::registerGetI0Callback | ( | double(*)(int, void *) | func, | |
void * | arg | |||
) |
register calbback reading to I0
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
func | function for reading the detector position |
void slsDetectorUsers::registerGoToPositionCallback | ( | int(*)(double, void *) | func, | |
void * | arg | |||
) |
register callback for moving the detector
func | function for moving the detector |
void slsDetectorUsers::registerGoToPositionNoWaitCallback | ( | int(*)(double, void *) | func, | |
void * | arg | |||
) |
register callback for moving the detector without waiting
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
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.
fname | file to read from |
static string slsDetectorUsers::runStatusType | ( | int | s | ) | [inline, static] |
returns string from run status index
s | run status index |
Definition at line 666 of file slsDetectorUsers.h.
int slsDetectorUsers::setAllTrimbits | ( | int | val, | |
int | id = -1 | |||
) |
sets all trimbits to value (only available for eiger)
val | value to be set (-1 gets) | |
id | module index (-1 for all) |
int slsDetectorUsers::setBitDepth | ( | int | i = -1 |
) |
set/get dynamic range
i | dynamic range (-1 get) |
int slsDetectorUsers::setClientDataStreamingInPort | ( | int | i = -1 |
) |
(for expert users) Set/Get client streaming in ZMQ port For multi modules, it calculates (increments), sets the ports and restarts the sockets
i | sets, -1 gets |
int slsDetectorUsers::setClockDivider | ( | int | value | ) |
sets clock divider of detector
value | value to be set (-1 gets) |
int slsDetectorUsers::setDAC | ( | string | dac, | |
int | val, | |||
int | id = -1 | |||
) |
set dac value
dac | dac as string. can be vcmp_ll, vcmp_lr, vcmp_rl, vcmp_rr, vthreshold, vrf, vrs, vtr, vcall, vcp. others not supported | |
val | value to be set (-1 gets) | |
id | module index (-1 for all) |
double slsDetectorUsers::setDelayAfterTrigger | ( | double | t = -1 , |
|
bool | inseconds = false | |||
) |
set/get delay after trigger
t | time in ns (-1 gets) | |
inseconds | true if the value is in s, else ns |
int slsDetectorUsers::setDetectorSize | ( | int | x0 = -1 , |
|
int | y0 = -1 , |
|||
int | nx = -1 , |
|||
int | ny = -1 | |||
) |
sets the detector size
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) |
double slsDetectorUsers::setExposurePeriod | ( | double | t = -1 , |
|
bool | inseconds = false | |||
) |
set/get exposure period
t | time in ns (-1 gets) | |
inseconds | true if the value is in s, else ns |
double slsDetectorUsers::setExposureTime | ( | double | t = -1 , |
|
bool | inseconds = false | |||
) |
set/get exposure time value
t | time in sn (-1 gets) | |
inseconds | true if the value is in s, else ns |
int slsDetectorUsers::setFileIndex | ( | int | i | ) |
sets the default output file index
i | file index |
string slsDetectorUsers::setFileName | ( | string | s | ) |
sets the default output files path
s | file name |
string slsDetectorUsers::setFilePath | ( | string | s | ) |
sets the default output files path
s | file path |
string slsDetectorUsers::setFlatFieldCorrectionDir | ( | string | dir | ) |
set flat field corrections file directory
dir | flat field correction file directory |
int slsDetectorUsers::setFlatFieldCorrectionFile | ( | string | fname = "" |
) |
set flat field correction file
fname | name of the flat field file (or "" if disable) |
int slsDetectorUsers::setHighVoltage | ( | int | i | ) |
set high voltage
i | > 0 sets, 0 unsets, (-1 gets) |
int64_t slsDetectorUsers::setNumberOfCycles | ( | int64_t | t = -1 |
) |
set/get number of cycles i.e. number of triggers
t | number of frames (-1 gets) |
int64_t slsDetectorUsers::setNumberOfFrames | ( | int64_t | t = -1 |
) |
set/get number of frames i.e. number of exposure per trigger
t | number of frames (-1 gets) |
int64_t slsDetectorUsers::setNumberOfGates | ( | int64_t | t = -1 |
) |
set/get number of gates
t | number of gates (-1 gets) |
int slsDetectorUsers::setOnline | ( | int const | online = -1 |
) |
sets the onlineFlag
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 |
int slsDetectorUsers::setParallelMode | ( | int | value | ) |
sets parallel mode
value | 0 for non parallel, 1 for parallel, 2 for safe mode (-1 gets) |
int slsDetectorUsers::setPositions | ( | int | nPos, | |
double * | pos | |||
) |
set positions for the acquisition
nPos | number of positions | |
pos | array with the encoder positions |
int slsDetectorUsers::setReceiverDataStreamingOutPort | ( | int | i = -1 |
) |
(for expert users) Set/Get receiver streaming out ZMQ port For multi modules, it calculates (increments), sets the ports and restarts the sockets
i | sets, -1 gets |
int slsDetectorUsers::setReceiverMode | ( | int | n = -1 |
) |
sets the mode by which gui requests data from receiver
n | is 0 for random requests for fast acquisitions and greater than 0 for nth read requests |
int slsDetectorUsers::setReceiverOnline | ( | int const | online = -1 |
) |
sets the receivers onlineFlag
online | can be: -1 returns wether the receiver is in online (1) or offline (0) state; 0 receiver in offline state; 1 receiver in online state |
int slsDetectorUsers::setReceiverSilentMode | ( | int | i | ) |
set receiver in silent mode
i | 1 sets, 0 unsets (-1 gets) |
int slsDetectorUsers::setSettings | ( | int | isettings = -1 |
) |
set detector settings
isettings | settings index (-1 gets) |
int slsDetectorUsers::setThresholdEnergy | ( | int | e_eV | ) |
set threshold energy
e_eV | threshold in eV |
int slsDetectorUsers::setTimingMode | ( | int | pol = -1 |
) |
set/get the external communication mode
pol | value to be set |
int slsDetectorUsers::startAcquisition | ( | ) |
start detector real time acquisition in non blocking mode does not include scans, scripts, incrementing file index, s tarting/stopping receiver, resetting frames caught in receiver
void slsDetectorUsers::startMeasurement | ( | ) |
start measurement and acquires
int slsDetectorUsers::startReceiver | ( | ) |
start receiver listening mode
returns | OK or FAIL |
int slsDetectorUsers::stopAcquisition | ( | ) |
stop detector real time acquisition
int slsDetectorUsers::stopMeasurement | ( | ) |
stop measurement
int slsDetectorUsers::stopReceiver | ( | ) |
stop receiver listening mode
returns | OK or FAIL |