Jpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Types | Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
KM3NETDAQ::JDataFilter Class Reference

Main class for real-time filtering of data. More...

Inheritance diagram for KM3NETDAQ::JDataFilter:
KM3NETDAQ::JDAQClient JDAQStateMachine KM3NETDAQ::JDAQClient_t JDAQCHSM

Classes

struct  JCircularBuffer_t
 Circular buffer. More...
 

Public Types

typedef JSocketInputChannel
< JDAQAbstractPreamble
JSocketInputChannel_t
 
typedef std::vector
< JSocketInputChannel_t
JChannelList_t
 
typedef double hit_type
 
typedef JSuperFrame1D< hit_typeJSuperFrame1D_t
 
typedef JSuperFrame2D< hit_typeJSuperFrame2D_t
 
typedef JTimeslice< hit_typeJTimeslice_t
 
typedef JBuildL1< hit_typeJBuildL1_t
 
typedef JBuildL2< hit_typeJBuildL2_t
 

Public Member Functions

 JDataFilter (const std::string &name, const std::string &server, const std::string &hostname, JLogger *logger, const int level, const int port, const int backlog, const int buffer_size, const std::string &path)
 Constructor. More...
 
virtual void actionEnter () override
 Interface methods for actions corresponding to state transitions. More...
 
virtual void actionExit () override
 
virtual void actionInit (int length, const char *buffer) override
 
virtual void actionConfigure (int length, const char *buffer) override
 
virtual void actionStart (int length, const char *buffer) override
 
virtual void actionPause (int length, const char *buffer) override
 
virtual void actionContinue (int length, const char *buffer) override
 
virtual void actionStop (int length, const char *buffer) override
 
virtual void actionReset (int length, const char *buffer) override
 
virtual void actionQuit (int length, const char *buffer) override
 
virtual void setSelect (JFileDescriptorMask &mask) const override
 Set the file descriptor mask for the select call. More...
 
virtual void actionSelect (const JFileDescriptorMask &mask) override
 Action method following last select call. More...
 
virtual void actionRunning () override
 This method is repeatedly called when this client machine is in state Running and the clock interval time is non-zero. More...
 
void updateFrameQueue (const JChannelList_t::const_iterator channel)
 Update queue with data frames. More...
 
void processTimeSlice (const JDAQTimesliceL0 &timeslice)
 Process time slice. More...
 
void typeout ()
 Report status to message logger. More...
 
virtual void actionTagged (const JTag &tag, int length, const char *buffer) override
 Tagged action to handle alerts. More...
 
virtual bool enter (const JArgs &args)
 Enter the state machine. More...
 
virtual bool enter ()
 Enter the state machine. More...
 
virtual bool exit ()
 Exit the state machine. More...
 
bool isRunning () const
 Check if this client is in runnig state. More...
 
void replaceEvent (const JTag &oldTag, const JTag &newTag, JDAQEvent_t &event)
 Replace tag of given event in event table. More...
 
JDAQEvent_tfindEvent (const JTag &tag, const std::string &event_name)
 Find event in event table. More...
 
void addSubscription (const JSubscription &subscription)
 Add custom subscription. More...
 
template<class T >
void addParameter (const char option, T &parameter)
 Add parameter to parser used in method enter(). More...
 
template<class T >
void addParameter (const char option, T &parameter, const T &value)
 Add parameter to parser used in method enter(). More...
 
void setSelect ()
 Set the file descriptor mask for the select call. More...
 
virtual void actionInput (int length, const char *buffer)
 This method is called at ev_input. More...
 
virtual bool filter (const JTag &tag, int length, const char *buffer)
 Filter message. More...
 
void run ()
 Run as run control client following command messages via JNET::JControlHost. More...
 
void run (const int port)
 Run for ever. More...
 
void run (std::istream &in)
 Run client with commands from input stream (e.g. for debugging). More...
 
void A1 (CHSM_ns_alias::event const &)
 
void A2 (CHSM_ns_alias::event const &)
 
void A3 (CHSM_ns_alias::event const &)
 
void A4 (CHSM_ns_alias::event const &)
 
void A5 (CHSM_ns_alias::event const &)
 
void A6 (CHSM_ns_alias::event const &)
 
void A7 (CHSM_ns_alias::event const &)
 
void A8 (CHSM_ns_alias::event const &)
 
void A9 (CHSM_ns_alias::event const &)
 
void A10 (CHSM_ns_alias::event const &)
 
void A11 (CHSM_ns_alias::event const &)
 
void A12 (CHSM_ns_alias::event const &)
 
void A13 (CHSM_ns_alias::event const &)
 
void A14 (CHSM_ns_alias::event const &)
 
void EAM4root (CHSM_ns_alias::state const &, CHSM_ns_alias::event const &)
 
void XAM4root (CHSM_ns_alias::state const &, CHSM_ns_alias::event const &)
 
const std::string & getName () const
 Get name of state machine. More...
 
const std::string & getName () const
 Get name of state machine. More...
 
int getDetectorID () const
 Get detector identifier. More...
 
int getDetectorID () const
 Get detector identifier. More...
 
int getRunNumber () const
 Get run number. More...
 
int getRunNumber () const
 Get run number. More...
 
virtual void actionError ()
 
virtual void actionError ()
 
virtual void actionRecover (int, const char *)
 
virtual void actionRecover (int, const char *)
 
const std::string & getHostname () const
 Get hostname. More...
 
const std::string & getFullName () const
 Get full name of this run control client. More...
 
const JTaggetUniqueTag () const
 Get unique tag of this run control client. More...
 
long long int getClockDelay () const
 Get total delay time. More...
 
long long int getClockInterval () const
 Get interval time. More...
 
void setClockInterval (const long long int interval_us)
 Set interval time. More...
 
void resetClock ()
 Reset clock. More...
 
int getEventNumber () const
 Get last event number. More...
 
void setEventNumber (const int event_number)
 Set last event number. More...
 

Static Public Member Functions

static bool processIndexSorter (const JDAQProcess &first, const JDAQProcess &second)
 Sort DAQ process by index. More...
 

Public Attributes

JMeta meta
 meta data More...
 
JDAQStateMachine::state_root root
 
JDAQStateMachine::state_Main Main
 
JDAQStateMachine::ev_daq_event ev_daq
 
char ev_daq_param_block [sizeof(ev_daq_event::param_block)]
 
JDAQStateMachine::ev_init_event ev_init
 
char ev_init_param_block [sizeof(ev_init_event::param_block)]
 
JDAQStateMachine::ev_configure_event ev_configure
 
char ev_configure_param_block [sizeof(ev_configure_event::param_block)]
 
JDAQStateMachine::ev_start_event ev_start
 
char ev_start_param_block [sizeof(ev_start_event::param_block)]
 
JDAQStateMachine::ev_pause_event ev_pause
 
char ev_pause_param_block [sizeof(ev_pause_event::param_block)]
 
JDAQStateMachine::ev_continue_event ev_continue
 
char ev_continue_param_block [sizeof(ev_continue_event::param_block)]
 
JDAQStateMachine::ev_stop_event ev_stop
 
char ev_stop_param_block [sizeof(ev_stop_event::param_block)]
 
JDAQStateMachine::ev_reset_event ev_reset
 
char ev_reset_param_block [sizeof(ev_reset_event::param_block)]
 
JDAQStateMachine::ev_quit_event ev_quit
 
char ev_quit_param_block [sizeof(ev_quit_event::param_block)]
 
JDAQStateMachine::ev_off_event ev_off
 
char ev_off_param_block [sizeof(ev_off_event::param_block)]
 
JDAQStateMachine::ev_check_event ev_check
 
char ev_check_param_block [sizeof(ev_check_event::param_block)]
 
JDAQStateMachine::ev_input_event ev_input
 
char ev_input_param_block [sizeof(ev_input_event::param_block)]
 
JDAQStateMachine::ev_recover_event ev_recover
 
char ev_recover_param_block [sizeof(ev_recover_event::param_block)]
 
JDAQStateMachine::ev_error_event ev_error
 
char ev_error_param_block [sizeof(ev_error_event::param_block)]
 

Static Public Attributes

static const int MAXIMUM_FILE_NUMBER = 100
 maximum file number for overwrite protection. More...
 
static const int TIMEOUT_S = 1
 time out of update [s] More...
 

Protected Types

typedef void(JDAQCHSM::* action )(int, const char *)
 Type definition of action method. More...
 
typedef void(JDAQCHSM::* action )(int, const char *)
 Type definition of action method. More...
 

Protected Attributes

JSharedPointer< JControlHostserver
 message server More...
 
JMessageLogger logger
 message logger More...
 
std::string name
 
int detector_id
 
int run_number
 
JEventTable eventTable
 event table More...
 
std::string fullname
 
JTag unique_tag
 
JTimekeeper clock
 central clock More...
 
int event_number
 number of last event More...
 

Private Types

typedef
JControlHostObjectOutput
< JDAQTypes_t
JControlHost_t
 

Private Member Functions

template<class T >
bool put (const T &object)
 Auxiliary method to send object to data server. More...
 

Private Attributes

JSinglePointer< JControlHost_tdatawriter
 controlhost of data server (to which data writer should be connected) More...
 
std::string hostname
 host name of data server More...
 
int port
 server socket port More...
 
int backlog
 
int buffer_size
 
JSinglePointer< JServerSocketserversocket
 server for data queue connections More...
 
JChannelList_t channelList
 connections to data queue More...
 
JTimer timer
 
JQuantile Qt
 
std::list< JDAQTimesliceL0timeslices
 buffer with pending time slice data More...
 
int current_slice_index
 
unsigned int frames_per_slice
 
unsigned int maximum_frames_per_slice
 
int maximal_frame_index
 
JTriggerParameters parameters
 
JSinglePointer< JTimesliceRoutertimesliceRouter
 
JDetector detector
 
JSinglePointer< JModuleRoutermoduleRouter
 
JSinglePointer< JBuildL1_tbuildL1
 
JSinglePointer< JBuildL2_tbuildL2
 
JSinglePointer< JBuildL2_tbuildSN
 
JSinglePointer< JBuildL2_tbuildNB
 
JSinglePointer< JTriggerNBtriggerNB
 
JSinglePointer< JTrigger3DMuontrigger3DMuon
 
JSinglePointer< JTrigger3DShowertrigger3DShower
 
JSinglePointer< JTriggerMXShowertriggerMXShower
 
JMessageScheduler logErrorRun
 
JMessageScheduler logErrorDetector
 
JMessageScheduler logErrorIndex
 
JMessageScheduler logErrorIncomplete
 
std::vector< JDAQProcessdataFilters
 
std::vector< JDAQProcessdataQueues
 
long long int totalCPURAM
 
unsigned int maxQueueDepth
 
long long int maxQueueSize
 
long long int queueSize
 
bool reporting
 
long long int numberOfEvents
 
long long int numberOfBytes
 
long long int numberOfTimeslicesProcessed
 
long long int numberOfIncompleteTimeslicesProcessed
 
int minFrameNumber
 
int maxFrameNumber
 
long long int number_of_packets_received
 
long long int number_of_packets_discarded
 
long long int number_of_reads
 
long long int number_of_bytes_received
 
JCircularBuffer_t c_buffer
 
std::string path
 directory for writing circular buffer More...
 

Detailed Description

Main class for real-time filtering of data.

This class implements the action methods for each transition of the state machine.
When the state machine is entered, data are continually collected using custom implementation of virtual methods JDataFilter::setSelect and JDataFilter::actionSelect.

In state Running, all incoming data are buffered, referred to as "queue".
When a JDAQTimeslice is complete, it processed in the same way as applications JTriggerProcessor.cc and JTriggerEfficiency.cc.
The completeness of a time slice is defined by the parameter frames_per_slice which, together with other parameters, is parsed in method JDataFilter::actionConfigure.

  numberOfFramesPerSlice = frames_per_slice = 1;

Note that this parameter can change during operation (see below).

A timeout may occur when the total amount of data or the number of incomplete time slices in the queue exceeds the corresponding pre-set limit:

  queueSize  = <maximal queue size [B]>;
  queueDepth = <maximal queue depth>;

Note that these values apply per JDataFilter.
When a timeout occurs, the parameter frames_per_slice< is set to the number of frames in the oldest time slice.
When data are received with a frame index below the current frame index, the parameter frames_per_slice is incremented by one, upto the original value set at JDataFilter::actionConfigure.
In addition, a circular buffer based on a ROOT TTree for each JDAQTimeslice type can be maintained.
The following parameters can be used to configure the circular buffer.

  path     = <write directory for circular buffer>;
  c_sizeL0 = <L0 buffer size>;
  c_sizeL1 = <L1 buffer size>;
  c_sizeL2 = <L2 buffer size>;
  c_sizeSN = <SN buffer size>;

Note that when path is set to a valid director:

After closure of the file, a new file will be opened if path is set;

In this, YYYY, MM and DD are the year, month and day at the time of the configuration or alert and <tag> corresponds to the unique JTag of the JDataFilter process.
The <index> is optional and will only be used to prevent overwriting of an existing file (e.g. when there is more than one alert on a given day).

The application/script JConvert.cc/JConvert.sh can be used to readily convert multiple input files to a single output file.

The script JDOMandDataFilter.sh can be used to test this application.

Definition at line 145 of file JDataFilter.cc.

Member Typedef Documentation

Definition at line 150 of file JDataFilter.cc.

Definition at line 151 of file JDataFilter.cc.

Definition at line 153 of file JDataFilter.cc.

Definition at line 154 of file JDataFilter.cc.

Definition at line 155 of file JDataFilter.cc.

Definition at line 156 of file JDataFilter.cc.

Definition at line 157 of file JDataFilter.cc.

Definition at line 158 of file JDataFilter.cc.

Definition at line 1203 of file JDataFilter.cc.

typedef void(JDAQCHSM::* JDAQCHSM::action)(int, const char *)
protectedinherited

Type definition of action method.

Definition at line 141 of file JDAQCHSM.chsm.

typedef void(JDAQCHSM::* JDAQCHSM::action)(int, const char *)
protectedinherited

Type definition of action method.

Definition at line 152 of file JDAQCHSM.hh.

Constructor & Destructor Documentation

KM3NETDAQ::JDataFilter::JDataFilter ( const std::string &  name,
const std::string &  server,
const std::string &  hostname,
JLogger logger,
const int  level,
const int  port,
const int  backlog,
const int  buffer_size,
const std::string &  path 
)
inline

Constructor.

Parameters
namename of client
servername of command message server
hostnamename of data server
loggerpointer to logger
leveldebug level
portserver port
backlogserver backlog
buffer_sizeserver buffer
pathdirectory for writing circular buffer

replace tag to receive dfilter specific messages in configure

Definition at line 289 of file JDataFilter.cc.

297  :
298  JDAQClient (name,server,logger,level),
299  hostname (hostname),
300  port (port),
301  backlog (backlog),
303  path (path)
304  {
305  replaceEvent(RC_CMD, RC_DFILTER, ev_configure); /// replace tag to receive dfilter specific messages in configure
306 
308 
309  totalCPURAM = getRAM();
310  current_slice_index = -1;
311  reporting = false;
312  }
JDAQStateMachine::ev_configure_event ev_configure
static const JNET::JTag RC_DFILTER
Definition: JDAQTags.hh:51
std::string name
Definition: JDAQCHSM.chsm:154
void replaceEvent(const JTag &oldTag, const JTag &newTag, JDAQEvent_t &event)
Replace tag of given event in event table.
Definition: JDAQClient.hh:492
JSharedPointer< JControlHost > server
message server
Definition: JDAQClient.hh:800
long long int totalCPURAM
Auxiliary class for all subscription.
Definition: JControlHost.hh:97
int port
server socket port
std::string hostname
host name of data server
static const JNET::JTag RC_ALERT
Definition: JDAQTags.hh:57
unsigned long long int getRAM()
Get RAM of this CPU.
std::string path
directory for writing circular buffer
JDAQClient(const std::string &name, const std::string &server, JLogger *logger, const int level)
Constructor.
Definition: JDAQClient.hh:290
static const JNET::JTag RC_CMD
Definition: JDAQTags.hh:44
void addSubscription(const JSubscription &subscription)
Add custom subscription.
Definition: JDAQClient.hh:523

Member Function Documentation

static bool KM3NETDAQ::JDataFilter::processIndexSorter ( const JDAQProcess first,
const JDAQProcess second 
)
inlinestatic

Sort DAQ process by index.

Parameters
firstfirst DAQ process
secondsecond DAQ process
Returns
true if index of first DAQ process less than that of second; else false

Definition at line 270 of file JDataFilter.cc.

271  {
272  return first.index < second.index;
273  }
std::string index
index in process list
virtual void KM3NETDAQ::JDataFilter::actionEnter ( )
inlineoverridevirtual

Interface methods for actions corresponding to state transitions.

Reimplemented from JDAQCHSM.

Definition at line 315 of file JDataFilter.cc.

316  {}
virtual void KM3NETDAQ::JDataFilter::actionExit ( )
inlineoverridevirtual

Reimplemented from JDAQCHSM.

Definition at line 319 of file JDataFilter.cc.

320  {
321  if (c_buffer.is_open()) {
322 
323  JNoticeStream(logger) << "Close circular buffer " << c_buffer;
324 
325  c_buffer.close();
326  }
327 
328  datawriter.reset();
329  }
virtual void reset() override
Reset pointer.
Definition: JStorage.hh:42
JCircularBuffer_t c_buffer
virtual void close() override
Close file.
virtual bool is_open() const =0
Check is device is open.
JSinglePointer< JControlHost_t > datawriter
controlhost of data server (to which data writer should be connected)
JMessageLogger logger
message logger
Definition: JDAQClient.hh:801
virtual void KM3NETDAQ::JDataFilter::actionInit ( int  length,
const char *  buffer 
)
inlineoverridevirtual

Reimplemented from JDAQCHSM.

Definition at line 332 of file JDataFilter.cc.

333  {
334  JDebugStream(logger) << "actionInit() " << std::string(buffer,length);
335 
336  try {
337 
338  JDebugStream(logger) << "Start server.";
339 
341  }
342  catch(const std::exception& error) {
343  JErrorStream(logger) << "Error \"" << error.what() << "\"; trigger ev_error.";
344  ev_error();
345  }
346  }
JDAQStateMachine::ev_error_event ev_error
virtual void reset() override
Reset pointer.
Definition: JStorage.hh:42
JSinglePointer< JServerSocket > serversocket
server for data queue connections
TCP Server socket.
Level specific message streamers.
int port
server socket port
JMessageLogger logger
message logger
Definition: JDAQClient.hh:801
virtual void KM3NETDAQ::JDataFilter::actionConfigure ( int  length,
const char *  buffer 
)
inlineoverridevirtual

Reimplemented from JDAQCHSM.

Definition at line 349 of file JDataFilter.cc.

350  {
351  using namespace std;
352 
353  JDebugStream(logger) << "actionConfigure() " << endl << std::string(buffer,length);
354 
355  long long int update_s = 10;
356  long long int logger_s = 5;
357 
358  parameters .reset();
359  dataFilters.clear();
360  dataQueues .clear();
361 
362  reporting = false;
363 
364  JProperties properties(JEquationParameters("=", ";", "", ""), 0);
365 
366  properties["dataWriter"] = hostname;
367  properties["numberOfFramesPerSlice"] = frames_per_slice = 1;
368  properties["detector"] = detector;
369  properties["triggerParameters"] = parameters;
370  properties["queueSize"] = maxQueueSize = (totalCPURAM - GIGABYTE); // leave 1 GB left ...
371  properties["queueDepth"] = maxQueueDepth = 20; // to be optimized
372  properties["frameIndex"] = maximal_frame_index = 100000;
373  properties["logger_s"] = logger_s;
374  properties["update_s"] = update_s;
375  properties["JDataFilter"] = dataFilters;
376  properties["DataQueue"] = dataQueues;
377  properties["path"] = path;
378  properties["c_sizeL0"] = c_buffer.sizeL0;
379  properties["c_sizeL1"] = c_buffer.sizeL1;
380  properties["c_sizeL2"] = c_buffer.sizeL2;
381  properties["c_sizeSN"] = c_buffer.sizeSN;
382 
383  try {
384  properties.read(string(buffer, length));
385  }
386  catch(const exception& error) {
387  JErrorStream(logger) << error.what();
388  }
389 
390  if (update_s <= 0) { update_s = 1; }
391  if (logger_s <= 0) { logger_s = 1; }
392 
393  setClockInterval(update_s * 1000000LL);
394 
396 
397  if (hostname != "")
399  else
400  throw JException("Undefined data writer host name.");
401 
403 
404  // process processlist
405 
406  if (dataFilters.empty()) {
407  JNoticeStream(logger) << "No DataFilters in process list, or no process list. "
408  << "Assuming that this process is the only process on this CPU and setting parameters accordingly.";
409  }
410 
411  sort(dataFilters.begin(), dataFilters.end(), processIndexSorter);
412 
413  unsigned int numberOfDataFiltersOnThisMachine = 0;
414  vector<JDAQProcess>::iterator thisProcess = dataFilters.end();
415 
417 
418  {
419  JNoticeStream notice(logger);
420 
421  notice << "My IP addresses:";
422 
423  for (vector<string>::const_iterator i = IP.begin(); i != IP.end(); ++i) {
424  notice << ' ' << *i;
425  }
426  }
427 
428  for (vector<JDAQProcess>::iterator i = dataFilters.begin(); i != dataFilters.end(); ++i) {
429 
430  JDebugStream(logger) << "Test IP address \"" << i->hostname << "\" " << (find(IP.begin(), IP.end(), i->hostname) != IP.end());
431 
432  if (find(IP.begin(), IP.end(), i->hostname) != IP.end()) {
433 
434  numberOfDataFiltersOnThisMachine++;
435 
436  if (i->port == this->port) {
437  thisProcess = i;
438  }
439  }
440  }
441 
442  if (numberOfDataFiltersOnThisMachine == 0) {
443  JNoticeStream(logger) << "Zero data filters on this machine according to process list (if it exists). "
444  << "Assuming one datafilter on this machine.";
445  numberOfDataFiltersOnThisMachine = 1;
446  }
447 
448  if (thisProcess == dataFilters.end()) {
449  JErrorStream(logger) << "This process cannot be found in the process list. Why do I exist?";
450  }
451 
452  if (thisProcess != dataFilters.end() && thisProcess->index != getName()) {
453  JErrorStream(logger) << "Mismatch between given process names: "
454  << "I am called " << getName()
455  << ", but in the process list I am referred to as " << thisProcess->index;
456  }
457 
458  if (dataFilters.begin() == thisProcess || dataFilters.empty()) { // set reporting
459  reporting = true;
460  }
461 
462  if (maxQueueSize > (totalCPURAM-GIGABYTE)/(numberOfDataFiltersOnThisMachine)) { // check maximum size of queue
463 
464  maxQueueSize = (totalCPURAM-GIGABYTE)/(numberOfDataFiltersOnThisMachine);
465 
466  JNoticeStream(logger) << "Maximum queue size is too large given the number of processes on this machine. "
467  << "Queue size reduced to "
468  << maxQueueSize << " bytes." ;
469  }
470 
471  // trigger parameters
472 
474 
479 
481 
482  if (reporting) {
483  JNoticeStream(logger) << "This data filter process will report.";
484  JNoticeStream(logger) << "Number of modules: " << (*moduleRouter)->size();
485  JDebugStream (logger) << "Trigger parameters: " << parameters;
486  JDebugStream (logger) << "Detector description: " << endl << detector;
487  JNoticeStream(logger) << "Update period [s]: " << getClockInterval();
488  }
489 
491 
492  // set L1, L2 and SN builders
493 
498 
499  if (buildL1.get() == NULL) { JErrorStream(logger) << "Failed to allocate buildL1."; }
500  if (buildL2.get() == NULL) { JErrorStream(logger) << "Failed to allocate buildL2."; }
501  if (buildSN.get() == NULL) { JErrorStream(logger) << "Failed to allocate buildSN."; }
502  if (buildNB.get() == NULL) { JErrorStream(logger) << "Failed to allocate buildSN."; }
503 
508 
509  if (c_buffer.is_enabled()) {
510 
511  if (!c_buffer.is_open()) {
512 
514 
515  if (c_buffer.is_open()) {
516 
517  JNoticeStream(logger) << "Created circular buffer " << c_buffer;
518 
520 
521  } else {
522 
523  JErrorStream (logger) << "Failed to create circular buffer in directory <" << path << ">; disable functionality.";
524 
525  c_buffer.disable();
526  }
527 
528  } else {
529 
530  JNoticeStream(logger) << "Continue using circular buffer " << c_buffer;
531  }
532 
533  if (c_buffer.sizeL0 > 0) { static_cast<JTreeWriterObjectOutput<JDAQTimesliceL0>&>(c_buffer).SetCircular(c_buffer.sizeL0); }
534  if (c_buffer.sizeL1 > 0) { static_cast<JTreeWriterObjectOutput<JDAQTimesliceL1>&>(c_buffer).SetCircular(c_buffer.sizeL1); }
535  if (c_buffer.sizeL2 > 0) { static_cast<JTreeWriterObjectOutput<JDAQTimesliceL2>&>(c_buffer).SetCircular(c_buffer.sizeL2); }
536  if (c_buffer.sizeSN > 0) { static_cast<JTreeWriterObjectOutput<JDAQTimesliceSN>&>(c_buffer).SetCircular(c_buffer.sizeSN); }
537 
538  } else {
539 
540  if (c_buffer.is_open()) {
541  c_buffer.close();
542  }
543  }
544  }
Message logger with time scheduler.
General exception.
Definition: JException.hh:23
void open(const std::string &path, const JTag &tag)
Open file.
Definition: JDataFilter.cc:182
JMeta meta
meta data
JSinglePointer< JTriggerNB > triggerNB
static bool processIndexSorter(const JDAQProcess &first, const JDAQProcess &second)
Sort DAQ process by index.
Definition: JDataFilter.cc:270
JBuildL2< hit_type > JBuildL2_t
Definition: JDataFilter.cc:158
JMessageScheduler logErrorIndex
Long64_t sizeL1
Number of L1 time slices.
Definition: JDataFilter.cc:257
Router for direct addressing of module data in detector data structure.
virtual void reset() override
Reset pointer.
Definition: JStorage.hh:42
long long int getClockInterval() const
Get interval time.
Definition: JDAQClient.hh:153
Utility class to parse parameter values.
Definition: JProperties.hh:496
void setClockInterval(const long long int interval_us)
Set interval time.
Definition: JDAQClient.hh:164
unsigned int maximum_frames_per_slice
JMessageScheduler logErrorIncomplete
Simple data structure to support I/O of equations (see class JLANG::JEquation).
Time keeper.
Definition: JTimekeeper.hh:34
JTriggerParameters parameters
JBuildL1< hit_type > JBuildL1_t
Definition: JDataFilter.cc:157
JCircularBuffer_t c_buffer
bool is_enabled() const
Check whether writing of data is enabled.
Definition: JDataFilter.cc:226
std::string trim(const std::string &buffer)
Trim string.
Definition: JLangToolkit.hh:79
JSinglePointer< JBuildL2_t > buildL2
JSinglePointer< JTriggerMXShower > triggerMXShower
JSinglePointer< JBuildL1_t > buildL1
TFile * getFile() const
Get file.
Definition: JRootFile.hh:65
long long int totalCPURAM
JSinglePointer< JTrigger3DShower > trigger3DShower
double getMaximalDistance(const JDetector &detector)
Get maximal distance between modules in detector.
Detector file.
Definition: JHead.hh:196
std::vector< JDAQProcess > dataFilters
Router for fast addressing of hits in KM3NETDAQ::JDAQTimeslice data structure as a function of the op...
JMessageScheduler logErrorDetector
JSinglePointer< JBuildL2_t > buildSN
JSinglePointer< JBuildL2_t > buildNB
Level specific message streamers.
Nano-beacon trigger.
Definition: JTriggerNB.hh:19
Long64_t sizeSN
Number of SN time slices.
Definition: JDataFilter.cc:259
std::string hostname
host name of data server
unsigned int maxQueueDepth
JControlHostObjectOutput< JDAQTypes_t > JControlHost_t
std::vector< JDAQProcess > dataQueues
long long int maxQueueSize
JSinglePointer< JTimesliceRouter > timesliceRouter
virtual void close() override
Close file.
static const long long int GIGABYTE
Number of bytes in a mega-byte.
virtual bool is_open() const =0
Check is device is open.
std::vector< std::string > getListOfIPaddresses()
Get list of IP address (decimal-dot notation).
Definition: JNetwork.hh:216
Long64_t sizeL0
Number of L0 time slices.
Definition: JDataFilter.cc:256
JSinglePointer< JTrigger3DMuon > trigger3DMuon
JSinglePointer< JControlHost_t > datawriter
controlhost of data server (to which data writer should be connected)
JMessageScheduler logErrorRun
JSinglePointer< JModuleRouter > moduleRouter
const JTag & getUniqueTag() const
Get unique tag of this run control client.
Definition: JDAQClient.hh:130
std::string path
directory for writing circular buffer
JMessageLogger logger
message logger
Definition: JDAQClient.hh:801
const std::string & getName() const
Get name of state machine.
Definition: JDAQCHSM.chsm:78
Long64_t sizeL2
Number of L2 time slices.
Definition: JDataFilter.cc:258
virtual JClass_t * get() const override
Get pointer.
Definition: JPointer.hh:64
unsigned int frames_per_slice
bool putObject(TDirectory *dir, const T &object)
Write object to ROOT directory.
virtual void KM3NETDAQ::JDataFilter::actionStart ( int  length,
const char *  buffer 
)
inlineoverridevirtual

Reimplemented from JDAQCHSM.

Definition at line 547 of file JDataFilter.cc.

548  {
549  using namespace std;
550 
551  if (reporting) {
552  JNoticeStream(logger) << "Start run " << getRunNumber();
553  }
554 
555  timeslices.clear();
556 
557  current_slice_index = -1;
558  queueSize = 0;
559 
560  numberOfEvents = 0;
561  numberOfBytes = 0;
564 
568  number_of_reads = 0;
569 
570  minFrameNumber = numeric_limits<int>::max();
571  maxFrameNumber = numeric_limits<int>::min();
572 
573  // Reset global trigger counter.
574 
576 
577  logErrorRun .reset();
579  logErrorIndex .reset();
581 
582  timer.reset();
583  timer.start();
584 
585  Qt.reset();
586 
587  // send trigger parameters to the datawriter
588 
589  ostringstream os;
590 
591  os << getRunNumber() << ' ' << parameters;
592 
593  datawriter->PutFullString(IO_TRIGGER_PARAMETERS, os.str());
594  }
std::list< JDAQTimesliceL0 > timeslices
buffer with pending time slice data
long long int numberOfTimeslicesProcessed
JMessageScheduler logErrorIndex
JMessageScheduler logErrorIncomplete
static const JNET::JTag IO_TRIGGER_PARAMETERS
Definition: JDAQTags.hh:68
JTriggerParameters parameters
long long int number_of_packets_discarded
void reset()
Reset timer.
Definition: JTimer.hh:76
long long int numberOfBytes
JMessageScheduler logErrorDetector
long long int numberOfIncompleteTimeslicesProcessed
long long int number_of_packets_received
static void reset()
Reset counter of unique instance of this class object.
long long int queueSize
int getRunNumber() const
Get run number.
Definition: JDAQCHSM.chsm:100
JSinglePointer< JControlHost_t > datawriter
controlhost of data server (to which data writer should be connected)
JMessageScheduler logErrorRun
JMessageLogger logger
message logger
Definition: JDAQClient.hh:801
long long int number_of_bytes_received
void reset()
Reset.
Definition: JQuantile.hh:60
long long int number_of_reads
long long int numberOfEvents
void start()
Start timer.
Definition: JTimer.hh:89
virtual void KM3NETDAQ::JDataFilter::actionPause ( int  length,
const char *  buffer 
)
inlineoverridevirtual

Reimplemented from JDAQCHSM.

Definition at line 597 of file JDataFilter.cc.

598  {
599  using namespace std;
600 
601  if (!timeslices.empty()) {
602 
603  JNoticeStream(logger) << "Flushing " << timeslices.size() << " slices.";
604 
605  for (list<JDAQTimesliceL0>::const_iterator i = timeslices.begin(); i != timeslices.end(); ++i) {
606  queueSize -= getSizeof(*i);
607  }
608 
609  timeslices.clear();
610  }
611 
612  { // force clearance of memory
613 
615 
616  timeslices.swap(buffer);
617  }
618 
619  if (queueSize != 0) {
620  JWarningStream(logger) << "Pending data in queue " << queueSize << " [B]";
621  }
622 
623  current_slice_index = -1;
624  queueSize = 0;
625 
626  timer.stop();
627  }
std::list< JDAQTimesliceL0 > timeslices
buffer with pending time slice data
void stop()
Stop timer.
Definition: JTimer.hh:113
long long int queueSize
JMessageLogger logger
message logger
Definition: JDAQClient.hh:801
size_t getSizeof(const JDAQEvent &object)
Get size of object.
Definition: JDAQEventIO.hh:26
virtual void KM3NETDAQ::JDataFilter::actionContinue ( int  length,
const char *  buffer 
)
inlineoverridevirtual

Reimplemented from JDAQCHSM.

Definition at line 630 of file JDataFilter.cc.

631  {
632  timer.start();
633  }
void start()
Start timer.
Definition: JTimer.hh:89
virtual void KM3NETDAQ::JDataFilter::actionStop ( int  length,
const char *  buffer 
)
inlineoverridevirtual

Reimplemented from JDAQCHSM.

Definition at line 636 of file JDataFilter.cc.

637  {
638  typeout();
639 
640  datawriter.reset();
641  }
virtual void reset() override
Reset pointer.
Definition: JStorage.hh:42
void typeout()
Report status to message logger.
JSinglePointer< JControlHost_t > datawriter
controlhost of data server (to which data writer should be connected)
virtual void KM3NETDAQ::JDataFilter::actionReset ( int  length,
const char *  buffer 
)
inlineoverridevirtual

Reimplemented from JDAQCHSM.

Definition at line 644 of file JDataFilter.cc.

645  {
646  if (serversocket.is_valid()) {
648  }
649 
651  }
virtual void reset() override
Reset pointer.
Definition: JStorage.hh:42
JSinglePointer< JServerSocket > serversocket
server for data queue connections
bool is_valid() const
Check validity of pointer.
int shutdown()
Shut down socket.
Definition: JSocket.hh:94
virtual void KM3NETDAQ::JDataFilter::actionQuit ( int  length,
const char *  buffer 
)
inlineoverridevirtual

Reimplemented from JDAQCHSM.

Definition at line 654 of file JDataFilter.cc.

655  {
656  datawriter.reset();
657  }
virtual void reset() override
Reset pointer.
Definition: JStorage.hh:42
JSinglePointer< JControlHost_t > datawriter
controlhost of data server (to which data writer should be connected)
virtual void KM3NETDAQ::JDataFilter::setSelect ( JFileDescriptorMask mask) const
inlineoverridevirtual

Set the file descriptor mask for the select call.

This implementation does nothing but may be redefined by the derived class.

Parameters
maskfile descriptor mask

Reimplemented from KM3NETDAQ::JDAQClient.

Definition at line 660 of file JDataFilter.cc.

661  {
662  if (serversocket.is_valid()) {
663  mask.set(*serversocket);
664  }
665 
666  for (JChannelList_t::const_iterator channel = channelList.begin(); channel != channelList.end(); ++channel) {
667  if (!channel->isReady()) {
668  mask.set(channel->getFileDescriptor());
669  }
670  }
671  }
void set(const int file_descriptor)
Set file descriptor.
JSinglePointer< JServerSocket > serversocket
server for data queue connections
bool is_valid() const
Check validity of pointer.
JChannelList_t channelList
connections to data queue
virtual void KM3NETDAQ::JDataFilter::actionSelect ( const JFileDescriptorMask mask)
inlineoverridevirtual

Action method following last select call.

This implementation does nothing but may be redefined by the derived class.

Parameters
maskfile descriptor mask

Reimplemented from KM3NETDAQ::JDAQClient.

Definition at line 674 of file JDataFilter.cc.

675  {
676  using namespace std;
677 
678  for (JChannelList_t::iterator channel = channelList.begin(); channel != channelList.end(); ) {
679 
680  try {
681 
682  if (mask.has(channel->getFileDescriptor())) {
683  channel->read();
684  }
685 
686  if (channel->isReady()) {
687 
689  number_of_reads += channel->getCounter();
690  number_of_bytes_received += channel->size();
691 
692  if (isRunning()) {
693 
694  updateFrameQueue(channel);
695 
696  } else {
697 
698  JErrorStream(logErrorRun) << "Receiving data while not running.";
699 
701  }
702 
703  channel->reset();
704  }
705 
706  ++channel;
707  }
708  catch(const exception& error) {
709 
710  JNoticeStream(logger) << "Disconnecting channel " << channel->getFileDescriptor() << ' ' << error.what();
711 
712  channel->shutdown();
713 
714  channel = channelList.erase(channel);
715  }
716  }
717 
718 
719  if (serversocket.is_valid()) {
720 
721  if (mask.has(*serversocket)) {
722 
723  JSocket socket;
724 
726 
727  //socket.setSendBufferSize (buffer_size);
729 
730  socket.setKeepAlive (true);
731  socket.setNonBlocking(true);
732 
733  JNoticeStream(logger) << "New channel" << '[' << socket.getFileDescriptor() << ']';
734 
735  channelList.push_back(JSocketInputChannel_t(socket));
736  }
737  }
738 
739 
740  if (!timeslices.empty() && (timeslices.front().size() >= frames_per_slice ||
741  timeslices.size() >= maxQueueDepth ||
742  queueSize >= maxQueueSize)) {
743 
744  const JDAQTimesliceL0& pending_slice = timeslices.front();
745  queueSize -= getSizeof(pending_slice);
746 
747  current_slice_index = pending_slice.getFrameIndex();
748  minFrameNumber = min(minFrameNumber, pending_slice.getFrameIndex());
749  maxFrameNumber = max(maxFrameNumber, pending_slice.getFrameIndex());
750 
751  if (pending_slice.size() > frames_per_slice) {
752 
753  JErrorStream(logger) << "More frames in timeslice than expected "
754  << pending_slice.size() << " > " << frames_per_slice;
755 
756  if (pending_slice.size() <= maximum_frames_per_slice) {
757 
758  JErrorStream(logger) << "Adjusting expected frames per timeslice to " << pending_slice.size();
759 
760  frames_per_slice = pending_slice.size();
761  }
762  }
763 
764  if (!pending_slice.empty()) {
765 
766  const localtime_t t0 = getLocalTime();
767 
768  processTimeSlice(pending_slice);
769 
770  const localtime_t t1 = getLocalTime();
771 
773 
774  Qt.put(t1 - t0);
775 
776  if (pending_slice.size() < frames_per_slice) {
777 
779 
780  JErrorStream(logErrorIncomplete) << "Timeout -> processed incomplete timeslice: "
781  << "Frame index = " << pending_slice.getFrameIndex() << ';'
782  << "Size of timeslice = " << pending_slice.size() << ';'
783  << "Queue depth = " << timeslices.size() << ';'
784  << "Queue size = " << queueSize;
785 
786  if (!timeslices.empty()) {
787 
788  JErrorStream(logger) << "Adjusting expected frames per timeslice from " << frames_per_slice << " to " << pending_slice.size();
789 
790  frames_per_slice = pending_slice.size();
791  }
792  }
793  }
794 
795  timeslices.pop_front();
796  }
797  }
void processTimeSlice(const JDAQTimesliceL0 &timeslice)
Process time slice.
Definition: JDataFilter.cc:910
std::list< JDAQTimesliceL0 > timeslices
buffer with pending time slice data
long long int numberOfTimeslicesProcessed
bool has(const int file_descriptor) const
Has file descriptor.
JSocketInputChannel< JDAQAbstractPreamble > JSocketInputChannel_t
Definition: JDataFilter.cc:150
JSinglePointer< JServerSocket > serversocket
server for data queue connections
unsigned int maximum_frames_per_slice
JMessageScheduler logErrorIncomplete
Socket class.
Definition: JSocket.hh:42
long long int number_of_packets_discarded
bool is_valid() const
Check validity of pointer.
int getFrameIndex() const
Get frame index.
int getFileDescriptor() const
Get file descriptor.
void accept(const int server)
Accept connection from a server.
Definition: JSocket.hh:372
static const JLocalTime getLocalTime
Function object to get local time in micro seconds.
long long int numberOfIncompleteTimeslicesProcessed
void put(const double x, const double w=1.0)
Put value.
Definition: JQuantile.hh:173
void updateFrameQueue(const JChannelList_t::const_iterator channel)
Update queue with data frames.
Definition: JDataFilter.cc:815
long long int number_of_packets_received
bool isRunning() const
Check if this client is in runnig state.
Definition: JDAQClient.hh:479
long long int localtime_t
Type definition of local time.
void setReceiveBufferSize(const int size)
Set receive buffer size.
Definition: JSocket.hh:250
unsigned int maxQueueDepth
long long int maxQueueSize
long long int queueSize
JChannelList_t channelList
connections to data queue
void setNonBlocking(const bool on)
Set non-blocking of I/O.
Definition: JSocket.hh:109
JMessageScheduler logErrorRun
JMessageLogger logger
message logger
Definition: JDAQClient.hh:801
void setKeepAlive(const bool on)
Set keep alive of socket.
Definition: JSocket.hh:151
long long int number_of_bytes_received
size_t getSizeof(const JDAQEvent &object)
Get size of object.
Definition: JDAQEventIO.hh:26
long long int number_of_reads
unsigned int frames_per_slice
Timeslice data structure for L0 data.
virtual void KM3NETDAQ::JDataFilter::actionRunning ( )
inlineoverridevirtual

This method is repeatedly called when this client machine is in state Running and the clock interval time is non-zero.

This implementation does nothing but may be redefined by the derived class. Care has to be taken so that the time needed to execute this method should be less than the specified clock interval time (see method setClockInterval()).

Reimplemented from KM3NETDAQ::JDAQClient.

Definition at line 800 of file JDataFilter.cc.

801  {
802  if (reporting) {
803  typeout();
804  }
805  }
void typeout()
Report status to message logger.
void KM3NETDAQ::JDataFilter::updateFrameQueue ( const JChannelList_t::const_iterator  channel)
inline

Update queue with data frames.

Note that any discarded data will be reported.

Parameters
channelincoming data channel

Definition at line 815 of file JDataFilter.cc.

816  {
817  using namespace std;
818 
819  JByteArrayReader in(channel->data(), channel->size());
820 
821  JDAQPreamble preamble;
822  JDAQSuperFrameHeader header;
823 
824  in >> preamble;
825  in >> header;
826 
827  if (preamble.getLength() != channel->size()) {
828 
829  JErrorStream(logErrorRun) << "Size of received data does not match size reported by preamble: "
830  << "preamble.getLength() = " << preamble.getLength() << ';'
831  << "channel->size(): " << channel->size() << ';';
832 
834 
835  return;
836  }
837 
838  if (header.getRunNumber() != getRunNumber()) {
839 
840  JErrorStream(logErrorRun) << "Run number " << header.getRunNumber()
841  << " unequal to current run " << getRunNumber()
842  << " -> Dropping frame.";
843 
845 
846  return;
847  }
848 
849  if (header.getFrameIndex() <= current_slice_index) {
850 
851  JErrorStream(logErrorIndex) << "Frame index " << header.getFrameIndex() << " <= " << current_slice_index
852  << " -> Dropping frame.";
853 
855 
857 
859 
860  JErrorStream(logErrorIndex) << "Increase number of frames expected to: " << frames_per_slice;
861  }
862 
863  return;
864  }
865 
866  if (current_slice_index != -1 && header.getFrameIndex() > current_slice_index + maximal_frame_index) {
867 
868  JErrorStream(logErrorIndex) << "Frame index " << header.getFrameIndex() << " > " << current_slice_index + maximal_frame_index
869  << " -> Dropping frame.";
870 
872 
873  return;
874  }
875 
876  list<JDAQTimesliceL0>::iterator timesliceIterator = timeslices.begin();
877 
878  while (timesliceIterator != timeslices.end() && timesliceIterator->getFrameIndex() < header.getFrameIndex()) {
879  ++timesliceIterator;
880  }
881 
882  if (timesliceIterator != timeslices.end() && timesliceIterator->getFrameIndex() == header.getFrameIndex()) {
883 
884  // The corresponding time slice already exists
885 
886  } else {
887 
888  // This is the first frame of this time slice; insert a new time slice in the buffer at the right position in the list
889 
890  timesliceIterator = timeslices.insert(timesliceIterator, JDAQTimesliceL0());
891 
892  timesliceIterator->setDAQChronometer(header.getDAQChronometer());
893 
894  queueSize += getSizeof(*timesliceIterator);
895  }
896 
897  timesliceIterator->push_back(JDAQSuperFrame(header));
898 
899  in >> static_cast<JDAQFrame&>(*(timesliceIterator->rbegin()));
900 
901  queueSize += getSizeof(*timesliceIterator->rbegin());
902  }
std::list< JDAQTimesliceL0 > timeslices
buffer with pending time slice data
JMessageScheduler logErrorIndex
unsigned int maximum_frames_per_slice
long long int number_of_packets_discarded
Byte array binary input.
Definition: JByteArrayIO.hh:25
Data frame.
Definition: JDAQFrame.hh:64
long long int queueSize
int getRunNumber() const
Get run number.
Definition: JDAQCHSM.chsm:100
JMessageScheduler logErrorRun
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY source JAcoustics sh $DETECTOR_ID typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
Definition: JCanberra.sh:36
size_t getSizeof(const JDAQEvent &object)
Get size of object.
Definition: JDAQEventIO.hh:26
Data frame of one optical module.
unsigned int frames_per_slice
Timeslice data structure for L0 data.
void KM3NETDAQ::JDataFilter::processTimeSlice ( const JDAQTimesliceL0 timeslice)
inline

Process time slice.

Parameters
timeslicetime slice

Definition at line 910 of file JDataFilter.cc.

911  {
912  using namespace std;
913 
914  try {
915 
916  if (parameters.writeSummary()) {
917  this->put(JDAQSummaryslice(timeslice));
918  }
919 
920  if (parameters.trigger3DMuon.enabled ||
921  parameters.trigger3DShower.enabled ||
922  parameters.triggerMXShower.enabled ||
923  parameters.triggerNB.enabled ||
924  parameters.writeL0.prescale ||
925  parameters.writeL1.prescale ||
926  parameters.writeL2.prescale ||
927  parameters.writeSN.prescale ||
928  c_buffer.is_enabled()) {
929 
930  timesliceRouter->configure(timeslice);
931 
932  JTimeslice_t timesliceL0(timeslice.getDAQChronometer());
933  JTimeslice_t timesliceL1(timeslice.getDAQChronometer());
934  JTimeslice_t timesliceL2(timeslice.getDAQChronometer());
935  JTimeslice_t timesliceSN(timeslice.getDAQChronometer());
936  JTimeslice_t timesliceNB(timeslice.getDAQChronometer());
937  JDAQTimeslice timesliceTX(timeslice.getDAQChronometer());
938 
939  for (JDAQTimesliceL0::const_iterator frame = timeslice.begin(); frame != timeslice.end(); ++frame) {
940 
941  if (moduleRouter->hasModule(frame->getModuleID())) {
942 
943  if (!checksum(*frame)) {
944 
945  JErrorStream(logger) << "Invalid data at "
946  << "run = " << timeslice.getRunNumber() << ";"
947  << "frame index = " << timeslice.getFrameIndex() << ";"
948  << "module = " << frame->getModuleID() << ";"
949  << "discard and dump";
950 
951  timesliceTX.push_back(*frame);
952 
953  continue;
954  }
955 
956  const JModule& module = moduleRouter->getModule(frame->getModuleID());
957  JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*frame, module);
958 
959  // Apply high-rate veto
960 
961  buffer.applyHighRateVeto(parameters.highRateVeto_Hz);
962 
963  // L0
964 
965  timesliceL0.push_back(JSuperFrame1D_t(buffer));
966 
967  // Nano-beacon trigger
968 
969  if (parameters.triggerNB.enabled) {
970 
971  JSuperFrame2D_t::iterator __end = partition(buffer.begin(), buffer.end(), parameters.triggerNB.pmts);
972 
973  if (buffer.begin() != __end) {
974 
975  timesliceNB.push_back(JSuperFrame1D_t(frame->getDAQChronometer(),
976  frame->getModuleIdentifier(),
977  module.getPosition()));
978 
979  JSuperFrame1D_t zbuf;
980 
981  (*buildL1)(buffer.begin(), __end , back_inserter(zbuf));
982 
983  (*buildNB)(buffer.begin() , __end, zbuf, back_inserter(*timesliceNB.rbegin()));
984  }
985  }
986 
987  // L1
988 
989  timesliceL1.push_back(JSuperFrame1D_t(frame->getDAQChronometer(),
990  frame->getModuleIdentifier(),
991  module.getPosition()));
992 
993  (*buildL1)(*timesliceL0.rbegin(), back_inserter(*timesliceL1.rbegin()));
994 
995  // L2
996 
997  timesliceL2.push_back(JSuperFrame1D_t(frame->getDAQChronometer(),
998  frame->getModuleIdentifier(),
999  module.getPosition()));
1000 
1001  (*buildL2)(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceL2.rbegin()));
1002 
1003  // SN
1004 
1005  timesliceSN.push_back(JSuperFrame1D_t(frame->getDAQChronometer(),
1006  frame->getModuleIdentifier(),
1007  module.getPosition()));
1008 
1009  (*buildSN)(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceSN.rbegin()));
1010 
1011  } else {
1012 
1013  JErrorStream(logErrorDetector) << "No detector information for module " << frame->getModuleID();
1014  }
1015  }
1016 
1017  if (!timesliceTX.empty()) {
1018  this->put(timesliceTX);
1019  }
1020 
1021  // Trigger
1022 
1023  if (parameters.triggerNB.enabled) {
1024 
1025  const JTriggerInput trigger_input(timesliceNB);
1026 
1027  for (JTriggerInput::const_iterator hit = trigger_input.begin(); hit != trigger_input.end(); ++hit) {
1028 
1029  if (parameters.triggerNB.write()) {
1030 
1031  JTriggeredEvent tev(timesliceNB.getDAQChronometer(),
1033  *hit,
1034  *timesliceRouter,
1035  *moduleRouter,
1036  parameters.TMaxLocal_ns,
1037  parameters.triggerNB.DMax_m,
1038  getTimeRange(parameters.triggerNB));
1039 
1040  this->put(tev);
1041  }
1042  }
1043  }
1044 
1045  JTriggerInput trigger_input(timesliceL2);
1046  JTriggerOutput trigger_output;
1047 
1048  (*trigger3DMuon) (trigger_input, back_inserter(trigger_output));
1049  (*trigger3DShower)(trigger_input, back_inserter(trigger_output));
1050  (*triggerMXShower)(trigger_input, timesliceL0, back_inserter(trigger_output));
1051 
1052  trigger_output.merge(JEventOverlap(parameters.TMaxEvent_ns));
1053 
1054  for (JTriggerOutput::const_iterator event = trigger_output.begin(); event != trigger_output.end(); ++event) {
1055 
1056  const JTriggeredEvent object(*event, *timesliceRouter, *moduleRouter, parameters.TMaxLocal_ns, getTimeRange(parameters));
1057 
1058  if (this->put(object)) {
1059  numberOfEvents += 1;
1060  }
1061  }
1062 
1063  if (parameters.writeL1() || c_buffer.sizeL1 > 0) {
1064 
1065  const JTimesliceL1<JDAQTimesliceL1> object(timesliceL1, *timesliceRouter, *moduleRouter, parameters.TMaxLocal_ns);
1066 
1067  if (parameters.writeL1) { this->put(object); }
1068  if (c_buffer.sizeL1 > 0) { c_buffer.put(object); }
1069  }
1070 
1071  if (parameters.writeL2() || c_buffer.sizeL2 > 0) {
1072 
1073  const JTimesliceL1<JDAQTimesliceL2> object(timesliceL2, *timesliceRouter, *moduleRouter, parameters.L2.TMaxLocal_ns);
1074 
1075  if (parameters.writeL2) { this->put(object); }
1076  if (c_buffer.sizeL2 > 0) { c_buffer.put(object); }
1077  }
1078 
1079  if (parameters.writeSN() || c_buffer.sizeSN > 0) {
1080 
1081  const JTimesliceL1<JDAQTimesliceSN> object(timesliceSN, *timesliceRouter, *moduleRouter, parameters.SN.TMaxLocal_ns);
1082 
1083  if (parameters.writeSN) { this->put(object); }
1084  if (c_buffer.sizeSN > 0) { c_buffer.put(object); }
1085  }
1086 
1087  if (parameters.writeL0() || c_buffer.sizeL0 > 0) {
1088 
1089  if (parameters.writeL0) { this->put(timeslice); }
1090  if (c_buffer.sizeL0 > 0) { c_buffer.put(timeslice); }
1091  }
1092  }
1093 
1094  } catch(const exception& error) {
1095  JErrorStream(logger) << "Error = " << error.what() << ";"
1096  << "run = " << timeslice.getRunNumber() << ";"
1097  << "frame index = " << timeslice.getFrameIndex() << ";"
1098  << "time slice not correctly processed!";
1099  }
1100  }
JTriggerMask_t getTriggerMask(const unsigned int bit)
Convert trigger bit to trigger mask.
const JModule & getModule(const JObjectID &id) const
Get module parameters.
Data structure for a composite optical module.
Definition: JModule.hh:57
void configure(const JDAQTimeslice &timeslice)
Configure.
JSinglePointer< JTriggerNB > triggerNB
JSuperFrame2D< hit_type > JSuperFrame2D_t
Definition: JDataFilter.cc:155
Long64_t sizeL1
Number of L1 time slices.
Definition: JDataFilter.cc:257
JTriggerParameters parameters
int getRunNumber() const
Get run number.
static const JChecksum checksum
Function object to perform check-sum of raw data.
Definition: JChecksum.hh:167
int getFrameIndex() const
Get frame index.
JCircularBuffer_t c_buffer
JTimeRange getTimeRange(const Evt &event)
Get time range (i.e. time between earliest and latest hit) of Monte Carlo event.
bool is_enabled() const
Check whether writing of data is enabled.
Definition: JDataFilter.cc:226
JSuperFrame1D< hit_type > JSuperFrame1D_t
Definition: JDataFilter.cc:154
static JSuperFrame2D< JElement_t, JAllocator_t > demultiplex
Demultiplexer.
JTimeslice< hit_type > JTimeslice_t
Definition: JDataFilter.cc:156
void merge(const JMatch_t &match)
Merge events.
JMessageScheduler logErrorDetector
const JDAQChronometer & getDAQChronometer() const
Get DAQ chronometer.
Data time slice.
Auxiliary class to build JDAQEvent for a triggered event.
virtual bool put(const T &object) override
Object output.
const JPosition3D & getPosition() const
Get position.
Definition: JPosition3D.hh:130
Long64_t sizeSN
Number of SN time slices.
Definition: JDataFilter.cc:259
bool put(const T &object)
Auxiliary method to send object to data server.
std::vector< value_type >::iterator iterator
JSinglePointer< JTimesliceRouter > timesliceRouter
Auxiliary class to build JDAQTimeslice for L1 timeslice.
Definition: JTimesliceL1.hh:36
JTriggerbit_t getTriggerBit() const
Get the trigger bit.
Long64_t sizeL0
Number of L0 time slices.
Definition: JDataFilter.cc:256
bool hasModule(const JObjectID &id) const
Has module.
JSinglePointer< JModuleRouter > moduleRouter
JMessageLogger logger
message logger
Definition: JDAQClient.hh:801
Data structure for input to trigger algorithm.
Match of two events considering overlap in time.
Long64_t sizeL2
Number of L2 time slices.
Definition: JDataFilter.cc:258
long long int numberOfEvents
void KM3NETDAQ::JDataFilter::typeout ( )
inline

Report status to message logger.

Definition at line 1106 of file JDataFilter.cc.

1107  {
1108  timer.stop();
1109 
1110  const double T_us = (double) timer.usec_wall;
1111 
1112  JNoticeStream(logger) << "Elapsed real (wall) time [s] " << T_us / 1e6;
1113  JNoticeStream(logger) << "Elapsed user CPU time [s] " << (double) timer.usec_ucpu/ 1e6;
1114  JNoticeStream(logger) << "Elapsed system CPU time [s] " << (double) timer.usec_scpu/ 1e6;
1115  try {
1116  JNoticeStream(logger) << "Elapsed real time per time slice [ms] " << Qt.getMean() * 1.0e-3 << " +/- " << Qt.getDeviation() * 1.0e-3;
1117  }
1118  catch(const std::exception&) {}
1119  JNoticeStream(logger) << "Number of packets received/discarded " << number_of_packets_received << "/" << number_of_packets_discarded;
1120  JNoticeStream(logger) << "Number of events/MB sent " << numberOfEvents << "/" << numberOfBytes/1e6;
1121 
1122  if (number_of_packets_received > 0) {
1123  JNoticeStream(logger) << "Number of reads/packet " << (double) number_of_reads / (double) number_of_packets_received;
1124  }
1125 
1126  JNoticeStream(logger) << "Current queue depth/size " << timeslices.size() << "/" << queueSize;
1127  JNoticeStream(logger) << "Current number of frames per slice expected: " << frames_per_slice;
1128 
1129  JNoticeStream(logger) << "Number of timeslices processed total/incomplete " << numberOfTimeslicesProcessed << "/" << numberOfIncompleteTimeslicesProcessed;
1130 
1131  if (numberOfTimeslicesProcessed > 0) {
1132  JNoticeStream(logger) << "Real time per timeslice [ms] " << timer.usec_wall / 1000 / numberOfTimeslicesProcessed;
1133  JNoticeStream(logger) << "User CPU time per timeslice [ms] " << timer.usec_ucpu / 1000 / numberOfTimeslicesProcessed;
1134  JNoticeStream(logger) << "System CPU time per timeslice [ms] " << timer.usec_scpu / 1000 / numberOfTimeslicesProcessed;
1135  }
1136 
1137  const double processedSlicesTime_us = numberOfTimeslicesProcessed * getFrameTime() / 1000;
1138  const double processedDetectorTime_us = (maxFrameNumber - minFrameNumber) * getFrameTime() / 1000;
1139 
1140  if (processedSlicesTime_us > 0) {
1141  JNoticeStream(logger) << "Performance factor (inaccurate estimate): " << T_us / processedSlicesTime_us;
1142  }
1143  if (processedDetectorTime_us > 0) {
1144  JNoticeStream(logger) << "Performance factor whole detector (inaccurate estimate): " << T_us / processedDetectorTime_us;
1145  }
1146 
1147  timer.start();
1148  }
std::list< JDAQTimesliceL0 > timeslices
buffer with pending time slice data
long long int numberOfTimeslicesProcessed
unsigned long long usec_ucpu
Definition: JTimer.hh:225
long long int number_of_packets_discarded
void stop()
Stop timer.
Definition: JTimer.hh:113
double getMean() const
Get mean value.
Definition: JQuantile.hh:282
unsigned long long usec_scpu
Definition: JTimer.hh:226
long long int numberOfBytes
double getFrameTime()
Get frame time duration.
Definition: JDAQClock.hh:162
long long int numberOfIncompleteTimeslicesProcessed
long long int number_of_packets_received
double getDeviation(const bool relative=true) const
Get maximal deviation from average.
Definition: JQuantile.hh:325
long long int queueSize
JMessageLogger logger
message logger
Definition: JDAQClient.hh:801
long long int number_of_reads
long long int numberOfEvents
unsigned int frames_per_slice
unsigned long long usec_wall
Definition: JTimer.hh:224
void start()
Start timer.
Definition: JTimer.hh:89
virtual void KM3NETDAQ::JDataFilter::actionTagged ( const JTag tag,
int  length,
const char *  buffer 
)
inlineoverridevirtual

Tagged action to handle alerts.

Parameters
tagtag
lengthnumber of characters
buffermessage

Reimplemented from KM3NETDAQ::JDAQClient.

Definition at line 1158 of file JDataFilter.cc.

1159  {
1160  using namespace std;
1161 
1162  JDebugStream(logger) << "Received message <" << tag.toString() << "> \"" << string(buffer, length) << "\"";
1163 
1164  if (tag == RC_ALERT) {
1165 
1166  if (c_buffer.is_open()) {
1167 
1168  JNoticeStream(logger) << "Close circular buffer " << c_buffer;
1169 
1170  c_buffer.close();
1171  }
1172 
1173  if (c_buffer.is_enabled()) {
1174 
1176 
1177  if (c_buffer.is_open()) {
1178 
1179  JNoticeStream(logger) << "Created circular buffer " << c_buffer;
1180 
1182 
1183  } else {
1184 
1185  JErrorStream (logger) << "Failed to create circular buffer in directory <" << path << ">; disable functionality.";
1186 
1187  c_buffer.disable();
1188  }
1189  }
1190 
1191  } else {
1192 
1193  JWarningStream(logger) << "Tag <" << tag.toString() << "> not implemented";
1194  }
1195  }
void open(const std::string &path, const JTag &tag)
Open file.
Definition: JDataFilter.cc:182
JMeta meta
meta data
JCircularBuffer_t c_buffer
bool is_enabled() const
Check whether writing of data is enabled.
Definition: JDataFilter.cc:226
TFile * getFile() const
Get file.
Definition: JRootFile.hh:65
Level specific message streamers.
std::string toString() const
Convert tag to string.
Definition: JTag.hh:171
virtual void close() override
Close file.
virtual bool is_open() const =0
Check is device is open.
static const JNET::JTag RC_ALERT
Definition: JDAQTags.hh:57
const JTag & getUniqueTag() const
Get unique tag of this run control client.
Definition: JDAQClient.hh:130
std::string path
directory for writing circular buffer
JMessageLogger logger
message logger
Definition: JDAQClient.hh:801
bool putObject(TDirectory *dir, const T &object)
Write object to ROOT directory.
template<class T >
bool KM3NETDAQ::JDataFilter::put ( const T object)
inlineprivate

Auxiliary method to send object to data server.

Parameters
objectobject to be sent
Returns
true if sent; else false

Definition at line 1214 of file JDataFilter.cc.

1215  {
1216  try {
1217 
1218  datawriter->put(object);
1219 
1220  numberOfBytes += getSizeof(object);
1221 
1222  return true;
1223  }
1224  catch(const std::exception& error) {
1225  JErrorStream(logger) << error.what();
1226  }
1227 
1228  return false;
1229  }
virtual bool put(const T &object) override
Object output.
long long int numberOfBytes
JSinglePointer< JControlHost_t > datawriter
controlhost of data server (to which data writer should be connected)
JMessageLogger logger
message logger
Definition: JDAQClient.hh:801
size_t getSizeof(const JDAQEvent &object)
Get size of object.
Definition: JDAQEventIO.hh:26
virtual bool KM3NETDAQ::JDAQClient::enter ( const JArgs args)
inlinevirtualinherited

Enter the state machine.

This overloaded method enter reproduces the constructor. All necessary input is parsed from the list of arguments. In case of an error, the state machine is not entered.

Parameters
argsarray of command line arguments
Returns
true if okay; else false

Definition at line 363 of file JDAQClient.hh.

364  {
365  using namespace std;
366 
367  string server;
368  string logger;
369  int level;
370  bool use_cout;
371 
372  try {
373 
374  parser['H'] = make_field(server) = "localhost";
375  parser['M'] = make_field(logger) = "localhost";
376  parser['d'] = make_field(level) = 0;
377  parser['c'] = make_field(use_cout);
378 
379  if (parser.read(args) != 0) {
380  return false;
381  }
382  }
383  catch(const exception &error) {
384  cerr << error.what() << endl;
385  return false;
386  }
387 
388  try {
389 
390  JLogger* out = NULL;
391 
392  if (use_cout)
393  out = new JStreamLogger(cout);
394  else
395  out = new JControlHostLogger(logger);
396 
397  this->logger = JMessageLogger(out, getName(), level);
398 
399  this->server.reset(new JControlHost(server));
400 
401  return enter();
402  }
403  catch(const JControlHostException& error) {
404  cerr << error << endl;
405  return false;
406  }
407  }
JParser parser
parser method enter()
Definition: JDAQClient.hh:1027
Message logging based on std::ostream.
Interface for logging messages.
Definition: JLogger.hh:22
Message logging based on ControlHost.
JSharedPointer< JControlHost > server
message server
Definition: JDAQClient.hh:800
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1961
virtual bool enter()
Enter the state machine.
Definition: JDAQClient.hh:418
int read(const int argc, const char *const argv[])
Parse the program&#39;s command line options.
Definition: JParser.hh:1798
JMessageLogger logger
message logger
Definition: JDAQClient.hh:801
const std::string & getName() const
Get name of state machine.
Definition: JDAQCHSM.chsm:78
virtual bool KM3NETDAQ::JDAQClient::enter ( )
inlinevirtualinherited

Enter the state machine.

This method activates the subscription to JNET::JControlHost messages. In case of an error, the state machine is not entered.

Returns
true if okay; else false

Reimplemented in KM3NETDAQ::JDAQDriver.

Definition at line 418 of file JDAQClient.hh.

419  {
420  using namespace std;
421  using namespace JPP;
422 
423  if (server.is_valid() && logger.is_valid()) {
424 
425  const JSubscriptionList buffer = getSubscription(eventTable) + subscription;
426 
427  try {
428 
429  server->Subscribe(buffer);
430  server->SendMeAlways();
431  server->MyId(getFullName());
432 
433  JNoticeStream(logger) << "Nick name \"" << getFullName() << "\" subscription: " << buffer.toString();
434 
435  return CHSM::machine::enter();
436  }
437  catch(const JControlHostException& error) {
438  JErrorStream(logger) << error;
439  }
440 
441  } else {
442  cerr << "Message server or logger not properly initialised." << endl;
443  }
444 
445  return false;
446  }
JSharedPointer< JControlHost > server
message server
Definition: JDAQClient.hh:800
JSubscriptionList subscription
custom subscription
Definition: JDAQClient.hh:1028
JEventTable eventTable
event table
Definition: JDAQClient.hh:202
bool is_valid() const
Check validity of logger object.
const std::string & getFullName() const
Get full name of this run control client.
Definition: JDAQClient.hh:119
JSubscriptionList getSubscription(const JEventTable &event_table)
Convert event table to ControlHost subscription.
Definition: JEventTable.hh:129
JMessageLogger logger
message logger
Definition: JDAQClient.hh:801
virtual bool KM3NETDAQ::JDAQClient::exit ( )
inlinevirtualinherited

Exit the state machine.

This method releases the various resources.

Returns
true if okay; else false

Definition at line 456 of file JDAQClient.hh.

457  {
458  try {
459  if (server.is_valid()) { server.reset(NULL); }
460  }
461  catch(const JControlHostException& error) {
462  }
463 
464  try {
465  if (logger.is_valid()) { logger.reset(NULL); }
466  }
467  catch(const JControlHostException& error) {
468  }
469 
470  return CHSM::machine::exit();
471  }
void reset(JLogger *__logger=NULL)
Reset logger.
exit
Definition: JPizza.sh:36
JSharedPointer< JControlHost > server
message server
Definition: JDAQClient.hh:800
bool is_valid() const
Check validity of logger object.
JMessageLogger logger
message logger
Definition: JDAQClient.hh:801
bool KM3NETDAQ::JDAQClient::isRunning ( ) const
inlineinherited

Check if this client is in runnig state.

Returns
true if running; else false

Definition at line 479 of file JDAQClient.hh.

480  {
481  return Main.RunControl.Operational.Running.active();
482  }
JDAQStateMachine::state_Main Main
JDAQStateMachine::state_Main::state_RunControl::state_Operational Operational
JDAQStateMachine::state_Main::state_RunControl RunControl
void KM3NETDAQ::JDAQClient::replaceEvent ( const JTag oldTag,
const JTag newTag,
JDAQEvent_t event 
)
inlineinherited

Replace tag of given event in event table.

Parameters
oldTagold tag
newTagnew tag
eventevent

Definition at line 492 of file JDAQClient.hh.

495  {
496  eventTable.replace(oldTag, newTag, event);
497  }
void replace(const JTag &oldTag, const JTag &newTag, JDAQEvent_t &event)
Replace entry in table.
Definition: JEventTable.hh:96
JEventTable eventTable
event table
Definition: JDAQClient.hh:202
JDAQEvent_t* KM3NETDAQ::JDAQClient::findEvent ( const JTag tag,
const std::string &  event_name 
)
inlineinherited

Find event in event table.

Parameters
tagtag
event_nameevent name
Returns
pointer to event or NULL

Definition at line 507 of file JDAQClient.hh.

508  {
509  JEventTable::const_iterator i = eventTable.find(tag, event_name);
510 
511  if (i != eventTable.end())
512  return i->second;
513  else
514  return NULL;
515  }
JEventTable eventTable
event table
Definition: JDAQClient.hh:202
const_iterator find(const JTag &tag, const std::string &event_name) const
Find entry.
Definition: JEventTable.hh:116
void KM3NETDAQ::JDAQClient::addSubscription ( const JSubscription subscription)
inlineinherited

Add custom subscription.

Parameters
subscriptionsubscription

Definition at line 523 of file JDAQClient.hh.

524  {
526  }
JSubscriptionList & add(const JSubscription &subscription)
Add subscription.
JSubscriptionList subscription
custom subscription
Definition: JDAQClient.hh:1028
template<class T >
void KM3NETDAQ::JDAQClient::addParameter ( const char  option,
T parameter 
)
inlineinherited

Add parameter to parser used in method enter().

Parameters
optionoption
parameterparameter

Definition at line 536 of file JDAQClient.hh.

537  {
538  parser[option] = make_field(parameter);
539  }
JParser parser
parser method enter()
Definition: JDAQClient.hh:1027
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1961
template<class T >
void KM3NETDAQ::JDAQClient::addParameter ( const char  option,
T parameter,
const T value 
)
inlineinherited

Add parameter to parser used in method enter().

Parameters
optionoption
parameterparameter
valuedefault value

Definition at line 550 of file JDAQClient.hh.

551  {
552  parser[option] = make_field(parameter) = value;
553  }
JParser parser
parser method enter()
Definition: JDAQClient.hh:1027
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1961
void KM3NETDAQ::JDAQClient::setSelect ( )
inlineinherited

Set the file descriptor mask for the select call.

Definition at line 559 of file JDAQClient.hh.

560  {
561  select.reset();
562 
564 
566  }
JSelectReader select
select call
Definition: JDAQClient.hh:1026
JSharedPointer< JControlHost > server
message server
Definition: JDAQClient.hh:800
JFileDescriptorMask & getReaderMask()
Get reader mask.
void setReaderMask(const JAbstractFile &file)
Set reader mask.
void reset()
Reset.
void setSelect()
Set the file descriptor mask for the select call.
Definition: JDAQClient.hh:559
virtual void KM3NETDAQ::JDAQClient::actionInput ( int  length,
const char *  buffer 
)
inlinevirtualinherited

This method is called at ev_input.

Parameters
lengthlength of data
bufferpointer to data

Reimplemented from JDAQCHSM.

Reimplemented in KM3NETDAQ::DataQueue, and AcousticDataFilter.

Definition at line 606 of file JDAQClient.hh.

607  {
608  using namespace std;
609 
610  JProperties properties(JEquationParameters("=", ";", "", ""), 1);
611 
612  int level = this->logger.getLevel();
613 
614  properties["debug"] = level;
615 
616  properties.read(string(buffer, length));
617 
618  this->logger.setLevel(level);
619  }
Utility class to parse parameter values.
Definition: JProperties.hh:496
Simple data structure to support I/O of equations (see class JLANG::JEquation).
JMessageLogger logger
message logger
Definition: JDAQClient.hh:801
void setLevel(const int __level)
Set debug level.
JLevel_t getLevel()
Get debug level.
virtual bool KM3NETDAQ::JDAQClient::filter ( const JTag tag,
int  length,
const char *  buffer 
)
inlinevirtualinherited

Filter message.

The filter method can be overwritten so that a specific action is made before the corresponding message is processed by the state machine. The message is ignored if true is returned, else it is normally processed.

Parameters
tagtag
lengthnumber of characters
buffermessage
Returns
skip message or not

Definition at line 633 of file JDAQClient.hh.

634  {
635  return false;
636  }
void KM3NETDAQ::JDAQClient::run ( )
inlineinherited

Run as run control client following command messages via JNET::JControlHost.

This method can be called once the state machine is entered. It returns when the state machine is exited. If the clock interval is non-zero, the method actionRunning() is repeatedly called when this client machine is in state Running. The file descriptor mask can be set to interrupt the timeout of the select call and clock method wait() in this calling sequence (see methods setSelect() and actionSelect()).

Definition at line 661 of file JDAQClient.hh.

662  {
663  using namespace std;
664 
665  while (active()) {
666 
667  try {
668 
669  setSelect();
670 
671  if (select(JTimeval(TIMEOUT_S,0)) > 0) {
672 
673  if (select.hasReaderMask(*server)) {
674  update();
675  }
676 
678 
679  } else {
680 
681  continue;
682  }
683 
684 
685  if (isRunning() && clock.getInterval() != 0LL) {
686 
687  long long int numberOfCalls = 0;
688 
689  clock.reset();
690 
691  do {
692 
693  ++numberOfCalls;
694 
695  setSelect();
696 
697  if (clock.wait(select.getReaderMask())) {
698 
699  if (select.hasReaderMask(*server)) {
700  update();
701  }
702 
704 
705  } else {
706 
707  try {
708  actionRunning();
709  }
710  catch(const exception& error) {
711  logger.error(error.what());
712  }
713  }
714 
715  } while (isRunning());
716 
717  if (numberOfCalls != 0) {
718  JNoticeStream(logger) << "Delay per call " << clock.getDelay() / numberOfCalls / 1000 << " ms";
719  }
720  }
721  }
722  catch(const exception& error) {
723  JErrorStream(logger) << "method run(): " << error.what();
724  }
725  }
726  }
long long int getDelay() const
Get total delay time.
Definition: JTimekeeper.hh:78
JTimekeeper clock
central clock
Definition: JDAQClient.hh:206
static const int TIMEOUT_S
time out of update [s]
Definition: JDAQClient.hh:61
JSelectReader select
select call
Definition: JDAQClient.hh:1026
void reset(const long long int t0)
Reset time.
Definition: JTimekeeper.hh:100
JSharedPointer< JControlHost > server
message server
Definition: JDAQClient.hh:800
JFileDescriptorMask & getReaderMask()
Get reader mask.
void wait() const
Wait until the number of time intervals has elapsed since the last call to the reset method...
Definition: JTimekeeper.hh:145
virtual void actionRunning()
This method is repeatedly called when this client machine is in state Running and the clock interval ...
Definition: JDAQClient.hh:596
bool isRunning() const
Check if this client is in runnig state.
Definition: JDAQClient.hh:479
void update()
Update state machine.
Definition: JDAQClient.hh:808
long long int getInterval() const
Get interval time.
Definition: JTimekeeper.hh:67
JMessageLogger logger
message logger
Definition: JDAQClient.hh:801
void error(const JMessage_t &message)
void setSelect()
Set the file descriptor mask for the select call.
Definition: JDAQClient.hh:559
virtual void actionSelect(const JFileDescriptorMask &mask)
Action method following last select call.
Definition: JDAQClient.hh:585
bool hasReaderMask(const JAbstractFile &file) const
Has reader file.
void KM3NETDAQ::JDAQClient::run ( const int  port)
inlineinherited

Run for ever.

This method can be used when the run control client is started before the run control (e.g. at boot time of the host processor). This method should be called before the state machine is entered. It launches a server which accepts a JNET::JControlHost connection from a designated application e.g. the JDAQClientStarter.cc program. The state machine is entered using the available data in the JNET::JControlHost message. After the state machine is exited, it accepts a new a JNET::JControlHost connection.

Parameters
portport number

Definition at line 741 of file JDAQClient.hh.

742  {
743  JControlHostServer local_server(port);
744 
745  for ( ; ; ) {
746 
747  JControlHost* ps = local_server.AcceptClient();
748 
749  ps->Connected();
750 
751  JNET::JPrefix prefix;
752 
753  ps->WaitHead(prefix);
754 
755  const int length = prefix.getSize();
756 
757  char* buffer = new char[length];
758 
759  ps->GetFullData(buffer, length);
760  ps->PutFullData(prefix.toString(), buffer, length);
761 
762  delete ps;
763 
764  enter(JArgs(std::string(buffer, length)));
765 
766  delete [] buffer;
767 
768  run();
769 
770  exit();
771  }
772  }
ControlHost prefix.
Definition: JPrefix.hh:31
void run()
Run as run control client following command messages via JNET::JControlHost.
Definition: JDAQClient.hh:661
int getSize() const
Get size.
Definition: JPrefix.hh:62
virtual bool enter()
Enter the state machine.
Definition: JDAQClient.hh:418
virtual bool exit()
Exit the state machine.
Definition: JDAQClient.hh:456
std::string toString() const
Convert tag to string.
Definition: JTag.hh:171
void KM3NETDAQ::JDAQClient::run ( std::istream &  in)
inlineinherited

Run client with commands from input stream (e.g. for debugging).

Example input format:

<tag> <event name>[#data];
<tag> <event name>[#data];
Parameters
ininput stream

Definition at line 786 of file JDAQClient.hh.

787  {
788  using namespace std;
789 
790  string tag;
791  string buffer;
792 
793  while (in >> tag && in >> skipws && getline(in, buffer, ';')) {
794  update(tag, buffer.length(), buffer.data());
795  }
796  }
std::istream & getline(std::istream &in, JString &object)
Read string from input stream until end of line.
Definition: JString.hh:478
void update()
Update state machine.
Definition: JDAQClient.hh:808
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY source JAcoustics sh $DETECTOR_ID typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
Definition: JCanberra.sh:36
void JDAQStateMachine::A1 ( CHSM_ns_alias::event const &  event)
inherited

Definition at line 344 of file JDAQCHSM.cc.

344 { actionError(); }
virtual void actionError()
Definition: JDAQCHSM.chsm:124
void JDAQStateMachine::A2 ( CHSM_ns_alias::event const &  event)
inherited

Definition at line 346 of file JDAQCHSM.cc.

346 { execute(&JDAQCHSM::actionInit, event); }
virtual void actionInit(int, const char *)
Definition: JDAQCHSM.chsm:112
virtual void execute(action __action, const CHSM::event &__event)=0
The method to execute the action.
void JDAQStateMachine::A3 ( CHSM_ns_alias::event const &  event)
inherited

Definition at line 348 of file JDAQCHSM.cc.

348 { JDAQCHSM::exit(); }
exit
Definition: JPizza.sh:36
void JDAQStateMachine::A4 ( CHSM_ns_alias::event const &  event)
inherited

Definition at line 350 of file JDAQCHSM.cc.

virtual void execute(action __action, const CHSM::event &__event)=0
The method to execute the action.
virtual void actionConfigure(int, const char *)
Definition: JDAQCHSM.chsm:113
void JDAQStateMachine::A5 ( CHSM_ns_alias::event const &  event)
inherited

Definition at line 352 of file JDAQCHSM.cc.

352 { execute(&JDAQCHSM::actionReset, event); }
virtual void actionReset(int, const char *)
Definition: JDAQCHSM.chsm:118
virtual void execute(action __action, const CHSM::event &__event)=0
The method to execute the action.
void JDAQStateMachine::A6 ( CHSM_ns_alias::event const &  event)
inherited

Definition at line 354 of file JDAQCHSM.cc.

354  {
355 
356  std::istringstream is(std::string(ev_start->buffer, ev_start->length));
357 
358  is >> run_number >> detector_id;
359 
361 
362  }
JDAQStateMachine::ev_start_event ev_start
int run_number
Definition: JDAQCHSM.chsm:156
is
Definition: JDAQCHSM.chsm:167
virtual void execute(action __action, const CHSM::event &__event)=0
The method to execute the action.
virtual void actionStart(int, const char *)
Definition: JDAQCHSM.chsm:114
int detector_id
Definition: JDAQCHSM.chsm:155
void JDAQStateMachine::A7 ( CHSM_ns_alias::event const &  event)
inherited

Definition at line 364 of file JDAQCHSM.cc.

364 { execute(&JDAQCHSM::actionQuit, event); }
virtual void actionQuit(int, const char *)
Definition: JDAQCHSM.chsm:119
virtual void execute(action __action, const CHSM::event &__event)=0
The method to execute the action.
void JDAQStateMachine::A8 ( CHSM_ns_alias::event const &  event)
inherited

Definition at line 366 of file JDAQCHSM.cc.

366 { execute(&JDAQCHSM::actionContinue, event); }
virtual void execute(action __action, const CHSM::event &__event)=0
The method to execute the action.
virtual void actionContinue(int, const char *)
Definition: JDAQCHSM.chsm:116
void JDAQStateMachine::A9 ( CHSM_ns_alias::event const &  event)
inherited

Definition at line 368 of file JDAQCHSM.cc.

368 { execute(&JDAQCHSM::actionStop, event); }
virtual void actionStop(int, const char *)
Definition: JDAQCHSM.chsm:117
virtual void execute(action __action, const CHSM::event &__event)=0
The method to execute the action.
void JDAQStateMachine::A10 ( CHSM_ns_alias::event const &  event)
inherited

Definition at line 370 of file JDAQCHSM.cc.

370 { execute(&JDAQCHSM::actionPause, event); }
virtual void actionPause(int, const char *)
Definition: JDAQCHSM.chsm:115
virtual void execute(action __action, const CHSM::event &__event)=0
The method to execute the action.
void JDAQStateMachine::A11 ( CHSM_ns_alias::event const &  event)
inherited

Definition at line 372 of file JDAQCHSM.cc.

372 { execute(&JDAQCHSM::actionRecover, event); }
virtual void actionRecover(int, const char *)
Definition: JDAQCHSM.chsm:125
virtual void execute(action __action, const CHSM::event &__event)=0
The method to execute the action.
void JDAQStateMachine::A12 ( CHSM_ns_alias::event const &  event)
inherited

Definition at line 374 of file JDAQCHSM.cc.

374 { JDAQCHSM::exit(); }
exit
Definition: JPizza.sh:36
void JDAQStateMachine::A13 ( CHSM_ns_alias::event const &  event)
inherited

Definition at line 376 of file JDAQCHSM.cc.

376 { execute(&JDAQCHSM::actionCheck, event); }
virtual void actionCheck(int, const char *)
Definition: JDAQCHSM.chsm:121
virtual void execute(action __action, const CHSM::event &__event)=0
The method to execute the action.
void JDAQStateMachine::A14 ( CHSM_ns_alias::event const &  event)
inherited

Definition at line 378 of file JDAQCHSM.cc.

378 { execute(&JDAQCHSM::actionInput, event); }
virtual void actionInput(int, const char *)
Definition: JDAQCHSM.chsm:122
virtual void execute(action __action, const CHSM::event &__event)=0
The method to execute the action.
void JDAQStateMachine::EAM4root ( CHSM_ns_alias::state const &  chsm_state_,
CHSM_ns_alias::event const &  event 
)
inherited

Definition at line 337 of file JDAQCHSM.cc.

337  {
338 #line 164 "JDAQCHSM.chsm"
339  CHSM_ns_alias::cluster const &state = (CHSM_ns_alias::cluster const&)chsm_state_; actionEnter(); }
virtual void actionEnter()
Interface methods for actions corresponding to state transitions.
Definition: JDAQCHSM.chsm:109
void JDAQStateMachine::XAM4root ( CHSM_ns_alias::state const &  chsm_state_,
CHSM_ns_alias::event const &  event 
)
inherited

Definition at line 340 of file JDAQCHSM.cc.

340  {
341 #line 165 "JDAQCHSM.chsm"
342  CHSM_ns_alias::cluster const &state = (CHSM_ns_alias::cluster const&)chsm_state_; actionExit(); }
virtual void actionExit()
Definition: JDAQCHSM.chsm:110
const std::string& JDAQCHSM::getName ( ) const
inlineinherited

Get name of state machine.

Returns
name

Definition at line 78 of file JDAQCHSM.chsm.

79  {
80  return name;
81  }
std::string name
Definition: JDAQCHSM.chsm:154
const std::string& JDAQCHSM::getName ( ) const
inlineinherited

Get name of state machine.

Returns
name

Definition at line 89 of file JDAQCHSM.hh.

90  {
91  return name;
92  }
std::string name
Definition: JDAQCHSM.chsm:154
int JDAQCHSM::getDetectorID ( ) const
inlineinherited

Get detector identifier.

Returns
detector identifier.

Definition at line 89 of file JDAQCHSM.chsm.

90  {
91  return detector_id;
92  }
int detector_id
Definition: JDAQCHSM.chsm:155
int JDAQCHSM::getDetectorID ( ) const
inlineinherited

Get detector identifier.

Returns
detector identifier.

Definition at line 100 of file JDAQCHSM.hh.

101  {
102  return detector_id;
103  }
int detector_id
Definition: JDAQCHSM.chsm:155
int JDAQCHSM::getRunNumber ( ) const
inlineinherited

Get run number.

Returns
run number

Definition at line 100 of file JDAQCHSM.chsm.

101  {
102  return run_number;
103  }
int run_number
Definition: JDAQCHSM.chsm:156
int JDAQCHSM::getRunNumber ( ) const
inlineinherited

Get run number.

Returns
run number

Definition at line 111 of file JDAQCHSM.hh.

112  {
113  return run_number;
114  }
int run_number
Definition: JDAQCHSM.chsm:156
virtual void JDAQCHSM::actionError ( )
inlinevirtualinherited

Definition at line 124 of file JDAQCHSM.chsm.

124 {}
virtual void JDAQCHSM::actionError ( )
inlinevirtualinherited

Definition at line 135 of file JDAQCHSM.hh.

135 {}
virtual void JDAQCHSM::actionRecover ( int  ,
const char *   
)
inlinevirtualinherited

Definition at line 125 of file JDAQCHSM.chsm.

125 {}
virtual void JDAQCHSM::actionRecover ( int  ,
const char *   
)
inlinevirtualinherited

Definition at line 136 of file JDAQCHSM.hh.

136 {}
const std::string& KM3NETDAQ::JDAQClient_t::getHostname ( ) const
inlineinherited

Get hostname.

Returns
host name

Definition at line 108 of file JDAQClient.hh.

109  {
110  return hostname;
111  }
const std::string& KM3NETDAQ::JDAQClient_t::getFullName ( ) const
inlineinherited

Get full name of this run control client.

Returns
full name

Definition at line 119 of file JDAQClient.hh.

120  {
121  return fullname;
122  }
const JTag& KM3NETDAQ::JDAQClient_t::getUniqueTag ( ) const
inlineinherited

Get unique tag of this run control client.

Returns
unique tag

Definition at line 130 of file JDAQClient.hh.

131  {
132  return unique_tag;
133  }
long long int KM3NETDAQ::JDAQClient_t::getClockDelay ( ) const
inlineinherited

Get total delay time.

Returns
delay time [us]

Definition at line 141 of file JDAQClient.hh.

142  {
143  return clock.getDelay();
144  }
long long int getDelay() const
Get total delay time.
Definition: JTimekeeper.hh:78
JTimekeeper clock
central clock
Definition: JDAQClient.hh:206
long long int KM3NETDAQ::JDAQClient_t::getClockInterval ( ) const
inlineinherited

Get interval time.

Returns
interval time [us]

Definition at line 153 of file JDAQClient.hh.

154  {
155  return clock.getInterval();
156  }
JTimekeeper clock
central clock
Definition: JDAQClient.hh:206
long long int getInterval() const
Get interval time.
Definition: JTimekeeper.hh:67
void KM3NETDAQ::JDAQClient_t::setClockInterval ( const long long int  interval_us)
inlineinherited

Set interval time.

Parameters
interval_usinterval time [us]

Definition at line 164 of file JDAQClient.hh.

165  {
166  clock.setInterval(interval_us);
167  }
JTimekeeper clock
central clock
Definition: JDAQClient.hh:206
void setInterval(const long long int interval_us)
Set interval time.
Definition: JTimekeeper.hh:89
void KM3NETDAQ::JDAQClient_t::resetClock ( )
inlineinherited

Reset clock.

Definition at line 173 of file JDAQClient.hh.

174  {
175  clock.reset();
176  }
JTimekeeper clock
central clock
Definition: JDAQClient.hh:206
void reset(const long long int t0)
Reset time.
Definition: JTimekeeper.hh:100
int KM3NETDAQ::JDAQClient_t::getEventNumber ( ) const
inlineinherited

Get last event number.

Returns
event number

Definition at line 184 of file JDAQClient.hh.

185  {
186  return event_number;
187  }
int event_number
number of last event
Definition: JDAQClient.hh:207
void KM3NETDAQ::JDAQClient_t::setEventNumber ( const int  event_number)
inlineinherited

Set last event number.

Parameters
event_numberevent number

Definition at line 195 of file JDAQClient.hh.

196  {
197  this->event_number = event_number;
198  }
int event_number
number of last event
Definition: JDAQClient.hh:207

Member Data Documentation

JMeta KM3NETDAQ::JDataFilter::meta

meta data

Definition at line 1197 of file JDataFilter.cc.

const int KM3NETDAQ::JDataFilter::MAXIMUM_FILE_NUMBER = 100
static

maximum file number for overwrite protection.

Definition at line 1199 of file JDataFilter.cc.

JSinglePointer<JControlHost_t> KM3NETDAQ::JDataFilter::datawriter
private

controlhost of data server (to which data writer should be connected)

Definition at line 1204 of file JDataFilter.cc.

std::string KM3NETDAQ::JDataFilter::hostname
private

host name of data server

Definition at line 1205 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::port
private

server socket port

Definition at line 1232 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::backlog
private

Definition at line 1233 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::buffer_size
private

Definition at line 1234 of file JDataFilter.cc.

JSinglePointer<JServerSocket> KM3NETDAQ::JDataFilter::serversocket
private

server for data queue connections

Definition at line 1236 of file JDataFilter.cc.

JChannelList_t KM3NETDAQ::JDataFilter::channelList
private

connections to data queue

Definition at line 1237 of file JDataFilter.cc.

JTimer KM3NETDAQ::JDataFilter::timer
private

Definition at line 1239 of file JDataFilter.cc.

JQuantile KM3NETDAQ::JDataFilter::Qt
private

Definition at line 1240 of file JDataFilter.cc.

std::list<JDAQTimesliceL0> KM3NETDAQ::JDataFilter::timeslices
private

buffer with pending time slice data

Definition at line 1242 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::current_slice_index
private

Definition at line 1243 of file JDataFilter.cc.

unsigned int KM3NETDAQ::JDataFilter::frames_per_slice
private

Definition at line 1244 of file JDataFilter.cc.

unsigned int KM3NETDAQ::JDataFilter::maximum_frames_per_slice
private

Definition at line 1245 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::maximal_frame_index
private

Definition at line 1246 of file JDataFilter.cc.

JTriggerParameters KM3NETDAQ::JDataFilter::parameters
private

Definition at line 1250 of file JDataFilter.cc.

JSinglePointer<JTimesliceRouter> KM3NETDAQ::JDataFilter::timesliceRouter
private

Definition at line 1251 of file JDataFilter.cc.

JDetector KM3NETDAQ::JDataFilter::detector
private

Definition at line 1253 of file JDataFilter.cc.

JSinglePointer<JModuleRouter> KM3NETDAQ::JDataFilter::moduleRouter
private

Definition at line 1254 of file JDataFilter.cc.

JSinglePointer<JBuildL1_t> KM3NETDAQ::JDataFilter::buildL1
private

Definition at line 1255 of file JDataFilter.cc.

JSinglePointer<JBuildL2_t> KM3NETDAQ::JDataFilter::buildL2
private

Definition at line 1256 of file JDataFilter.cc.

JSinglePointer<JBuildL2_t> KM3NETDAQ::JDataFilter::buildSN
private

Definition at line 1257 of file JDataFilter.cc.

JSinglePointer<JBuildL2_t> KM3NETDAQ::JDataFilter::buildNB
private

Definition at line 1258 of file JDataFilter.cc.

JSinglePointer<JTriggerNB> KM3NETDAQ::JDataFilter::triggerNB
private

Definition at line 1260 of file JDataFilter.cc.

JSinglePointer<JTrigger3DMuon> KM3NETDAQ::JDataFilter::trigger3DMuon
private

Definition at line 1261 of file JDataFilter.cc.

JSinglePointer<JTrigger3DShower> KM3NETDAQ::JDataFilter::trigger3DShower
private

Definition at line 1262 of file JDataFilter.cc.

JSinglePointer<JTriggerMXShower> KM3NETDAQ::JDataFilter::triggerMXShower
private

Definition at line 1263 of file JDataFilter.cc.

JMessageScheduler KM3NETDAQ::JDataFilter::logErrorRun
private

Definition at line 1265 of file JDataFilter.cc.

JMessageScheduler KM3NETDAQ::JDataFilter::logErrorDetector
private

Definition at line 1266 of file JDataFilter.cc.

JMessageScheduler KM3NETDAQ::JDataFilter::logErrorIndex
private

Definition at line 1267 of file JDataFilter.cc.

JMessageScheduler KM3NETDAQ::JDataFilter::logErrorIncomplete
private

Definition at line 1268 of file JDataFilter.cc.

std::vector<JDAQProcess> KM3NETDAQ::JDataFilter::dataFilters
private

Definition at line 1272 of file JDataFilter.cc.

std::vector<JDAQProcess> KM3NETDAQ::JDataFilter::dataQueues
private

Definition at line 1273 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::totalCPURAM
private

Definition at line 1277 of file JDataFilter.cc.

unsigned int KM3NETDAQ::JDataFilter::maxQueueDepth
private

Definition at line 1278 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::maxQueueSize
private

Definition at line 1279 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::queueSize
private

Definition at line 1280 of file JDataFilter.cc.

bool KM3NETDAQ::JDataFilter::reporting
private

Definition at line 1284 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::numberOfEvents
private

Definition at line 1286 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::numberOfBytes
private

Definition at line 1287 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::numberOfTimeslicesProcessed
private

Definition at line 1288 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::numberOfIncompleteTimeslicesProcessed
private

Definition at line 1289 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::minFrameNumber
private

Definition at line 1291 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::maxFrameNumber
private

Definition at line 1292 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::number_of_packets_received
private

Definition at line 1296 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::number_of_packets_discarded
private

Definition at line 1297 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::number_of_reads
private

Definition at line 1298 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::number_of_bytes_received
private

Definition at line 1299 of file JDataFilter.cc.

JCircularBuffer_t KM3NETDAQ::JDataFilter::c_buffer
private

Definition at line 1303 of file JDataFilter.cc.

std::string KM3NETDAQ::JDataFilter::path
private

directory for writing circular buffer

Definition at line 1304 of file JDataFilter.cc.

JSharedPointer<JControlHost> KM3NETDAQ::JDAQClient::server
protectedinherited

message server

Definition at line 800 of file JDAQClient.hh.

JMessageLogger KM3NETDAQ::JDAQClient::logger
protectedinherited

message logger

Definition at line 801 of file JDAQClient.hh.

JDAQStateMachine::state_root JDAQStateMachine::root
inherited
JDAQStateMachine::state_Main JDAQStateMachine::Main
inherited
JDAQStateMachine::ev_daq_event JDAQStateMachine::ev_daq
inherited
char JDAQStateMachine::ev_daq_param_block[sizeof(ev_daq_event::param_block)]
inherited

Definition at line 238 of file JDAQCHSM.hh.

JDAQStateMachine::ev_init_event JDAQStateMachine::ev_init
inherited
char JDAQStateMachine::ev_init_param_block[sizeof(ev_init_event::param_block)]
inherited

Definition at line 258 of file JDAQCHSM.hh.

JDAQStateMachine::ev_configure_event JDAQStateMachine::ev_configure
inherited
char JDAQStateMachine::ev_configure_param_block[sizeof(ev_configure_event::param_block)]
inherited

Definition at line 278 of file JDAQCHSM.hh.

JDAQStateMachine::ev_start_event JDAQStateMachine::ev_start
inherited
char JDAQStateMachine::ev_start_param_block[sizeof(ev_start_event::param_block)]
inherited

Definition at line 298 of file JDAQCHSM.hh.

JDAQStateMachine::ev_pause_event JDAQStateMachine::ev_pause
inherited
char JDAQStateMachine::ev_pause_param_block[sizeof(ev_pause_event::param_block)]
inherited

Definition at line 318 of file JDAQCHSM.hh.

JDAQStateMachine::ev_continue_event JDAQStateMachine::ev_continue
inherited
char JDAQStateMachine::ev_continue_param_block[sizeof(ev_continue_event::param_block)]
inherited

Definition at line 338 of file JDAQCHSM.hh.

JDAQStateMachine::ev_stop_event JDAQStateMachine::ev_stop
inherited
char JDAQStateMachine::ev_stop_param_block[sizeof(ev_stop_event::param_block)]
inherited

Definition at line 358 of file JDAQCHSM.hh.

JDAQStateMachine::ev_reset_event JDAQStateMachine::ev_reset
inherited
char JDAQStateMachine::ev_reset_param_block[sizeof(ev_reset_event::param_block)]
inherited

Definition at line 378 of file JDAQCHSM.hh.

JDAQStateMachine::ev_quit_event JDAQStateMachine::ev_quit
inherited
char JDAQStateMachine::ev_quit_param_block[sizeof(ev_quit_event::param_block)]
inherited

Definition at line 398 of file JDAQCHSM.hh.

JDAQStateMachine::ev_off_event JDAQStateMachine::ev_off
inherited
char JDAQStateMachine::ev_off_param_block[sizeof(ev_off_event::param_block)]
inherited

Definition at line 418 of file JDAQCHSM.hh.

JDAQStateMachine::ev_check_event JDAQStateMachine::ev_check
inherited
char JDAQStateMachine::ev_check_param_block[sizeof(ev_check_event::param_block)]
inherited

Definition at line 438 of file JDAQCHSM.hh.

JDAQStateMachine::ev_input_event JDAQStateMachine::ev_input
inherited
char JDAQStateMachine::ev_input_param_block[sizeof(ev_input_event::param_block)]
inherited

Definition at line 458 of file JDAQCHSM.hh.

JDAQStateMachine::ev_recover_event JDAQStateMachine::ev_recover
inherited
char JDAQStateMachine::ev_recover_param_block[sizeof(ev_recover_event::param_block)]
inherited

Definition at line 478 of file JDAQCHSM.hh.

JDAQStateMachine::ev_error_event JDAQStateMachine::ev_error
inherited
char JDAQStateMachine::ev_error_param_block[sizeof(ev_error_event::param_block)]
inherited

Definition at line 495 of file JDAQCHSM.hh.

std::string JDAQCHSM::name
protectedinherited

Definition at line 154 of file JDAQCHSM.chsm.

int JDAQCHSM::detector_id
protectedinherited

Definition at line 155 of file JDAQCHSM.chsm.

int JDAQCHSM::run_number
protectedinherited

Definition at line 156 of file JDAQCHSM.chsm.

const int KM3NETDAQ::JDAQClient_t::TIMEOUT_S = 1
staticinherited

time out of update [s]

Definition at line 61 of file JDAQClient.hh.

JEventTable KM3NETDAQ::JDAQClient_t::eventTable
protectedinherited

event table

Definition at line 202 of file JDAQClient.hh.

std::string KM3NETDAQ::JDAQClient_t::fullname
protectedinherited

Definition at line 204 of file JDAQClient.hh.

JTag KM3NETDAQ::JDAQClient_t::unique_tag
protectedinherited

Definition at line 205 of file JDAQClient.hh.

JTimekeeper KM3NETDAQ::JDAQClient_t::clock
protectedinherited

central clock

Definition at line 206 of file JDAQClient.hh.

int KM3NETDAQ::JDAQClient_t::event_number
protectedinherited

number of last event

Definition at line 207 of file JDAQClient.hh.


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