189         for (
int i = 0; !this->is_open() && i != MAXIMUM_FILE_NUMBER; ++i) {
 
  195              << 
"_"  << cal.getYear() << 
'-' << 
FILL(2,
'0') << cal.getMonth() << 
'-' << 
FILL(2,
'0') << cal.getDay()
 
  205             this->
open(os.str().c_str());
 
  207           catch(
const exception& error) {}
 
  229         return (sizeL0 > 0 ||
 
  244         if (
object.is_open())
 
  245           out << 
object.getFile()->GetName();
 
  251         return out << 
object.sizeL0 << 
'/' 
  252                    << 
object.sizeL1 << 
'/' 
  253                    << 
object.sizeL2 << 
'/' 
  254                    << 
object.sizeSN << 
'/';
 
  291                 const std::string& server,
 
  292                 const std::string& hostname,
 
  298                 const std::string& 
path) :
 
  303       buffer_size(buffer_size),
 
  311       current_slice_index  = -1;
 
  322       if (c_buffer.is_open()) {
 
  324         JNoticeStream(logger) << 
"Close circular buffer " << c_buffer;
 
  333     virtual void actionInit(
int length, 
const char* buffer)
 override 
  335       JDebugStream(logger) << 
"actionInit() " << std::string(buffer,length);
 
  341         if (serversocket.is_valid()) {
 
  342           serversocket->shutdown();
 
  347       catch(
const std::exception& error) {
 
  348         JErrorStream(logger) << 
"Error \"" << error.what() << 
"\"; trigger ev_error.";
 
  358       JDebugStream(logger) << 
"actionConfigure() " << endl << std::string(buffer,length);
 
  369       dumpLimit = numeric_limits<int>::max();
 
  373       properties[
"dataWriter"]             = hostname;
 
  374       properties[
"numberOfFramesPerSlice"] = frames_per_slice = 1;
 
  377       properties[
"queueSize"]              = maxQueueSize  = (totalCPURAM - 
GIGABYTE);  
 
  378       properties[
"queueDepth"]             = maxQueueDepth = 20;                        
 
  379       properties[
"frameIndex"]             = maximal_frame_index = 100000;
 
  382       properties[
"JDataFilter"]            = dataFilters;
 
  383       properties[
"DataQueue"]              = dataQueues;
 
  384       properties[
"path"]                   = 
path;
 
  385       properties[
"c_sizeL0"]               = c_buffer.sizeL0;
 
  386       properties[
"c_sizeL1"]               = c_buffer.sizeL1;
 
  387       properties[
"c_sizeL2"]               = c_buffer.sizeL2;
 
  388       properties[
"c_sizeSN"]               = c_buffer.sizeSN;
 
  389       properties[
"dumpLimit"]              = dumpLimit;
 
  392         properties.
read(
string(buffer, length));
 
  394       catch(
const exception& error) {
 
  401       setClockInterval(
update_s * 1000000LL);
 
  403       hostname = 
trim(hostname);
 
  408         throw JException(
"Undefined data writer host name.");
 
  410       maximum_frames_per_slice = frames_per_slice;
 
  414       if (dataFilters.empty()) {
 
  415         JNoticeStream(logger) << 
"No DataFilters in process list, or no process list. " 
  416                               << 
"Assuming that this process is the only process on this CPU and setting parameters accordingly.";
 
  419       sort(dataFilters.begin(), dataFilters.end(), processIndexSorter);
 
  421       unsigned int numberOfDataFiltersOnThisMachine = 0;
 
  429         notice << 
"My IP addresses:";
 
  438         JDebugStream(logger) << 
"Test IP address \"" << i->hostname << 
"\" " << (find(IP.begin(), IP.end(), i->hostname) != IP.end());
 
  440         if (find(IP.begin(), IP.end(), i->hostname) != IP.end()) {
 
  442           numberOfDataFiltersOnThisMachine++;
 
  444           if (i->port == 
this->port) {
 
  450       if (numberOfDataFiltersOnThisMachine == 0) {
 
  451         JNoticeStream(logger) << 
"Zero data filters on this machine according to process list (if it exists). " 
  452                               << 
"Assuming one datafilter on this machine.";
 
  453         numberOfDataFiltersOnThisMachine = 1;
 
  456       if (thisProcess == dataFilters.end()) {
 
  457         JErrorStream(logger) << 
"This process cannot be found in the process list. Why do I exist?";    
 
  460       if (thisProcess != dataFilters.end() && thisProcess->index != 
getName()) {
 
  461         JErrorStream(logger) << 
"Mismatch between given process names: " 
  463                              << 
", but in the process list I am referred to as " << thisProcess->index;
 
  466       if (dataFilters.begin() == thisProcess || dataFilters.empty()) {                    
 
  470       if (maxQueueSize > (totalCPURAM-
GIGABYTE)/(numberOfDataFiltersOnThisMachine)) {     
 
  472         maxQueueSize  =  (totalCPURAM-
GIGABYTE)/(numberOfDataFiltersOnThisMachine);
 
  474         JNoticeStream(logger) << 
"Maximum queue size is too large given the number of processes on this machine. " 
  475                               << 
"Queue size reduced to "  
  476                               << maxQueueSize << 
" bytes." ;  
 
  491         JNoticeStream(logger) << 
"This data filter process will report.";
 
  492         JNoticeStream(logger) << 
"Number of modules: "    << (*moduleRouter)->size();
 
  495         JNoticeStream(logger) << 
"Update period [s]: "    << getClockInterval();
 
  507       if (buildL1.get() == NULL) { 
JErrorStream(logger) << 
"Failed to allocate buildL1."; }
 
  508       if (buildL2.get() == NULL) { 
JErrorStream(logger) << 
"Failed to allocate buildL2."; }
 
  509       if (buildSN.get() == NULL) { 
JErrorStream(logger) << 
"Failed to allocate buildSN."; }
 
  510       if (buildNB.get() == NULL) { 
JErrorStream(logger) << 
"Failed to allocate buildSN."; }
 
  517       if (c_buffer.is_enabled()) {
 
  519         if (!c_buffer.is_open()) {
 
  523           if (c_buffer.is_open()) {
 
  525             JNoticeStream(logger) << 
"Created circular buffer " << c_buffer;
 
  531             JErrorStream (logger) << 
"Failed to create circular buffer in directory <" << 
path << 
">; disable functionality.";
 
  538           JNoticeStream(logger) << 
"Continue using circular buffer " << c_buffer;
 
  548         if (c_buffer.is_open()) {
 
  565       current_slice_index = -1;
 
  570       numberOfTimeslicesProcessed           = 0;
 
  571       numberOfIncompleteTimeslicesProcessed = 0;
 
  573       number_of_packets_received  = 0;
 
  574       number_of_packets_discarded = 0;
 
  575       number_of_bytes_received    = 0;
 
  578       minFrameNumber = numeric_limits<int>::max();
 
  579       maxFrameNumber = numeric_limits<int>::min();
 
  585       logErrorRun       .reset();
 
  586       logErrorDetector  .reset();
 
  587       logErrorIndex     .reset();
 
  588       logErrorIncomplete.reset();
 
  609       if (!timeslices.empty()) {
 
  611         JNoticeStream(logger) << 
"Flushing " << timeslices.size() << 
" slices.";
 
  624         timeslices.swap(buffer);
 
  631       current_slice_index = -1;
 
  644     virtual void actionStop(
int length, 
const char* buffer)
 override 
  654       if (serversocket.is_valid()) {
 
  655         serversocket->shutdown();
 
  658       serversocket.reset();
 
  662     virtual void actionQuit(
int length, 
const char* buffer)
 override 
  670       if (serversocket.is_valid()) {
 
  671         mask.
set(*serversocket);
 
  674       for (JChannelList_t::const_iterator channel = channelList.begin(); channel != channelList.end(); ++channel) {      
 
  675         if (!channel->isReady()) {
 
  676           mask.
set(channel->getFileDescriptor());   
 
  686       for (JChannelList_t::iterator channel = channelList.begin(); channel != channelList.end(); ) {
 
  690           if (mask.
has(channel->getFileDescriptor())) {
 
  694           if (channel->isReady()) {
 
  696             number_of_packets_received += 1;
 
  697             number_of_reads            += channel->getCounter();
 
  698             number_of_bytes_received   += channel->size();
 
  702               updateFrameQueue(channel);
 
  706               JErrorStream(logErrorRun) << 
"Receiving data while not running.";
 
  708               number_of_packets_discarded += 1;
 
  716         catch(
const exception& error) {
 
  718           JNoticeStream(logger) << 
"Disconnecting channel " << channel->getFileDescriptor() << 
' ' << error.what(); 
 
  722           channel = channelList.erase(channel);
 
  727       if (serversocket.is_valid()) {
 
  729         if (mask.
has(*serversocket)) {
 
  733           socket.
accept(serversocket->getFileDescriptor());
 
  748       if (!timeslices.empty() && (timeslices.front().size() >=  frames_per_slice ||
 
  749                                   timeslices.size()         >=  maxQueueDepth    ||
 
  756         minFrameNumber      = min(minFrameNumber, pending_slice.
getFrameIndex());
 
  757         maxFrameNumber      = max(maxFrameNumber, pending_slice.
getFrameIndex());
 
  759         if (pending_slice.size() > frames_per_slice) {
 
  761           JErrorStream(logger) << 
"More frames in timeslice than expected " 
  762                                << pending_slice.size() << 
" > " << frames_per_slice;
 
  764           if (pending_slice.size() <= maximum_frames_per_slice) { 
 
  766             JErrorStream(logger) << 
"Adjusting expected frames per timeslice to " << pending_slice.size();
 
  768             frames_per_slice = pending_slice.size();
 
  772         if (!pending_slice.empty()) {
 
  776           processTimeSlice(pending_slice);
 
  780           numberOfTimeslicesProcessed += 1;
 
  784           if (pending_slice.size() < frames_per_slice) {
 
  786             numberOfIncompleteTimeslicesProcessed += 1;
 
  788             JErrorStream(logErrorIncomplete) << 
"Timeout -> processed incomplete timeslice: "  
  790                                              << 
"Size of timeslice = " << pending_slice.size()          << 
';' 
  791                                              << 
"Queue depth = "       << timeslices.size()             << 
';' 
  794             if (!timeslices.empty()) {
 
  796               JErrorStream(logger) << 
"Adjusting expected frames per timeslice from " << frames_per_slice << 
" to " << pending_slice.size();
 
  798               frames_per_slice = pending_slice.size();
 
  803         timeslices.pop_front();
 
  835       if (preamble.getLength() != channel->size()) {
 
  837         JErrorStream(logErrorRun) << 
"Size of received data does not match size reported by preamble: "  
  838                                   << 
"preamble.getLength() = " << preamble.getLength() << 
';' 
  839                                   << 
"channel->size(): "       << channel->size()      << 
';';
 
  841         number_of_packets_discarded += 1;
 
  848         JErrorStream(logErrorRun) << 
"Run number "              << header.getRunNumber()
 
  850                                   << 
" -> Dropping frame.";
 
  852         number_of_packets_discarded += 1;
 
  857       if (header.getFrameIndex() <= current_slice_index) {
 
  859         JErrorStream(logErrorIndex) << 
"Frame index " << header.getFrameIndex() << 
" <= " << current_slice_index
 
  860                                     << 
" -> Dropping frame.";
 
  862         number_of_packets_discarded += 1;
 
  864         if (frames_per_slice < maximum_frames_per_slice) {
 
  868           JErrorStream(logErrorIndex) << 
"Increase number of frames expected to: " << frames_per_slice;
 
  874       if (current_slice_index != -1 && header.getFrameIndex() > current_slice_index + maximal_frame_index) {
 
  876         JErrorStream(logErrorIndex) << 
"Frame index " << header.getFrameIndex() << 
" > " << current_slice_index + maximal_frame_index 
 
  877                                     << 
" -> Dropping frame.";
 
  879         number_of_packets_discarded += 1;
 
  886       while (timesliceIterator != timeslices.end() && timesliceIterator->getFrameIndex() < header.getFrameIndex()) {
 
  890       if (timesliceIterator != timeslices.end() && timesliceIterator->getFrameIndex() == header.getFrameIndex()) {
 
  898         timesliceIterator = timeslices.insert(timesliceIterator, 
JDAQTimesliceL0());
 
  900         timesliceIterator->setDAQChronometer(header.getDAQChronometer());
 
  907       in >> 
static_cast<JDAQFrame&
>(*(timesliceIterator->rbegin()));
 
  924         timesliceRouter->configure(timeslice);
 
  938             c_buffer.is_enabled()) {
 
  947           for (JDAQTimesliceL0::const_iterator frame = timeslice.begin(); frame != timeslice.end(); ++frame) {
 
  949             if (moduleRouter->hasModule(frame->getModuleID())) {
 
  956                                      << 
"module = "      << frame->getModuleID()      << 
";" 
  957                                      << 
"discard" << (dumpCount < dumpLimit ? 
" and dump" : 
"");
 
  959                 timesliceTX.push_back(*frame);
 
  964               const JModule&   module = moduleRouter->getModule(frame->getModuleID()); 
 
  965               JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*frame, module);
 
  981                 if (buffer.begin() != __end) {
 
  984                                                         frame->getModuleIdentifier(),
 
  989                   (*buildL1)(buffer.begin(), __end , back_inserter(zbuf));
 
  991                   (*buildNB)(buffer.begin() , __end, zbuf, back_inserter(*timesliceNB.rbegin()));
 
  998                                                     frame->getModuleIdentifier(),
 
 1001               (*buildL1)(*timesliceL0.rbegin(), back_inserter(*timesliceL1.rbegin()));
 
 1006                                                     frame->getModuleIdentifier(),
 
 1009               (*buildL2)(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceL2.rbegin()));
 
 1014                                                     frame->getModuleIdentifier(),
 
 1017               (*buildSN)(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceSN.rbegin()));
 
 1021               JErrorStream(logErrorDetector) << 
"No detector information for module " << frame->getModuleID(); 
 
 1025           if (!timesliceTX.empty()) {
 
 1027             if (dumpCount < dumpLimit) {
 
 1029               this->put(timesliceTX);
 
 1041             for (JTriggerInput::const_iterator hit = trigger_input.begin(); hit != trigger_input.end(); ++hit) {
 
 1062           (*trigger3DMuon)  (trigger_input, back_inserter(trigger_output));
 
 1063           (*trigger3DShower)(trigger_input, back_inserter(trigger_output));
 
 1064           (*triggerMXShower)(trigger_input, timesliceL0, back_inserter(trigger_output));
 
 1068           for (JTriggerOutput::const_iterator event = trigger_output.begin(); 
event != trigger_output.end(); ++event) {
 
 1072             if (this->put(
object)) {        
 
 1073               numberOfEvents += 1;
 
 1077           if (
parameters.writeL1() || c_buffer.sizeL1 > 0) {
 
 1081             if (
parameters.writeL1)  { this->put(
object);  }
 
 1082             if (c_buffer.sizeL1 > 0) { c_buffer.put(
object); }
 
 1085           if (
parameters.writeL2() || c_buffer.sizeL2 > 0) {
 
 1089             if (
parameters.writeL2)  { this->put(
object); }
 
 1090             if (c_buffer.sizeL2 > 0) { c_buffer.put(
object); }
 
 1093           if (
parameters.writeSN() || c_buffer.sizeSN > 0) {
 
 1097             if (
parameters.writeSN)  { this->put(
object); }
 
 1098             if (c_buffer.sizeSN > 0) { c_buffer.put(
object); }
 
 1101           if (
parameters.writeL0() || c_buffer.sizeL0 > 0) {
 
 1103             if (
parameters.writeL0)  { this->put(timeslice); }
 
 1104             if (c_buffer.sizeL0 > 0) { c_buffer.put(timeslice); }
 
 1108       } 
catch(
const exception& error) {
 
 1110         JErrorStream(logger) << 
"Error = "       << error.what()              << 
";" 
 1113                              << 
"time slice not correctly processed;" 
 1114                              << 
"discard" << (dumpCount < dumpLimit ? 
" and dump" : 
"");
 
 1116         if (dumpCount < dumpLimit) {
 
 1118           this->put(static_cast<const JDAQTimeslice&>(timeslice));
 
 1124       timesliceRouter->reset();
 
 1135       const double T_us = (double) timer.usec_wall;
 
 1137       JStatusStream(logger) << 
"Elapsed real (wall) time [s] "          << T_us / 1e6;
 
 1138       JStatusStream(logger) << 
"Elapsed user CPU time [s] "             << (double) timer.usec_ucpu/ 1e6;
 
 1139       JStatusStream(logger) << 
"Elapsed system CPU time [s] "           << (double) timer.usec_scpu/ 1e6;
 
 1141         JStatusStream(logger) << 
"Elapsed real time per time slice [ms] " << Qt.getMean() * 1.0e-3  << 
" +/- " << Qt.getDeviation() * 1.0e-3;
 
 1143       catch(
const std::exception&) {}
 
 1144       JStatusStream(logger) << 
"Number of packets received/discarded "  << number_of_packets_received << 
"/" << number_of_packets_discarded;
 
 1145       JStatusStream(logger) << 
"Number of events/MB sent "              << numberOfEvents             << 
"/" << numberOfBytes/1e6;
 
 1147       if (number_of_packets_received > 0) {
 
 1148         JStatusStream(logger) << 
"Number of reads/packet " << (double) number_of_reads / (
double) number_of_packets_received;
 
 1152       JStatusStream(logger) << 
"Current number of frames per slice expected: " << frames_per_slice;
 
 1154       JStatusStream(logger) << 
"Number of timeslices processed total/incomplete " << numberOfTimeslicesProcessed << 
"/" << numberOfIncompleteTimeslicesProcessed;
 
 1156       if (numberOfTimeslicesProcessed > 0) {
 
 1157         JStatusStream(logger) << 
"Real time per timeslice [ms] "       << timer.usec_wall / 1000 / numberOfTimeslicesProcessed;
 
 1158         JStatusStream(logger) << 
"User CPU  time per timeslice [ms] "  << timer.usec_ucpu / 1000 / numberOfTimeslicesProcessed;
 
 1159         JStatusStream(logger) << 
"System CPU time per timeslice [ms] " << timer.usec_scpu / 1000 / numberOfTimeslicesProcessed;
 
 1162       const double processedSlicesTime_us   =  numberOfTimeslicesProcessed      * 
getFrameTime() / 1000;
 
 1163       const double processedDetectorTime_us = (maxFrameNumber - minFrameNumber) * 
getFrameTime() / 1000;
 
 1165       if (processedSlicesTime_us   > 0) {
 
 1166         JStatusStream(logger) << 
"Performance factor (inaccurate estimate): "                << T_us / processedSlicesTime_us;
 
 1168       if (processedDetectorTime_us > 0) {
 
 1169         JStatusStream(logger) << 
"Performance factor whole detector (inaccurate estimate): " << T_us / processedDetectorTime_us;
 
 1185       using namespace std;
 
 1187       JDebugStream(logger) << 
"Received message <" << tag.
toString() << 
"> \"" << string(buffer, length) << 
"\"";
 
 1191         if (c_buffer.is_open()) {
 
 1193           JNoticeStream(logger) << 
"Close circular buffer " << c_buffer;
 
 1198         if (c_buffer.is_enabled()) {
 
 1202           if (c_buffer.is_open()) {
 
 1204             JNoticeStream(logger) << 
"Created circular buffer " << c_buffer;
 
 1210             JErrorStream (logger) << 
"Failed to create circular buffer in directory <" << 
path << 
">; disable functionality.";
 
 1224     static const int MAXIMUM_FILE_NUMBER = 100; 
 
 1243         datawriter->put(
object);
 
 1249       catch(
const std::exception& error) {
 
 1346   using namespace std;
 
 1347   using namespace JPP;
 
 1348   using namespace KM3NETDAQ;
 
 1364     JParser<> zap(
"Application for real-time filtering of data.");
 
 1369     zap[
'u'] = 
make_field(client_name)     = 
"JDataFilter";
 
 1379   catch(
const exception& error) {
 
 1380     FATAL(error.what() << endl);
 
virtual void actionRunning() override
This method is repeatedly called when this client machine is in state Running and the clock interval ...
 
Message logger with time scheduler. 
 
Utility class to parse command line options. 
 
void processTimeSlice(const JDAQTimesliceL0 ×lice)
Process time slice. 
 
int getSizeOfPacket(const KM3NETDAQ::JDAQAbstractPreamble &preamble)
Get size of packeet. 
 
void open(const std::string &path, const JTag &tag)
Open file. 
 
bool read(const JEquation &equation)
Read equation. 
 
JTriggerMask_t getTriggerMask(const unsigned int bit)
Convert trigger bit to trigger mask. 
 
int main(int argc, char *argv[])
 
ROOT TTree parameter settings of various packages. 
 
Data structure for a composite optical module. 
 
JSinglePointer< JTriggerNB > triggerNB
 
Router for fast addressing of hits in KM3NETDAQ::JDAQTimeslice data structure as a function of the op...
 
static bool processIndexSorter(const JDAQProcess &first, const JDAQProcess &second)
Sort DAQ process by index. 
 
std::list< JDAQTimesliceL0 > timeslices
buffer with pending time slice data 
 
long long int numberOfTimeslicesProcessed
 
JBuildL2< hit_type > JBuildL2_t
 
Message logging based on std::ostream. 
 
bool has(const int file_descriptor) const 
Has file descriptor. 
 
void set(const int file_descriptor)
Set file descriptor. 
 
JMessageScheduler logErrorIndex
 
JSuperFrame2D< hit_type > JSuperFrame2D_t
 
JSocketInputChannel< JDAQAbstractPreamble > JSocketInputChannel_t
 
Long64_t sizeL1
Number of L1 time slices. 
 
JTag getUniqueTag(const std::string &hostname, const std::string &name)
Get unique tag of run control client. 
 
static const JNET::JTag RC_DFILTER
 
Router for direct addressing of module data in detector data structure. 
 
JDataFilter(const std::string &name, const std::string &server, const std::string &hostname, JLogger *logger, const int level, const int port, const int backlog, const int buffer_size, const std::string &path)
Constructor. 
 
Interface for logging messages. 
 
Message logging based on ControlHost. 
 
then echo Enter input within $TIMEOUT_S seconds echo n User name
 
Utility class to parse parameter values. 
 
JSinglePointer< JServerSocket > serversocket
server for data queue connections 
 
unsigned int maximum_frames_per_slice
 
ROOT TTree object output. 
 
JMessageScheduler logErrorIncomplete
 
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
 
Simple data structure to support I/O of equations (see class JLANG::JEquation). 
 
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
 
static const JNET::JTag IO_TRIGGER_PARAMETERS
 
JTriggerParameters parameters
 
Main class for real-time filtering of data. 
 
void run()
Run as run control client following command messages via JNET::JControlHost. 
 
std::string getFullPath(const std::string &path)
Get full path, i.e. add JEEP::PATHNAME_SEPARATOR if necessary. 
 
Basic data structure for time and time over threshold information of hit. 
 
long long int number_of_packets_discarded
 
int getRunNumber() const 
Get run number. 
 
T * open(const std::string &file_name)
Open file. 
 
Utility class to parse parameter values. 
 
static const JChecksum checksum
Function object to perform check-sum of raw data. 
 
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
 
void disable()
Disable writing. 
 
int getFrameIndex() const 
Get frame index. 
 
JBuildL1< hit_type > JBuildL1_t
 
1-dimensional frame with time calibrated data from one optical module. 
 
JCircularBuffer_t()
Default constructor. 
 
JCircularBuffer_t c_buffer
 
JTimeRange getTimeRange(const Evt &event)
Get time range (i.e. time between earliest and latest hit) of Monte Carlo event. 
 
void typeout()
Report status to message logger. 
 
bool is_enabled() const 
Check whether writing of data is enabled. 
 
Basic data structure for L0 hit. 
 
std::string index
index in process list 
 
JSuperFrame1D< hit_type > JSuperFrame1D_t
 
std::string trim(const std::string &buffer)
Trim string. 
 
JSinglePointer< JBuildL2_t > buildL2
 
int getLength() const 
Get length. 
 
JSinglePointer< JTriggerMXShower > triggerMXShower
 
JSinglePointer< JBuildL1_t > buildL1
 
int getFileDescriptor() const 
Get file descriptor. 
 
long long int totalCPURAM
 
JTimeslice< hit_type > JTimeslice_t
 
JSinglePointer< JTrigger3DShower > trigger3DShower
 
Scheduling of actions via fixed latency intervals. 
 
void accept(const int server)
Accept connection from a server. 
 
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR set_variable DIR $JPP_DIR examples JPhysics set_variable DEBUG set_variable darkcount_Hz set_variable rateL0_Hz set_array rateL1_Hz if do_usage *then usage $script[working directory] fi function typeout()
 
double getMaximalDistance(const JDetector &detector)
Get maximal distance between modules in detector. 
 
I/O formatting auxiliaries. 
 
virtual void actionContinue(int length, const char *buffer) override
 
long long int numberOfBytes
 
Auxiliary class for itemization of process list. 
 
std::vector< JDAQProcess > dataFilters
 
void merge(const JMatch_t &match)
Merge events. 
 
std::vector< JSocketInputChannel_t > JChannelList_t
 
friend std::ostream & operator<<(std::ostream &out, const JCircularBuffer_t &object)
Write circular buffer to output stream. 
 
static const JLocalTime getLocalTime
Function object to get local time in micro seconds. 
 
event< ev_daq > ev_configure
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
double getFrameTime()
Get frame time duration. 
 
do set_variable OUTPUT_DIRECTORY $WORKDIR T
 
int getRunNumber(const std::string &file_name)
Get run number for given file name of data taking run. 
 
JMessageScheduler logErrorDetector
 
static const size_t buffer_size
 
Auxiliary class for method select. 
 
Auxiliary class for CPU timing and usage. 
 
JSinglePointer< JBuildL2_t > buildSN
 
const JDAQChronometer & getDAQChronometer() const 
Get DAQ chronometer. 
 
long long int numberOfIncompleteTimeslicesProcessed
 
Auxiliary class to build JDAQEvent for a triggered event. 
 
void updateFrameQueue(const JChannelList_t::const_iterator channel)
Update queue with data frames. 
 
JTreeWriter object output. 
 
JSinglePointer< JBuildL2_t > buildNB
 
virtual void actionEnter() override
Interface methods for actions corresponding to state transitions. 
 
Level specific message streamers. 
 
long long int number_of_packets_received
 
bool putObject(TDirectory &dir, const TObject &object)
Write object to ROOT directory. 
 
static const long long int MEGABYTE
Number of bytes in a kilo-byte. 
 
const JPosition3D & getPosition() const 
Get position. 
 
Simple data structure for the DAQ preamble required for a correct calculation of the object size for ...
 
virtual void actionQuit(int length, const char *buffer) override
 
$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_DOM<$WORKDIR/ev_configure_domsimulator.txt > RC_DWRT path
 
Long64_t sizeSN
Number of SN time slices. 
 
Auxiliary class for all subscription. 
 
int port
server socket port 
 
static void reset()
Reset counter of unique instance of this class object. 
 
General purpose messaging. 
 
Auxiliary data structure for sequence of same character. 
 
long long int localtime_t
Type definition of local time. 
 
void setReceiveBufferSize(const int size)
Set receive buffer size. 
 
std::string hostname
host name of data server 
 
unsigned int maxQueueDepth
 
JControlHostObjectOutput< JDAQTypes_t > JControlHost_t
 
std::vector< JDAQProcess > dataQueues
 
long long int maxQueueSize
 
virtual void actionStart(int length, const char *buffer) override
 
bool put(const T &object)
Auxiliary method to send object to data server. 
 
std::string toString() const 
Convert tag to string. 
 
std::vector< value_type >::iterator iterator
 
virtual void actionReset(int length, const char *buffer) override
 
virtual void actionExit() override
 
JSinglePointer< JTimesliceRouter > timesliceRouter
 
static const long long int GIGABYTE
Number of bytes in a mega-byte. 
 
Auxiliary class to build JDAQTimeslice for L1 timeslice. 
 
JChannelList_t channelList
connections to data queue 
 
Control unit client base class. 
 
Auxililary class to get date and time. 
 
Utility class to parse command line options. 
 
static const JNET::JTag RC_ALERT
 
Implemenation of object output through ControlHost. 
 
virtual void actionSelect(const JFileDescriptorMask &mask) override
Action method following last select call. 
 
void applyHighRateVeto(const double rate_Hz)
Apply high-rate veto. 
 
std::vector< std::string > getListOfIPaddresses()
Get list of IP address (decimal-dot notation). 
 
unsigned long long int getRAM()
Get RAM of this CPU. 
 
Long64_t sizeL0
Number of L0 time slices. 
 
JSinglePointer< JTrigger3DMuon > trigger3DMuon
 
JSinglePointer< JControlHost_t > datawriter
controlhost of data server (to which data writer should be connected) 
 
void setNonBlocking(const bool on)
Set non-blocking of I/O. 
 
JMessageScheduler logErrorRun
 
virtual bool enter(const JArgs &args)
Enter the state machine. 
 
virtual void actionTagged(const JTag &tag, int length, const char *buffer) override
Tagged action to handle alerts. 
 
JSinglePointer< JModuleRouter > moduleRouter
 
std::string path
directory for writing circular buffer 
 
2-dimensional frame with time calibrated data from one optical module. 
 
JSocketInputChannel< JPrefix_t > JSocketInputChannel_t
 
const char * getName()
Get ROOT name of given data type. 
 
static const JNET::JTag RC_CMD
 
void setKeepAlive(const bool on)
Set keep alive of socket. 
 
long long int number_of_bytes_received
 
virtual void actionStop(int length, const char *buffer) override
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
KM3NeT DAQ constants, bit handling, etc. 
 
virtual void actionInit(int length, const char *buffer) override
 
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY source JAcoustics sh $DETECTOR_ID CHECK_EXIT_CODE typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
 
Match of two events considering overlap in time. 
 
size_t getSizeof(const JDAQEvent &object)
Get size of object. 
 
virtual void actionPause(int length, const char *buffer) override
 
Hostname and IP address functions. 
 
Long64_t sizeL2
Number of L2 time slices. 
 
Data frame of one optical module. 
 
long long int number_of_reads
 
long long int numberOfEvents
 
unsigned int frames_per_slice
 
Timeslice data structure for L0 data. 
 
Basic data structure for L1 hit. 
 
virtual void setSelect(JFileDescriptorMask &mask) const override
Set the file descriptor mask for the select call. 
 
virtual void actionConfigure(int length, const char *buffer) override
 
Time slice with calibrated data.