Simple DAQ environent for setups with a single ROC and 0-2 FEBs. More...
#include <QuickDaq.h>

Public Types | |
| enum | daqState { kDaqStopped = 0, kDaqStarting, kDaqRunning, kDaqStopping } |
Names for DAQ states. More... | |
| enum | daqStopCode { kDaqStopPending = 0, kDaqStopByCount, kDaqStopByTime, kDaqStopByInterrupt, kDaqStopByStop, kDaqStopByTimeout } |
Names for DAQ stop codes. More... | |
Public Member Functions | |
| QuickDaq (base::Board *board) | |
| Constructor with Board and no FEB. | |
| QuickDaq (nxyter::FebBase *feb0=0, nxyter::FebBase *feb1=0) | |
| Normal constructor with one or two FEB's. | |
| virtual | ~QuickDaq () |
| int | setNxTestModes (bool testpuls, bool testtrig, int calselect) |
| Setup test pulser and test trigger mode in all nXYTERs. | |
| int | setNxRegisterAll (uint8_t reg, uint8_t val, bool veri=true) |
| Write a value into a register of all nXYTERs. | |
| void | nextRunNxMask (int nxmask) |
| Set active nXYTER mask for next run. | |
| int | startRun (int maxmsg=0, double maxtime=0., bool noinit=false) |
| Prepare for data taking, start a run. | |
| int | stopRun (bool hardstop=false) |
| End data taking. | |
| void | interruptRun () |
| Interrupt data taking. | |
| bool | testRun (double timeout=0.) |
| Check run status. | |
| roc::Message & | msg () |
| Access current message data object. | |
| uint32_t | getMsgEpoch () const |
| Returns current epoch. | |
| double | getMsgTime () |
Returns full message time as double. | |
| double | getRunTime () |
| Returns wall clock time of message (measured since start run). | |
| double | getStartTime () |
| Returns start time. | |
| double | getStopTime () |
| Returns stop time. | |
| const QuickDaqStats & | stats () |
| Access statistics object. | |
| int | getState () |
| Returns DAQ state. | |
| int | getStopCode () |
| Returns DAQ stop code. | |
Static Public Member Functions | |
| static double | now () |
Returns current time as a double. | |
Protected Attributes | |
| base::Board * | fBoard |
| board pointer | |
| nxyter::FebBase * | fFebs [2] |
| available FEBs | |
| nxyter::RocNx | fRocNx |
| rocnx pointer | |
| int | fState |
| DAQ state. | |
| int | fStopCode |
| DAQ stop code. | |
| int | fDaqLowWater |
| for setRocLowHighWater | |
| int | fDaqHighWater |
| for setRocLowHighWater | |
| uint32_t | fDaqFlushTimer |
| for setRocBufferFlushTimer | |
| double | fDaqStaStoTimeout |
| timeout for start/stop | |
| QuickDaqStats | fStats |
| statistic counters | |
| bool | fNextNxMaskActive |
| nextRunNxMask() called | |
| int | fNextNxMask |
| nXYTER mask for next run | |
| double | fStartTime |
| time start call | |
| double | fStopTime |
| time stop call | |
| double | fStartMsgTime |
| time start message | |
| double | fStopMsgTime |
| time stop message | |
| double | fMaxMsg |
| maximal number of msg in run | |
| double | fMaxTime |
| maximal time of run | |
| roc::Iterator | fIter |
| current iterator | |
| double | fMsgTime |
| current message time stamp | |
| double | fNowTime |
| wall time of message | |
Simple DAQ environent for setups with a single ROC and 0-2 FEBs.
Definition at line 19 of file QuickDaq.h.
Names for DAQ states.
| kDaqStopped |
stopped, not active |
| kDaqStarting |
started, before start sysmsg |
| kDaqRunning |
started, start sysmsg received |
| kDaqStopping |
rundown, before stopped sysmsg |
Definition at line 46 of file QuickDaq.h.
Names for DAQ stop codes.
Definition at line 53 of file QuickDaq.h.
| nxyter::QuickDaq::QuickDaq | ( | base::Board * | board | ) | [explicit] |
Constructor with Board and no FEB.
Sets up QuickDaq object with no FEB.
| board | ROC board pointer |
Definition at line 31 of file QuickDaq.cxx.
References fFebs.
| nxyter::QuickDaq::QuickDaq | ( | nxyter::FebBase * | feb0 = 0, |
|
| nxyter::FebBase * | feb1 = 0 | |||
| ) | [explicit] |
Normal constructor with one or two FEB's.
Sets up QuickDaq object with full board and FEB context.
| feb0 | 1st connected FEB (maybe 0) | |
| feb1 | 2nd connected FEB (maybe 0) |
| runtime_error | when both feb0 and feb1 or null pointers or if two febs given both not hosted by the same board. |
Definition at line 63 of file QuickDaq.cxx.
References fBoard, fFebs, and base::Peripheral::getBoard().
| nxyter::QuickDaq::~QuickDaq | ( | ) | [virtual] |
Definition at line 95 of file QuickDaq.cxx.
References fState, kDaqRunning, and stopRun().
| uint32_t nxyter::QuickDaq::getMsgEpoch | ( | ) | const [inline] |
Returns current epoch.
Definition at line 83 of file QuickDaq.h.
References fIter, and roc::Iterator::getMsgEpoch().
Referenced by cmd_printdata().
| double nxyter::QuickDaq::getMsgTime | ( | ) | [inline] |
Returns full message time as double.
Definition at line 87 of file QuickDaq.h.
References fMsgTime.
Referenced by cmd_testrocaux(), and cmd_testrocsync().
| double nxyter::QuickDaq::getRunTime | ( | ) | [inline] |
Returns wall clock time of message (measured since start run).
Definition at line 91 of file QuickDaq.h.
References fNowTime, and fStartTime.
| double nxyter::QuickDaq::getStartTime | ( | ) | [inline] |
Returns start time.
Definition at line 95 of file QuickDaq.h.
References fStartTime.
Referenced by cmd_printdata(), cmd_testrocaux(), cmd_testrocsync(), and print_daq_stats().
| int nxyter::QuickDaq::getState | ( | ) | [inline] |
| int nxyter::QuickDaq::getStopCode | ( | ) | [inline] |
| double nxyter::QuickDaq::getStopTime | ( | ) | [inline] |
Returns stop time.
Definition at line 99 of file QuickDaq.h.
References fStopTime.
Referenced by cmd_printdata(), cmd_testrocaux(), cmd_testrocsync(), and print_daq_stats().
| void nxyter::QuickDaq::interruptRun | ( | ) |
Interrupt data taking.
Main application for this method is to be called from a signal handler, often a SIGINT handler to catch a ^C. The code example below shows how such a SIGINT handler can be implemented.
void hdl_int(int sig, siginfo_t *info, void *cnxt) { p_to_quickdaq->interruptRun(); } int main(int argc, char* argv[]) { struct sigaction act; memset (&act, '\0', sizeof(act)); act.sa_sigaction = &hdl_int; act.sa_flags = SA_SIGINFO; if (sigaction(SIGINT, &act, 0) < 0) { perror ("sigaction"); } ... }
With such a handler DAQ runs will be gracefully terminated upon ^C.
Definition at line 288 of file QuickDaq.cxx.
References fState, fStopCode, and kDaqStopped.
Referenced by hdl_int().
| roc::Message& nxyter::QuickDaq::msg | ( | ) | [inline] |
Access current message data object.
Definition at line 79 of file QuickDaq.h.
References fIter, and roc::Iterator::msg().
Referenced by acquire_data(), nxyter::FebUtil::acquireTestTriggerData(), cmd_autosettrh(), cmd_printdata(), cmd_testrocaux(), cmd_testrocsync(), and testRun().
| void nxyter::QuickDaq::nextRunNxMask | ( | int | nxmask | ) |
Set active nXYTER mask for next run.
Definition at line 151 of file QuickDaq.cxx.
References fNextNxMask, and fNextNxMaskActive.
Referenced by nxyter::FebUtil::acquireTestTriggerData().
| double nxyter::QuickDaq::now | ( | ) | [static] |
Returns current time as a double.
Definition at line 385 of file QuickDaq.cxx.
Referenced by startRun(), stopRun(), and testRun().
| int nxyter::QuickDaq::setNxRegisterAll | ( | uint8_t | reg, | |
| uint8_t | val, | |||
| bool | veri = true | |||
| ) |
Write a value into a register of all nXYTERs.
Writes val into register reg of all nXYTERs in the setup.
| reg | register number | |
| val | value to be written | |
| veri | if true readback verification done (default is true) |
Definition at line 137 of file QuickDaq.cxx.
References fFebs, base::Board::operErrBuildInc(), and nxyter::FebBase::setNxRegisterAll().
| int nxyter::QuickDaq::setNxTestModes | ( | bool | testpuls, | |
| bool | testtrig, | |||
| int | calselect | |||
| ) |
Setup test pulser and test trigger mode in all nXYTERs.
Calls for all nXYTERs in the setup the NxI2c::setTestModes() method, check the documentation of this method for details.
| testtrig | determines whether test trigger mode is enabled | |
| testpuls | determines whether test pulser mode is enabled | |
| calselect | determines which channel group receives test pulse |
Definition at line 115 of file QuickDaq.cxx.
References fFebs, base::Board::operErrBuildInc(), and nxyter::FebBase::setNxTestModes().
| int nxyter::QuickDaq::startRun | ( | int | maxmsg = 0, |
|
| double | maxtime = 0., |
|||
| bool | noinit = false | |||
| ) |
Prepare for data taking, start a run.
Definition at line 163 of file QuickDaq.cxx.
References nxyter::QuickDaqStats::clear(), base::Board::Debug(), fBoard, fDaqFlushTimer, fDaqHighWater, fDaqLowWater, fFebs, fMaxMsg, fMaxTime, fNextNxMask, fNextNxMaskActive, fRocNx, fStartMsgTime, fStartTime, fState, fStats, fStopCode, nxyter::RocNx::getNxActive(), nxyter::FebBase::initRoc(), base::Board::isFile(), now(), base::Board::setFlushTimeout(), nxyter::RocNx::setNxActive(), roc::UdpBoard::setRocBufferFlushTimer(), roc::UdpBoard::setRocLowHighWater(), base::Board::startDaq(), base::Board::stopDaq(), stopRun(), and roc::Board::uploadStartDaqCmdList().
Referenced by acquire_data(), nxyter::FebUtil::acquireTestTriggerData(), cmd_autosettrh(), cmd_printdata(), cmd_testnxdata(), cmd_testrocaux(), and cmd_testrocsync().
| const QuickDaqStats& nxyter::QuickDaq::stats | ( | ) | [inline] |
Access statistics object.
Definition at line 103 of file QuickDaq.h.
References fStats.
Referenced by acquire_data(), nxyter::FebUtil::acquireTestTriggerData(), cmd_printdata(), cmd_scanvbiasf(), cmd_testrocaux(), cmd_testrocsync(), and get_vbiass_data().
| int nxyter::QuickDaq::stopRun | ( | bool | hardstop = false |
) |
End data taking.
Definition at line 234 of file QuickDaq.cxx.
References fBoard, fIter, fState, fStopCode, fStopTime, kDaqRunning, kDaqStarting, kDaqStopPending, kDaqStopping, roc::Iterator::next(), now(), and base::Board::suspendDaq().
Referenced by startRun(), testRun(), and ~QuickDaq().
| bool nxyter::QuickDaq::testRun | ( | double | timeout = 0. |
) |
Check run status.
Definition at line 298 of file QuickDaq.cxx.
References fBoard, fDaqStaStoTimeout, fIter, fMaxMsg, fMaxTime, fMsgTime, fNowTime, fStartMsgTime, fStartTime, fState, fStats, fStopCode, fStopMsgTime, fStopTime, roc::Iterator::getMsgFullTimeD(), nxyter::QuickDaqStats::increment(), base::Board::isFile(), roc::Message::isStartDaqMsg(), roc::Message::isStopDaqMsg(), kDaqRunning, kDaqStarting, kDaqStopByInterrupt, kDaqStopped, kDaqStopPending, kDaqStopping, nxyter::QuickDaqStats::kNMessage, roc::Iterator::msg(), msg(), roc::Iterator::next(), now(), and stopRun().
Referenced by acquire_data(), nxyter::FebUtil::acquireTestTriggerData(), cmd_autosettrh(), cmd_printdata(), cmd_testrocaux(), and cmd_testrocsync().
base::Board* nxyter::QuickDaq::fBoard [protected] |
board pointer
Definition at line 21 of file QuickDaq.h.
Referenced by QuickDaq(), startRun(), stopRun(), and testRun().
uint32_t nxyter::QuickDaq::fDaqFlushTimer [protected] |
int nxyter::QuickDaq::fDaqHighWater [protected] |
int nxyter::QuickDaq::fDaqLowWater [protected] |
double nxyter::QuickDaq::fDaqStaStoTimeout [protected] |
nxyter::FebBase* nxyter::QuickDaq::fFebs[2] [protected] |
available FEBs
Definition at line 22 of file QuickDaq.h.
Referenced by QuickDaq(), setNxRegisterAll(), setNxTestModes(), and startRun().
roc::Iterator nxyter::QuickDaq::fIter [protected] |
current iterator
Definition at line 39 of file QuickDaq.h.
Referenced by getMsgEpoch(), msg(), stopRun(), and testRun().
double nxyter::QuickDaq::fMaxMsg [protected] |
maximal number of msg in run
Definition at line 37 of file QuickDaq.h.
Referenced by startRun(), and testRun().
double nxyter::QuickDaq::fMaxTime [protected] |
maximal time of run
Definition at line 38 of file QuickDaq.h.
Referenced by startRun(), and testRun().
double nxyter::QuickDaq::fMsgTime [protected] |
current message time stamp
Definition at line 40 of file QuickDaq.h.
Referenced by getMsgTime(), and testRun().
int nxyter::QuickDaq::fNextNxMask [protected] |
nXYTER mask for next run
Definition at line 32 of file QuickDaq.h.
Referenced by nextRunNxMask(), and startRun().
bool nxyter::QuickDaq::fNextNxMaskActive [protected] |
nextRunNxMask() called
Definition at line 31 of file QuickDaq.h.
Referenced by nextRunNxMask(), and startRun().
double nxyter::QuickDaq::fNowTime [protected] |
wall time of message
Definition at line 41 of file QuickDaq.h.
Referenced by getRunTime(), and testRun().
nxyter::RocNx nxyter::QuickDaq::fRocNx [protected] |
double nxyter::QuickDaq::fStartMsgTime [protected] |
time start message
Definition at line 35 of file QuickDaq.h.
Referenced by startRun(), and testRun().
double nxyter::QuickDaq::fStartTime [protected] |
time start call
Definition at line 33 of file QuickDaq.h.
Referenced by getRunTime(), getStartTime(), startRun(), and testRun().
int nxyter::QuickDaq::fState [protected] |
DAQ state.
Definition at line 24 of file QuickDaq.h.
Referenced by getState(), interruptRun(), startRun(), stopRun(), testRun(), and ~QuickDaq().
QuickDaqStats nxyter::QuickDaq::fStats [protected] |
statistic counters
Definition at line 30 of file QuickDaq.h.
Referenced by startRun(), stats(), and testRun().
int nxyter::QuickDaq::fStopCode [protected] |
DAQ stop code.
Definition at line 25 of file QuickDaq.h.
Referenced by getStopCode(), interruptRun(), startRun(), stopRun(), and testRun().
double nxyter::QuickDaq::fStopMsgTime [protected] |
double nxyter::QuickDaq::fStopTime [protected] |
time stop call
Definition at line 34 of file QuickDaq.h.
Referenced by getStopTime(), stopRun(), and testRun().
1.7.1