Jpp
JDataWriter.cc
Go to the documentation of this file.
1 #include <string>
2 #include <iostream>
3 #include <sstream>
4 #include <iomanip>
5 #include <map>
6 
7 #include "Jeep/JParser.hh"
8 #include "Jeep/JProperties.hh"
9 #include "Jeep/JTimer.hh"
10 #include "Jeep/JTimekeeper.hh"
11 #include "Jeep/JPrint.hh"
12 #include "Jeep/JeepToolkit.hh"
13 #include "JNet/JControlHost.hh"
14 #include "JLang/JException.hh"
15 #include "JLang/JSharedPointer.hh"
18 #include "JDAQ/JDAQTags.hh"
19 #include "JDAQ/JDAQEventIO.hh"
20 #include "JDAQ/JDAQTimesliceIO.hh"
25 #include "JIO/JByteArrayIO.hh"
26 #include "JTools/JAutoMap.hh"
27 #include "JSupport/JMeta.hh"
28 #include "JSupport/JSupport.hh"
30 
31 
32 /**
33  * Type definition of auto map.
34  */
36 
37 
38 namespace JSUPPORT {
39 
40  /**
41  * Get key for given DAQ data type.
42  *
43  * \param type data type
44  * \return map element
45  */
46  template<>
47  template<class T>
49  {
50  return getTag<T>();
51  }
52 }
53 
54 
55 namespace KM3NETDAQ {
56 
57  /**
58  * Runcontrol client to write data to disk.
59  * In state running, this application will write ROOT formatted data from the data filters to disk.
60  */
61  class JDataWriter :
62  public JDAQClient
63  {
64  public:
65  /**
66  * Constructor.
67  *
68  * \param name name of client
69  * \param server name of command message server
70  * \param hostname name of data server
71  * \param logger pointer to logger
72  * \param level debug level
73  * \param path default path
74  */
75  JDataWriter(const std::string& name,
76  const std::string& server,
77  const std::string& hostname,
78  JLogger* logger,
79  const int level,
80  const std::string& path) :
81  JDAQClient(name, server, logger, level),
82  datawriter(),
83  path (path),
85  {
87 
88  JControlHost::Throw(true);
89 
90  // map ControlHost tag to TTree writer.
91 
93  }
94 
95 
96  virtual void actionInit(int length, const char* buffer)
97  {
98  using namespace std;
99  using namespace JPP;
100 
101  // start server
102 
103  try {
104 
105  datawriter.reset(new JControlHost(hostname));
106 
108 
109  for (JTreeWriter_t::iterator i = writer.begin(); i != writer.end(); ++i) {
110  buffer.add(JSubscriptionAll(i->first));
111  }
112 
114 
115  datawriter->Subscribe(buffer);
116  datawriter->SendMeAlways();
117 
118  JNoticeStream(logger) << "Established connection to " << hostname;
119  }
120  catch(const JControlHostException& exception) {
121  JErrorStream(logger) << exception;
122  }
123  }
124 
125 
126  virtual void actionConfigure(int length, const char* buffer)
127  {
128  using namespace std;
129 
130  long long int update_s = 10;
131  long long int logger_s = 5;
132 
133  JProperties properties(JEquationParameters("=", ";", "", ""));
134 
135  properties["path"] = path;
136  properties["update_s"] = update_s;
137  properties["logger_s"] = logger_s;
138 
139  properties.read(string(buffer, length));
140 
141  if (update_s <= 0) { update_s = 1; }
142  if (logger_s <= 0) { logger_s = 1; }
143 
144  setClockInterval(update_s * 1000000LL);
145 
146  JDebugStream(logger) << "Path <" << path << ">";
147  JDebugStream(logger) << "Update period [s] " << update_s;
148 
149  logErrorRun = JMessageScheduler(logger, JTimekeeper(logger_s * 1000000LL));
150  logErrorFile = JMessageScheduler(logger, JTimekeeper(logger_s * 1000000LL));
151  logErrorTag = JMessageScheduler(logger, JTimekeeper(logger_s * 1000000LL));
152  logErrorState = JMessageScheduler(logger, JTimekeeper(logger_s * 1000000LL));
153 
154  numberOfEvents = 0;
155  numberOfBytes = 0;
156  }
157 
158 
159  virtual void actionReset(int length, const char* buffer)
160  {
161  datawriter.reset();
162  }
163 
164 
165  virtual void actionQuit(int length, const char* buffer)
166  {}
167 
168 
169  virtual void actionStart(int length, const char* buffer)
170  {
171  using namespace std;
172  using namespace JPP;
173 
174  JNoticeStream(logger) << string(buffer, length);
175 
176  ostringstream os;
177 
178  for (int i = 0; !writer.is_open() && i != MAXIMUM_FILE_NUMBER; ++i) {
179 
180  os.str("");
181 
182  os << getFullPath(path)
183  << "KM3NeT"
184  << "_" << FILL(8,'0') << getDetectorID()
185  << "_" << FILL(8,'0') << getRunNumber();
186 
187  if (i != 0) {
188  os << "_" << i;
189  }
190 
191  os << ".root";
192 
193  try {
194  writer.open(os.str().c_str());
195  }
196  catch(JException& exception) {
197  JErrorStream(logger) << exception;
198  }
199  }
200 
201  if (writer.is_open())
202  JNoticeStream(logger) << "Output file " << os.str();
203  else
204  JErrorStream (logger) << "File not opened " << os.str();
205 
206  numberOfEvents = 0;
207  numberOfBytes = 0;
208 
210 
211  timer.reset();
212 
213  logErrorRun .reset();
214  logErrorFile .reset();
215  logErrorTag .reset();
217 
219  }
220 
221 
222  virtual void actionStop(int length, const char* buffer)
223  {
224  typeout();
225 
226  if (timer.usec_wall > 0) {
227  JNoticeStream(logger) << "I/O " << (int) (numberOfBytes / timer.usec_wall) << " MB/s";
228  }
229 
230  if (!run_db.is_written(getRunNumber())) {
231  JErrorStream(logger) << "No trigger parameters written for run " << getRunNumber();
232  }
233 
234  writer.close();
235 
236  // Release resources.
237 
238  std::vector<char> null;
239 
240  this->buffer.swap(null);
241  }
242 
243 
244  virtual void setSelect(JFileDescriptorMask& mask) const
245  {
246  if (datawriter.is_valid()) {
247  mask.set(*datawriter);
248  }
249  }
250 
251 
252  virtual void actionSelect(const JFileDescriptorMask& mask)
253  {
254  using namespace std;
255  using namespace JPP;
256 
257  if (datawriter.is_valid() && mask.has(*datawriter)) {
258 
259  try {
260 
261  JPrefix prefix;
262 
263  datawriter->WaitHead(prefix);
264 
265  timer.start();
266 
267  buffer.resize(prefix.getSize());
268 
269  datawriter->GetFullData(buffer.data(), buffer.size());
270 
271 
272  if (prefix.getTag() == IO_TRIGGER_PARAMETERS) {
273 
274  const string __str__(buffer.data(), buffer.size());
275 
276  istringstream in(__str__);
277 
278  if (!run_db.read(in)) {
279 
280  JErrorStream(logger) << "Fatal error reading trigger parameters " << __str__;
281 
282  ev_error();
283  }
284  }
285 
286 
287  if (isRunning()) {
288 
289  // Write trigger parameters for current run if not yet done
290 
292 
293  JTreeWriter_t::iterator i = writer.find(prefix.toString());
294 
295  if (i != writer.end()) {
296 
297  TFile* out = i->second->GetCurrentFile();
298 
299  if (out != NULL && out->IsOpen()) {
300 
301  JDAQPreamble preamble;
302  JDAQHeader header;
303 
304  JByteArrayReader in(buffer.data(), buffer.size());
305 
306  in >> preamble >> header;
307 
308  in.seekg(0); // rewind
309 
310  if (header.getRunNumber() == getRunNumber()) {
311 
312  const Int_t nb = i->second->copy(in);
313 
314  if (nb < (int) buffer.size() || in.tellg() != (int) buffer.size()) {
315  JWarningStream(logger) << "Inconsistency at copy of "
316  << prefix.toString() << ' '
317  << buffer.size() << ' '
318  << in.tellg() << ' '
319  << nb;
320  }
321 
322  if (prefix.getTag() == IO_EVENT)
323  numberOfEvents += 1;
324  numberOfBytes += buffer.size();
325 
326  if (prefix.getTag() == IO_EVENT && numberOfEvents == 1) {
327  typeout();
328  }
329 
330  } else {
331  JErrorStream(logErrorRun) << "Inconsistent run number "
332  << header.getRunNumber()
333  << " != "
334  << getRunNumber();
335  }
336  } else {
337  JErrorStream(logErrorFile) << "Output file not open";
338  }
339  } else {
340  if (prefix.getTag() != IO_TRIGGER_PARAMETERS) {
341  JErrorStream(logErrorTag) << "Unknown tag <" << prefix.toString() << ">, no data written";
342  }
343  }
344  } else {
345  JWarningStream(logErrorState) << "Not in running state <" << prefix.toString() << ">, no data written";
346  }
347 
348  timer.stop();
349  }
350  catch(const JControlHostException& exception) {
351  JErrorStream(logger) << exception;
352  }
353  }
354  }
355 
356 
357  virtual void actionRunning()
358  {
359  typeout();
360  }
361 
362 
363  /**
364  * Report status of data writing.
365  */
366  void typeout()
367  {
368  std::ostringstream message;
369 
371 
372  logger.typeout(RC_LOG, message.str());
373  logger.status(message.str());
374  }
375 
376  JMeta meta; //!< meta data
377 
378  static const int MAXIMUM_FILE_NUMBER = 100; //!< maximum file number for overwrite protection.
379 
380  private:
381 
383  std::string path; // directory for output file
384 
385  JEEP::JTimer timer; // timer for I/O measurement
386  Long64_t numberOfEvents; // total number of events
387  long long int numberOfBytes; // total number of bytes
388 
393 
394  std::string hostname; //!< host name of data server
395  JTreeWriter_t writer; //!< TTree writer
396  std::vector<char> buffer; //!< internal buffer for incoming data
397 
398 
399  /**
400  * Auxiliary data structure for I/O of trigger parameters.
401  */
402  struct JValue_t {
403  /**
404  * Default constructor.
405  */
407  count(0),
408  is_written(false)
409  {}
410 
411  JTriggerParameters parameters; //!< trigger parameters
412  int count; //!< reader count
413  bool is_written; //!< writer status
414  };
415 
416 
417  /**
418  * Map run number to trigger parameters.
419  */
420  struct JRunDB :
421  public std::map<int, JValue_t>
422  {
423  /**
424  * Remove all entries before given run.
425  *
426  * \param run run number
427  */
428  inline void reset(const int run)
429  {
430  while (!this->empty() && this->begin()->first < run) {
431  this->erase(this->begin());
432  }
433  }
434 
435  /**
436  * Check if trigger parameters have been written for given run.
437  *
438  * \param run run number
439  * \return true if written; else false.
440  */
441  inline bool is_written(const int run) const
442  {
443  const_iterator p = this->find(run);
444 
445  return p != this->end() && p->second.is_written;
446  }
447 
448  /**
449  * Read trigger parameters.
450  *
451  * \param in input stream
452  * \return true if OK; else not
453  */
454  bool read(std::istream& in)
455  {
456  int run = -1;
457  JTriggerParameters parameters;
458 
459  in >> run >> parameters;
460 
461  in.clear(std::ios::eofbit);
462 
463  if (in && run != -1) {
464 
465  JValue_t& value = (*this)[run];
466 
467  if (value.count == 0) {
468  value.parameters = parameters;
469  }
470 
471  value.count += 1;
472 
473  return parameters.equals(value.parameters);
474  }
475 
476  return false;
477  }
478 
479  /**
480  * Write trigger parameters for given run if not yet done.
481  *
482  * \param run run number
483  * \param file pointer to ROOT file
484  */
485  inline void write(const int run, TFile* file)
486  {
487  if (file != NULL) {
488 
489  iterator p = this->find(run);
490 
491  if (p != this->end() && p->second.count != 0 && !p->second.is_written) {
492 
493  file->WriteTObject(&p->second.parameters);
494 
495  p->second.is_written = true;
496  }
497  }
498  }
499  };
500 
502  };
503 }
504 
505 
506 /**
507  * \file
508  *
509  * Application for writing real-time data to disk.
510  * \author mdejong
511  */
512 int main(int argc, char* argv[])
513 {
514  using namespace std;
515  using namespace JPP;
516  using namespace KM3NETDAQ;
517 
518  string server;
519  string logger;
520  string hostname;
521  string client_name;
522  bool use_cout;
523  string path;
524  int debug;
525 
526  try {
527 
528  JParser<> zap("Application for writing real-time data to disk.");
529 
530  zap['H'] = make_field(server) = "localhost";
531  zap['M'] = make_field(logger) = "localhost";
532  zap['D'] = make_field(hostname) = "localhost";
533  zap['u'] = make_field(client_name) = "%";
534  zap['c'] = make_field(use_cout);
535  zap['p'] = make_field(path) = "";
536  zap['d'] = make_field(debug) = 3;
537 
538  zap(argc, argv);
539  }
540  catch(const exception &error) {
541  FATAL(error.what() << endl);
542  }
543 
544 
545  JLogger* out = NULL;
546 
547  if (use_cout)
548  out = new JStreamLogger(cout);
549  else
550  out = new JControlHostLogger(logger);
551 
552  JDataWriter dwriter(getProcessName(client_name, argv[0]), server, hostname, out, debug, path);
553 
554  dwriter.meta = JMeta(argc, argv);
555 
556  dwriter.enter();
557  dwriter.run();
558 }
JLOGGER::JDebugStream
Level specific message streamers.
Definition: JMessageStream.hh:113
JSUPPORT::JAutoTreeWriter::open
virtual void open(const char *file_name)
Open file.
Definition: JAutoTreeWriter.hh:94
JException.hh
KM3NETDAQ::JDataWriter::datawriter
JLANG::JSharedPointer< JControlHost > datawriter
Definition: JDataWriter.cc:382
JLOGGER::JLogger
Interface for logging messages.
Definition: JLogger.hh:22
JRuncontrolToolkit.hh
JSUPPORT::JAutoTreeWriter< JNET::JTag >
JMeta.hh
JLOGGER::JNoticeStream
Definition: JMessageStream.hh:116
KM3NETDAQ::JDataWriter::JRunDB::read
bool read(std::istream &in)
Read trigger parameters.
Definition: JDataWriter.cc:454
JDAQ.hh
std::iterator
Definition: JSTDTypes.hh:18
JNET::JSubscriptionList
Subscription list.
Definition: JControlHost.hh:130
KM3NETDAQ::JDataWriter::JRunDB::reset
void reset(const int run)
Remove all entries before given run.
Definition: JDataWriter.cc:428
KM3NETDAQ::JDataWriter::JValue_t::JValue_t
JValue_t()
Default constructor.
Definition: JDataWriter.cc:406
JTriggerParameters.hh
JEEP::JTimer::reset
void reset()
Reset timer.
Definition: JTimer.hh:76
KM3NETDAQ::IO_EVENT
static const JNET::JTag IO_EVENT
Definition: JDAQTags.hh:66
KM3NETDAQ::JDataWriter::actionStart
virtual void actionStart(int length, const char *buffer)
Definition: JDataWriter.cc:169
JEEP::JTimer
Auxiliary class for CPU timing and usage.
Definition: JTimer.hh:32
JLANG::JType
Auxiliary class for a type holder.
Definition: JType.hh:19
KM3NETDAQ::JDataWriter::writer
JTreeWriter_t writer
TTree writer.
Definition: JDataWriter.cc:395
KM3NETDAQ::JDataWriter
Runcontrol client to write data to disk.
Definition: JDataWriter.cc:61
JDAQCHSM::getRunNumber
int getRunNumber() const
Get run number.
Definition: JDAQCHSM.hh:111
KM3NETDAQ::JDataWriter::actionSelect
virtual void actionSelect(const JFileDescriptorMask &mask)
Action method following last select call.
Definition: JDataWriter.cc:252
JPrint.hh
JNET::JPrefix
ControlHost prefix.
Definition: JPrefix.hh:31
JLANG::JControlHostException
Exception for ControlHost.
Definition: JException.hh:450
KM3NETDAQ::JDataWriter::actionQuit
virtual void actionQuit(int length, const char *buffer)
Definition: JDataWriter.cc:165
JTRIGGER::JTriggerParameters
Data structure for all trigger parameters.
Definition: JTriggerParameters.hh:116
JLOGGER::JMessageScheduler::reset
void reset()
Reset.
Definition: JMessageScheduler.hh:94
JLOGGER::JMessageLogger::typeout
virtual void typeout(const std::string &tag, const std::string &message)
Report message.
Definition: JMessageLogger.hh:173
KM3NETDAQ::JDataWriter::run_db
JRunDB run_db
Definition: JDataWriter.cc:501
JLOGGER::JErrorStream
Definition: JMessageStream.hh:115
JEEP::JTimer::start
void start()
Start timer.
Definition: JTimer.hh:89
KM3NETDAQ::JDAQHeader
DAQ header.
Definition: JDAQHeader.hh:17
KM3NETDAQ::JDataWriter::actionRunning
virtual void actionRunning()
This method is repeatedly called when this client machine is in state Running and the clock interval ...
Definition: JDataWriter.cc:357
JEEP::JTimer::usec_wall
unsigned long long usec_wall
Definition: JTimer.hh:224
KM3NETDAQ::JDataWriter::actionInit
virtual void actionInit(int length, const char *buffer)
Definition: JDataWriter.cc:96
JTimekeeper.hh
KM3NETDAQ::RC_DWRITER
static const JNET::JTag RC_DWRITER
Definition: JDAQTags.hh:49
KM3NETDAQ::JDAQClient::run
void run()
Run as run control client following command messages via JNET::JControlHost.
Definition: JDAQClient.hh:661
JSharedPointer.hh
JNET::JTag::getTag
const JTag & getTag() const
Get tag.
Definition: JTag.hh:82
std::vector< char >
KM3NETDAQ::JDataWriter::typeout
void typeout()
Report status of data writing.
Definition: JDataWriter.cc:366
JLANG::JFileDescriptorMask::has
bool has(const int file_descriptor) const
Has file descriptor.
Definition: JFileDescriptorMask.hh:216
JPARSER::JParser
Utility class to parse command line options.
Definition: JParser.hh:1493
JEEP::JProperties::read
bool read(const JEquation &equation)
Read equation.
Definition: JProperties.hh:677
KM3NETDAQ::JDAQClient::server
JSharedPointer< JControlHost > server
message server
Definition: JDAQClient.hh:800
KM3NETDAQ::JDataWriter::JValue_t
Auxiliary data structure for I/O of trigger parameters.
Definition: JDataWriter.cc:402
JROOT::putObject
bool putObject(TDirectory *dir, const T &object)
Write object to ROOT directory.
Definition: JRootFileWriter.hh:38
KM3NETDAQ::JDataWriter::JRunDB
Map run number to trigger parameters.
Definition: JDataWriter.cc:420
JLOGGER::JMessageLogger::status
void status(const JMessage_t &message)
Definition: JMessageLogger.hh:186
JIO::JByteArrayReader
Byte array binary input.
Definition: JByteArrayIO.hh:25
JROOT::JRootFile::getFile
TFile * getFile() const
Get file.
Definition: JRootFile.hh:65
JSupport.hh
JPP
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Definition: JAAnetToolkit.hh:37
main
int main(int argc, char *argv[])
Definition: JDataWriter.cc:512
KM3NETDAQ::JDataWriter::actionStop
virtual void actionStop(int length, const char *buffer)
Definition: JDataWriter.cc:222
KM3NETDAQ::JDAQClient::replaceEvent
void replaceEvent(const JTag &oldTag, const JTag &newTag, JDAQEvent_t &event)
Replace tag of given event in event table.
Definition: JDAQClient.hh:492
KM3NETDAQ::JDataWriter::JValue_t::is_written
bool is_written
writer status
Definition: JDataWriter.cc:413
JDAQEventIO.hh
JDAQTimesliceIO.hh
KM3NETDAQ::JDataWriter::JValue_t::parameters
JTriggerParameters parameters
trigger parameters
Definition: JDataWriter.cc:411
debug
int debug
debug level
Definition: JSirene.cc:59
FILL
Auxiliary data structure for sequence of same character.
Definition: JPrint.hh:361
JEEP::getFullPath
std::string getFullPath(const std::string &path)
Get full path, i.e.
Definition: JeepToolkit.hh:126
JSUPPORT::JAutoTreeWriter::close
virtual void close()
Close file.
Definition: JAutoTreeWriter.hh:109
JLOGGER::JWarningStream
Definition: JMessageStream.hh:114
JDAQTags.hh
KM3NETDAQ::JDataWriter::JDataWriter
JDataWriter(const std::string &name, const std::string &server, const std::string &hostname, JLogger *logger, const int level, const std::string &path)
Constructor.
Definition: JDataWriter.cc:75
JLOGGER::JStreamLogger
Message logging based on std::ostream.
Definition: JStreamLogger.hh:22
KM3NETDAQ::JDataWriter::MAXIMUM_FILE_NUMBER
static const int MAXIMUM_FILE_NUMBER
maximum file number for overwrite protection.
Definition: JDataWriter.cc:378
JLANG::JFileDescriptorMask
Auxiliary class for method select.
Definition: JFileDescriptorMask.hh:24
JMessageScheduler.hh
JNET::JControlHost
ControlHost class.
Definition: JControlHost.hh:247
KM3NETDAQ::JDataWriter::numberOfEvents
Long64_t numberOfEvents
Definition: JDataWriter.cc:386
KM3NETDAQ::JDAQClient::isRunning
bool isRunning() const
Check if this client is in runnig state.
Definition: JDAQClient.hh:479
JLANG::JTypeList
Type list.
Definition: JTypeList.hh:22
std::map
Definition: JSTDTypes.hh:16
JLANG::JFileDescriptorMask::set
void set(const int file_descriptor)
Set file descriptor.
Definition: JFileDescriptorMask.hh:154
KM3NETDAQ::JDAQClient
Control unit client base class.
Definition: JDAQClient.hh:272
JLOGGER::JControlHostLogger
Message logging based on ControlHost.
Definition: JControlHostLogger.hh:26
JParser.hh
JLANG::JThrow< JControlHost >::Throw
static void Throw(const bool option)
Enable/disable throw option.
Definition: JThrow.hh:37
JDAQStateMachine::ev_error
JDAQStateMachine::ev_error_event ev_error
KM3NETDAQ::JDataWriter::timer
JEEP::JTimer timer
Definition: JDataWriter.cc:385
JSUPPORT::JAutoTreeWriter< JNET::JTag >::iterator
map_type::iterator iterator
Definition: JAutoTreeWriter.hh:41
JDAQCHSM::getDetectorID
int getDetectorID() const
Get detector identifier.
Definition: JDAQCHSM.hh:100
KM3NETDAQ::IO_TRIGGER_PARAMETERS
static const JNET::JTag IO_TRIGGER_PARAMETERS
Definition: JDAQTags.hh:68
KM3NETDAQ::JDataWriter::actionConfigure
virtual void actionConfigure(int length, const char *buffer)
Definition: JDataWriter.cc:126
KM3NETDAQ::JDAQClient::logger
JMessageLogger logger
message logger
Definition: JDAQClient.hh:801
JByteArrayIO.hh
JLANG::JEquationParameters
Simple data structure to support I/O of equations (see class JLANG::JEquation).
Definition: JEquationParameters.hh:20
KM3NETDAQ::RC_LOG
static const JNET::JTag RC_LOG
Definition: JDAQTags.hh:50
KM3NETDAQ::JDataWriter::path
std::string path
Definition: JDataWriter.cc:383
make_field
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1954
JControlHost.hh
KM3NETDAQ::JDAQClient_t::getFullName
const std::string & getFullName() const
Get full name of this run control client.
Definition: JDAQClient.hh:119
JSUPPORT::JAutoTreeWriter::getKey
static JKey_t getKey(JType< T > type)
Get key.
KM3NETDAQ::JDataWriter::JRunDB::is_written
bool is_written(const int run) const
Check if trigger parameters have been written for given run.
Definition: JDataWriter.cc:441
JEEP::JProperties
Utility class to parse parameter values.
Definition: JProperties.hh:496
JDAQStateMachine::ev_configure
JDAQStateMachine::ev_configure_event ev_configure
JSUPPORT::JMeta
Auxiliary class for ROOT I/O of application specific meta data.
Definition: JMeta.hh:71
KM3NETDAQ::JDataWriter::JValue_t::count
int count
reader count
Definition: JDataWriter.cc:412
JAutoTreeWriter.hh
std
Definition: jaanetDictionary.h:36
JEEP::JTimekeeper
Time keeper.
Definition: JTimekeeper.hh:34
JSUPPORT
Support classes and methods for experiment specific I/O.
Definition: JDataWriter.cc:38
KM3NETDAQ
KM3NeT DAQ data structures and auxiliaries.
Definition: DataQueue.cc:39
JeepToolkit.hh
KM3NETDAQ::JDataWriter::logErrorState
JMessageScheduler logErrorState
Definition: JDataWriter.cc:392
KM3NETDAQ::RC_CMD
static const JNET::JTag RC_CMD
Definition: JDAQTags.hh:44
JEEP::JTimer::stop
void stop()
Stop timer.
Definition: JTimer.hh:113
JDAQSummarysliceIO.hh
JTimer.hh
KM3NETDAQ::JDataWriter::meta
JMeta meta
meta data
Definition: JDataWriter.cc:376
JProperties.hh
KM3NETDAQ::JDAQClient_t::setClockInterval
void setClockInterval(const long long int interval_us)
Set interval time.
Definition: JDAQClient.hh:164
KM3NETDAQ::JDataWriter::actionReset
virtual void actionReset(int length, const char *buffer)
Definition: JDataWriter.cc:159
KM3NETDAQ::JDataWriter::numberOfBytes
long long int numberOfBytes
Definition: JDataWriter.cc:387
KM3NETDAQ::JDataWriter::logErrorFile
JMessageScheduler logErrorFile
Definition: JDataWriter.cc:390
KM3NETDAQ::JDataWriter::JRunDB::write
void write(const int run, TFile *file)
Write trigger parameters for given run if not yet done.
Definition: JDataWriter.cc:485
KM3NETDAQ::getTokenDelimeter
char getTokenDelimeter()
Get the token delimeter for command messages.
Definition: JRuncontrolToolkit.hh:56
KM3NETDAQ::JDataWriter::buffer
std::vector< char > buffer
internal buffer for incoming data
Definition: JDataWriter.cc:396
JNET::JTag::toString
std::string toString() const
Convert tag to string.
Definition: JTag.hh:167
KM3NETDAQ::JDataWriter::logErrorRun
JMessageScheduler logErrorRun
Definition: JDataWriter.cc:389
JSUPPORT::JAutoTreeWriter::insert
void insert()
Insert (list of) data type(s).
Definition: JAutoTreeWriter.hh:83
FATAL
#define FATAL(A)
Definition: JMessage.hh:67
JTreeWriter_t
JSUPPORT::JAutoTreeWriter< JNET::JTag > JTreeWriter_t
Type definition of auto map.
Definition: JDataWriter.cc:35
JLOGGER::JMessageScheduler
Message logger with time scheduler.
Definition: JMessageScheduler.hh:25
JNET::JPrefix::getSize
int getSize() const
Get size.
Definition: JPrefix.hh:62
JROOT::JRootFile::is_open
virtual bool is_open() const
Check is file is open.
Definition: JRootFile.hh:76
KM3NETDAQ::getProcessName
std::string getProcessName(const std::string &name, const std::string &process)
Get process name of run control client.
Definition: JRuncontrolToolkit.hh:194
JLANG::JException
General exception.
Definition: JException.hh:23
KM3NETDAQ::JDAQClient::enter
virtual bool enter(const JArgs &args)
Enter the state machine.
Definition: JDAQClient.hh:363
JDAQCHSM::name
std::string name
Definition: JDAQCHSM.hh:165
KM3NETDAQ::JDAQPreamble
DAQ preamble.
Definition: JDAQPreamble.hh:26
JLANG::JSharedPointer
The template JSharedPointer class can be used to share a pointer to an object.
Definition: JSharedPointer.hh:28
KM3NETDAQ::JDataWriter::setSelect
virtual void setSelect(JFileDescriptorMask &mask) const
Set the file descriptor mask for the select call.
Definition: JDataWriter.cc:244
JNET::JSubscriptionAll
Auxiliary class for all subscription.
Definition: JControlHost.hh:96
KM3NETDAQ::JDataWriter::logErrorTag
JMessageScheduler logErrorTag
Definition: JDataWriter.cc:391
KM3NETDAQ::JDataWriter::hostname
std::string hostname
host name of data server
Definition: JDataWriter.cc:394
JAutoMap.hh
JDAQClient.hh