mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-20 02:40:03 +02:00
slsDetectorSoftware: from 3.1.4: being able to get timer values individually from the users class since gotthard 25um master and slave will have different delay values
This commit is contained in:
parent
73fcef5f6d
commit
41fb6c26a2
@ -71,10 +71,6 @@ int main(int argc, char **argv) {
|
||||
|
||||
/** - registering data callback */
|
||||
pDetector->registerDataCallback(&dataCallback, NULL);
|
||||
/** - if receiver exists, enable data streaming from receiver to get the data */
|
||||
pDetector->enableDataStreamingFromReceiver(1);
|
||||
/** - create zmq sockets in client to enable data streaming in of data from receiver/different process */
|
||||
pDetector->enableDataStreamingToClient(1);
|
||||
|
||||
|
||||
/** - ensuring detector status is idle before starting acquisition. exiting if not idle */
|
||||
|
@ -2567,8 +2567,22 @@ int multiSlsDetector::configureMAC() {
|
||||
return callDetectorMember(&slsDetector::configureMAC);
|
||||
}
|
||||
|
||||
int64_t multiSlsDetector::setTimer(timerIndex index, int64_t t) {
|
||||
int64_t ret = parallelCallDetectorMember(&slsDetector::setTimer, index, t);
|
||||
int64_t multiSlsDetector::setTimer(timerIndex index, int64_t t, int imod) {
|
||||
int64_t ret=-100;
|
||||
|
||||
// single (for gotthard 25 um)
|
||||
if (imod != -1) {
|
||||
if (imod >= 0 && imod < (int)detectors.size()) {
|
||||
ret = detectors[imod]->setTimer(index,t,imod);
|
||||
if(detectors[imod]->getErrorMask())
|
||||
setErrorMask(getErrorMask()|(1<<imod));
|
||||
return ret;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
// multi
|
||||
ret = parallelCallDetectorMember(&slsDetector::setTimer, index, t);
|
||||
if (index == SAMPLES_JCTB)
|
||||
setDynamicRange();
|
||||
|
||||
|
@ -1033,9 +1033,10 @@ public:
|
||||
* Set/get timer value (not all implemented for all detectors)
|
||||
* @param index timer index
|
||||
* @param t time in ns or number of...(e.g. frames, gates, probes)
|
||||
* @param imod module number (gotthard delay can have different values)
|
||||
* @returns timer set value in ns or number of...(e.g. frames, gates, probes)
|
||||
*/
|
||||
int64_t setTimer(timerIndex index, int64_t t=-1);
|
||||
int64_t setTimer(timerIndex index, int64_t t=-1, int imod = -1);
|
||||
|
||||
/**
|
||||
* Set/get timer value left in acquisition (not all implemented for all detectors)
|
||||
|
@ -4117,7 +4117,7 @@ int slsDetector::configureMAC() {
|
||||
|
||||
|
||||
|
||||
int64_t slsDetector::setTimer(timerIndex index, int64_t t) {
|
||||
int64_t slsDetector::setTimer(timerIndex index, int64_t t, int imod) {
|
||||
|
||||
|
||||
int fnum=F_SET_TIMER,fnum2=F_SET_RECEIVER_TIMER;
|
||||
|
@ -1140,9 +1140,10 @@ public:
|
||||
* Set/get timer value (not all implemented for all detectors)
|
||||
* @param index timer index
|
||||
* @param t time in ns or number of...(e.g. frames, gates, probes)
|
||||
* \param imod module number (pointless in slsDetector)
|
||||
* @returns timer set value in ns or number of...(e.g. frames, gates, probes)
|
||||
*/
|
||||
int64_t setTimer(timerIndex index, int64_t t=-1);
|
||||
int64_t setTimer(timerIndex index, int64_t t=-1, int imod = -1);
|
||||
|
||||
/**
|
||||
* Set/get timer value left in acquisition (not all implemented for all detectors)
|
||||
|
@ -367,17 +367,18 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef
|
||||
set/get timer value
|
||||
\param index timer index
|
||||
\param t time in ns or number of...(e.g. frames, gates, probes)
|
||||
\param imod module number
|
||||
\returns timer set value in ns or number of...(e.g. frames, gates, probes)
|
||||
*/
|
||||
virtual int64_t setTimer(timerIndex index, int64_t t=-1)=0;
|
||||
int64_t setExposureTime(int64_t t=-1){return setTimer(ACQUISITION_TIME,t);};
|
||||
int64_t setSubFrameExposureTime(int64_t t=-1){return setTimer(SUBFRAME_ACQUISITION_TIME,t);};
|
||||
int64_t setSubFramePeriod(int64_t t=-1){return setTimer(SUBFRAME_PERIOD,t);};
|
||||
int64_t setExposurePeriod(int64_t t=-1){return setTimer(FRAME_PERIOD,t);};
|
||||
int64_t setDelayAfterTrigger(int64_t t=-1){return setTimer(DELAY_AFTER_TRIGGER,t);};
|
||||
int64_t setNumberOfGates(int64_t t=-1){return setTimer(GATES_NUMBER,t);};
|
||||
int64_t setNumberOfFrames(int64_t t=-1){return setTimer(FRAME_NUMBER,t);};
|
||||
int64_t setNumberOfCycles(int64_t t=-1){return setTimer(CYCLES_NUMBER,t);};
|
||||
virtual int64_t setTimer(timerIndex index, int64_t t=-1, int imod = -1)=0;
|
||||
int64_t setExposureTime(int64_t t=-1, int imod = -1){return setTimer(ACQUISITION_TIME,t,imod);};
|
||||
int64_t setSubFrameExposureTime(int64_t t=-1, int imod = -1){return setTimer(SUBFRAME_ACQUISITION_TIME,t,imod);};
|
||||
int64_t setSubFramePeriod(int64_t t=-1, int imod = -1){return setTimer(SUBFRAME_PERIOD,t,imod);};
|
||||
int64_t setExposurePeriod(int64_t t=-1, int imod = -1){return setTimer(FRAME_PERIOD,t,imod);};
|
||||
int64_t setDelayAfterTrigger(int64_t t=-1, int imod = -1){return setTimer(DELAY_AFTER_TRIGGER,t,imod);};
|
||||
int64_t setNumberOfGates(int64_t t=-1, int imod = -1){return setTimer(GATES_NUMBER,t,imod);};
|
||||
int64_t setNumberOfFrames(int64_t t=-1, int imod = -1){return setTimer(FRAME_NUMBER,t,imod);};
|
||||
int64_t setNumberOfCycles(int64_t t=-1, int imod = -1){return setTimer(CYCLES_NUMBER,t,imod);};
|
||||
|
||||
|
||||
/** sets/gets the value of important readout speed parameters
|
||||
|
@ -157,43 +157,58 @@ int slsDetectorUsers::setThresholdEnergy(int e_ev, int tb, int isettings, int id
|
||||
return myDetector->slsDetectorBase::setThresholdEnergy(e_ev, tb, isettings, id);
|
||||
}
|
||||
|
||||
double slsDetectorUsers::setExposureTime(double t, bool inseconds){
|
||||
int64_t tms = (int64_t)(t * (1E+9));
|
||||
if (t < 0) tms = -1;
|
||||
double slsDetectorUsers::setExposureTime(double t, bool inseconds, int imod){
|
||||
if(!inseconds)
|
||||
return myDetector->setExposureTime((int64_t)t);
|
||||
else
|
||||
return ((1E-9) * (double)myDetector->setExposureTime(tms));
|
||||
}
|
||||
|
||||
double slsDetectorUsers::setExposurePeriod(double t, bool inseconds){
|
||||
int64_t tms = (int64_t)(t * (1E+9));
|
||||
return myDetector->setExposureTime((int64_t)t,imod);
|
||||
else {
|
||||
// + 0.5 to round for precision lost from converting double to int64_t
|
||||
int64_t tms = (int64_t)(t * (1E+9) + 0.5);
|
||||
if (t < 0) tms = -1;
|
||||
if(!inseconds)
|
||||
return myDetector->setExposurePeriod((int64_t)t);
|
||||
else
|
||||
return ((1E-9) * (double)myDetector->setExposurePeriod(tms));
|
||||
tms = myDetector->setExposureTime(tms,imod);
|
||||
if (tms < 0)
|
||||
return -1;
|
||||
return ((1E-9) * (double)tms);
|
||||
}
|
||||
}
|
||||
|
||||
double slsDetectorUsers::setDelayAfterTrigger(double t, bool inseconds){
|
||||
int64_t tms = (int64_t)(t * (1E+9));
|
||||
double slsDetectorUsers::setExposurePeriod(double t, bool inseconds, int imod){
|
||||
if(!inseconds)
|
||||
return myDetector->setExposurePeriod((int64_t)t,imod);
|
||||
else {
|
||||
// + 0.5 to round for precision lost from converting double to int64_t
|
||||
int64_t tms = (int64_t)(t * (1E+9) + 0.5);
|
||||
if (t < 0) tms = -1;
|
||||
tms = myDetector->setExposurePeriod(tms,imod);
|
||||
if (tms < 0)
|
||||
return -1;
|
||||
return ((1E-9) * (double)tms);
|
||||
}
|
||||
}
|
||||
|
||||
double slsDetectorUsers::setDelayAfterTrigger(double t, bool inseconds, int imod){
|
||||
if(!inseconds)
|
||||
return myDetector->setDelayAfterTrigger((int64_t)t);
|
||||
else
|
||||
return ((1E-9) * (double)myDetector->setDelayAfterTrigger(tms));
|
||||
return myDetector->setDelayAfterTrigger((int64_t)t,imod);
|
||||
else {
|
||||
// + 0.5 to round for precision lost from converting double to int64_t
|
||||
int64_t tms = (int64_t)(t * (1E+9) + 0.5);
|
||||
if (t < 0) tms = -1;
|
||||
tms = myDetector->setDelayAfterTrigger(tms,imod);
|
||||
if (tms < 0)
|
||||
return -1;
|
||||
return ((1E-9) * (double)tms);
|
||||
}
|
||||
}
|
||||
|
||||
int64_t slsDetectorUsers::setNumberOfGates(int64_t t){
|
||||
return myDetector->setNumberOfGates(t);
|
||||
int64_t slsDetectorUsers::setNumberOfGates(int64_t t, int imod){
|
||||
return myDetector->setNumberOfGates(t,imod);
|
||||
}
|
||||
|
||||
int64_t slsDetectorUsers::setNumberOfFrames(int64_t t){
|
||||
return myDetector->setNumberOfFrames(t);
|
||||
int64_t slsDetectorUsers::setNumberOfFrames(int64_t t, int imod){
|
||||
return myDetector->setNumberOfFrames(t,imod);
|
||||
}
|
||||
|
||||
int64_t slsDetectorUsers::setNumberOfCycles(int64_t t){
|
||||
return myDetector->setNumberOfCycles(t);
|
||||
int64_t slsDetectorUsers::setNumberOfCycles(int64_t t, int imod){
|
||||
return myDetector->setNumberOfCycles(t,imod);
|
||||
}
|
||||
|
||||
int slsDetectorUsers::setTimingMode(int pol){
|
||||
|
@ -325,47 +325,53 @@ class slsDetectorUsers
|
||||
@short set/get exposure time value
|
||||
\param t time in sn (-1 gets)
|
||||
\param inseconds true if the value is in s, else ns
|
||||
\param imod module number (-1 for all)
|
||||
\returns timer set value in ns, or s if specified
|
||||
*/
|
||||
|
||||
double setExposureTime(double t=-1, bool inseconds=false);
|
||||
double setExposureTime(double t=-1, bool inseconds=false, int imod = -1);
|
||||
|
||||
/**
|
||||
@short set/get exposure period
|
||||
\param t time in ns (-1 gets)
|
||||
\param inseconds true if the value is in s, else ns
|
||||
\param imod module number (-1 for all)
|
||||
\returns timer set value in ns, or s if specified
|
||||
*/
|
||||
double setExposurePeriod(double t=-1, bool inseconds=false);
|
||||
double setExposurePeriod(double t=-1, bool inseconds=false, int imod = -1);
|
||||
|
||||
/**
|
||||
@short set/get delay after trigger
|
||||
\param t time in ns (-1 gets)
|
||||
\param inseconds true if the value is in s, else ns
|
||||
\param imod module number (-1 for all)
|
||||
\returns timer set value in ns, or s if specified
|
||||
*/
|
||||
double setDelayAfterTrigger(double t=-1, bool inseconds=false);
|
||||
double setDelayAfterTrigger(double t=-1, bool inseconds=false, int imod = -1);
|
||||
|
||||
/**
|
||||
@short set/get number of gates
|
||||
\param t number of gates (-1 gets)
|
||||
\param imod module number (-1 for all)
|
||||
\returns number of gates
|
||||
*/
|
||||
int64_t setNumberOfGates(int64_t t=-1);
|
||||
int64_t setNumberOfGates(int64_t t=-1, int imod = -1);
|
||||
|
||||
/**
|
||||
@short set/get number of frames i.e. number of exposure per trigger
|
||||
\param t number of frames (-1 gets)
|
||||
\param imod module number (-1 for all)
|
||||
\returns number of frames
|
||||
*/
|
||||
int64_t setNumberOfFrames(int64_t t=-1);
|
||||
int64_t setNumberOfFrames(int64_t t=-1, int imod = -1);
|
||||
|
||||
/**
|
||||
@short set/get number of cycles i.e. number of triggers
|
||||
\param t number of frames (-1 gets)
|
||||
\param imod module number (-1 for all)
|
||||
\returns number of frames
|
||||
*/
|
||||
int64_t setNumberOfCycles(int64_t t=-1);
|
||||
int64_t setNumberOfCycles(int64_t t=-1, int imod = -1);
|
||||
|
||||
|
||||
/**
|
||||
|
@ -123,7 +123,7 @@ protected:
|
||||
func2_t <int, std::string,int>* m10;
|
||||
func2_t <dacs_t, dacIndex,int>* m11;
|
||||
func2_t <detectorSettings, detectorSettings,int>* m12;
|
||||
func2_t <int64_t, timerIndex,int64_t>* m13;
|
||||
func3_t <int64_t, timerIndex,int64_t,int>* m13;
|
||||
func2_t <std::string, networkParameter,std::string>* m14;
|
||||
func3_t <int, int,int,int>* m15;
|
||||
func4_t <int, trimMode,int,int,int>* m16;
|
||||
@ -149,7 +149,7 @@ public:
|
||||
Task(func2_t <int, std::string,int>* t): SuperTask(),fnum(10){m10 = t;};
|
||||
Task(func2_t <dacs_t, dacIndex,int>* t): SuperTask(),fnum(11){m11 = t;};
|
||||
Task(func2_t <detectorSettings, detectorSettings,int>* t): SuperTask(),fnum(12){m12 = t;};
|
||||
Task(func2_t <int64_t, timerIndex,int64_t>* t): SuperTask(),fnum(13){m13 = t;};
|
||||
Task(func3_t <int64_t, timerIndex,int64_t,int>* t): SuperTask(),fnum(13){m13 = t;};
|
||||
Task(func2_t <std::string, networkParameter,std::string>* t): SuperTask(),fnum(14){m14 = t;};
|
||||
Task(func3_t <int, int,int,int>* t): SuperTask(),fnum(15){m15 = t;};
|
||||
Task(func4_t <int, trimMode,int,int,int>* t): SuperTask(),fnum(16){m16 = t;};
|
||||
|
Loading…
x
Reference in New Issue
Block a user