Jpp  18.5.2
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 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 JSocketInputChannel_t &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 () override
 Enter the state machine. More...
 
virtual bool exit () override
 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) override
 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...
 
const std::stringgetEventInfo () const
 Get last event information. More...
 
void setEventInfo (const std::string &info)
 Set last event information. 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...
 
std::string event_info
 event information 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
 
JSinglePointer< JServerSocketserversocket
 server for data queue connections More...
 
JChannelList_t channelList
 connections to data queue More...
 
JTimer timer
 
JQuantile Qt
 
JQuantile Qx
 
std::deque< JDAQTimesliceL0timeslices
 buffer with pending time slice data More...
 
int current_slice_index
 
size_t frames_per_slice
 
double factor_per_slice
 
int maximal_frame_index
 
std::set< int > modules
 
 dataqueue_slice_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
 
JMessageScheduler logErrorOvercomplete
 
int dumpCount
 
int dumpLimit
 
JStatus dumpMask
 
std::vector< JDAQProcessdataFilters
 
std::vector< JDAQProcessdataQueues
 
long long int totalCPURAM
 
size_t 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 two parameters, namely frames_per_slice and factor_per_slice.
These are parsed in method actionConfigure as follows.

  numberOfFramesPerSlice = <frames per slice> = 1;
  factorOfFramesPerSlice = <factor per slice> = 1.0;

The expected number of frames in a time slices is defined by their product.
Note that the first 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 limits queueSize or queueDepth.
These are parsed in method actionConfigure as follows.

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

Note that these values apply per JDataFilter.
The parameter frames_per_slice is subject to a servo mechanism.
When a timeout occurs, it 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, it is incremented by one.

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 204 of file JDataFilter.cc.

Member Typedef Documentation

Definition at line 209 of file JDataFilter.cc.

Definition at line 210 of file JDataFilter.cc.

Definition at line 212 of file JDataFilter.cc.

Definition at line 213 of file JDataFilter.cc.

Definition at line 214 of file JDataFilter.cc.

Definition at line 215 of file JDataFilter.cc.

Definition at line 216 of file JDataFilter.cc.

Definition at line 217 of file JDataFilter.cc.

Definition at line 1441 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 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
pathdirectory for temporary storage
archivedirectory for parmanent archival

replace tag to receive dfilter specific messages in configure

Definition at line 417 of file JDataFilter.cc.

425  :
426  JDAQClient (name,server,logger,level),
427  hostname (hostname),
428  port (port),
429  backlog (backlog),
431  {
432  replaceEvent(RC_CMD, RC_DFILTER, ev_configure); /// replace tag to receive dfilter specific messages in configure
433 
435 
436  totalCPURAM = getRAM();
437  current_slice_index = -1;
438  dataqueue_slice_index.clear();
439  reporting = false;
440 
441  this->server->setReceiveBufferSize(DFILTER_RECEIVE_BUFFER_SIZE);
442  }
JDAQStateMachine::ev_configure_event ev_configure
static const JNET::JTag RC_DFILTER
Definition: JDAQTags.hh:67
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:521
JSharedPointer< JControlHost > server
message server
Definition: JDAQClient.hh:834
JCircularBuffer_t c_buffer
then fatal Invalid path $argv[1] fi setopt extendedglob typeset Z8 ID function archive()
Definition: getArchive.sh:42
static const int DFILTER_RECEIVE_BUFFER_SIZE
socket JDataFilter.cc &lt;- JLigier.cc
Definition: JDAQTags.hh:31
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:73
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:319
static const JNET::JTag RC_CMD
Definition: JDAQTags.hh:60
void addSubscription(const JSubscription &subscription)
Add custom subscription.
Definition: JDAQClient.hh:552

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 398 of file JDataFilter.cc.

399  {
400  return first.index < second.index;
401  }
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 445 of file JDataFilter.cc.

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

Reimplemented from JDAQCHSM.

Definition at line 449 of file JDataFilter.cc.

450  {
451  if (c_buffer.is_open()) {
452 
453  JStatusStream(logger) << "Close and remove circular buffer " << c_buffer;
454 
455  c_buffer.close(false);
456  }
457 
458  datawriter.reset();
459  }
void close(const bool option)
Close file.
Definition: JDataFilter.cc:283
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:835
virtual void KM3NETDAQ::JDataFilter::actionInit ( int  length,
const char *  buffer 
)
inlineoverridevirtual

Reimplemented from JDAQCHSM.

Definition at line 462 of file JDataFilter.cc.

463  {
464  JDebugStream(logger) << "actionInit() " << std::string(buffer,length);
465 
466  try {
467 
468  JDebugStream(logger) << "Start server.";
469 
470  if (serversocket.is_valid()) {
472  }
473 
475  }
476  catch(const std::exception& error) {
477  JErrorStream(logger) << "Error \"" << error.what() << "\"; trigger ev_error.";
478  ev_error();
479  }
480  }
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:74
then awk string
Level specific message streamers.
int port
server socket port
JMessageLogger logger
message logger
Definition: JDAQClient.hh:835
virtual void KM3NETDAQ::JDataFilter::actionConfigure ( int  length,
const char *  buffer 
)
inlineoverridevirtual

Reimplemented from JDAQCHSM.

Definition at line 483 of file JDataFilter.cc.

484  {
485  using namespace std;
486 
487  JDebugStream(logger) << "actionConfigure() " << endl << std::string(buffer,length);
488 
489  string _hostname_ = "";
490 
491  long long int update_s = 20;
492  long long int logger_s = 10;
493 
494  parameters .reset();
495  dataFilters.clear();
496  dataQueues .clear();
497 
498  reporting = false;
499  dumpCount = 0;
500  dumpLimit = numeric_limits<int>::max();
501  dumpMask = 0;
505  //dumpMask.set(JChecksum::EUDP_t);
507 
508  detector.comment.clear();
509  detector.clear();
510 
511  JProperties properties(JEquationParameters("=", ";", "", ""), 0);
512 
513  properties["dataWriter"] = _hostname_;
514  properties["numberOfFramesPerSlice"] = frames_per_slice = 1;
515  properties["factorOfFramesPerSlice"] = factor_per_slice = 1.0;
516  properties["detector"] = detector;
517  properties["triggerParameters"] = parameters;
518  properties["queueSize"] = maxQueueSize = (totalCPURAM - GIGABYTE); // leave 1 GB left ...
519  properties["queueDepth"] = maxQueueDepth = 20; // to be optimized
520  properties["frameIndex"] = maximal_frame_index = 100000;
521  properties["logger_s"] = logger_s;
522  properties["update_s"] = update_s;
523  properties["JDataFilter"] = dataFilters;
524  properties["DataQueue"] = dataQueues;
525  properties["path"] = c_buffer.path;
526  properties["archive"] = c_buffer.archive;
527  properties["c_sizeL0"] = c_buffer.sizeL0;
528  properties["c_sizeL1"] = c_buffer.sizeL1;
529  properties["c_sizeL2"] = c_buffer.sizeL2;
530  properties["c_sizeSN"] = c_buffer.sizeSN;
531  properties["dumpLimit"] = dumpLimit;
532  properties["dumpMask"] = dumpMask;
533 
534  try {
535  properties.read(string(buffer, length));
536  }
537  catch(const std::exception& error) {
538  JErrorStream(logger) << error.what();
539  }
540 
541  if (update_s <= 0) { update_s = 20; }
542  if (logger_s <= 0) { logger_s = 10; }
543 
544  setClockInterval(update_s * 1000000LL);
545 
546  _hostname_ = trim(_hostname_);
547 
548  if (_hostname_ != "" && _hostname_ != hostname) {
549 
550  datawriter.reset();
551 
552  hostname = _hostname_;
553  }
554 
555  bool status = datawriter.is_valid();
556 
557  if (status) {
558 
559  try {
560  status = datawriter->Connected() == 0;
561  }
562  catch (const exception&) {
563  status = false;
564  }
565  }
566 
567  if (!status) {
568 
570 
571  datawriter->MyId(getFullName());
572  }
573 
574  datawriter->setSendBufferSize(DFILTER_SEND_BUFFER_SIZE);
575 
576  // process processlist
577 
578  if (dataFilters.empty()) {
579  JNoticeStream(logger) << "No DataFilters in process list, or no process list. "
580  << "Assuming that this process is the only process on this CPU and setting parameters accordingly.";
581  }
582 
583  sort(dataFilters.begin(), dataFilters.end(), compare);
584 
585  unsigned int numberOfDataFiltersOnThisMachine = 0;
586  vector<JDAQProcess>::iterator thisProcess = dataFilters.end();
587 
589 
590  {
591  JNoticeStream notice(logger);
592 
593  notice << "My IP addresses:";
594 
595  for (vector<string>::const_iterator i = IP.begin(); i != IP.end(); ++i) {
596  notice << ' ' << *i;
597  }
598  }
599 
600  for (vector<JDAQProcess>::iterator i = dataFilters.begin(); i != dataFilters.end(); ++i) {
601 
602  JDebugStream(logger) << "Test IP address \"" << i->hostname << "\" " << (find(IP.begin(), IP.end(), i->hostname) != IP.end());
603 
604  if (find(IP.begin(), IP.end(), i->hostname) != IP.end()) {
605 
606  numberOfDataFiltersOnThisMachine++;
607 
608  if (i->port == this->port) {
609  thisProcess = i;
610  }
611  }
612  }
613 
614  if (numberOfDataFiltersOnThisMachine == 0) {
615  JNoticeStream(logger) << "Zero data filters on this machine according to process list (if it exists). "
616  << "Assuming one datafilter on this machine.";
617  numberOfDataFiltersOnThisMachine = 1;
618  }
619 
620  if (thisProcess == dataFilters.end()) {
621  JErrorStream(logger) << "This process cannot be found in the process list. Why do I exist?";
622  }
623 
624  if (thisProcess != dataFilters.end() && thisProcess->index != getName()) {
625  JErrorStream(logger) << "Mismatch between given process names: "
626  << "I am called " << getName()
627  << ", but in the process list I am referred to as " << thisProcess->index;
628  }
629 
630  if (dataFilters.begin() == thisProcess || dataFilters.empty()) { // set reporting
631  reporting = true;
632  }
633 
634  if (maxQueueSize > (totalCPURAM-GIGABYTE)/(numberOfDataFiltersOnThisMachine)) { // check maximum size of queue
635 
636  maxQueueSize = (totalCPURAM-GIGABYTE)/(numberOfDataFiltersOnThisMachine);
637 
638  JNoticeStream(logger) << "Maximum queue size is too large given the number of processes on this machine. "
639  << "Queue size reduced to "
640  << maxQueueSize << " bytes." ;
641  }
642 
643  // detector
644 
645  if (parameters.disableHighRateVeto) {
646 
647  JNoticeStream(logger) << "Disabling high-rate veto of all PMTs.";
648 
649  detector.setPMTStatus(HIGH_RATE_VETO_DISABLE);
650  }
651 
652  // trigger parameters
653 
655 
660 
662 
663  if (reporting) {
664  JNoticeStream(logger) << "This data filter process will report.";
665  JNoticeStream(logger) << "Detector version/size " << detector.getVersion() << '/' << detector.size();
666  JDebugStream (logger) << "Trigger parameters: " << parameters;
667  JDebugStream (logger) << "Detector description: " << endl << detector;
668  JNoticeStream(logger) << "Update period [s]: " << getClockInterval();
669  }
670 
672 
673  // set L1, L2 and SN builders
674 
679 
680  if (buildL1.get() == NULL) { JErrorStream(logger) << "Failed to allocate buildL1."; }
681  if (buildL2.get() == NULL) { JErrorStream(logger) << "Failed to allocate buildL2."; }
682  if (buildSN.get() == NULL) { JErrorStream(logger) << "Failed to allocate buildSN."; }
683  if (buildNB.get() == NULL) { JErrorStream(logger) << "Failed to allocate buildSN."; }
684 
690 
691  if (c_buffer.is_enabled()) {
692 
693  if (!c_buffer.is_open()) {
694 
695  c_buffer.open();
696 
697  if (c_buffer.is_open()) {
698 
700 
701  JStatusStream(logger) << "Created circular buffer " << c_buffer;
702 
703  } else {
704 
705  JErrorStream (logger) << "Failed to create circular buffer in directory <" << c_buffer.path << ">; disable functionality.";
706  }
707 
708  } else {
709 
710  JNoticeStream(logger) << "Continue using circular buffer " << c_buffer;
711  }
712  }
713 
714  if (c_buffer.is_open()) {
715  if (c_buffer.sizeL0 > 0) { static_cast<JTreeWriterObjectOutput<JDAQTimesliceL0>&>(c_buffer).SetCircular(c_buffer.sizeL0); }
716  if (c_buffer.sizeL1 > 0) { static_cast<JTreeWriterObjectOutput<JDAQTimesliceL1>&>(c_buffer).SetCircular(c_buffer.sizeL1); }
717  if (c_buffer.sizeL2 > 0) { static_cast<JTreeWriterObjectOutput<JDAQTimesliceL2>&>(c_buffer).SetCircular(c_buffer.sizeL2); }
718  if (c_buffer.sizeSN > 0) { static_cast<JTreeWriterObjectOutput<JDAQTimesliceSN>&>(c_buffer).SetCircular(c_buffer.sizeSN); }
719  } else {
720  c_buffer.disable();
721  }
722  }
Message logger with time scheduler.
static bool compare(const JDAQProcess &first, const JDAQProcess &second)
Sort DAQ process by index.
Definition: JDataFilter.cc:398
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:217
JMessageScheduler logErrorIndex
Long64_t sizeL1
Number of L1 time slices.
Definition: JDataFilter.cc:381
static const int DFILTER_SEND_BUFFER_SIZE
socket JDataFilter.cc -&gt; JDataWriter.cc
Definition: JDAQTags.hh:32
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:497
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
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
bool is_valid() const
Check validity of pointer.
std::string path
Directory for temporary storage.
Definition: JDataFilter.cc:385
JBuildL1< hit_type > JBuildL1_t
Definition: JDataFilter.cc:216
JCircularBuffer_t c_buffer
bool is_enabled() const
Check whether writing of data is enabled.
Definition: JDataFilter.cc:347
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
void set(const int bit)
Set PMT status.
Definition: JStatus.hh:131
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:383
std::string hostname
host name of data server
JControlHostObjectOutput< JDAQTypes_t > JControlHost_t
std::vector< JDAQProcess > dataQueues
long long int maxQueueSize
TDC value error.
Definition: JChecksum.hh:47
Time order error.
Definition: JChecksum.hh:48
JSinglePointer< JTimesliceRouter > timesliceRouter
PMT number error.
Definition: JChecksum.hh:46
static const long long int GIGABYTE
Number of bytes in a mega-byte.
virtual bool is_open() const =0
Check is device is open.
const std::string & getFullName() const
Get full name of this run control client.
Definition: JDAQClient.hh:120
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:380
JSinglePointer< JTrigger3DMuon > trigger3DMuon
JSinglePointer< JControlHost_t > datawriter
controlhost of data server (to which data writer should be connected)
JMessageScheduler logErrorOvercomplete
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:835
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:382
virtual JClass_t * get() const override
Get pointer.
Definition: JPointer.hh:64
std::string archive
Directory for permanent archival.
Definition: JDataFilter.cc:386
virtual void KM3NETDAQ::JDataFilter::actionStart ( int  length,
const char *  buffer 
)
inlineoverridevirtual

Reimplemented from JDAQCHSM.

Definition at line 725 of file JDataFilter.cc.

726  {
727  using namespace std;
728 
729  if (reporting) {
730  JNoticeStream(logger) << "Start run " << getRunNumber();
731  }
732 
733  timeslices.clear();
734 
735  current_slice_index = -1;
736  dataqueue_slice_index.clear();
737  queueSize = 0;
738 
739  numberOfEvents = 0;
740  numberOfBytes = 0;
743 
747  number_of_reads = 0;
748 
749  minFrameNumber = numeric_limits<int>::max();
750  maxFrameNumber = numeric_limits<int>::min();
751 
752  // Reset global trigger counter.
753 
755 
756  logErrorRun .reset();
758  logErrorIndex .reset();
761 
762  timer.reset();
763  timer.start();
764 
765  Qt.reset();
766  Qx.reset();
767 
768  // send trigger parameters to the datawriter
769 
770  ostringstream os;
771 
772  os << getRunNumber() << ' ' << parameters;
773 
774  datawriter->PutFullString(IO_TRIGGER_PARAMETERS, os.str());
775  }
void reset()
Reset.
Definition: JKatoomba_t.hh:89
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:84
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 logErrorOvercomplete
JMessageScheduler logErrorRun
JMessageLogger logger
message logger
Definition: JDAQClient.hh:835
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 778 of file JDataFilter.cc.

779  {
780  using namespace std;
781 
782  if (!timeslices.empty()) {
783 
784  JNoticeStream(logger) << "Flushing " << timeslices.size() << " slices.";
785 
786  for (deque<JDAQTimesliceL0>::const_iterator i = timeslices.begin(); i != timeslices.end(); ++i) {
787  queueSize -= getSizeof(*i);
788  }
789 
790  timeslices.clear();
791  }
792 
793  { // force clearance of memory
794 
795  deque<JDAQTimesliceL0> buffer;
796 
797  timeslices.swap(buffer);
798  }
799 
800  if (queueSize != 0) {
801  JWarningStream(logger) << "Pending data in queue " << queueSize << " [B]";
802  }
803 
804  current_slice_index = -1;
805  dataqueue_slice_index.clear();
806  queueSize = 0;
807 
808  timer.stop();
809  }
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:835
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 812 of file JDataFilter.cc.

813  {
814  timer.start();
815  }
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 818 of file JDataFilter.cc.

819  {
820  typeout();
821  }
void typeout()
Report status to message logger.
virtual void KM3NETDAQ::JDataFilter::actionReset ( int  length,
const char *  buffer 
)
inlineoverridevirtual

Reimplemented from JDAQCHSM.

Definition at line 824 of file JDataFilter.cc.

825  {
826  if (serversocket.is_valid()) {
828  }
829 
831  }
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:74
virtual void KM3NETDAQ::JDataFilter::actionQuit ( int  length,
const char *  buffer 
)
inlineoverridevirtual

Reimplemented from JDAQCHSM.

Definition at line 834 of file JDataFilter.cc.

835  {
836  datawriter.reset();
837  }
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 840 of file JDataFilter.cc.

841  {
842  if (serversocket.is_valid()) {
843  mask.set(*serversocket);
844  }
845 
846  for (JChannelList_t::const_iterator channel = channelList.begin(); channel != channelList.end(); ++channel) {
847  if (!channel->isReady()) {
848  mask.set(channel->getFileDescriptor());
849  }
850  }
851  }
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 854 of file JDataFilter.cc.

855  {
856  using namespace std;
857 
858  for (JChannelList_t::iterator channel = channelList.begin(); channel != channelList.end(); ) {
859 
860  try {
861 
862  if (mask.has(channel->getFileDescriptor())) {
863  channel->read();
864  }
865 
866  if (channel->isReady()) {
867 
869  number_of_reads += channel->getCounter();
870  number_of_bytes_received += channel->size();
871 
872  if (isRunning()) {
873 
874  try {
875  updateFrameQueue(*channel);
876  }
877  catch(const std::exception& error) {
878 
879  JErrorStream(logErrorRun) << "Update frame queue " << channel->getFileDescriptor() << ' ' << channel->size() << ' ' << error.what();
880 
882  }
883 
884  } else {
885 
886  JErrorStream(logErrorRun) << "Receiving data while not running.";
887 
889  }
890 
891  channel->reset();
892  }
893 
894  ++channel;
895  }
896  catch(const std::exception& error) {
897 
898  if (isRunning()) {
899  JErrorStream(logger) << "Disconnect channel " << channel->getFileDescriptor() << ' ' << error.what();
900  }
901 
902  channel->shutdown();
903 
904  channel = channelList.erase(channel);
905  }
906  }
907 
908 
909  if (serversocket.is_valid()) {
910 
911  if (mask.has(*serversocket)) {
912 
914 
916 
917  socket.setKeepAlive (true);
918  socket.setNonBlocking(false);
919 
920  JStatusStream(logger) << "New channel" << '[' << socket.getFileDescriptor() << ']';
921 
922  channelList.push_back(JSocketInputChannel_t(socket));
923  }
924  }
925 
926 
927  if (!timeslices.empty()) {
928 
929  const size_t number_of_frames = getNumberOfFrames(frames_per_slice, factor_per_slice);
930  const size_t maximum_in_queue = getMaximum(make_array(next(timeslices.begin()), timeslices.end(), &JDAQTimesliceL0::size));
931 
932  if (((timeslices[0].size() >= number_of_frames && // normal
934 
935  (maximum_in_queue >= number_of_frames && // intermittent problem
937 
938  (timeslices.size() >= maxQueueDepth) || // timeout
939  (queueSize >= maxQueueSize))) {
940 
941 
942  const JDAQTimesliceL0& pending_slice = timeslices.front();
943  queueSize -= getSizeof(pending_slice);
944 
945  current_slice_index = pending_slice.getFrameIndex();
946  minFrameNumber = min(minFrameNumber, pending_slice.getFrameIndex());
947  maxFrameNumber = max(maxFrameNumber, pending_slice.getFrameIndex());
948 
949  for (JDAQTimesliceL0::const_iterator i = pending_slice.begin(); i != pending_slice.end(); ++i) {
950  modules.insert(i->getModuleID());
951  }
952 
953 
954  if (isRunning()) {
955 
956  const localtime_t t0 = getLocalTime();
957 
958  if (!pending_slice.empty()) {
959  processTimeSlice(pending_slice);
960  }
961 
962  const localtime_t t1 = getLocalTime();
963 
965 
966  Qt.put(t1 - t0);
967 
968  } else {
969 
970  JErrorStream(logErrorRun) << "Skip processing of data while not running.";
971  }
972 
973 
974  if (modules.size() > frames_per_slice) {
975 
976  JErrorStream(logErrorOvercomplete) << "More active modules than expected "
977  << modules.size() << " > " << frames_per_slice
978  << " adjusting frames per slice to " << modules.size();
979 
980  frames_per_slice = modules.size();
981  }
982 
983 
984  if (pending_slice.size() < number_of_frames) {
985 
987 
988  ostringstream error;
989 
990  error << "Timeout -> processed incomplete timeslice: "
991  << "Frame index = " << pending_slice.getFrameIndex() << ';'
992  << "Size of timeslice = " << pending_slice.size() << ';'
993  << "Queue depth = " << timeslices.size() << ';'
994  << "Queue size = " << queueSize << ';'
995  << "DataQueue min = " << dataqueue_slice_index.min() << ';'
996  << "DataQueue max = " << dataqueue_slice_index.max() << ';';
997 
998  if (maximum_in_queue >= number_of_frames) {
999 
1000  error << " intermittent problem -> continues as-is";
1001 
1002  } else {
1003 
1004  modules.clear(); // remove history
1005 
1006  for (JDAQTimesliceL0::const_iterator i = pending_slice.begin(); i != pending_slice.end(); ++i) {
1007  modules.insert(i->getModuleID());
1008  }
1009 
1010  error << " adjusting frames per timeslice from " << frames_per_slice << " to " << modules.size();
1011 
1012  frames_per_slice = modules.size();
1013  }
1014 
1015  JErrorStream(logErrorIncomplete) << error.str();
1016  }
1017 
1018 
1019  timeslices.pop_front();
1020  }
1021  }
1022  }
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.
void updateFrameQueue(const JSocketInputChannel_t &channel)
Update queue with data frames.
JSocketInputChannel< JDAQAbstractPreamble > JSocketInputChannel_t
Definition: JDataFilter.cc:209
JSinglePointer< JServerSocket > serversocket
server for data queue connections
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.
static const JLocalTime getLocalTime
Function object to get local time in micro seconds.
int getFrameIndex(const double t_ns)
Get frame index for a given time in ns.
Definition: JDAQClock.hh:251
static const int DFILTER_DQUEUE_BUFFER_SIZE
socket JDataFilter.cc &lt;- DataQueue.cc
Definition: JDAQTags.hh:30
const array_type< JValue_t > & make_array(const JValue_t(&array)[N])
Method to create array of values.
Definition: JVectorize.hh:54
long long int numberOfIncompleteTimeslicesProcessed
size_t getMaximum(const array_type< size_t > &buffer)
Get maximum of values.
Definition: JDataFilter.cc:99
long long int number_of_packets_received
bool isRunning() const
Check if this client is in runnig state.
Definition: JDAQClient.hh:508
size_t getNumberOfFrames(const size_t number_of_frames, const double factor)
Get expected number of frames according a given allowed fraction of active modules.
Definition: JDataFilter.cc:120
long long int localtime_t
Type definition of local time.
void setReceiveBufferSize(const int size)
Set receive buffer size.
Definition: JSocket.hh:133
long long int maxQueueSize
TCP socket.
Definition: JTCPSocket.hh:25
long long int queueSize
JChannelList_t channelList
connections to data queue
void put(const double x)
Put value.
Definition: JKatoomba_t.hh:101
JMessageScheduler logErrorOvercomplete
JMessageScheduler logErrorRun
std::set< int > modules
JMessageLogger logger
message logger
Definition: JDAQClient.hh:835
long long int number_of_bytes_received
size_t getSizeof(const JDAQEvent &object)
Get size of object.
Definition: JDAQEventIO.hh:26
long long int number_of_reads
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 1025 of file JDataFilter.cc.

1026  {
1027  if (reporting) {
1028  typeout();
1029  }
1030  }
void typeout()
Report status to message logger.
void KM3NETDAQ::JDataFilter::updateFrameQueue ( const JSocketInputChannel_t channel)
inline

Update queue with data frames.

Note that any discarded data will be reported.

Parameters
channelincoming data channel

Definition at line 1040 of file JDataFilter.cc.

1041  {
1042  using namespace std;
1043 
1044  JByteArrayReader in(channel.data(), channel.size());
1045 
1046  JDAQPreamble preamble;
1047  JDAQSuperFrameHeader header;
1048 
1049  in >> preamble;
1050  in >> header;
1051 
1052  if (preamble.getLength() != channel.size()) {
1053 
1054  JErrorStream(logErrorRun) << "Size of received data does not match size reported by preamble: "
1055  << "preamble.getLength() = " << preamble.getLength() << ';'
1056  << "channel.size(): " << channel.size() << ';';
1057 
1059 
1060  return;
1061  }
1062 
1063  if (header.getRunNumber() != getRunNumber()) {
1064 
1065  JErrorStream(logErrorRun) << "Run number " << header.getRunNumber()
1066  << " != " << getRunNumber()
1067  << " -> Dropping frame.";
1068 
1070 
1071  return;
1072  }
1073 
1074  if (header.getFrameIndex() <= current_slice_index) {
1075 
1077 
1078  if (modules.insert(header.getModuleID()).second) {
1079 
1080  frames_per_slice = modules.size();
1081 
1082  JErrorStream(logErrorIndex) << "Frame index " << header.getFrameIndex() << " <= " << current_slice_index
1083  << " module " << header.getModuleID()
1084  << " -> dropping frame;"
1085  << " increase number of frames expected to: " << frames_per_slice;
1086  }
1087 
1088  return;
1089  }
1090 
1091  if (current_slice_index != -1 && header.getFrameIndex() > current_slice_index + maximal_frame_index) {
1092 
1094 
1095  JErrorStream(logErrorIndex) << "Frame index " << header.getFrameIndex() << " > " << current_slice_index + maximal_frame_index
1096  << " module " << header.getModuleID()
1097  << " -> Dropping frame.";
1098 
1099  return;
1100  }
1101 
1102  deque<JDAQTimesliceL0>::iterator timesliceIterator = timeslices.begin();
1103 
1104  while (timesliceIterator != timeslices.end() && timesliceIterator->getFrameIndex() < header.getFrameIndex()) {
1105  ++timesliceIterator;
1106  }
1107 
1108  if (timesliceIterator != timeslices.end() && timesliceIterator->getFrameIndex() == header.getFrameIndex()) {
1109 
1110  // The corresponding time slice already exists
1111 
1112  } else {
1113 
1114  // This is the first frame of this time slice; insert a new time slice in the buffer at the right position in the list
1115 
1116  timesliceIterator = timeslices.insert(timesliceIterator, JDAQTimesliceL0());
1117 
1118  timesliceIterator->setDAQChronometer(header.getDAQChronometer());
1119 
1120  queueSize += getSizeof(*timesliceIterator);
1121  }
1122 
1123  timesliceIterator->push_back(JDAQSuperFrame(header));
1124 
1125  in >> static_cast<JDAQFrame&>(*(timesliceIterator->rbegin()));
1126 
1127  queueSize += getSizeof(*timesliceIterator->rbegin());
1128 
1129  dataqueue_slice_index[channel.getFileDescriptor()] = header.getFrameIndex();
1130  }
std::deque< JDAQTimesliceL0 > timeslices
buffer with pending time slice data
JMessageScheduler logErrorIndex
long long int number_of_packets_discarded
int getFileDescriptor() const
Get file descriptor.
Byte array binary input.
Definition: JByteArrayIO.hh:25
Data frame.
Definition: JDAQFrame.hh:65
const char * data() const
Get data.
Definition: JByteArrayIO.hh:68
long long int queueSize
int getRunNumber() const
Get run number.
Definition: JDAQCHSM.chsm:100
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:48
JMessageScheduler logErrorRun
std::set< int > modules
size_t getSizeof(const JDAQEvent &object)
Get size of object.
Definition: JDAQEventIO.hh:26
Data frame of one optical module.
Timeslice data structure for L0 data.
int size() const
Get size.
Definition: JByteArrayIO.hh:57
void KM3NETDAQ::JDataFilter::processTimeSlice ( const JDAQTimesliceL0 timeslice)
inline

Process time slice.

Parameters
timeslicetime slice

Definition at line 1138 of file JDataFilter.cc.

1139  {
1140  using namespace std;
1141 
1142  try {
1143 
1144  timesliceRouter->configure(timeslice);
1145 
1146  if (parameters.writeSummary()) {
1147  this->put(JDAQSummaryslice(timeslice));
1148  }
1149 
1150  if (parameters.trigger3DMuon.enabled ||
1151  parameters.trigger3DShower.enabled ||
1152  parameters.triggerMXShower.enabled ||
1153  parameters.triggerNB.enabled ||
1154  parameters.writeL0.prescale ||
1155  parameters.writeL1.prescale ||
1156  parameters.writeL2.prescale ||
1157  parameters.writeSN.prescale ||
1158  c_buffer.is_enabled()) {
1159 
1160  JTimeslice_t timesliceL0(timeslice.getDAQChronometer());
1161  JTimeslice_t timesliceL1(timeslice.getDAQChronometer());
1162  JTimeslice_t timesliceL2(timeslice.getDAQChronometer());
1163  JTimeslice_t timesliceSN(timeslice.getDAQChronometer());
1164  JTimeslice_t timesliceNB(timeslice.getDAQChronometer());
1165  JDAQTimeslice timesliceTX(timeslice.getDAQChronometer());
1166 
1167  for (JDAQTimesliceL0::const_iterator frame = timeslice.begin(); frame != timeslice.end(); ++frame) {
1168 
1169  if (moduleRouter->hasModule(frame->getModuleID())) {
1170 
1171  const JChecksum::result_type& result = checksum(*frame);
1172 
1173  if (!result) {
1174 
1175  JWarningStream(logger) << "Invalid data at "
1176  << "run = " << timeslice.getRunNumber() << ";"
1177  << "frame index = " << timeslice.getFrameIndex() << ";"
1178  << "module = " << frame->getModuleID() << ";"
1179  << "discard" << (dumpCount < dumpLimit ? " and dump" : "");
1180 
1181  if (dumpCount < dumpLimit && result.has(dumpMask)) {
1182  timesliceTX.push_back(*frame);
1183  }
1184 
1185  continue;
1186  }
1187 
1188  const JModule& module = moduleRouter->getModule(frame->getModuleID());
1189  JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*frame, module);
1190 
1191  // Apply high-rate veto
1192 
1193  buffer.applyHighRateVeto(parameters.highRateVeto_Hz);
1194 
1195  // L0
1196 
1197  timesliceL0.push_back(JSuperFrame1D_t(buffer));
1198 
1199  // Nano-beacon trigger
1200 
1201  if (parameters.triggerNB.enabled) {
1202 
1203  JSuperFrame2D_t::iterator __end = partition(buffer.begin(), buffer.end(), parameters.triggerNB.pmts);
1204 
1205  if (buffer.begin() != __end) {
1206 
1207  timesliceNB.push_back(JSuperFrame1D_t(frame->getDAQChronometer(),
1208  frame->getModuleIdentifier(),
1209  module.getPosition()));
1210 
1211  JSuperFrame1D_t zbuf;
1212 
1213  (*buildL1)(buffer.begin(), __end , back_inserter(zbuf));
1214 
1215  (*buildNB)(buffer.begin() , __end, zbuf, back_inserter(*timesliceNB.rbegin()));
1216  }
1217  }
1218 
1219  // L1
1220 
1221  timesliceL1.push_back(JSuperFrame1D_t(frame->getDAQChronometer(),
1222  frame->getModuleIdentifier(),
1223  module.getPosition()));
1224 
1225  (*buildL1)(*timesliceL0.rbegin(), back_inserter(*timesliceL1.rbegin()));
1226 
1227  // L2
1228 
1229  timesliceL2.push_back(JSuperFrame1D_t(frame->getDAQChronometer(),
1230  frame->getModuleIdentifier(),
1231  module.getPosition()));
1232 
1233  (*buildL2)(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceL2.rbegin()));
1234 
1235  // SN
1236 
1237  timesliceSN.push_back(JSuperFrame1D_t(frame->getDAQChronometer(),
1238  frame->getModuleIdentifier(),
1239  module.getPosition()));
1240 
1241  (*buildSN)(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceSN.rbegin()));
1242 
1243  } else {
1244 
1245  JErrorStream(logErrorDetector) << "No detector information for module " << frame->getModuleID();
1246  }
1247  }
1248 
1249  if (!timesliceTX.empty()) {
1250 
1251  if (dumpCount < dumpLimit) {
1252 
1253  this->put(timesliceTX);
1254 
1255  dumpCount += 1;
1256  }
1257  }
1258 
1259  // Trigger
1260 
1261  if (parameters.triggerNB.enabled) {
1262 
1263  const JTriggerInput trigger_input(timesliceNB);
1264 
1265  for (JTriggerInput::const_iterator hit = trigger_input.begin(); hit != trigger_input.end(); ++hit) {
1266 
1267  if (parameters.triggerNB.write()) {
1268 
1269  JTriggeredEvent tev(timesliceNB.getDAQChronometer(),
1271  *hit,
1272  *timesliceRouter,
1273  *moduleRouter,
1274  parameters.TMaxLocal_ns,
1275  parameters.triggerNB.DMax_m,
1276  getTimeRange(parameters.triggerNB));
1277 
1278  this->put(tev);
1279  }
1280  }
1281  }
1282 
1283  JTriggerInput trigger_input(timesliceL2);
1284  JTriggerOutput trigger_output;
1285 
1286  (*trigger3DMuon) (trigger_input, back_inserter(trigger_output));
1287  (*trigger3DShower)(trigger_input, back_inserter(trigger_output));
1288  (*triggerMXShower)(trigger_input, timesliceL0, back_inserter(trigger_output));
1289 
1290  trigger_output.merge(JEventOverlap(parameters.TMaxEvent_ns));
1291 
1292  for (JTriggerOutput::const_iterator event = trigger_output.begin(); event != trigger_output.end(); ++event) {
1293 
1294  const JTriggeredEvent object(*event, *timesliceRouter, *moduleRouter, parameters.TMaxLocal_ns, getTimeRange(parameters));
1295 
1296  this->put(object);
1297 
1298  numberOfEvents += 1;
1299  }
1300 
1301  if (parameters.writeL1() || c_buffer.sizeL1 > 0) {
1302 
1303  const JTimesliceL1<JDAQTimesliceL1> object(timesliceL1, *timesliceRouter, *moduleRouter, parameters.TMaxLocal_ns);
1304 
1305  if (parameters.writeL1) { this->put(object); }
1306  if (c_buffer.sizeL1 > 0) { c_buffer.put(object); }
1307  }
1308 
1309  if (parameters.writeL2() || c_buffer.sizeL2 > 0) {
1310 
1311  const JTimesliceL1<JDAQTimesliceL2> object(timesliceL2, *timesliceRouter, *moduleRouter, parameters.L2.TMaxLocal_ns);
1312 
1313  if (parameters.writeL2) { this->put(object); }
1314  if (c_buffer.sizeL2 > 0) { c_buffer.put(object); }
1315  }
1316 
1317  if (parameters.writeSN() || c_buffer.sizeSN > 0) {
1318 
1319  const JTimesliceL1<JDAQTimesliceSN> object(timesliceSN, *timesliceRouter, *moduleRouter, parameters.SN.TMaxLocal_ns);
1320 
1321  if (parameters.writeSN) { this->put(object); }
1322  if (c_buffer.sizeSN > 0) { c_buffer.put(object); }
1323  }
1324 
1325  if (parameters.writeL0() || c_buffer.sizeL0 > 0) {
1326 
1327  if (parameters.writeL0) { this->put(timeslice); }
1328  if (c_buffer.sizeL0 > 0) { c_buffer.put(timeslice); }
1329  }
1330  }
1331 
1332  } catch(const std::exception& error) {
1333 
1334  JErrorStream(logger) << "Error = " << error.what() << ";"
1335  << "run = " << timeslice.getRunNumber() << ";"
1336  << "frame index = " << timeslice.getFrameIndex() << ";"
1337  << "time slice not correctly processed;"
1338  << "discard" << (dumpCount < dumpLimit ? " and dump" : "");
1339 
1340  if (dumpCount < dumpLimit) {
1341 
1342  this->put(static_cast<const JDAQTimeslice&>(timeslice));
1343 
1344  dumpCount += 1;
1345  }
1346  }
1347 
1349  }
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:67
JSinglePointer< JTriggerNB > triggerNB
JSuperFrame2D< hit_type > JSuperFrame2D_t
Definition: JDataFilter.cc:214
Long64_t sizeL1
Number of L1 time slices.
Definition: JDataFilter.cc:381
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:200
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:347
JSuperFrame1D< hit_type > JSuperFrame1D_t
Definition: JDataFilter.cc:213
static JSuperFrame2D< JElement_t, JAllocator_t > demultiplex
Demultiplexer.
JTimeslice< hit_type > JTimeslice_t
Definition: JDataFilter.cc:215
void merge(const JMatch_t &match)
Merge events.
bool has(const JStatus &mask) const
Check for errors with given error mask.
Definition: JChecksum.hh:107
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:383
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:380
bool hasModule(const JObjectID &id) const
Has module.
JSinglePointer< JModuleRouter > moduleRouter
JMessageLogger logger
message logger
Definition: JDAQClient.hh:835
Data structure for input to trigger algorithm.
Auxiliary data structure for result of checksum.
Definition: JChecksum.hh:88
Match of two events considering overlap in time.
Long64_t sizeL2
Number of L2 time slices.
Definition: JDataFilter.cc:382
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 1355 of file JDataFilter.cc.

1356  {
1357  timer.stop();
1358 
1359  const double T_us = (double) timer.usec_wall;
1360 
1361  JStatusStream(logger) << "Elapsed real (wall) time [s] " << T_us / 1e6;
1362  JStatusStream(logger) << "Elapsed user CPU time [s] " << (double) timer.usec_ucpu/ 1e6;
1363  JStatusStream(logger) << "Elapsed system CPU time [s] " << (double) timer.usec_scpu/ 1e6;
1364  JStatusStream(logger) << "Elapsed real time per time slice [ms] " << Qt.getMean(0.0) * 1.0e-3 << " <= " << Qt.getXmax() * 1.0e-3;
1365  JStatusStream(logger) << "Number of packets received/discarded " << number_of_packets_received << "/" << number_of_packets_discarded;
1366  JStatusStream(logger) << "Number of events/MB/us " << numberOfEvents << "/" << numberOfBytes/1e6 << "/" << Qx.getMean(0.0);
1367 
1368  if (number_of_packets_received > 0) {
1369  JStatusStream(logger) << "Number of reads/packet " << (double) number_of_reads / (double) number_of_packets_received;
1370  }
1371 
1372  JStatusStream(logger) << "Current queue depth/size " << timeslices.size() << "/" << queueSize;
1373  JStatusStream(logger) << "Current number of frames per slice expected: " << frames_per_slice << ' ' << FIXED(5,3) << factor_per_slice;
1374 
1375  JStatusStream(logger) << "Number of timeslices processed total/incomplete " << numberOfTimeslicesProcessed << "/" << numberOfIncompleteTimeslicesProcessed;
1376 
1377  const double processedSlicesTime_us = numberOfTimeslicesProcessed * getFrameTime() / 1000;
1378  const double processedDetectorTime_us = (maxFrameNumber - minFrameNumber) * getFrameTime() / 1000;
1379 
1380  if (processedSlicesTime_us > 0) {
1381  JStatusStream(logger) << "Performance factor (inaccurate estimate): " << T_us / processedSlicesTime_us;
1382  }
1383  if (processedDetectorTime_us > 0) {
1384  JStatusStream(logger) << "Performance factor whole detector (inaccurate estimate): " << T_us / processedDetectorTime_us;
1385  }
1386 
1387  timer.start();
1388  }
long long int numberOfTimeslicesProcessed
std::deque< JDAQTimesliceL0 > timeslices
buffer with pending time slice data
unsigned long long usec_ucpu
Definition: JTimer.hh:225
Auxiliary data structure for floating point format specification.
Definition: JManip.hh:446
long long int number_of_packets_discarded
void stop()
Stop timer.
Definition: JTimer.hh:113
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
long long int queueSize
JMessageLogger logger
message logger
Definition: JDAQClient.hh:835
long double getMean() const
Get mean value.
Definition: JKatoomba_t.hh:113
long long int number_of_reads
long long int numberOfEvents
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 1398 of file JDataFilter.cc.

1399  {
1400  using namespace std;
1401 
1402  JDebugStream(logger) << "Received message <" << tag.toString() << "> \"" << string(buffer, length) << "\"";
1403 
1404  if (tag == RC_ALERT) {
1405 
1406  if (c_buffer.is_open()) {
1407 
1408  JStatusStream(logger) << "Archive circular buffer in <" << c_buffer.archive << ">";
1409 
1410  c_buffer.close(true);
1411  }
1412 
1413  if (c_buffer.is_enabled()) {
1414 
1415  c_buffer.open();
1416 
1417  if (c_buffer.is_open()) {
1418 
1419  JStatusStream(logger) << "Created circular buffer " << c_buffer;
1420 
1422 
1423  } else {
1424 
1425  JErrorStream (logger) << "Failed to create circular buffer in directory <" << c_buffer.path << ">; disable functionality.";
1426 
1427  c_buffer.disable();
1428  }
1429  }
1430 
1431  } else {
1432 
1433  JWarningStream(logger) << "Tag <" << tag.toString() << "> not implemented";
1434  }
1435  }
JMeta meta
meta data
void close(const bool option)
Close file.
Definition: JDataFilter.cc:283
std::string path
Directory for temporary storage.
Definition: JDataFilter.cc:385
JCircularBuffer_t c_buffer
bool is_enabled() const
Check whether writing of data is enabled.
Definition: JDataFilter.cc:347
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:73
JMessageLogger logger
message logger
Definition: JDAQClient.hh:835
std::string archive
Directory for permanent archival.
Definition: JDataFilter.cc:386
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 1451 of file JDataFilter.cc.

1452  {
1453  try {
1454 
1455  const localtime_t t0 = getLocalTime();
1456 
1457  datawriter->put(object);
1458 
1459  const localtime_t t1 = getLocalTime();
1460 
1461  numberOfBytes += getSizeof(object);
1462 
1463  Qx.put(t1 - t0);
1464  }
1465  catch(const std::exception& error) {
1466  JErrorStream(logger) << "Error \"" << error.what() << "\"; trigger ev_error.";
1467  ev_error();
1468  }
1469  }
JDAQStateMachine::ev_error_event ev_error
virtual bool put(const T &object) override
Object output.
long long int numberOfBytes
static const JLocalTime getLocalTime
Function object to get local time in micro seconds.
long long int localtime_t
Type definition of local time.
void put(const double x)
Put value.
Definition: JKatoomba_t.hh:101
JSinglePointer< JControlHost_t > datawriter
controlhost of data server (to which data writer should be connected)
JMessageLogger logger
message logger
Definition: JDAQClient.hh:835
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 392 of file JDAQClient.hh.

393  {
394  using namespace std;
395 
396  string server;
397  string logger;
398  int level;
399  bool use_cout;
400 
401  try {
402 
403  parser['H'] = make_field(server) = "localhost";
404  parser['M'] = make_field(logger) = "localhost";
405  parser['d'] = make_field(level) = 0;
406  parser['c'] = make_field(use_cout);
407 
408  if (parser.read(args) != 0) {
409  return false;
410  }
411  }
412  catch(const std::exception &error) {
413  cerr << error.what() << endl;
414  return false;
415  }
416 
417  try {
418 
419  JLogger* out = NULL;
420 
421  if (use_cout)
422  out = new JStreamLogger(cout);
423  else
424  out = new JControlHostLogger(logger);
425 
426  this->logger = JMessageLogger(out, getName(), level);
427 
428  this->server.reset(new JControlHost(server));
429 
430  return enter();
431  }
432  catch(const std::exception& error) {
433  cerr << error.what() << endl;
434  return false;
435  }
436  }
JParser parser
parser method enter()
Definition: JDAQClient.hh:1065
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:834
virtual bool enter() override
Enter the state machine.
Definition: JDAQClient.hh:447
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1989
int read(const int argc, const char *const argv[])
Parse the program&#39;s command line options.
Definition: JParser.hh:1811
JMessageLogger logger
message logger
Definition: JDAQClient.hh:835
const std::string & getName() const
Get name of state machine.
Definition: JDAQCHSM.chsm:78
virtual bool KM3NETDAQ::JDAQClient::enter ( )
inlineoverridevirtualinherited

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 447 of file JDAQClient.hh.

448  {
449  using namespace std;
450  using namespace JPP;
451 
452  if (server.is_valid() && logger.is_valid()) {
453 
454  const JSubscriptionList buffer = getSubscription(eventTable) + subscription;
455 
456  try {
457 
458  server->Subscribe(buffer);
459  server->SendMeAlways();
460  server->MyId(getFullName());
461 
462  JStatusStream(logger) << "Process with nick name \"" << getFullName() << "\" version \"" << getGITVersion() << "\" subscription: " << buffer.toString();
463 
464  return CHSM::machine::enter();
465  }
466  catch(const std::exception& error) {
467  JErrorStream(logger) << error.what();
468  }
469 
470  } else {
471  cerr << "Message server or logger not properly initialised." << endl;
472  }
473 
474  return false;
475  }
JSharedPointer< JControlHost > server
message server
Definition: JDAQClient.hh:834
std::string getGITVersion(const std::string &tag)
Get GIT version for given GIT tag.
JSubscriptionList subscription
custom subscription
Definition: JDAQClient.hh:1066
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:835
virtual bool KM3NETDAQ::JDAQClient::exit ( )
inlineoverridevirtualinherited

Exit the state machine.

This method releases the various resources.

Returns
true if okay; else false

Definition at line 485 of file JDAQClient.hh.

486  {
487  try {
488  if (server.is_valid()) { server.reset(NULL); }
489  }
490  catch(const std::exception& error) {
491  }
492 
493  try {
494  if (logger.is_valid()) { logger.reset(NULL); }
495  }
496  catch(const std::exception& error) {
497  }
498 
499  return CHSM::machine::exit();
500  }
void reset(JLogger *__logger=NULL)
Reset logger.
exit
Definition: JPizza.sh:36
JSharedPointer< JControlHost > server
message server
Definition: JDAQClient.hh:834
bool is_valid() const
Check validity of logger object.
JMessageLogger logger
message logger
Definition: JDAQClient.hh:835
bool KM3NETDAQ::JDAQClient::isRunning ( ) const
inlineinherited

Check if this client is in runnig state.

Returns
true if running; else false

Definition at line 508 of file JDAQClient.hh.

509  {
510  return Main.RunControl.Operational.Running.active();
511  }
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 521 of file JDAQClient.hh.

524  {
525  eventTable.replace(oldTag, newTag, event);
526  }
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 536 of file JDAQClient.hh.

537  {
538  JEventTable::const_iterator i = eventTable.find(tag, event_name);
539 
540  if (i != eventTable.end())
541  return i->second;
542  else
543  return NULL;
544  }
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 552 of file JDAQClient.hh.

553  {
555  }
JSubscriptionList & add(const JSubscription &subscription)
Add subscription.
JSubscriptionList subscription
custom subscription
Definition: JDAQClient.hh:1066
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 565 of file JDAQClient.hh.

566  {
567  parser[option] = make_field(parameter);
568  }
JParser parser
parser method enter()
Definition: JDAQClient.hh:1065
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1989
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 579 of file JDAQClient.hh.

580  {
581  parser[option] = make_field(parameter) = value;
582  }
JParser parser
parser method enter()
Definition: JDAQClient.hh:1065
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1989
void KM3NETDAQ::JDAQClient::setSelect ( )
inlineinherited

Set the file descriptor mask for the select call.

Definition at line 588 of file JDAQClient.hh.

589  {
590  select.reset();
591 
593 
595  }
JSelectReader select
select call
Definition: JDAQClient.hh:1064
JSharedPointer< JControlHost > server
message server
Definition: JDAQClient.hh:834
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:588
virtual void KM3NETDAQ::JDAQClient::actionInput ( int  length,
const char *  buffer 
)
inlineoverridevirtualinherited

This method is called at ev_input.

Parameters
lengthlength of data
bufferpointer to data

Reimplemented from JDAQCHSM.

Reimplemented in KM3NETDAQ::DataQueue.

Definition at line 635 of file JDAQClient.hh.

636  {
637  using namespace std;
638 
639  JProperties properties(JEquationParameters("=", ";", "", ""), 1);
640 
641  int level = this->logger.getLevel();
642 
643  properties["debug"] = level;
644 
645  properties.read(string(buffer, length));
646 
647  this->logger.setLevel(level);
648  }
Utility class to parse parameter values.
Definition: JProperties.hh:497
Simple data structure to support I/O of equations (see class JLANG::JEquation).
JMessageLogger logger
message logger
Definition: JDAQClient.hh:835
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 662 of file JDAQClient.hh.

663  {
664  return false;
665  }
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 690 of file JDAQClient.hh.

691  {
692  using namespace std;
693  using namespace JPP;
694 
695  while (active()) {
696 
697  try {
698 
699  setSelect();
700 
701  if (select(JTimeval(TIMEOUT_S,0)) > 0) {
702 
703  if (select.hasReaderMask(*server)) {
704  update();
705  }
706 
708 
709  } else {
710 
711  continue;
712  }
713 
714 
715  if (isRunning() && clock.getInterval() != 0LL) {
716 
717  long long int numberOfCalls = 0;
718 
719  clock.reset();
720 
721  do {
722 
723  ++numberOfCalls;
724 
725  setSelect();
726 
727  if (clock.wait(select.getReaderMask())) {
728 
729  if (select.hasReaderMask(*server)) {
730  update();
731  }
732 
734 
735  } else {
736 
737  try {
738  actionRunning();
739  }
740  catch(const std::exception& error) {
741  logger.error(error.what());
742  }
743  }
744 
745  } while (isRunning());
746 
747  if (numberOfCalls != 0) {
748  JNoticeStream(logger) << "Delay per call " << clock.getDelay() / numberOfCalls / 1000 << " ms";
749  }
750  }
751  }
752  catch(const JPP::JSocketException& error) {
753  JErrorStream(logger) << "method run(): \"" << error.what() << "\" -> trigger ev_error.";
754  ev_error();
755  }
756  catch(const std::exception& error) {
757  JErrorStream(logger) << "method run(): \"" << error.what() << "\"";
758  }
759  }
760  }
long long int getDelay() const
Get total delay time.
Definition: JTimekeeper.hh:78
JDAQStateMachine::ev_error_event ev_error
JTimekeeper clock
central clock
Definition: JDAQClient.hh:207
static const int TIMEOUT_S
time out of update [s]
Definition: JDAQClient.hh:63
JSelectReader select
select call
Definition: JDAQClient.hh:1064
void reset(const long long int t0)
Reset time.
Definition: JTimekeeper.hh:100
JSharedPointer< JControlHost > server
message server
Definition: JDAQClient.hh:834
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:625
bool isRunning() const
Check if this client is in runnig state.
Definition: JDAQClient.hh:508
void update()
Update state machine.
Definition: JDAQClient.hh:842
long long int getInterval() const
Get interval time.
Definition: JTimekeeper.hh:67
virtual const char * what() const override
Get error message.
Definition: JException.hh:64
Exception for socket.
Definition: JException.hh:466
JMessageLogger logger
message logger
Definition: JDAQClient.hh:835
void error(const JMessage_t &message)
void setSelect()
Set the file descriptor mask for the select call.
Definition: JDAQClient.hh:588
virtual void actionSelect(const JFileDescriptorMask &mask)
Action method following last select call.
Definition: JDAQClient.hh:614
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 775 of file JDAQClient.hh.

776  {
777  JControlHostServer local_server(port);
778 
779  for ( ; ; ) {
780 
781  JControlHost* ps = local_server.AcceptClient();
782 
783  ps->Connected();
784 
785  JNET::JPrefix prefix;
786 
787  ps->WaitHead(prefix);
788 
789  const int length = prefix.getSize();
790 
791  char* buffer = new char[length];
792 
793  ps->GetFullData(buffer, length);
794  ps->PutFullData(prefix.toString(), buffer, length);
795 
796  delete ps;
797 
798  enter(JArgs(std::string(buffer, length)));
799 
800  delete [] buffer;
801 
802  run();
803 
804  exit();
805  }
806  }
ControlHost prefix.
Definition: JPrefix.hh:31
virtual bool exit() override
Exit the state machine.
Definition: JDAQClient.hh:485
virtual bool enter() override
Enter the state machine.
Definition: JDAQClient.hh:447
void run()
Run as run control client following command messages via JNET::JControlHost.
Definition: JDAQClient.hh:690
int getSize() const
Get size.
Definition: JPrefix.hh:62
then awk string
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 820 of file JDAQClient.hh.

821  {
822  using namespace std;
823 
824  string tag;
825  string buffer;
826 
827  while (in >> tag && in >> skipws && getline(in, buffer, ';')) {
828  update(tag, buffer.length(), buffer.data());
829  }
830  }
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:842
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:48
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
const std::string& KM3NETDAQ::JDAQClient_t::getEventInfo ( ) const
inlineinherited

Get last event information.

Returns
event information

Definition at line 185 of file JDAQClient.hh.

186  {
187  return event_info;
188  }
std::string event_info
event information
Definition: JDAQClient.hh:208
void KM3NETDAQ::JDAQClient_t::setEventInfo ( const std::string info)
inlineinherited

Set last event information.

Parameters
infoevent information

Definition at line 196 of file JDAQClient.hh.

197  {
198  this->event_info = info;
199  }
std::string event_info
event information
Definition: JDAQClient.hh:208

Member Data Documentation

JMeta KM3NETDAQ::JDataFilter::meta

meta data

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

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

host name of data server

Definition at line 1443 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::port
private

server socket port

Definition at line 1472 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::backlog
private

Definition at line 1473 of file JDataFilter.cc.

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

server for data queue connections

Definition at line 1475 of file JDataFilter.cc.

JChannelList_t KM3NETDAQ::JDataFilter::channelList
private

connections to data queue

Definition at line 1476 of file JDataFilter.cc.

JTimer KM3NETDAQ::JDataFilter::timer
private

Definition at line 1478 of file JDataFilter.cc.

JQuantile KM3NETDAQ::JDataFilter::Qt
private

Definition at line 1479 of file JDataFilter.cc.

JQuantile KM3NETDAQ::JDataFilter::Qx
private

Definition at line 1479 of file JDataFilter.cc.

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

buffer with pending time slice data

Definition at line 1481 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::current_slice_index
private

Definition at line 1482 of file JDataFilter.cc.

size_t KM3NETDAQ::JDataFilter::frames_per_slice
private

Definition at line 1483 of file JDataFilter.cc.

double KM3NETDAQ::JDataFilter::factor_per_slice
private

Definition at line 1484 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::maximal_frame_index
private

Definition at line 1485 of file JDataFilter.cc.

std::set<int> KM3NETDAQ::JDataFilter::modules
private

Definition at line 1486 of file JDataFilter.cc.

KM3NETDAQ::JDataFilter::dataqueue_slice_index
private
JTriggerParameters KM3NETDAQ::JDataFilter::parameters
private

Definition at line 1545 of file JDataFilter.cc.

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

Definition at line 1546 of file JDataFilter.cc.

JDetector KM3NETDAQ::JDataFilter::detector
private

Definition at line 1548 of file JDataFilter.cc.

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

Definition at line 1549 of file JDataFilter.cc.

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

Definition at line 1550 of file JDataFilter.cc.

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

Definition at line 1551 of file JDataFilter.cc.

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

Definition at line 1552 of file JDataFilter.cc.

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

Definition at line 1553 of file JDataFilter.cc.

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

Definition at line 1555 of file JDataFilter.cc.

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

Definition at line 1556 of file JDataFilter.cc.

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

Definition at line 1557 of file JDataFilter.cc.

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

Definition at line 1558 of file JDataFilter.cc.

JMessageScheduler KM3NETDAQ::JDataFilter::logErrorRun
private

Definition at line 1560 of file JDataFilter.cc.

JMessageScheduler KM3NETDAQ::JDataFilter::logErrorDetector
private

Definition at line 1561 of file JDataFilter.cc.

JMessageScheduler KM3NETDAQ::JDataFilter::logErrorIndex
private

Definition at line 1562 of file JDataFilter.cc.

JMessageScheduler KM3NETDAQ::JDataFilter::logErrorIncomplete
private

Definition at line 1563 of file JDataFilter.cc.

JMessageScheduler KM3NETDAQ::JDataFilter::logErrorOvercomplete
private

Definition at line 1564 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::dumpCount
private

Definition at line 1566 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::dumpLimit
private

Definition at line 1567 of file JDataFilter.cc.

JStatus KM3NETDAQ::JDataFilter::dumpMask
private

Definition at line 1568 of file JDataFilter.cc.

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

Definition at line 1572 of file JDataFilter.cc.

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

Definition at line 1573 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::totalCPURAM
private

Definition at line 1577 of file JDataFilter.cc.

size_t KM3NETDAQ::JDataFilter::maxQueueDepth
private

Definition at line 1578 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::maxQueueSize
private

Definition at line 1579 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::queueSize
private

Definition at line 1580 of file JDataFilter.cc.

bool KM3NETDAQ::JDataFilter::reporting
private

Definition at line 1584 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::numberOfEvents
private

Definition at line 1586 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::numberOfBytes
private

Definition at line 1587 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::numberOfTimeslicesProcessed
private

Definition at line 1588 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::numberOfIncompleteTimeslicesProcessed
private

Definition at line 1589 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::minFrameNumber
private

Definition at line 1591 of file JDataFilter.cc.

int KM3NETDAQ::JDataFilter::maxFrameNumber
private

Definition at line 1592 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::number_of_packets_received
private

Definition at line 1596 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::number_of_packets_discarded
private

Definition at line 1597 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::number_of_reads
private

Definition at line 1598 of file JDataFilter.cc.

long long int KM3NETDAQ::JDataFilter::number_of_bytes_received
private

Definition at line 1599 of file JDataFilter.cc.

JCircularBuffer_t KM3NETDAQ::JDataFilter::c_buffer
private

Definition at line 1603 of file JDataFilter.cc.

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

message server

Definition at line 834 of file JDAQClient.hh.

JMessageLogger KM3NETDAQ::JDAQClient::logger
protectedinherited

message logger

Definition at line 835 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 63 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.

std::string KM3NETDAQ::JDAQClient_t::event_info
protectedinherited

event information

Definition at line 208 of file JDAQClient.hh.


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