mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-07 18:40:42 +02:00
clang-format on multi detector
This commit is contained in:
parent
500304024d
commit
ff440f1325
File diff suppressed because it is too large
Load Diff
@ -2,13 +2,14 @@
|
||||
#define MULTI_SLS_DETECTOR_H
|
||||
|
||||
/**
|
||||
@libdoc The multiSlsDetector class is used to operate several slsDetectors in parallel.
|
||||
@libdoc The multiSlsDetector class is used to operate several slsDetectors in
|
||||
parallel.
|
||||
* @short This is the base class for multi detector system functionalities
|
||||
* @author Anna Bergamaschi
|
||||
*/
|
||||
|
||||
#include "sls_detector_defs.h"
|
||||
#include "error_defs.h"
|
||||
#include "sls_detector_defs.h"
|
||||
|
||||
class slsDetector;
|
||||
class SharedMemory;
|
||||
@ -16,28 +17,28 @@ class ZmqSocket;
|
||||
class detectorData;
|
||||
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <thread>
|
||||
#include <mutex>
|
||||
#include <semaphore.h>
|
||||
|
||||
#include <string>
|
||||
#include <thread>
|
||||
#include <vector>
|
||||
|
||||
#define MULTI_SHMVERSION 0x181002
|
||||
#define SHORT_STRING_LENGTH 50
|
||||
#define DATE_LENGTH 30
|
||||
|
||||
class multiSlsDetector : public virtual slsDetectorDefs, public virtual errorDefs {
|
||||
class multiSlsDetector : public virtual slsDetectorDefs,
|
||||
public virtual errorDefs {
|
||||
|
||||
private:
|
||||
|
||||
/**
|
||||
* @short structure allocated in shared memory to store detector settings for IPC and cache
|
||||
* @short structure allocated in shared memory to store detector settings
|
||||
* for IPC and cache
|
||||
*/
|
||||
typedef struct sharedMultiSlsDetector {
|
||||
|
||||
|
||||
/* FIXED PATTERN FOR STATIC FUNCTIONS. DO NOT CHANGE, ONLY APPEND ------*/
|
||||
/* FIXED PATTERN FOR STATIC FUNCTIONS. DO NOT CHANGE, ONLY APPEND
|
||||
* ------*/
|
||||
|
||||
/** shared memory version */
|
||||
int shmversion;
|
||||
@ -54,10 +55,8 @@ private:
|
||||
/** number of sls detectors in shared memory */
|
||||
int numberOfDetectors;
|
||||
|
||||
/** END OF FIXED PATTERN -----------------------------------------------*/
|
||||
|
||||
|
||||
|
||||
/** END OF FIXED PATTERN
|
||||
* -----------------------------------------------*/
|
||||
|
||||
/** Number of detectors operated at once */
|
||||
int numberOfDetector[2];
|
||||
@ -102,7 +101,6 @@ private:
|
||||
/** timer values */
|
||||
int64_t timerValue[MAX_TIMERS];
|
||||
|
||||
|
||||
/** flag for acquiring */
|
||||
bool acquiringFlag;
|
||||
|
||||
@ -115,16 +113,12 @@ private:
|
||||
|
||||
} sharedMultiSlsDetector;
|
||||
|
||||
|
||||
|
||||
|
||||
public:
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param id multi detector id
|
||||
* @param verify true to verify if shared memory version matches existing one
|
||||
* @param verify true to verify if shared memory version matches existing
|
||||
* one
|
||||
* @param update true to update last user pid, date etc
|
||||
*/
|
||||
multiSlsDetector(int id = 0, bool verify = true, bool update = true);
|
||||
@ -137,7 +131,8 @@ public:
|
||||
/**
|
||||
* Creates/open shared memory, initializes detector structure and members
|
||||
* Called by constructor/ set hostname / read config file
|
||||
* @param verify true to verify if shared memory version matches existing one
|
||||
* @param verify true to verify if shared memory version matches existing
|
||||
* one
|
||||
* @param update true to update last user pid, date etc
|
||||
*/
|
||||
void setupMultiDetector(bool verify = true, bool update = true);
|
||||
@ -154,16 +149,19 @@ public:
|
||||
* and return a vector of results
|
||||
*/
|
||||
template <typename RT, typename... CT>
|
||||
std::vector<RT> parallelCall(RT (slsDetector::*somefunc)(CT...), CT... Args);
|
||||
std::vector<RT> parallelCall(RT (slsDetector::*somefunc)(CT...),
|
||||
CT... Args);
|
||||
|
||||
/**
|
||||
* If specific position, then provide result with that detector at position pos
|
||||
* else concatenate the result of all detectors
|
||||
* If specific position, then provide result with that detector at position
|
||||
* pos else concatenate the result of all detectors
|
||||
* @param somefunc function pointer
|
||||
* @param pos positin of detector in array (-1 is for all)
|
||||
* @returns result for detector at that position or concatenated string of all detectors
|
||||
* @returns result for detector at that position or concatenated string of
|
||||
* all detectors
|
||||
*/
|
||||
// std::string concatResultOrPos(std::string (slsDetector::*somefunc)(int), int pos);
|
||||
// std::string concatResultOrPos(std::string (slsDetector::*somefunc)(int),
|
||||
// int pos);
|
||||
|
||||
/**
|
||||
* Decodes which detector and the corresponding channel numbers for it
|
||||
@ -282,23 +280,25 @@ public:
|
||||
* Gets the hostname of detector at particular position
|
||||
* or concatenated hostnames of all the sls detectors
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns concatenated hostnames of all detectors or hostname of specific one
|
||||
* @returns concatenated hostnames of all detectors or hostname of specific
|
||||
* one
|
||||
*/
|
||||
std::string getHostname(int detPos = -1);
|
||||
|
||||
/**
|
||||
* Appends detectors to the end of the list in shared memory
|
||||
* Connects to them to set up online flag
|
||||
* @param name concatenated hostname of the sls detectors to be appended to the list
|
||||
* @param name concatenated hostname of the sls detectors to be appended to
|
||||
* the list
|
||||
*/
|
||||
void addMultipleDetectors(const char *name);
|
||||
|
||||
|
||||
using slsDetectorDefs::getDetectorType;
|
||||
/**
|
||||
* Get Detector type for a particular sls detector or get the first one
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns detector type of sls detector in position pos, if -1, returns the first det type
|
||||
* @returns detector type of sls detector in position pos, if -1, returns
|
||||
* the first det type
|
||||
*/
|
||||
detectorType getDetectorsType(int detPos = -1);
|
||||
|
||||
@ -306,14 +306,16 @@ public:
|
||||
* Concatenates string types of all sls detectors or
|
||||
* returns the detector type of the first sls detector
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns detector type of sls detector in position pos, if -1, concatenates
|
||||
* @returns detector type of sls detector in position pos, if -1,
|
||||
* concatenates
|
||||
*/
|
||||
std::string sgetDetectorsType(int detPos = -1);
|
||||
|
||||
/**
|
||||
* Gets Detector type (concatenates if different)
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns detector type of sls detector in position pos, if -1, concatenates
|
||||
* @returns detector type of sls detector in position pos, if -1,
|
||||
* concatenates
|
||||
*/
|
||||
std::string getDetectorType(int detPos = -1);
|
||||
|
||||
@ -338,7 +340,8 @@ public:
|
||||
void getNumberOfDetectors(int &nx, int &ny);
|
||||
|
||||
/**
|
||||
* Returns the total number of channels of all sls detectors from shared memory
|
||||
* Returns the total number of channels of all sls detectors from shared
|
||||
* memory
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns the total number of channels of all sls detectors
|
||||
*/
|
||||
@ -364,21 +367,23 @@ public:
|
||||
int getTotalNumberOfChannelsInclGapPixels(dimension d, int detPos = -1);
|
||||
|
||||
/**
|
||||
* Returns the maximum number of channels of all sls detectors in each dimension d
|
||||
* from shared memory. multi detector shared memory variable to calculate
|
||||
* offsets for each sls detector
|
||||
* Returns the maximum number of channels of all sls detectors in each
|
||||
* dimension d from shared memory. multi detector shared memory variable to
|
||||
* calculate offsets for each sls detector
|
||||
* @param d dimension d
|
||||
* @returns the maximum number of channels of all sls detectors in dimension d
|
||||
* @returns the maximum number of channels of all sls detectors in dimension
|
||||
* d
|
||||
*/
|
||||
int getMaxNumberOfChannelsPerDetector(dimension d);
|
||||
|
||||
/**
|
||||
* Sets the maximum number of channels of all sls detectors in each dimension d
|
||||
* from shared memory, multi detector shared memory variable to calculate
|
||||
* offsets for each sls detector
|
||||
* Sets the maximum number of channels of all sls detectors in each
|
||||
* dimension d from shared memory, multi detector shared memory variable to
|
||||
* calculate offsets for each sls detector
|
||||
* @param d dimension d
|
||||
* @param i maximum number of channels for multi structure in dimension d
|
||||
* @returns the maximum number of channels of all sls detectors in dimension d
|
||||
* @returns the maximum number of channels of all sls detectors in dimension
|
||||
* d
|
||||
*/
|
||||
int setMaxNumberOfChannelsPerDetector(dimension d, int i);
|
||||
|
||||
@ -386,7 +391,8 @@ public:
|
||||
* Get Detector offset from shared memory in dimension d
|
||||
* @param d dimension d
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns offset in dimension d, -1 if pos is not an actual position in list
|
||||
* @returns offset in dimension d, -1 if pos is not an actual position in
|
||||
* list
|
||||
*/
|
||||
int getDetectorOffset(dimension d, int detPos = -1);
|
||||
|
||||
@ -399,8 +405,8 @@ public:
|
||||
void setDetectorOffset(dimension d, int off, int detPos = -1);
|
||||
|
||||
/**
|
||||
* Updates the channel offsets in X and Y dimension for all the sls detectors
|
||||
* It is required for decodeNMod and setting ROI
|
||||
* Updates the channel offsets in X and Y dimension for all the sls
|
||||
* detectors It is required for decodeNMod and setting ROI
|
||||
*/
|
||||
void updateOffsets();
|
||||
|
||||
@ -408,8 +414,10 @@ public:
|
||||
* Checks if the multi detectors are online and sets the online flag
|
||||
* @param online if GET_ONLINE_FLAG, only returns shared memory online flag,
|
||||
* else sets the detector in online/offline state
|
||||
* if OFFLINE_FLAG, (i.e. no communication to the detector - using only local structure - no data acquisition possible!);
|
||||
* if ONLINE_FLAG, detector in online state (i.e. communication to the detector updating the local structure)
|
||||
* if OFFLINE_FLAG, (i.e. no communication to the detector - using only
|
||||
* local structure - no data acquisition possible!); if ONLINE_FLAG,
|
||||
* detector in online state (i.e. communication to the detector updating the
|
||||
* local structure)
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns online/offline status
|
||||
*/
|
||||
@ -491,9 +499,9 @@ public:
|
||||
detectorSettings getSettings(int detPos = -1);
|
||||
|
||||
/**
|
||||
* Load detector settings from the settings file picked from the trimdir/settingsdir
|
||||
* Eiger only stores in shared memory ( a get will overwrite this)
|
||||
* For Eiger, one must use threshold
|
||||
* Load detector settings from the settings file picked from the
|
||||
* trimdir/settingsdir Eiger only stores in shared memory ( a get will
|
||||
* overwrite this) For Eiger, one must use threshold
|
||||
* @param isettings settings
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns current settings
|
||||
@ -515,7 +523,8 @@ public:
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns current threshold value for imod in ev (-1 failed)
|
||||
*/
|
||||
int setThresholdEnergy(int e_eV, detectorSettings isettings=GET_SETTINGS,int tb=1, int detPos = -1);
|
||||
int setThresholdEnergy(int e_eV, detectorSettings isettings = GET_SETTINGS,
|
||||
int tb = 1, int detPos = -1);
|
||||
|
||||
/**
|
||||
* Returns the detector trimbit/settings directory \sa sharedSlsDetector
|
||||
@ -586,14 +595,16 @@ public:
|
||||
int sendSoftwareTrigger(int detPos = -1);
|
||||
|
||||
/**
|
||||
* Start detector acquisition and read all data (Blocking until end of acquisition)
|
||||
* Start detector acquisition and read all data (Blocking until end of
|
||||
* acquisition)
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns OK or FAIL
|
||||
*/
|
||||
int startAndReadAll(int detPos = -1);
|
||||
|
||||
/**
|
||||
* Start readout (without exposure or interrupting exposure) (Eiger store in ram)
|
||||
* Start readout (without exposure or interrupting exposure) (Eiger store in
|
||||
* ram)
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns OK or FAIL
|
||||
*/
|
||||
@ -618,7 +629,8 @@ public:
|
||||
* @param index timer index
|
||||
* @param t time in ns or number of...(e.g. frames, gates, probes)
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns timer set value in ns or number of...(e.g. frames, gates, probes)
|
||||
* @returns timer set value in ns or number of...(e.g. frames, gates,
|
||||
* probes)
|
||||
*/
|
||||
int64_t setTimer(timerIndex index, int64_t t = -1, int detPos = -1);
|
||||
|
||||
@ -629,7 +641,8 @@ public:
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns exposure time in ns, or s if specified
|
||||
*/
|
||||
double setExposureTime(double t = -1, bool inseconds = false, int detPos = -1);
|
||||
double setExposureTime(double t = -1, bool inseconds = false,
|
||||
int detPos = -1);
|
||||
|
||||
/**
|
||||
* Set/get exposure period
|
||||
@ -638,7 +651,8 @@ public:
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns exposure period in ns, or s if specified
|
||||
*/
|
||||
double setExposurePeriod(double t = -1, bool inseconds = false, int detPos = -1);
|
||||
double setExposurePeriod(double t = -1, bool inseconds = false,
|
||||
int detPos = -1);
|
||||
|
||||
/**
|
||||
* Set/get delay after trigger (Gotthard, Jungfrau(not for this release))
|
||||
@ -647,7 +661,8 @@ public:
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns delay after trigger in ns, or s if specified
|
||||
*/
|
||||
double setDelayAfterTrigger(double t = -1, bool inseconds = false, int detPos = -1);
|
||||
double setDelayAfterTrigger(double t = -1, bool inseconds = false,
|
||||
int detPos = -1);
|
||||
|
||||
/**
|
||||
* (Advanced users)
|
||||
@ -657,7 +672,8 @@ public:
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns sub frame exposure time in ns, or s if specified
|
||||
*/
|
||||
double setSubFrameExposureTime(double t = -1, bool inseconds = false, int detPos = -1);
|
||||
double setSubFrameExposureTime(double t = -1, bool inseconds = false,
|
||||
int detPos = -1);
|
||||
|
||||
/**
|
||||
* (Advanced users)
|
||||
@ -667,7 +683,8 @@ public:
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns sub frame dead time in ns, or s if specified
|
||||
*/
|
||||
double setSubFrameExposureDeadTime(double t = -1, bool inseconds = false, int detPos = -1);
|
||||
double setSubFrameExposureDeadTime(double t = -1, bool inseconds = false,
|
||||
int detPos = -1);
|
||||
|
||||
/**
|
||||
* Set/get number of frames
|
||||
@ -720,18 +737,22 @@ public:
|
||||
double getMeasuredSubFramePeriod(bool inseconds = false, int detPos = -1);
|
||||
|
||||
/**
|
||||
* Set/get timer value left in acquisition (not all implemented for all detectors)
|
||||
* Set/get timer value left in acquisition (not all implemented for all
|
||||
* detectors)
|
||||
* @param index timer index
|
||||
* @param t time in ns or number of...(e.g. frames, gates, probes)
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns timer set value in ns or number of...(e.g. frames, gates, probes)
|
||||
* @returns timer set value in ns or number of...(e.g. frames, gates,
|
||||
* probes)
|
||||
*/
|
||||
int64_t getTimeLeft(timerIndex index, int detPos = -1);
|
||||
|
||||
/**
|
||||
* Set speed
|
||||
* @param sp speed type (clkdivider option for Jungfrau and Eiger, others for Mythen/Gotthard)
|
||||
* @param value (clkdivider 0,1,2 for full, half and quarter speed). Other values check manual
|
||||
* @param sp speed type (clkdivider option for Jungfrau and Eiger, others
|
||||
* for Mythen/Gotthard)
|
||||
* @param value (clkdivider 0,1,2 for full, half and quarter speed). Other
|
||||
* values check manual
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns value of speed set
|
||||
*/
|
||||
@ -739,7 +760,8 @@ public:
|
||||
|
||||
/**
|
||||
* Set/get dynamic range and updates the number of dataBytes
|
||||
* (Eiger: If i is 32, also sets clkdivider to 2, if 16, sets clkdivider to 1)
|
||||
* (Eiger: If i is 32, also sets clkdivider to 2, if 16, sets clkdivider to
|
||||
* 1)
|
||||
* @param i dynamic range (-1 get)
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns current dynamic range
|
||||
@ -768,7 +790,8 @@ public:
|
||||
* Get adc value
|
||||
* @param index adc(DAC) index
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns current adc value (temperature for eiger and jungfrau in millidegrees)
|
||||
* @returns current adc value (temperature for eiger and jungfrau in
|
||||
* millidegrees)
|
||||
*/
|
||||
int getADC(dacIndex index, int detPos = -1);
|
||||
|
||||
@ -778,20 +801,26 @@ public:
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns current timing mode
|
||||
*/
|
||||
externalCommunicationMode setExternalCommunicationMode(externalCommunicationMode pol=GET_EXTERNAL_COMMUNICATION_MODE, int detPos = -1);
|
||||
externalCommunicationMode setExternalCommunicationMode(
|
||||
externalCommunicationMode pol = GET_EXTERNAL_COMMUNICATION_MODE,
|
||||
int detPos = -1);
|
||||
|
||||
/**
|
||||
* Set/get external signal flags (to specify triggerinrising edge etc) (Gotthard, Mythen)
|
||||
* Set/get external signal flags (to specify triggerinrising edge etc)
|
||||
* (Gotthard, Mythen)
|
||||
* @param pol external signal flag (-1 gets)
|
||||
* @param signalindex singal index (0 - 3)
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns current timing mode
|
||||
*/
|
||||
externalSignalFlag setExternalSignalFlags(externalSignalFlag pol=GET_EXTERNAL_SIGNAL_FLAG , int signalindex=0, int detPos = -1);
|
||||
externalSignalFlag
|
||||
setExternalSignalFlags(externalSignalFlag pol = GET_EXTERNAL_SIGNAL_FLAG,
|
||||
int signalindex = 0, int detPos = -1);
|
||||
|
||||
/**
|
||||
* Set/get readout flags (Eiger, Mythen)
|
||||
* @param flag readout flag (Eiger options: parallel, nonparallel, safe etc.) (-1 gets)
|
||||
* @param flag readout flag (Eiger options: parallel, nonparallel, safe
|
||||
* etc.) (-1 gets)
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns readout flag
|
||||
*/
|
||||
@ -854,7 +883,8 @@ public:
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns network parameter value set (from getNetworkParameter)
|
||||
*/
|
||||
std::string setNetworkParameter(networkParameter parameter, std::string value, int detPos = -1);
|
||||
std::string setNetworkParameter(networkParameter parameter,
|
||||
std::string value, int detPos = -1);
|
||||
|
||||
/**
|
||||
* Get network parameter
|
||||
@ -868,9 +898,11 @@ public:
|
||||
* (advanced users)
|
||||
* Set/Get receiver streaming out ZMQ port and restarts receiver sockets
|
||||
* @param i sets, -1 gets
|
||||
* If detPos is -1(multi module), port calculated (increments) for all the individual detectors using i
|
||||
* If detPos is -1(multi module), port calculated (increments) for all the
|
||||
* individual detectors using i
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns receiver streaming out ZMQ port (if multiple, of first receiver socket)
|
||||
* @returns receiver streaming out ZMQ port (if multiple, of first receiver
|
||||
* socket)
|
||||
*/
|
||||
int setReceiverDataStreamingOutPort(int i = -1, int detPos = -1);
|
||||
|
||||
@ -878,9 +910,11 @@ public:
|
||||
* (advanced users)
|
||||
* Set/Get client streaming in ZMQ port and restarts client sockets
|
||||
* @param i sets, -1 gets
|
||||
* If detPos is -1(multi module), port calculated (increments) for all the individual detectors using i
|
||||
* If detPos is -1(multi module), port calculated (increments) for all the
|
||||
* individual detectors using i
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns receiver streaming out ZMQ port (if multiple, of first receiver socket)
|
||||
* @returns receiver streaming out ZMQ port (if multiple, of first receiver
|
||||
* socket)
|
||||
*/
|
||||
int setClientDataStreamingInPort(int i = -1, int detPos = -1);
|
||||
|
||||
@ -892,7 +926,8 @@ public:
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns receiver streaming out ZMQ IP
|
||||
*/
|
||||
std::string setReceiverDataStreamingOutIP(std::string ip="", int detPos = -1);
|
||||
std::string setReceiverDataStreamingOutIP(std::string ip = "",
|
||||
int detPos = -1);
|
||||
|
||||
/**
|
||||
* (advanced users)
|
||||
@ -902,7 +937,8 @@ public:
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns client streaming in ZMQ IP
|
||||
*/
|
||||
std::string setClientDataStreamingInIP(std::string ip="", int detPos = -1);
|
||||
std::string setClientDataStreamingInIP(std::string ip = "",
|
||||
int detPos = -1);
|
||||
|
||||
/**
|
||||
* Set 10GbE Flow Control (Eiger)
|
||||
@ -928,7 +964,8 @@ public:
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns OK or FAIL
|
||||
*/
|
||||
int loadImageToDetector(imageType index, const std::string& fname, int detPos = -1);
|
||||
int loadImageToDetector(imageType index, const std::string &fname,
|
||||
int detPos = -1);
|
||||
|
||||
/**
|
||||
* Writes the counter memory block from the detector (Gotthard)
|
||||
@ -937,7 +974,8 @@ public:
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns OK or FAIL
|
||||
*/
|
||||
int writeCounterBlockFile(const std::string& fname,int startACQ=0, int detPos = -1);
|
||||
int writeCounterBlockFile(const std::string &fname, int startACQ = 0,
|
||||
int detPos = -1);
|
||||
|
||||
/**
|
||||
* Resets counter in detector (Gotthard)
|
||||
@ -949,7 +987,8 @@ public:
|
||||
|
||||
/**
|
||||
* Set/get counter bit in detector (Gotthard)
|
||||
* @param i is -1 to get, 0 to reset and any other value to set the counter bit
|
||||
* @param i is -1 to get, 0 to reset and any other value to set the counter
|
||||
* bit
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns the counter bit in detector
|
||||
*/
|
||||
@ -973,7 +1012,8 @@ public:
|
||||
int setROI(int n = -1, ROI roiLimits[] = NULL, int detPos = -1);
|
||||
|
||||
/**
|
||||
* Get ROI from each detector and convert it to the multi detector scale (Gotthard)
|
||||
* Get ROI from each detector and convert it to the multi detector scale
|
||||
* (Gotthard)
|
||||
* @param n number of rois
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns OK or FAIL
|
||||
@ -981,7 +1021,8 @@ public:
|
||||
ROI *getROI(int &n, int detPos = -1);
|
||||
|
||||
/**
|
||||
* Write to ADC register (Gotthard, Jungfrau, ChipTestBoard). For expert users
|
||||
* Write to ADC register (Gotthard, Jungfrau, ChipTestBoard). For expert
|
||||
* users
|
||||
* @param addr address of adc register
|
||||
* @param val value
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
@ -999,9 +1040,11 @@ public:
|
||||
|
||||
/**
|
||||
* Set deactivated Receiver padding mode (Eiger only)
|
||||
* @param padding padding option for deactivated receiver. Can be 1 (padding), 0 (no padding), -1 (gets)
|
||||
* @param padding padding option for deactivated receiver. Can be 1
|
||||
* (padding), 0 (no padding), -1 (gets)
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns 1 (padding), 0 (no padding), -1 (inconsistent values) for padding option
|
||||
* @returns 1 (padding), 0 (no padding), -1 (inconsistent values) for
|
||||
* padding option
|
||||
*/
|
||||
int setDeactivatedRxrPaddingMode(int padding = -1, int detPos = -1);
|
||||
|
||||
@ -1283,7 +1326,8 @@ public:
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns frames discard policy set in receiver
|
||||
*/
|
||||
frameDiscardPolicy setReceiverFramesDiscardPolicy(frameDiscardPolicy f = GET_FRAME_DISCARD_POLICY, int detPos = -1);
|
||||
frameDiscardPolicy setReceiverFramesDiscardPolicy(
|
||||
frameDiscardPolicy f = GET_FRAME_DISCARD_POLICY, int detPos = -1);
|
||||
|
||||
/**
|
||||
* Sets the partial frames padding enable in receiver
|
||||
@ -1405,7 +1449,8 @@ public:
|
||||
/**
|
||||
* (previously setReadReceiverFrequency)
|
||||
* Sets the receiver streaming frequency
|
||||
* @param freq nth frame streamed out, if 0, streamed out at a timer of 200 ms
|
||||
* @param freq nth frame streamed out, if 0, streamed out at a timer of 200
|
||||
* ms
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns receiver streaming frequency
|
||||
*/
|
||||
@ -1488,7 +1533,8 @@ public:
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns OK/FAIL
|
||||
*/
|
||||
int setCTBPatLoops(int level,int &start, int &stop, int &n, int detPos = -1);
|
||||
int setCTBPatLoops(int level, int &start, int &stop, int &n,
|
||||
int detPos = -1);
|
||||
|
||||
/**
|
||||
* Sets the wait address in the CTB
|
||||
@ -1511,8 +1557,9 @@ public:
|
||||
/**
|
||||
* Loads the detector setup from file
|
||||
* @param fname file to read from
|
||||
* @param level if 2 reads also reads trimbits, angular conversion coefficients etc.
|
||||
* from files with default extensions as generated by dumpDetectorSetup
|
||||
* @param level if 2 reads also reads trimbits, angular conversion
|
||||
* coefficients etc. from files with default extensions as generated by
|
||||
* dumpDetectorSetup
|
||||
* @returns OK or FAIL
|
||||
*/
|
||||
int retrieveDetectorSetup(const std::string &fname, int level = 0);
|
||||
@ -1520,8 +1567,8 @@ public:
|
||||
/**
|
||||
* Saves the detector setup to file
|
||||
* @param fname file to write to
|
||||
* @param level if 2 reads also trimbits, flat field, angular correction etc.
|
||||
* and writes them to files with automatically added extension
|
||||
* @param level if 2 reads also trimbits, flat field, angular correction
|
||||
* etc. and writes them to files with automatically added extension
|
||||
* @returns OK or FAIL
|
||||
*/
|
||||
int dumpDetectorSetup(const std::string &fname, int level = 0);
|
||||
@ -1532,7 +1579,8 @@ public:
|
||||
* gets detector status and progress index as arguments
|
||||
* @param pArg argument
|
||||
*/
|
||||
void registerAcquisitionFinishedCallback(int( *func)(double,int, void*), void *pArg);
|
||||
void registerAcquisitionFinishedCallback(int (*func)(double, int, void *),
|
||||
void *pArg);
|
||||
|
||||
/**
|
||||
* register callback for accessing measurement final data
|
||||
@ -1540,7 +1588,8 @@ public:
|
||||
* gets detector status and progress index as arguments
|
||||
* @param pArg argument
|
||||
*/
|
||||
void registerMeasurementFinishedCallback(int( *func)(int,int, void*), void *pArg);
|
||||
void registerMeasurementFinishedCallback(int (*func)(int, int, void *),
|
||||
void *pArg);
|
||||
|
||||
/**
|
||||
* register callback for accessing detector progress
|
||||
@ -1559,19 +1608,19 @@ public:
|
||||
* s is for subframe number for eiger for 32 bit mode
|
||||
* @param pArg argument
|
||||
*/
|
||||
void registerDataCallback(int( *userCallback)(detectorData*, int, int, void*), void *pArg);
|
||||
void registerDataCallback(int (*userCallback)(detectorData *, int, int,
|
||||
void *),
|
||||
void *pArg);
|
||||
|
||||
/**
|
||||
* Performs a complete acquisition
|
||||
* resets frames caught in receiver, starts receiver, starts detector,
|
||||
* blocks till detector finished acquisition, stop receiver, increments file index,
|
||||
* loops for measurements, calls required call backs.
|
||||
* blocks till detector finished acquisition, stop receiver, increments file
|
||||
* index, loops for measurements, calls required call backs.
|
||||
* @returns OK or FAIL depending on if it already started
|
||||
*/
|
||||
int acquire();
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Returns true if detector position is out of bounds
|
||||
*/
|
||||
@ -1585,7 +1634,8 @@ public:
|
||||
|
||||
private:
|
||||
/**
|
||||
* Initialize (open/create) shared memory for the sharedMultiDetector structure
|
||||
* Initialize (open/create) shared memory for the sharedMultiDetector
|
||||
* structure
|
||||
* @param verify true to verify if shm size matches existing one
|
||||
* @param update true to update last user pid, date etc
|
||||
* @returns true if shared memory was created in this call, else false
|
||||
@ -1624,7 +1674,8 @@ private:
|
||||
/**
|
||||
* add gap pixels to the image (only for Eiger in 4 bit mode)
|
||||
* @param image pointer to image without gap pixels
|
||||
* @param gpImage poiner to image with gap pixels, if NULL, allocated inside function
|
||||
* @param gpImage poiner to image with gap pixels, if NULL, allocated inside
|
||||
* function
|
||||
* @returns number of data bytes of image with gap pixels
|
||||
*/
|
||||
int processImageWithGapPixels(char *image, char *&gpImage);
|
||||
@ -1680,7 +1731,6 @@ private:
|
||||
*/
|
||||
int kbhit(void);
|
||||
|
||||
|
||||
/** Multi detector Id */
|
||||
int detId;
|
||||
|
||||
@ -1699,11 +1749,12 @@ private:
|
||||
/** ZMQ Socket - Receiver to Client */
|
||||
std::vector<std::unique_ptr<ZmqSocket>> zmqSocket;
|
||||
|
||||
|
||||
/** semaphore to let postprocessing thread continue for next scan/measurement */
|
||||
/** semaphore to let postprocessing thread continue for next
|
||||
* scan/measurement */
|
||||
sem_t sem_newRTAcquisition;
|
||||
|
||||
/** semaphore to let main thread know it got all the dummy packets (also from ext. process) */
|
||||
/** semaphore to let main thread know it got all the dummy packets (also
|
||||
* from ext. process) */
|
||||
sem_t sem_endRTAcquisition;
|
||||
|
||||
/** Total number of frames/images for next acquisition */
|
||||
@ -1745,14 +1796,6 @@ private:
|
||||
|
||||
int (*dataReady)(detectorData *, int, int, void *);
|
||||
void *pCallbackArg;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user