Jpp  17.3.0
the software that should make you happy
 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, const std::string &archive)
 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::stringgetName () const
 Get name of state machine. More...
 
const std::stringgetName () 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::stringgetHostname () const
 Get hostname. More...
 
const std::stringgetFullName () 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 compare (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 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 >
void 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::deque< 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
 
int dumpCount
 
int dumpLimit
 
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
 

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 setSelect and actionSelect.

In state Running, all incoming data from the DataQueue.cc are buffered, referred to as "queue".
These data are formatted as a JDAQSuperFrame and aggregated into a JDAQTimeslice.
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 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 one of the corresponding pre-set limits:

  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, up to the original value set at 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 temporary circular buffer>;
  archive  = <write directory for archival of 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 one (or more) of the buffer sizes is non-zero and the path corresponds to a valid directory:

In this, YYYY, MM and DD correspond to the year, month and day at the time of the alert, respectively.
The <tag> corresponds to the unique JNET::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).

Note that the application JConvert.cc can be used to readily convert multiple input files to a single output file.

The script $JPP_DIR/tests/JDataFilter/JDataFilter.sh can be used to test this application.

Definition at line 151 of file JDataFilter.cc.

Member Typedef Documentation

Definition at line 156 of file JDataFilter.cc.

Definition at line 157 of file JDataFilter.cc.

Definition at line 159 of file JDataFilter.cc.

Definition at line 160 of file JDataFilter.cc.

Definition at line 161 of file JDataFilter.cc.

Definition at line 162 of file JDataFilter.cc.

Definition at line 163 of file JDataFilter.cc.

Definition at line 164 of file JDataFilter.cc.

Definition at line 1321 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,
const std::string archive 
)
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 temporary storage
archivedirectory for parmanent archival

replace tag to receive dfilter specific messages in configure

Definition at line 363 of file JDataFilter.cc.

372  :
373  JDAQClient (name,server,logger,level),
374  hostname (hostname),
375  port (port),
376  backlog (backlog),
378  c_buffer (path, archive, getUniqueTag())
379  {
380  replaceEvent(RC_CMD, RC_DFILTER, ev_configure); /// replace tag to receive dfilter specific messages in configure
381 
383 
384  totalCPURAM = getRAM();
385  current_slice_index = -1;
386  reporting = false;
387  }
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:493
JSharedPointer< JControlHost > server
message server
Definition: JDAQClient.hh:801
JCircularBuffer_t c_buffer
long long int totalCPURAM
$WORKDIR driver txt done cat $WORKDIR driver txt<< EOFprocess ${DATAFILTER}$FILTER_HOST csh-c '(setenv ROOTSYS $ROOTSYS &&source $JPP_DIR/setenv.csh $JPP_DIR &&(JDataFilter-H\$SERVER\$-M\$LOGGER\$-d $DEBUG-u ${DATAFILTER}-P $PORT</dev/null > &/dev/null &))';process ${DATAWRITER}$WRITER_HOST csh-c '(setenv ROOTSYS $ROOTSYS &&source $JPP_DIR/setenv.csh $JPP_DIR &&(JDataWriter-H\$SERVER\$-M\$LOGGER\$-d $DEBUG-u ${DATAWRITER}</dev/null > &/dev/null &))';print enterevent ev_init{RC_CMD}event ev_reset{RC_CMD}event ev_init{RC_CMD}event ev_configure{RC_DFLTR%<$WORKDIR/ev_configure_datafilter.txt > RC_DQSIM<$WORKDIR/ev_configure_dqsimulator.txt > RC_DWRT path
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.
const JTag & getUniqueTag() const
Get unique tag of this run control client.
Definition: JDAQClient.hh:131
JDAQClient(const std::string &name, const std::string &server, JLogger *logger, const int level)
Constructor.
Definition: JDAQClient.hh:291
static const JNET::JTag RC_CMD
Definition: JDAQTags.hh:44
void addSubscription(const JSubscription &subscription)
Add custom subscription.
Definition: JDAQClient.hh:524

Member Function Documentation

static bool KM3NETDAQ::JDataFilter::compare ( 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 343 of file JDataFilter.cc.

344  {
345  return first.index < second.index;
346  }
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 390 of file JDataFilter.cc.

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

Reimplemented from JDAQCHSM.

Definition at line 394 of file JDataFilter.cc.

395  {
396  if (c_buffer.is_open()) {
397 
398  JStatusStream(logger) << "Close and remove circular buffer " << c_buffer;
399 
400  c_buffer.close(false);
401  }
402 
403  datawriter.reset();
404  }
void close(const bool option)
Close file.
Definition: JDataFilter.cc:228
virtual void reset() override
Reset pointer.
Definition: JStorage.hh:42
JCircularBuffer_t c_buffer
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:802
virtual void KM3NETDAQ::JDataFilter::actionInit ( int  length,
const char *  buffer 
)
inlineoverridevirtual

Reimplemented from JDAQCHSM.

Definition at line 407 of file JDataFilter.cc.

408  {
409  JDebugStream(logger) << "actionInit() " << std::string(buffer,length);
410 
411  try {
412 
413  JDebugStream(logger) << "Start server.";
414 
415  if (serversocket.is_valid()) {
417  }
418 
420  }
421  catch(const std::exception& error) {
422  JErrorStream(logger) << "Error \"" << error.what() << "\"; trigger ev_error.";
423  ev_error();
424  }
425  }
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.
bool is_valid() const
Check validity of pointer.
int shutdown()
Shut down socket.
Definition: JSocket.hh:72
then awk string
Level specific message streamers.
int port
server socket port
JMessageLogger logger
message logger
Definition: JDAQClient.hh:802
virtual void KM3NETDAQ::JDataFilter::actionConfigure ( int  length,
const char *  buffer 
)
inlineoverridevirtual

Reimplemented from JDAQCHSM.

Definition at line 428 of file JDataFilter.cc.

429  {
430  using namespace std;
431 
432  JDebugStream(logger) << "actionConfigure() " << endl << std::string(buffer,length);
433 
434  long long int update_s = 10;
435  long long int logger_s = 5;
436 
437  parameters .reset();
438  dataFilters.clear();
439  dataQueues .clear();
440 
441  reporting = false;
442  dumpCount = 0;
443  dumpLimit = numeric_limits<int>::max();
444 
445  detector.clear();
446 
447  JProperties properties(JEquationParameters("=", ";", "", ""), 0);
448 
449  properties["dataWriter"] = hostname;
450  properties["numberOfFramesPerSlice"] = frames_per_slice = 1;
451  properties["detector"] = detector;
452  properties["triggerParameters"] = parameters;
453  properties["queueSize"] = maxQueueSize = (totalCPURAM - GIGABYTE); // leave 1 GB left ...
454  properties["queueDepth"] = maxQueueDepth = 20; // to be optimized
455  properties["frameIndex"] = maximal_frame_index = 100000;
456  properties["logger_s"] = logger_s;
457  properties["update_s"] = update_s;
458  properties["JDataFilter"] = dataFilters;
459  properties["DataQueue"] = dataQueues;
460  properties["path"] = c_buffer.path;
461  properties["archive"] = c_buffer.archive;
462  properties["c_sizeL0"] = c_buffer.sizeL0;
463  properties["c_sizeL1"] = c_buffer.sizeL1;
464  properties["c_sizeL2"] = c_buffer.sizeL2;
465  properties["c_sizeSN"] = c_buffer.sizeSN;
466  properties["dumpLimit"] = dumpLimit;
467 
468  try {
469  properties.read(string(buffer, length));
470  }
471  catch(const exception& error) {
472  JErrorStream(logger) << error.what();
473  }
474 
475  if (update_s <= 0) { update_s = 1; }
476  if (logger_s <= 0) { logger_s = 1; }
477 
478  setClockInterval(update_s * 1000000LL);
479 
481 
482  if (hostname != "")
484  else
485  throw JException("Undefined data writer host name.");
486 
488 
489  // process processlist
490 
491  if (dataFilters.empty()) {
492  JNoticeStream(logger) << "No DataFilters in process list, or no process list. "
493  << "Assuming that this process is the only process on this CPU and setting parameters accordingly.";
494  }
495 
496  sort(dataFilters.begin(), dataFilters.end(), compare);
497 
498  unsigned int numberOfDataFiltersOnThisMachine = 0;
499  vector<JDAQProcess>::iterator thisProcess = dataFilters.end();
500 
502 
503  {
504  JNoticeStream notice(logger);
505 
506  notice << "My IP addresses:";
507 
508  for (vector<string>::const_iterator i = IP.begin(); i != IP.end(); ++i) {
509  notice << ' ' << *i;
510  }
511  }
512 
513  for (vector<JDAQProcess>::iterator i = dataFilters.begin(); i != dataFilters.end(); ++i) {
514 
515  JDebugStream(logger) << "Test IP address \"" << i->hostname << "\" " << (find(IP.begin(), IP.end(), i->hostname) != IP.end());
516 
517  if (find(IP.begin(), IP.end(), i->hostname) != IP.end()) {
518 
519  numberOfDataFiltersOnThisMachine++;
520 
521  if (i->port == this->port) {
522  thisProcess = i;
523  }
524  }
525  }
526 
527  if (numberOfDataFiltersOnThisMachine == 0) {
528  JNoticeStream(logger) << "Zero data filters on this machine according to process list (if it exists). "
529  << "Assuming one datafilter on this machine.";
530  numberOfDataFiltersOnThisMachine = 1;
531  }
532 
533  if (thisProcess == dataFilters.end()) {
534  JErrorStream(logger) << "This process cannot be found in the process list. Why do I exist?";
535  }
536 
537  if (thisProcess != dataFilters.end() && thisProcess->index != getName()) {
538  JErrorStream(logger) << "Mismatch between given process names: "
539  << "I am called " << getName()
540  << ", but in the process list I am referred to as " << thisProcess->index;
541  }
542 
543  if (dataFilters.begin() == thisProcess || dataFilters.empty()) { // set reporting
544  reporting = true;
545  }
546 
547  if (maxQueueSize > (totalCPURAM-GIGABYTE)/(numberOfDataFiltersOnThisMachine)) { // check maximum size of queue
548 
549  maxQueueSize = (totalCPURAM-GIGABYTE)/(numberOfDataFiltersOnThisMachine);
550 
551  JNoticeStream(logger) << "Maximum queue size is too large given the number of processes on this machine. "
552  << "Queue size reduced to "
553  << maxQueueSize << " bytes." ;
554  }
555 
556  // detector
557 
558  if (parameters.disableHighRateVeto) {
559 
560  JNoticeStream(logger) << "Disabling high-rate veto of all PMTs.";
561 
562  detector.setPMTStatus(HIGH_RATE_VETO_DISABLE);
563  }
564 
565  // trigger parameters
566 
568 
573 
575 
576  if (reporting) {
577  JNoticeStream(logger) << "This data filter process will report.";
578  JNoticeStream(logger) << "Detector version/size " << detector.getVersion() << '/' << detector.size();
579  JDebugStream (logger) << "Trigger parameters: " << parameters;
580  JDebugStream (logger) << "Detector description: " << endl << detector;
581  JNoticeStream(logger) << "Update period [s]: " << getClockInterval();
582  }
583 
585 
586  // set L1, L2 and SN builders
587 
592 
593  if (buildL1.get() == NULL) { JErrorStream(logger) << "Failed to allocate buildL1."; }
594  if (buildL2.get() == NULL) { JErrorStream(logger) << "Failed to allocate buildL2."; }
595  if (buildSN.get() == NULL) { JErrorStream(logger) << "Failed to allocate buildSN."; }
596  if (buildNB.get() == NULL) { JErrorStream(logger) << "Failed to allocate buildSN."; }
597 
602 
603  if (c_buffer.is_enabled()) {
604 
605  if (!c_buffer.is_open()) {
606 
607  c_buffer.open();
608 
609  if (c_buffer.is_open()) {
610 
612 
613  JStatusStream(logger) << "Created circular buffer " << c_buffer;
614 
615  } else {
616 
617  JErrorStream (logger) << "Failed to create circular buffer in directory <" << c_buffer.path << ">; disable functionality.";
618  }
619 
620  } else {
621 
622  JNoticeStream(logger) << "Continue using circular buffer " << c_buffer;
623  }
624  }
625 
626  if (c_buffer.is_open()) {
627  if (c_buffer.sizeL0 > 0) { static_cast<JTreeWriterObjectOutput<JDAQTimesliceL0>&>(c_buffer).SetCircular(c_buffer.sizeL0); }
628  if (c_buffer.sizeL1 > 0) { static_cast<JTreeWriterObjectOutput<JDAQTimesliceL1>&>(c_buffer).SetCircular(c_buffer.sizeL1); }
629  if (c_buffer.sizeL2 > 0) { static_cast<JTreeWriterObjectOutput<JDAQTimesliceL2>&>(c_buffer).SetCircular(c_buffer.sizeL2); }
630  if (c_buffer.sizeSN > 0) { static_cast<JTreeWriterObjectOutput<JDAQTimesliceSN>&>(c_buffer).SetCircular(c_buffer.sizeSN); }
631  } else {
632  c_buffer.disable();
633  }
634  }
Message logger with time scheduler.
static bool compare(const JDAQProcess &first, const JDAQProcess &second)
Sort DAQ process by index.
Definition: JDataFilter.cc:343
General exception.
Definition: JException.hh:23
JMeta meta
meta data
JSinglePointer< JTriggerNB > triggerNB
Router for fast addressing of hits in KM3NETDAQ::JDAQTimeslice data structure as a function of the op...
JBuildL2< hit_type > JBuildL2_t
Definition: JDataFilter.cc:164
JMessageScheduler logErrorIndex
Long64_t sizeL1
Number of L1 time slices.
Definition: JDataFilter.cc:326
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:154
Utility class to parse parameter values.
Definition: JProperties.hh:496
void setClockInterval(const long long int interval_us)
Set interval time.
Definition: JDAQClient.hh:165
static const int HIGH_RATE_VETO_DISABLE
Enable (disable) use of high-rate veto test if this status bit is 0 (1);.
Definition: pmt_status.hh:13
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
then usage $script< detector file >< detectorfile > nIf the range of floors is the first detector file is aligned to the second before the comparison nIn this
JTriggerParameters parameters
std::string path
Directory for temporary storage.
Definition: JDataFilter.cc:330
JBuildL1< hit_type > JBuildL1_t
Definition: JDataFilter.cc:163
JCircularBuffer_t c_buffer
bool is_enabled() const
Check whether writing of data is enabled.
Definition: JDataFilter.cc:292
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:66
long long int totalCPURAM
JSinglePointer< JTrigger3DShower > trigger3DShower
Detector file.
Definition: JHead.hh:226
std::vector< JDAQProcess > dataFilters
JMessageScheduler logErrorDetector
then awk string
JSinglePointer< JBuildL2_t > buildSN
JSinglePointer< JBuildL2_t > buildNB
Level specific message streamers.
bool putObject(TDirectory &dir, const TObject &object)
Write object to ROOT directory.
Nano-beacon trigger.
Definition: JTriggerNB.hh:19
Long64_t sizeSN
Number of SN time slices.
Definition: JDataFilter.cc:328
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
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:325
JSinglePointer< JTrigger3DMuon > trigger3DMuon
JSinglePointer< JControlHost_t > datawriter
controlhost of data server (to which data writer should be connected)
double getMaximalDistance(const JDetector &detector, const bool option=false)
Get maximal distance between modules in detector.
JMessageScheduler logErrorRun
JSinglePointer< JModuleRouter > moduleRouter
JMessageLogger logger
message logger
Definition: JDAQClient.hh:802
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:327
virtual JClass_t * get() const override
Get pointer.
Definition: JPointer.hh:64
unsigned int frames_per_slice
std::string archive
Directory for permanent archival.
Definition: JDataFilter.cc:331
virtual void KM3NETDAQ::JDataFilter::actionStart ( int  length,
const char *  buffer 
)
inlineoverridevirtual

Reimplemented from JDAQCHSM.

Definition at line 637 of file JDataFilter.cc.

638  {
639  using namespace std;
640 
641  if (reporting) {
642  JNoticeStream(logger) << "Start run " << getRunNumber();
643  }
644 
645  timeslices.clear();
646 
647  current_slice_index = -1;
648  queueSize = 0;
649 
650  numberOfEvents = 0;
651  numberOfBytes = 0;
654 
658  number_of_reads = 0;
659 
660  minFrameNumber = numeric_limits<int>::max();
661  maxFrameNumber = numeric_limits<int>::min();
662 
663  // Reset global trigger counter.
664 
666 
667  logErrorRun .reset();
669  logErrorIndex .reset();
671 
672  timer.reset();
673  timer.start();
674 
675  Qt.reset();
676 
677  // send trigger parameters to the datawriter
678 
679  ostringstream os;
680 
681  os << getRunNumber() << ' ' << parameters;
682 
683  datawriter->PutFullString(IO_TRIGGER_PARAMETERS, os.str());
684  }
void reset()
Reset.
Definition: JQuantile.hh:87
long long int numberOfTimeslicesProcessed
std::deque< JDAQTimesliceL0 > timeslices
buffer with pending time slice data
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:802
long long int number_of_bytes_received
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 687 of file JDataFilter.cc.

688  {
689  using namespace std;
690 
691  if (!timeslices.empty()) {
692 
693  JNoticeStream(logger) << "Flushing " << timeslices.size() << " slices.";
694 
695  for (deque<JDAQTimesliceL0>::const_iterator i = timeslices.begin(); i != timeslices.end(); ++i) {
696  queueSize -= getSizeof(*i);
697  }
698 
699  timeslices.clear();
700  }
701 
702  { // force clearance of memory
703 
704  deque<JDAQTimesliceL0> buffer;
705 
706  timeslices.swap(buffer);
707  }
708 
709  if (queueSize != 0) {
710  JWarningStream(logger) << "Pending data in queue " << queueSize << " [B]";
711  }
712 
713  current_slice_index = -1;
714  queueSize = 0;
715 
716  timer.stop();
717  }
std::deque< 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:802
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 720 of file JDataFilter.cc.

721  {
722  timer.start();
723  }
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 726 of file JDataFilter.cc.

727  {
728  typeout();
729 
730  datawriter.reset();
731  }
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 734 of file JDataFilter.cc.

735  {
736  if (serversocket.is_valid()) {
738  }
739 
741  }
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:72
virtual void KM3NETDAQ::JDataFilter::actionQuit ( int  length,
const char *  buffer 
)
inlineoverridevirtual

Reimplemented from JDAQCHSM.

Definition at line 744 of file JDataFilter.cc.

745  {
746  datawriter.reset();
747  }
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 750 of file JDataFilter.cc.

751  {
752  if (serversocket.is_valid()) {
753  mask.set(*serversocket);
754  }
755 
756  for (JChannelList_t::const_iterator channel = channelList.begin(); channel != channelList.end(); ++channel) {
757  if (!channel->isReady()) {
758  mask.set(channel->getFileDescriptor());
759  }
760  }
761  }
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 764 of file JDataFilter.cc.

765  {
766  using namespace std;
767 
768  for (JChannelList_t::iterator channel = channelList.begin(); channel != channelList.end(); ) {
769 
770  try {
771 
772  if (mask.has(channel->getFileDescriptor())) {
773  channel->read();
774  }
775 
776  if (channel->isReady()) {
777 
779  number_of_reads += channel->getCounter();
780  number_of_bytes_received += channel->size();
781 
782  if (isRunning()) {
783 
784  updateFrameQueue(channel);
785 
786  } else {
787 
788  JErrorStream(logErrorRun) << "Receiving data while not running.";
789 
791  }
792 
793  channel->reset();
794  }
795 
796  ++channel;
797  }
798  catch(const exception& error) {
799 
800  JNoticeStream(logger) << "Disconnecting channel " << channel->getFileDescriptor() << ' ' << error.what();
801 
802  channel->shutdown();
803 
804  channel = channelList.erase(channel);
805  }
806  }
807 
808 
809  if (serversocket.is_valid()) {
810 
811  if (mask.has(*serversocket)) {
812 
813  JTCPSocket socket;
814 
816 
817  //socket.setSendBufferSize (buffer_size);
819 
820  socket.setKeepAlive (true);
821  socket.setNonBlocking(true);
822 
823  JNoticeStream(logger) << "New channel" << '[' << socket.getFileDescriptor() << ']';
824 
825  channelList.push_back(JSocketInputChannel_t(socket));
826  }
827  }
828 
829 
830  if (!timeslices.empty() && ((timeslices[0].size() >= frames_per_slice) ||
831  (timeslices.size() >= 2u &&
832  timeslices[1].size() >= frames_per_slice) ||
833  (timeslices.size() >= maxQueueDepth) ||
834  (queueSize >= maxQueueSize))) {
835 
836  const JDAQTimesliceL0& pending_slice = timeslices.front();
837  queueSize -= getSizeof(pending_slice);
838 
839  current_slice_index = pending_slice.getFrameIndex();
840  minFrameNumber = min(minFrameNumber, pending_slice.getFrameIndex());
841  maxFrameNumber = max(maxFrameNumber, pending_slice.getFrameIndex());
842 
843  if (pending_slice.size() > frames_per_slice) {
844 
845  JErrorStream(logger) << "More frames in timeslice than expected "
846  << pending_slice.size() << " > " << frames_per_slice;
847 
848  if (pending_slice.size() <= maximum_frames_per_slice) {
849 
850  JErrorStream(logger) << "Adjusting expected frames per timeslice to " << pending_slice.size();
851 
852  frames_per_slice = pending_slice.size();
853  }
854  }
855 
856  if (!pending_slice.empty()) {
857 
858  const localtime_t t0 = getLocalTime();
859 
860  processTimeSlice(pending_slice);
861 
862  const localtime_t t1 = getLocalTime();
863 
865 
866  Qt.put(t1 - t0);
867 
868  if (pending_slice.size() < frames_per_slice) {
869 
871 
872  ostringstream error;
873 
874  error << "Timeout -> processed incomplete timeslice: "
875  << "Frame index = " << pending_slice.getFrameIndex() << ';'
876  << "Size of timeslice = " << pending_slice.size() << ';'
877  << "Queue depth = " << timeslices.size() << ';'
878  << "Queue size = " << queueSize << ';';
879 
880  if ((timeslices.size() >= 2u &&
881  timeslices[1].size() >= frames_per_slice)) {
882 
883  error << " intermittent problem -> continues as-is";
884 
885  } else {
886 
887  error << " adjusting expected frames per timeslice from " << frames_per_slice << " to " << pending_slice.size();
888 
889  frames_per_slice = pending_slice.size();
890  }
891 
892  JErrorStream(logErrorIncomplete) << error.str();
893  }
894  }
895 
896  timeslices.pop_front();
897  }
898  }
void processTimeSlice(const JDAQTimesliceL0 &timeslice)
Process time slice.
long long int numberOfTimeslicesProcessed
std::deque< JDAQTimesliceL0 > timeslices
buffer with pending time slice data
bool has(const int file_descriptor) const
Has file descriptor.
JSocketInputChannel< JDAQAbstractPreamble > JSocketInputChannel_t
Definition: JDataFilter.cc:156
JSinglePointer< JServerSocket > serversocket
server for data queue connections
unsigned int maximum_frames_per_slice
JMessageScheduler logErrorIncomplete
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: JTCPSocket.hh:139
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:133
void updateFrameQueue(const JChannelList_t::const_iterator channel)
Update queue with data frames.
Definition: JDataFilter.cc:916
long long int number_of_packets_received
bool isRunning() const
Check if this client is in runnig state.
Definition: JDAQClient.hh:480
long long int localtime_t
Type definition of local time.
void setReceiveBufferSize(const int size)
Set receive buffer size.
Definition: JSocket.hh:131
unsigned int maxQueueDepth
long long int maxQueueSize
TCP socket.
Definition: JTCPSocket.hh:25
long long int queueSize
JChannelList_t channelList
connections to data queue
JMessageScheduler logErrorRun
void setNonBlocking(const bool on)
Set non-blocking of I/O.
Definition: JTCPSocket.hh:42
JMessageLogger logger
message logger
Definition: JDAQClient.hh:802
void setKeepAlive(const bool on)
Set keep alive of socket.
Definition: JSocket.hh:87
long long int number_of_bytes_received
double u[N+1]
Definition: JPolint.hh:776
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 901 of file JDataFilter.cc.

902  {
903  if (reporting) {
904  typeout();
905  }
906  }
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 916 of file JDataFilter.cc.

917  {
918  using namespace std;
919 
920  JByteArrayReader in(channel->data(), channel->size());
921 
922  JDAQPreamble preamble;
923  JDAQSuperFrameHeader header;
924 
925  in >> preamble;
926  in >> header;
927 
928  if (preamble.getLength() != channel->size()) {
929 
930  JErrorStream(logErrorRun) << "Size of received data does not match size reported by preamble: "
931  << "preamble.getLength() = " << preamble.getLength() << ';'
932  << "channel->size(): " << channel->size() << ';';
933 
935 
936  return;
937  }
938 
939  if (header.getRunNumber() != getRunNumber()) {
940 
941  JErrorStream(logErrorRun) << "Run number " << header.getRunNumber()
942  << " != " << getRunNumber()
943  << " -> Dropping frame.";
944 
946 
947  return;
948  }
949 
950  if (header.getFrameIndex() <= current_slice_index) {
951 
952  JErrorStream(logErrorIndex) << "Frame index " << header.getFrameIndex() << " <= " << current_slice_index
953  << " module " << header.getModuleID()
954  << " -> Dropping frame.";
955 
957 
959 
961 
962  JErrorStream(logErrorIndex) << "Increase number of frames expected to: " << frames_per_slice;
963  }
964 
965  return;
966  }
967 
968  if (current_slice_index != -1 && header.getFrameIndex() > current_slice_index + maximal_frame_index) {
969 
970  JErrorStream(logErrorIndex) << "Frame index " << header.getFrameIndex() << " > " << current_slice_index + maximal_frame_index
971  << " module " << header.getModuleID()
972  << " -> Dropping frame.";
973 
975 
976  return;
977  }
978 
979  deque<JDAQTimesliceL0>::iterator timesliceIterator = timeslices.begin();
980 
981  while (timesliceIterator != timeslices.end() && timesliceIterator->getFrameIndex() < header.getFrameIndex()) {
982  ++timesliceIterator;
983  }
984 
985  if (timesliceIterator != timeslices.end() && timesliceIterator->getFrameIndex() == header.getFrameIndex()) {
986 
987  // The corresponding time slice already exists
988 
989  } else {
990 
991  // This is the first frame of this time slice; insert a new time slice in the buffer at the right position in the list
992 
993  timesliceIterator = timeslices.insert(timesliceIterator, JDAQTimesliceL0());
994 
995  timesliceIterator->setDAQChronometer(header.getDAQChronometer());
996 
997  queueSize += getSizeof(*timesliceIterator);
998  }
999 
1000  timesliceIterator->push_back(JDAQSuperFrame(header));
1001 
1002  in >> static_cast<JDAQFrame&>(*(timesliceIterator->rbegin()));
1003 
1004  queueSize += getSizeof(*timesliceIterator->rbegin());
1005  }
std::deque< 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 JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Definition: JCanberra.sh:46
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 1013 of file JDataFilter.cc.

1014  {
1015  using namespace std;
1016 
1017  try {
1018 
1019  timesliceRouter->configure(timeslice);
1020 
1021  if (parameters.writeSummary()) {
1022  this->put(JDAQSummaryslice(timeslice));
1023  }
1024 
1025  if (parameters.trigger3DMuon.enabled ||
1026  parameters.trigger3DShower.enabled ||
1027  parameters.triggerMXShower.enabled ||
1028  parameters.triggerNB.enabled ||
1029  parameters.writeL0.prescale ||
1030  parameters.writeL1.prescale ||
1031  parameters.writeL2.prescale ||
1032  parameters.writeSN.prescale ||
1033  c_buffer.is_enabled()) {
1034 
1035  JTimeslice_t timesliceL0(timeslice.getDAQChronometer());
1036  JTimeslice_t timesliceL1(timeslice.getDAQChronometer());
1037  JTimeslice_t timesliceL2(timeslice.getDAQChronometer());
1038  JTimeslice_t timesliceSN(timeslice.getDAQChronometer());
1039  JTimeslice_t timesliceNB(timeslice.getDAQChronometer());
1040  JDAQTimeslice timesliceTX(timeslice.getDAQChronometer());
1041 
1042  for (JDAQTimesliceL0::const_iterator frame = timeslice.begin(); frame != timeslice.end(); ++frame) {
1043 
1044  if (moduleRouter->hasModule(frame->getModuleID())) {
1045 
1046  if (!checksum(*frame)) {
1047 
1048  JErrorStream(logger) << "Invalid data at "
1049  << "run = " << timeslice.getRunNumber() << ";"
1050  << "frame index = " << timeslice.getFrameIndex() << ";"
1051  << "module = " << frame->getModuleID() << ";"
1052  << "discard" << (dumpCount < dumpLimit ? " and dump" : "");
1053 
1054  timesliceTX.push_back(*frame);
1055 
1056  continue;
1057  }
1058 
1059  const JModule& module = moduleRouter->getModule(frame->getModuleID());
1060  JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*frame, module);
1061 
1062  // Apply high-rate veto
1063 
1064  buffer.applyHighRateVeto(parameters.highRateVeto_Hz);
1065 
1066  // L0
1067 
1068  timesliceL0.push_back(JSuperFrame1D_t(buffer));
1069 
1070  // Nano-beacon trigger
1071 
1072  if (parameters.triggerNB.enabled) {
1073 
1074  JSuperFrame2D_t::iterator __end = partition(buffer.begin(), buffer.end(), parameters.triggerNB.pmts);
1075 
1076  if (buffer.begin() != __end) {
1077 
1078  timesliceNB.push_back(JSuperFrame1D_t(frame->getDAQChronometer(),
1079  frame->getModuleIdentifier(),
1080  module.getPosition()));
1081 
1082  JSuperFrame1D_t zbuf;
1083 
1084  (*buildL1)(buffer.begin(), __end , back_inserter(zbuf));
1085 
1086  (*buildNB)(buffer.begin() , __end, zbuf, back_inserter(*timesliceNB.rbegin()));
1087  }
1088  }
1089 
1090  // L1
1091 
1092  timesliceL1.push_back(JSuperFrame1D_t(frame->getDAQChronometer(),
1093  frame->getModuleIdentifier(),
1094  module.getPosition()));
1095 
1096  (*buildL1)(*timesliceL0.rbegin(), back_inserter(*timesliceL1.rbegin()));
1097 
1098  // L2
1099 
1100  timesliceL2.push_back(JSuperFrame1D_t(frame->getDAQChronometer(),
1101  frame->getModuleIdentifier(),
1102  module.getPosition()));
1103 
1104  (*buildL2)(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceL2.rbegin()));
1105 
1106  // SN
1107 
1108  timesliceSN.push_back(JSuperFrame1D_t(frame->getDAQChronometer(),
1109  frame->getModuleIdentifier(),
1110  module.getPosition()));
1111 
1112  (*buildSN)(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceSN.rbegin()));
1113 
1114  } else {
1115 
1116  JErrorStream(logErrorDetector) << "No detector information for module " << frame->getModuleID();
1117  }
1118  }
1119 
1120  if (!timesliceTX.empty()) {
1121 
1122  if (dumpCount < dumpLimit) {
1123 
1124  this->put(timesliceTX);
1125 
1126  dumpCount += 1;
1127  }
1128  }
1129 
1130  // Trigger
1131 
1132  if (parameters.triggerNB.enabled) {
1133 
1134  const JTriggerInput trigger_input(timesliceNB);
1135 
1136  for (JTriggerInput::const_iterator hit = trigger_input.begin(); hit != trigger_input.end(); ++hit) {
1137 
1138  if (parameters.triggerNB.write()) {
1139 
1140  JTriggeredEvent tev(timesliceNB.getDAQChronometer(),
1142  *hit,
1143  *timesliceRouter,
1144  *moduleRouter,
1145  parameters.TMaxLocal_ns,
1146  parameters.triggerNB.DMax_m,
1147  getTimeRange(parameters.triggerNB));
1148 
1149  this->put(tev);
1150  }
1151  }
1152  }
1153 
1154  JTriggerInput trigger_input(timesliceL2);
1155  JTriggerOutput trigger_output;
1156 
1157  (*trigger3DMuon) (trigger_input, back_inserter(trigger_output));
1158  (*trigger3DShower)(trigger_input, back_inserter(trigger_output));
1159  (*triggerMXShower)(trigger_input, timesliceL0, back_inserter(trigger_output));
1160 
1161  trigger_output.merge(JEventOverlap(parameters.TMaxEvent_ns));
1162 
1163  for (JTriggerOutput::const_iterator event = trigger_output.begin(); event != trigger_output.end(); ++event) {
1164 
1165  const JTriggeredEvent object(*event, *timesliceRouter, *moduleRouter, parameters.TMaxLocal_ns, getTimeRange(parameters));
1166 
1167  this->put(object);
1168 
1169  numberOfEvents += 1;
1170  }
1171 
1172  if (parameters.writeL1() || c_buffer.sizeL1 > 0) {
1173 
1174  const JTimesliceL1<JDAQTimesliceL1> object(timesliceL1, *timesliceRouter, *moduleRouter, parameters.TMaxLocal_ns);
1175 
1176  if (parameters.writeL1) { this->put(object); }
1177  if (c_buffer.sizeL1 > 0) { c_buffer.put(object); }
1178  }
1179 
1180  if (parameters.writeL2() || c_buffer.sizeL2 > 0) {
1181 
1182  const JTimesliceL1<JDAQTimesliceL2> object(timesliceL2, *timesliceRouter, *moduleRouter, parameters.L2.TMaxLocal_ns);
1183 
1184  if (parameters.writeL2) { this->put(object); }
1185  if (c_buffer.sizeL2 > 0) { c_buffer.put(object); }
1186  }
1187 
1188  if (parameters.writeSN() || c_buffer.sizeSN > 0) {
1189 
1190  const JTimesliceL1<JDAQTimesliceSN> object(timesliceSN, *timesliceRouter, *moduleRouter, parameters.SN.TMaxLocal_ns);
1191 
1192  if (parameters.writeSN) { this->put(object); }
1193  if (c_buffer.sizeSN > 0) { c_buffer.put(object); }
1194  }
1195 
1196  if (parameters.writeL0() || c_buffer.sizeL0 > 0) {
1197 
1198  if (parameters.writeL0) { this->put(timeslice); }
1199  if (c_buffer.sizeL0 > 0) { c_buffer.put(timeslice); }
1200  }
1201  }
1202 
1203  } catch(const exception& error) {
1204 
1205  JErrorStream(logger) << "Error = " << error.what() << ";"
1206  << "run = " << timeslice.getRunNumber() << ";"
1207  << "frame index = " << timeslice.getFrameIndex() << ";"
1208  << "time slice not correctly processed;"
1209  << "discard" << (dumpCount < dumpLimit ? " and dump" : "");
1210 
1211  if (dumpCount < dumpLimit) {
1212 
1213  this->put(static_cast<const JDAQTimeslice&>(timeslice));
1214 
1215  dumpCount += 1;
1216  }
1217  }
1218 
1220  }
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:68
JSinglePointer< JTriggerNB > triggerNB
JSuperFrame2D< hit_type > JSuperFrame2D_t
Definition: JDataFilter.cc:161
Long64_t sizeL1
Number of L1 time slices.
Definition: JDataFilter.cc:326
void configure(const JDAQTimeslice &timeslice)
Configure.
JTriggerParameters parameters
int getRunNumber() const
Get run number.
static const JChecksum checksum
Function object to perform check-sum of raw data.
Definition: JChecksum.hh:176
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:292
JSuperFrame1D< hit_type > JSuperFrame1D_t
Definition: JDataFilter.cc:160
static JSuperFrame2D< JElement_t, JAllocator_t > demultiplex
Demultiplexer.
JTimeslice< hit_type > JTimeslice_t
Definition: JDataFilter.cc:162
void merge(const JMatch_t &match)
Merge events.
JMessageScheduler logErrorDetector
void put(const T &object)
Auxiliary method to send object to data server.
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:328
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:325
bool hasModule(const JObjectID &id) const
Has module.
JSinglePointer< JModuleRouter > moduleRouter
JMessageLogger logger
message logger
Definition: JDAQClient.hh:802
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:327
long long int numberOfEvents
virtual void reset() override
Reset pointer.
Definition: JPointer.hh:84
void KM3NETDAQ::JDataFilter::typeout ( )
inline

Report status to message logger.

Definition at line 1226 of file JDataFilter.cc.

1227  {
1228  timer.stop();
1229 
1230  const double T_us = (double) timer.usec_wall;
1231 
1232  JStatusStream(logger) << "Elapsed real (wall) time [s] " << T_us / 1e6;
1233  JStatusStream(logger) << "Elapsed user CPU time [s] " << (double) timer.usec_ucpu/ 1e6;
1234  JStatusStream(logger) << "Elapsed system CPU time [s] " << (double) timer.usec_scpu/ 1e6;
1235  try {
1236  JStatusStream(logger) << "Elapsed real time per time slice [ms] " << Qt.getMean() * 1.0e-3 << " +/- " << Qt.getDeviation() * 1.0e-3;
1237  }
1238  catch(const std::exception&) {}
1239  JStatusStream(logger) << "Number of packets received/discarded " << number_of_packets_received << "/" << number_of_packets_discarded;
1240  JStatusStream(logger) << "Number of events/MB sent " << numberOfEvents << "/" << numberOfBytes/1e6;
1241 
1242  if (number_of_packets_received > 0) {
1243  JStatusStream(logger) << "Number of reads/packet " << (double) number_of_reads / (double) number_of_packets_received;
1244  }
1245 
1246  JStatusStream(logger) << "Current queue depth/size " << timeslices.size() << "/" << queueSize;
1247  JStatusStream(logger) << "Current number of frames per slice expected: " << frames_per_slice;
1248 
1249  JStatusStream(logger) << "Number of timeslices processed total/incomplete " << numberOfTimeslicesProcessed << "/" << numberOfIncompleteTimeslicesProcessed;
1250 
1251  if (numberOfTimeslicesProcessed > 0) {
1252  JStatusStream(logger) << "Real time per timeslice [ms] " << timer.usec_wall / 1000 / numberOfTimeslicesProcessed;
1253  JStatusStream(logger) << "User CPU time per timeslice [ms] " << timer.usec_ucpu / 1000 / numberOfTimeslicesProcessed;
1254  JStatusStream(logger) << "System CPU time per timeslice [ms] " << timer.usec_scpu / 1000 / numberOfTimeslicesProcessed;
1255  }
1256 
1257  const double processedSlicesTime_us = numberOfTimeslicesProcessed * getFrameTime() / 1000;
1258  const double processedDetectorTime_us = (maxFrameNumber - minFrameNumber) * getFrameTime() / 1000;
1259 
1260  if (processedSlicesTime_us > 0) {
1261  JStatusStream(logger) << "Performance factor (inaccurate estimate): " << T_us / processedSlicesTime_us;
1262  }
1263  if (processedDetectorTime_us > 0) {
1264  JStatusStream(logger) << "Performance factor whole detector (inaccurate estimate): " << T_us / processedDetectorTime_us;
1265  }
1266 
1267  timer.start();
1268  }
long long int numberOfTimeslicesProcessed
std::deque< JDAQTimesliceL0 > timeslices
buffer with pending time slice data
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:252
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:281
long long int queueSize
JMessageLogger logger
message logger
Definition: JDAQClient.hh:802
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 1278 of file JDataFilter.cc.

1279  {
1280  using namespace std;
1281 
1282  JDebugStream(logger) << "Received message <" << tag.toString() << "> \"" << string(buffer, length) << "\"";
1283 
1284  if (tag == RC_ALERT) {
1285 
1286  if (c_buffer.is_open()) {
1287 
1288  JStatusStream(logger) << "Archive circular buffer in <" << c_buffer.archive << ">";
1289 
1290  c_buffer.close(true);
1291  }
1292 
1293  if (c_buffer.is_enabled()) {
1294 
1295  c_buffer.open();
1296 
1297  if (c_buffer.is_open()) {
1298 
1299  JStatusStream(logger) << "Created circular buffer " << c_buffer;
1300 
1302 
1303  } else {
1304 
1305  JErrorStream (logger) << "Failed to create circular buffer in directory <" << c_buffer.path << ">; disable functionality.";
1306 
1307  c_buffer.disable();
1308  }
1309  }
1310 
1311  } else {
1312 
1313  JWarningStream(logger) << "Tag <" << tag.toString() << "> not implemented";
1314  }
1315  }
JMeta meta
meta data
void close(const bool option)
Close file.
Definition: JDataFilter.cc:228
std::string path
Directory for temporary storage.
Definition: JDataFilter.cc:330
JCircularBuffer_t c_buffer
bool is_enabled() const
Check whether writing of data is enabled.
Definition: JDataFilter.cc:292
TFile * getFile() const
Get file.
Definition: JRootFile.hh:66
then awk string
Level specific message streamers.
bool putObject(TDirectory &dir, const TObject &object)
Write object to ROOT directory.
std::string toString() const
Convert tag to string.
Definition: JTag.hh:171
virtual bool is_open() const =0
Check is device is open.
static const JNET::JTag RC_ALERT
Definition: JDAQTags.hh:57
JMessageLogger logger
message logger
Definition: JDAQClient.hh:802
std::string archive
Directory for permanent archival.
Definition: JDataFilter.cc:331
template<class T >
void KM3NETDAQ::JDataFilter::put ( const T object)
inlineprivate

Auxiliary method to send object to data server.

Parameters
objectobject to be sent

Definition at line 1331 of file JDataFilter.cc.

1332  {
1333  try {
1334 
1335  datawriter->put(object);
1336 
1337  numberOfBytes += getSizeof(object);
1338  }
1339  catch(const std::exception& error) {
1340  JErrorStream(logger) << "Error \"" << error.what() << "\"; trigger ev_error.";
1341  ev_error();
1342  }
1343  }
JDAQStateMachine::ev_error_event ev_error
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:802
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 364 of file JDAQClient.hh.

365  {
366  using namespace std;
367 
368  string server;
369  string logger;
370  int level;
371  bool use_cout;
372 
373  try {
374 
375  parser['H'] = make_field(server) = "localhost";
376  parser['M'] = make_field(logger) = "localhost";
377  parser['d'] = make_field(level) = 0;
378  parser['c'] = make_field(use_cout);
379 
380  if (parser.read(args) != 0) {
381  return false;
382  }
383  }
384  catch(const exception &error) {
385  cerr << error.what() << endl;
386  return false;
387  }
388 
389  try {
390 
391  JLogger* out = NULL;
392 
393  if (use_cout)
394  out = new JStreamLogger(cout);
395  else
396  out = new JControlHostLogger(logger);
397 
398  this->logger = JMessageLogger(out, getName(), level);
399 
400  this->server.reset(new JControlHost(server));
401 
402  return enter();
403  }
404  catch(const JControlHostException& error) {
405  cerr << error << endl;
406  return false;
407  }
408  }
JParser parser
parser method enter()
Definition: JDAQClient.hh:1028
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:801
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1993
virtual bool enter()
Enter the state machine.
Definition: JDAQClient.hh:419
int read(const int argc, const char *const argv[])
Parse the program&#39;s command line options.
Definition: JParser.hh:1815
JMessageLogger logger
message logger
Definition: JDAQClient.hh:802
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 419 of file JDAQClient.hh.

420  {
421  using namespace std;
422  using namespace JPP;
423 
424  if (server.is_valid() && logger.is_valid()) {
425 
426  const JSubscriptionList buffer = getSubscription(eventTable) + subscription;
427 
428  try {
429 
430  server->Subscribe(buffer);
431  server->SendMeAlways();
432  server->MyId(getFullName());
433 
434  JStatusStream(logger) << "Process with nick name \"" << getFullName() << "\" version \"" << getGITVersion() << "\" subscription: " << buffer.toString();
435 
436  return CHSM::machine::enter();
437  }
438  catch(const JControlHostException& error) {
439  JErrorStream(logger) << error;
440  }
441 
442  } else {
443  cerr << "Message server or logger not properly initialised." << endl;
444  }
445 
446  return false;
447  }
JSharedPointer< JControlHost > server
message server
Definition: JDAQClient.hh:801
std::string getGITVersion(const std::string &tag)
Get GIT version for given GIT tag.
JSubscriptionList subscription
custom subscription
Definition: JDAQClient.hh:1029
JEventTable eventTable
event table
Definition: JDAQClient.hh:203
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:120
JSubscriptionList getSubscription(const JEventTable &event_table)
Convert event table to ControlHost subscription.
Definition: JEventTable.hh:129
JMessageLogger logger
message logger
Definition: JDAQClient.hh:802
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 457 of file JDAQClient.hh.

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

Check if this client is in runnig state.

Returns
true if running; else false

Definition at line 480 of file JDAQClient.hh.

481  {
482  return Main.RunControl.Operational.Running.active();
483  }
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 493 of file JDAQClient.hh.

496  {
497  eventTable.replace(oldTag, newTag, event);
498  }
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:203
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 508 of file JDAQClient.hh.

509  {
510  JEventTable::const_iterator i = eventTable.find(tag, event_name);
511 
512  if (i != eventTable.end())
513  return i->second;
514  else
515  return NULL;
516  }
JEventTable eventTable
event table
Definition: JDAQClient.hh:203
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 524 of file JDAQClient.hh.

525  {
527  }
JSubscriptionList & add(const JSubscription &subscription)
Add subscription.
JSubscriptionList subscription
custom subscription
Definition: JDAQClient.hh:1029
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 537 of file JDAQClient.hh.

538  {
539  parser[option] = make_field(parameter);
540  }
JParser parser
parser method enter()
Definition: JDAQClient.hh:1028
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1993
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 551 of file JDAQClient.hh.

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

Set the file descriptor mask for the select call.

Definition at line 560 of file JDAQClient.hh.

561  {
562  select.reset();
563 
565 
567  }
JSelectReader select
select call
Definition: JDAQClient.hh:1027
JSharedPointer< JControlHost > server
message server
Definition: JDAQClient.hh:801
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:560
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 607 of file JDAQClient.hh.

608  {
609  using namespace std;
610 
611  JProperties properties(JEquationParameters("=", ";", "", ""), 1);
612 
613  int level = this->logger.getLevel();
614 
615  properties["debug"] = level;
616 
617  properties.read(string(buffer, length));
618 
619  this->logger.setLevel(level);
620  }
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:802
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 634 of file JDAQClient.hh.

635  {
636  return false;
637  }
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 662 of file JDAQClient.hh.

663  {
664  using namespace std;
665 
666  while (active()) {
667 
668  try {
669 
670  setSelect();
671 
672  if (select(JTimeval(TIMEOUT_S,0)) > 0) {
673 
674  if (select.hasReaderMask(*server)) {
675  update();
676  }
677 
679 
680  } else {
681 
682  continue;
683  }
684 
685 
686  if (isRunning() && clock.getInterval() != 0LL) {
687 
688  long long int numberOfCalls = 0;
689 
690  clock.reset();
691 
692  do {
693 
694  ++numberOfCalls;
695 
696  setSelect();
697 
698  if (clock.wait(select.getReaderMask())) {
699 
700  if (select.hasReaderMask(*server)) {
701  update();
702  }
703 
705 
706  } else {
707 
708  try {
709  actionRunning();
710  }
711  catch(const exception& error) {
712  logger.error(error.what());
713  }
714  }
715 
716  } while (isRunning());
717 
718  if (numberOfCalls != 0) {
719  JNoticeStream(logger) << "Delay per call " << clock.getDelay() / numberOfCalls / 1000 << " ms";
720  }
721  }
722  }
723  catch(const exception& error) {
724  JErrorStream(logger) << "method run(): " << error.what();
725  }
726  }
727  }
long long int getDelay() const
Get total delay time.
Definition: JTimekeeper.hh:78
JTimekeeper clock
central clock
Definition: JDAQClient.hh:207
static const int TIMEOUT_S
time out of update [s]
Definition: JDAQClient.hh:62
JSelectReader select
select call
Definition: JDAQClient.hh:1027
void reset(const long long int t0)
Reset time.
Definition: JTimekeeper.hh:100
JSharedPointer< JControlHost > server
message server
Definition: JDAQClient.hh:801
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:597
bool isRunning() const
Check if this client is in runnig state.
Definition: JDAQClient.hh:480
void update()
Update state machine.
Definition: JDAQClient.hh:809
long long int getInterval() const
Get interval time.
Definition: JTimekeeper.hh:67
JMessageLogger logger
message logger
Definition: JDAQClient.hh:802
void error(const JMessage_t &message)
void setSelect()
Set the file descriptor mask for the select call.
Definition: JDAQClient.hh:560
virtual void actionSelect(const JFileDescriptorMask &mask)
Action method following last select call.
Definition: JDAQClient.hh:586
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 742 of file JDAQClient.hh.

743  {
744  JControlHostServer local_server(port);
745 
746  for ( ; ; ) {
747 
748  JControlHost* ps = local_server.AcceptClient();
749 
750  ps->Connected();
751 
752  JNET::JPrefix prefix;
753 
754  ps->WaitHead(prefix);
755 
756  const int length = prefix.getSize();
757 
758  char* buffer = new char[length];
759 
760  ps->GetFullData(buffer, length);
761  ps->PutFullData(prefix.toString(), buffer, length);
762 
763  delete ps;
764 
765  enter(JArgs(std::string(buffer, length)));
766 
767  delete [] buffer;
768 
769  run();
770 
771  exit();
772  }
773  }
ControlHost prefix.
Definition: JPrefix.hh:31
void run()
Run as run control client following command messages via JNET::JControlHost.
Definition: JDAQClient.hh:662
int getSize() const
Get size.
Definition: JPrefix.hh:62
virtual bool enter()
Enter the state machine.
Definition: JDAQClient.hh:419
then awk string
virtual bool exit()
Exit the state machine.
Definition: JDAQClient.hh:457
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 787 of file JDAQClient.hh.

788  {
789  using namespace std;
790 
791  string tag;
792  string buffer;
793 
794  while (in >> tag && in >> skipws && getline(in, buffer, ';')) {
795  update(tag, buffer.length(), buffer.data());
796  }
797  }
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:809
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 JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Definition: JCanberra.sh:46
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.
then awk string
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 109 of file JDAQClient.hh.

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

Get full name of this run control client.

Returns
full name

Definition at line 120 of file JDAQClient.hh.

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

Get unique tag of this run control client.

Returns
unique tag

Definition at line 131 of file JDAQClient.hh.

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

Get total delay time.

Returns
delay time [us]

Definition at line 142 of file JDAQClient.hh.

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

Get interval time.

Returns
interval time [us]

Definition at line 154 of file JDAQClient.hh.

155  {
156  return clock.getInterval();
157  }
JTimekeeper clock
central clock
Definition: JDAQClient.hh:207
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 165 of file JDAQClient.hh.

166  {
167  clock.setInterval(interval_us);
168  }
JTimekeeper clock
central clock
Definition: JDAQClient.hh:207
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 174 of file JDAQClient.hh.

175  {
176  clock.reset();
177  }
JTimekeeper clock
central clock
Definition: JDAQClient.hh:207
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 185 of file JDAQClient.hh.

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

Set last event number.

Parameters
event_numberevent number

Definition at line 196 of file JDAQClient.hh.

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

Member Data Documentation

JMeta KM3NETDAQ::JDataFilter::meta

meta data

Definition at line 1317 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 1322 of file JDataFilter.cc.

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

host name of data server

Definition at line 1323 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::port
private

server socket port

Definition at line 1346 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::backlog
private

Definition at line 1347 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::buffer_size
private

Definition at line 1348 of file JDataFilter.cc.

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

server for data queue connections

Definition at line 1350 of file JDataFilter.cc.

JChannelList_t KM3NETDAQ::JDataFilter::channelList
private

connections to data queue

Definition at line 1351 of file JDataFilter.cc.

JTimer KM3NETDAQ::JDataFilter::timer
private

Definition at line 1353 of file JDataFilter.cc.

JQuantile KM3NETDAQ::JDataFilter::Qt
private

Definition at line 1354 of file JDataFilter.cc.

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

buffer with pending time slice data

Definition at line 1356 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::current_slice_index
private

Definition at line 1357 of file JDataFilter.cc.

unsigned int KM3NETDAQ::JDataFilter::frames_per_slice
private

Definition at line 1358 of file JDataFilter.cc.

unsigned int KM3NETDAQ::JDataFilter::maximum_frames_per_slice
private

Definition at line 1359 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::maximal_frame_index
private

Definition at line 1360 of file JDataFilter.cc.

JTriggerParameters KM3NETDAQ::JDataFilter::parameters
private

Definition at line 1364 of file JDataFilter.cc.

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

Definition at line 1365 of file JDataFilter.cc.

JDetector KM3NETDAQ::JDataFilter::detector
private

Definition at line 1367 of file JDataFilter.cc.

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

Definition at line 1368 of file JDataFilter.cc.

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

Definition at line 1369 of file JDataFilter.cc.

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

Definition at line 1370 of file JDataFilter.cc.

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

Definition at line 1371 of file JDataFilter.cc.

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

Definition at line 1372 of file JDataFilter.cc.

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

Definition at line 1374 of file JDataFilter.cc.

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

Definition at line 1375 of file JDataFilter.cc.

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

Definition at line 1376 of file JDataFilter.cc.

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

Definition at line 1377 of file JDataFilter.cc.

JMessageScheduler KM3NETDAQ::JDataFilter::logErrorRun
private

Definition at line 1379 of file JDataFilter.cc.

JMessageScheduler KM3NETDAQ::JDataFilter::logErrorDetector
private

Definition at line 1380 of file JDataFilter.cc.

JMessageScheduler KM3NETDAQ::JDataFilter::logErrorIndex
private

Definition at line 1381 of file JDataFilter.cc.

JMessageScheduler KM3NETDAQ::JDataFilter::logErrorIncomplete
private

Definition at line 1382 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::dumpCount
private

Definition at line 1384 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::dumpLimit
private

Definition at line 1385 of file JDataFilter.cc.

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

Definition at line 1389 of file JDataFilter.cc.

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

Definition at line 1390 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::totalCPURAM
private

Definition at line 1394 of file JDataFilter.cc.

unsigned int KM3NETDAQ::JDataFilter::maxQueueDepth
private

Definition at line 1395 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::maxQueueSize
private

Definition at line 1396 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::queueSize
private

Definition at line 1397 of file JDataFilter.cc.

bool KM3NETDAQ::JDataFilter::reporting
private

Definition at line 1401 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::numberOfEvents
private

Definition at line 1403 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::numberOfBytes
private

Definition at line 1404 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::numberOfTimeslicesProcessed
private

Definition at line 1405 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::numberOfIncompleteTimeslicesProcessed
private

Definition at line 1406 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::minFrameNumber
private

Definition at line 1408 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::maxFrameNumber
private

Definition at line 1409 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::number_of_packets_received
private

Definition at line 1413 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::number_of_packets_discarded
private

Definition at line 1414 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::number_of_reads
private

Definition at line 1415 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::number_of_bytes_received
private

Definition at line 1416 of file JDataFilter.cc.

JCircularBuffer_t KM3NETDAQ::JDataFilter::c_buffer
private

Definition at line 1420 of file JDataFilter.cc.

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

message server

Definition at line 801 of file JDAQClient.hh.

JMessageLogger KM3NETDAQ::JDAQClient::logger
protectedinherited

message logger

Definition at line 802 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 62 of file JDAQClient.hh.

JEventTable KM3NETDAQ::JDAQClient_t::eventTable
protectedinherited

event table

Definition at line 203 of file JDAQClient.hh.

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

Definition at line 205 of file JDAQClient.hh.

JTag KM3NETDAQ::JDAQClient_t::unique_tag
protectedinherited

Definition at line 206 of file JDAQClient.hh.

JTimekeeper KM3NETDAQ::JDAQClient_t::clock
protectedinherited

central clock

Definition at line 207 of file JDAQClient.hh.

int KM3NETDAQ::JDAQClient_t::event_number
protectedinherited

number of last event

Definition at line 208 of file JDAQClient.hh.


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