3#define R__DICTIONARY_FILENAME G__KM3NeTROOT 
    4#define R__NO_DEPRECATION 
   13#include "ROOT/RConfig.hxx" 
   15#include "TDictAttributeMap.h" 
   16#include "TInterpreter.h" 
   19#include "TMemberInspector.h" 
   20#include "TInterpreter.h" 
   21#include "TVirtualMutex.h" 
   30#include "TFileMergeInfo.h" 
   32#include "TCollectionProxyInfo.h" 
   35#include "TDataMember.h" 
   38#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQ.hh" 
   39#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQAbstractPreamble.hh" 
   40#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQChronometer.hh" 
   41#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQClock.hh" 
   42#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQDataTypes.hh" 
   43#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQEvent.hh" 
   44#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQEventHeader.hh" 
   45#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQException.hh" 
   46#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQFrame.hh" 
   47#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQFrameStatus.hh" 
   48#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQHeader.hh" 
   49#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQHit.hh" 
   50#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQKeyHit.hh" 
   51#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQModuleIdentifier.hh" 
   52#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQPMTIdentifier.hh" 
   53#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQPreamble.hh" 
   54#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQPrint.hh" 
   55#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQRoot.hh" 
   56#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQSummaryFrame.hh" 
   57#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQSummaryslice.hh" 
   58#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQSummarysliceHeader.hh" 
   59#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQSuperFrame.hh" 
   60#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQSuperFrameHeader.hh" 
   61#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQTimeslice.hh" 
   62#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQTimesliceHeader.hh" 
   63#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQTriggerCounter.hh" 
   64#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQTriggerMask.hh" 
   65#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQTriggeredHit.hh" 
   66#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/online/JDAQUTCExtended.hh" 
   67#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/offline/AAObject.hh" 
   68#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/offline/Evt.hh" 
   69#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/offline/Exception.hh" 
   70#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/offline/Head.hh" 
   71#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/offline/Hit.hh" 
   72#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/offline/MultiHead.hh" 
   73#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/offline/Trk.hh" 
   74#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/offline/Vec.hh" 
   75#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/offline/io_ascii.hh" 
   76#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/offline/io_online.hh" 
   77#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/tools/multiplicity.hh" 
   78#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/tools/reconstruction.hh" 
   79#include "/builds/common/jpp/externals/km3net-dataformat/build/km3net-dataformat/tools/time_converter.hh" 
   84namespace std {} 
using namespace std;
 
   98      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQAbstractPreamble >(
nullptr);
 
   99      static ::ROOT::TGenericClassInfo 
 
  100         instance(
"KM3NETDAQ::JDAQAbstractPreamble", ::KM3NETDAQ::JDAQAbstractPreamble::Class_Version(), 
"", 306,
 
  102                  &::KM3NETDAQ::JDAQAbstractPreamble::Dictionary, isa_proxy, 17,
 
 
 
  131      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQUTCExtended >(
nullptr);
 
  132      static ::ROOT::TGenericClassInfo 
 
  133         instance(
"KM3NETDAQ::JDAQUTCExtended", ::KM3NETDAQ::JDAQUTCExtended::Class_Version(), 
"km3net-dataformat/online/JDAQUTCExtended.hh", 22,
 
  135                  &::KM3NETDAQ::JDAQUTCExtended::Dictionary, isa_proxy, 4,
 
 
  163      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQChronometer >(
nullptr);
 
  164      static ::ROOT::TGenericClassInfo 
 
  165         instance(
"KM3NETDAQ::JDAQChronometer", ::KM3NETDAQ::JDAQChronometer::Class_Version(), 
"", 381,
 
  167                  &::KM3NETDAQ::JDAQChronometer::Dictionary, isa_proxy, 4,
 
 
  196      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQPreamble >(
nullptr);
 
  197      static ::ROOT::TGenericClassInfo 
 
  198         instance(
"KM3NETDAQ::JDAQPreamble", ::KM3NETDAQ::JDAQPreamble::Class_Version(), 
"km3net-dataformat/online/JDAQPreamble.hh", 26,
 
  200                  &::KM3NETDAQ::JDAQPreamble::Dictionary, isa_proxy, 17,
 
 
  229      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQHeader >(
nullptr);
 
  230      static ::ROOT::TGenericClassInfo 
 
  231         instance(
"KM3NETDAQ::JDAQHeader", ::KM3NETDAQ::JDAQHeader::Class_Version(), 
"km3net-dataformat/online/JDAQHeader.hh", 17,
 
  233                  &::KM3NETDAQ::JDAQHeader::Dictionary, isa_proxy, 4,
 
 
  261      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQTriggerCounter >(
nullptr);
 
  262      static ::ROOT::TGenericClassInfo 
 
  263         instance(
"KM3NETDAQ::JDAQTriggerCounter", ::KM3NETDAQ::JDAQTriggerCounter::Class_Version(), 
"km3net-dataformat/online/JDAQTriggerCounter.hh", 23,
 
  265                  &::KM3NETDAQ::JDAQTriggerCounter::Dictionary, isa_proxy, 4,
 
 
  293      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQTriggerMask >(
nullptr);
 
  294      static ::ROOT::TGenericClassInfo 
 
  295         instance(
"KM3NETDAQ::JDAQTriggerMask", ::KM3NETDAQ::JDAQTriggerMask::Class_Version(), 
"km3net-dataformat/online/JDAQTriggerMask.hh", 48,
 
  297                  &::KM3NETDAQ::JDAQTriggerMask::Dictionary, isa_proxy, 4,
 
 
  325      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQEventHeader >(
nullptr);
 
  326      static ::ROOT::TGenericClassInfo 
 
  327         instance(
"KM3NETDAQ::JDAQEventHeader", ::KM3NETDAQ::JDAQEventHeader::Class_Version(), 
"km3net-dataformat/online/JDAQEventHeader.hh", 19,
 
  329                  &::KM3NETDAQ::JDAQEventHeader::Dictionary, isa_proxy, 4,
 
 
  358      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQHit >(
nullptr);
 
  359      static ::ROOT::TGenericClassInfo 
 
  360         instance(
"KM3NETDAQ::JDAQHit", ::KM3NETDAQ::JDAQHit::Class_Version(), 
"km3net-dataformat/online/JDAQHit.hh", 34,
 
  362                  &::KM3NETDAQ::JDAQHit::Dictionary, isa_proxy, 17,
 
 
  392      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQModuleIdentifier >(
nullptr);
 
  393      static ::ROOT::TGenericClassInfo 
 
  394         instance(
"KM3NETDAQ::JDAQModuleIdentifier", ::KM3NETDAQ::JDAQModuleIdentifier::Class_Version(), 
"km3net-dataformat/online/JDAQModuleIdentifier.hh", 19,
 
  396                  &::KM3NETDAQ::JDAQModuleIdentifier::Dictionary, isa_proxy, 17,
 
 
  426      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQPMTIdentifier >(
nullptr);
 
  427      static ::ROOT::TGenericClassInfo 
 
  428         instance(
"KM3NETDAQ::JDAQPMTIdentifier", ::KM3NETDAQ::JDAQPMTIdentifier::Class_Version(), 
"km3net-dataformat/online/JDAQPMTIdentifier.hh", 20,
 
  430                  &::KM3NETDAQ::JDAQPMTIdentifier::Dictionary, isa_proxy, 17,
 
 
  460      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQKeyHit >(
nullptr);
 
  461      static ::ROOT::TGenericClassInfo 
 
  462         instance(
"KM3NETDAQ::JDAQKeyHit", ::KM3NETDAQ::JDAQKeyHit::Class_Version(), 
"km3net-dataformat/online/JDAQKeyHit.hh", 19,
 
  464                  &::KM3NETDAQ::JDAQKeyHit::Dictionary, isa_proxy, 17,
 
 
  494      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQTriggeredHit >(
nullptr);
 
  495      static ::ROOT::TGenericClassInfo 
 
  496         instance(
"KM3NETDAQ::JDAQTriggeredHit", ::KM3NETDAQ::JDAQTriggeredHit::Class_Version(), 
"km3net-dataformat/online/JDAQTriggeredHit.hh", 20,
 
  498                  &::KM3NETDAQ::JDAQTriggeredHit::Dictionary, isa_proxy, 17,
 
 
  527      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQEvent >(
nullptr);
 
  528      static ::ROOT::TGenericClassInfo 
 
  529         instance(
"KM3NETDAQ::JDAQEvent", ::KM3NETDAQ::JDAQEvent::Class_Version(), 
"", 1059,
 
  531                  &::KM3NETDAQ::JDAQEvent::Dictionary, isa_proxy, 4,
 
 
  559      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQFrame >(
nullptr);
 
  560      static ::ROOT::TGenericClassInfo 
 
  561         instance(
"KM3NETDAQ::JDAQFrame", ::KM3NETDAQ::JDAQFrame::Class_Version(), 
"", 1595,
 
  563                  &::KM3NETDAQ::JDAQFrame::Dictionary, isa_proxy, 4,
 
 
  591      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQFrameStatus >(
nullptr);
 
  592      static ::ROOT::TGenericClassInfo 
 
  593         instance(
"KM3NETDAQ::JDAQFrameStatus", ::KM3NETDAQ::JDAQFrameStatus::Class_Version(), 
"", 1883,
 
  595                  &::KM3NETDAQ::JDAQFrameStatus::Dictionary, isa_proxy, 4,
 
 
  623      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQSuperFrameHeader >(
nullptr);
 
  624      static ::ROOT::TGenericClassInfo 
 
  625         instance(
"KM3NETDAQ::JDAQSuperFrameHeader", ::KM3NETDAQ::JDAQSuperFrameHeader::Class_Version(), 
"km3net-dataformat/online/JDAQSuperFrameHeader.hh", 19,
 
  627                  &::KM3NETDAQ::JDAQSuperFrameHeader::Dictionary, isa_proxy, 4,
 
 
  655      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQSuperFrame >(
nullptr);
 
  656      static ::ROOT::TGenericClassInfo 
 
  657         instance(
"KM3NETDAQ::JDAQSuperFrame", ::KM3NETDAQ::JDAQSuperFrame::Class_Version(), 
"km3net-dataformat/online/JDAQSuperFrame.hh", 22,
 
  659                  &::KM3NETDAQ::JDAQSuperFrame::Dictionary, isa_proxy, 4,
 
 
  690      static ::ROOT::TGenericClassInfo 
 
  691         instance(
"KM3NETDAQ::JDAQRate", 
"", 3317,
 
 
  733      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQSummaryFrame >(
nullptr);
 
  734      static ::ROOT::TGenericClassInfo 
 
  735         instance(
"KM3NETDAQ::JDAQSummaryFrame", ::KM3NETDAQ::JDAQSummaryFrame::Class_Version(), 
"", 3613,
 
  737                  &::KM3NETDAQ::JDAQSummaryFrame::Dictionary, isa_proxy, 17,
 
 
  766      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQSummarysliceHeader >(
nullptr);
 
  767      static ::ROOT::TGenericClassInfo 
 
  768         instance(
"KM3NETDAQ::JDAQSummarysliceHeader", ::KM3NETDAQ::JDAQSummarysliceHeader::Class_Version(), 
"km3net-dataformat/online/JDAQSummarysliceHeader.hh", 17,
 
  770                  &::KM3NETDAQ::JDAQSummarysliceHeader::Dictionary, isa_proxy, 4,
 
 
  798      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQTimesliceHeader >(
nullptr);
 
  799      static ::ROOT::TGenericClassInfo 
 
  800         instance(
"KM3NETDAQ::JDAQTimesliceHeader", ::KM3NETDAQ::JDAQTimesliceHeader::Class_Version(), 
"km3net-dataformat/online/JDAQTimesliceHeader.hh", 16,
 
  802                  &::KM3NETDAQ::JDAQTimesliceHeader::Dictionary, isa_proxy, 4,
 
 
  830      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQTimeslice >(
nullptr);
 
  831      static ::ROOT::TGenericClassInfo 
 
  832         instance(
"KM3NETDAQ::JDAQTimeslice", ::KM3NETDAQ::JDAQTimeslice::Class_Version(), 
"km3net-dataformat/online/JDAQTimeslice.hh", 30,
 
  834                  &::KM3NETDAQ::JDAQTimeslice::Dictionary, isa_proxy, 4,
 
 
  862      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQTimesliceL0 >(
nullptr);
 
  863      static ::ROOT::TGenericClassInfo 
 
  864         instance(
"KM3NETDAQ::JDAQTimesliceL0", ::KM3NETDAQ::JDAQTimesliceL0::Class_Version(), 
"km3net-dataformat/online/JDAQTimeslice.hh", 259,
 
  866                  &::KM3NETDAQ::JDAQTimesliceL0::Dictionary, isa_proxy, 4,
 
 
  894      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQTimesliceL1 >(
nullptr);
 
  895      static ::ROOT::TGenericClassInfo 
 
  896         instance(
"KM3NETDAQ::JDAQTimesliceL1", ::KM3NETDAQ::JDAQTimesliceL1::Class_Version(), 
"km3net-dataformat/online/JDAQTimeslice.hh", 265,
 
  898                  &::KM3NETDAQ::JDAQTimesliceL1::Dictionary, isa_proxy, 4,
 
 
  926      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQTimesliceL2 >(
nullptr);
 
  927      static ::ROOT::TGenericClassInfo 
 
  928         instance(
"KM3NETDAQ::JDAQTimesliceL2", ::KM3NETDAQ::JDAQTimesliceL2::Class_Version(), 
"km3net-dataformat/online/JDAQTimeslice.hh", 271,
 
  930                  &::KM3NETDAQ::JDAQTimesliceL2::Dictionary, isa_proxy, 4,
 
 
  958      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQTimesliceSN >(
nullptr);
 
  959      static ::ROOT::TGenericClassInfo 
 
  960         instance(
"KM3NETDAQ::JDAQTimesliceSN", ::KM3NETDAQ::JDAQTimesliceSN::Class_Version(), 
"km3net-dataformat/online/JDAQTimeslice.hh", 277,
 
  962                  &::KM3NETDAQ::JDAQTimesliceSN::Dictionary, isa_proxy, 4,
 
 
  990      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::KM3NETDAQ::JDAQSummaryslice >(
nullptr);
 
  991      static ::ROOT::TGenericClassInfo 
 
  992         instance(
"KM3NETDAQ::JDAQSummaryslice", ::KM3NETDAQ::JDAQSummaryslice::Class_Version(), 
"", 3860,
 
  994                  &::KM3NETDAQ::JDAQSummaryslice::Dictionary, isa_proxy, 4,
 
 
 1022      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::AAObject >(
nullptr);
 
 1023      static ::ROOT::TGenericClassInfo 
 
 1024         instance(
"AAObject", ::AAObject::Class_Version(), 
"", 5696,
 
 1025                  typeid(
::AAObject), ::ROOT::Internal::DefineBehavior(ptr, ptr),
 
 1026                  &::AAObject::Dictionary, isa_proxy, 4,
 
 
 1044   static void *
new_Vec(
void *p = 
nullptr);
 
 1053      ::Vec *ptr = 
nullptr;
 
 1054      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::Vec >(
nullptr);
 
 1055      static ::ROOT::TGenericClassInfo 
 
 1056         instance(
"Vec", ::Vec::Class_Version(), 
"km3net-dataformat/offline/Vec.hh", 12,
 
 1057                  typeid(
::Vec), ::ROOT::Internal::DefineBehavior(ptr, ptr),
 
 1058                  &::Vec::Dictionary, isa_proxy, 4,
 
 
 1076   static void *
new_Hit(
void *p = 
nullptr);
 
 1085      ::Hit *ptr = 
nullptr;
 
 1086      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::Hit >(
nullptr);
 
 1087      static ::ROOT::TGenericClassInfo 
 
 1088         instance(
"Hit", ::Hit::Class_Version(), 
"km3net-dataformat/offline/Hit.hh", 8,
 
 1089                  typeid(
::Hit), ::ROOT::Internal::DefineBehavior(ptr, ptr),
 
 1090                  &::Hit::Dictionary, isa_proxy, 4,
 
 
 1108   static void *
new_Trk(
void *p = 
nullptr);
 
 1117      ::Trk *ptr = 
nullptr;
 
 1118      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::Trk >(
nullptr);
 
 1119      static ::ROOT::TGenericClassInfo 
 
 1120         instance(
"Trk", ::Trk::Class_Version(), 
"km3net-dataformat/offline/Trk.hh", 14,
 
 1121                  typeid(
::Trk), ::ROOT::Internal::DefineBehavior(ptr, ptr),
 
 1122                  &::Trk::Dictionary, isa_proxy, 4,
 
 
 1140   static void *
new_Evt(
void *p = 
nullptr);
 
 1149      ::Evt *ptr = 
nullptr;
 
 1150      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::Evt >(
nullptr);
 
 1151      static ::ROOT::TGenericClassInfo 
 
 1152         instance(
"Evt", ::Evt::Class_Version(), 
"", 5875,
 
 1153                  typeid(
::Evt), ::ROOT::Internal::DefineBehavior(ptr, ptr),
 
 1154                  &::Evt::Dictionary, isa_proxy, 4,
 
 
 1172   static void *
new_Head(
void *p = 
nullptr);
 
 1182      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::Head >(
nullptr);
 
 1183      static ::ROOT::TGenericClassInfo 
 
 1184         instance(
"Head", ::Head::Class_Version(), 
"", 6287,
 
 1185                  typeid(
::Head), ::ROOT::Internal::DefineBehavior(ptr, ptr),
 
 1186                  &::Head::Dictionary, isa_proxy, 4,
 
 
 1214      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::MultiHead >(
nullptr);
 
 1215      static ::ROOT::TGenericClassInfo 
 
 1216         instance(
"MultiHead", ::MultiHead::Class_Version(), 
"", 6761,
 
 1217                  typeid(
::MultiHead), ::ROOT::Internal::DefineBehavior(ptr, ptr),
 
 1218                  &::MultiHead::Dictionary, isa_proxy, 4,
 
 
 1237atomic_TClass_ptr JDAQAbstractPreamble::fgIsA(
nullptr);  
 
 1240const char *JDAQAbstractPreamble::Class_Name()
 
 1242   return "KM3NETDAQ::JDAQAbstractPreamble";
 
 1246const char *JDAQAbstractPreamble::ImplFileName()
 
 1248   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQAbstractPreamble*)
nullptr)->GetImplFileName();
 
 1252int JDAQAbstractPreamble::ImplFileLine()
 
 1254   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQAbstractPreamble*)
nullptr)->GetImplFileLine();
 
 1258TClass *JDAQAbstractPreamble::Dictionary()
 
 1265TClass *JDAQAbstractPreamble::Class()
 
 1267   if (!fgIsA.load()) { R__LOCKGUARD(gInterpreterMutex); fgIsA = 
::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQAbstractPreamble*)
nullptr)->GetClass(); }
 
 1274atomic_TClass_ptr JDAQUTCExtended::fgIsA(
nullptr);  
 
 1277const char *JDAQUTCExtended::Class_Name()
 
 1279   return "KM3NETDAQ::JDAQUTCExtended";
 
 1283const char *JDAQUTCExtended::ImplFileName()
 
 1285   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQUTCExtended*)
nullptr)->GetImplFileName();
 
 1289int JDAQUTCExtended::ImplFileLine()
 
 1291   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQUTCExtended*)
nullptr)->GetImplFileLine();
 
 1295TClass *JDAQUTCExtended::Dictionary()
 
 1302TClass *JDAQUTCExtended::Class()
 
 1311atomic_TClass_ptr JDAQChronometer::fgIsA(
nullptr);  
 
 1314const char *JDAQChronometer::Class_Name()
 
 1316   return "KM3NETDAQ::JDAQChronometer";
 
 1320const char *JDAQChronometer::ImplFileName()
 
 1322   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQChronometer*)
nullptr)->GetImplFileName();
 
 1326int JDAQChronometer::ImplFileLine()
 
 1328   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQChronometer*)
nullptr)->GetImplFileLine();
 
 1332TClass *JDAQChronometer::Dictionary()
 
 1339TClass *JDAQChronometer::Class()
 
 1348atomic_TClass_ptr JDAQPreamble::fgIsA(
nullptr);  
 
 1351const char *JDAQPreamble::Class_Name()
 
 1353   return "KM3NETDAQ::JDAQPreamble";
 
 1357const char *JDAQPreamble::ImplFileName()
 
 1359   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQPreamble*)
nullptr)->GetImplFileName();
 
 1363int JDAQPreamble::ImplFileLine()
 
 1365   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQPreamble*)
nullptr)->GetImplFileLine();
 
 1369TClass *JDAQPreamble::Dictionary()
 
 1376TClass *JDAQPreamble::Class()
 
 1385atomic_TClass_ptr JDAQHeader::fgIsA(
nullptr);  
 
 1388const char *JDAQHeader::Class_Name()
 
 1390   return "KM3NETDAQ::JDAQHeader";
 
 1394const char *JDAQHeader::ImplFileName()
 
 1396   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQHeader*)
nullptr)->GetImplFileName();
 
 1400int JDAQHeader::ImplFileLine()
 
 1402   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQHeader*)
nullptr)->GetImplFileLine();
 
 1406TClass *JDAQHeader::Dictionary()
 
 1413TClass *JDAQHeader::Class()
 
 1422atomic_TClass_ptr JDAQTriggerCounter::fgIsA(
nullptr);  
 
 1425const char *JDAQTriggerCounter::Class_Name()
 
 1427   return "KM3NETDAQ::JDAQTriggerCounter";
 
 1431const char *JDAQTriggerCounter::ImplFileName()
 
 1433   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQTriggerCounter*)
nullptr)->GetImplFileName();
 
 1437int JDAQTriggerCounter::ImplFileLine()
 
 1439   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQTriggerCounter*)
nullptr)->GetImplFileLine();
 
 1443TClass *JDAQTriggerCounter::Dictionary()
 
 1450TClass *JDAQTriggerCounter::Class()
 
 1459atomic_TClass_ptr JDAQTriggerMask::fgIsA(
nullptr);  
 
 1462const char *JDAQTriggerMask::Class_Name()
 
 1464   return "KM3NETDAQ::JDAQTriggerMask";
 
 1468const char *JDAQTriggerMask::ImplFileName()
 
 1470   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQTriggerMask*)
nullptr)->GetImplFileName();
 
 1474int JDAQTriggerMask::ImplFileLine()
 
 1476   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQTriggerMask*)
nullptr)->GetImplFileLine();
 
 1480TClass *JDAQTriggerMask::Dictionary()
 
 1487TClass *JDAQTriggerMask::Class()
 
 1496atomic_TClass_ptr JDAQEventHeader::fgIsA(
nullptr);  
 
 1499const char *JDAQEventHeader::Class_Name()
 
 1501   return "KM3NETDAQ::JDAQEventHeader";
 
 1505const char *JDAQEventHeader::ImplFileName()
 
 1507   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQEventHeader*)
nullptr)->GetImplFileName();
 
 1511int JDAQEventHeader::ImplFileLine()
 
 1513   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQEventHeader*)
nullptr)->GetImplFileLine();
 
 1517TClass *JDAQEventHeader::Dictionary()
 
 1524TClass *JDAQEventHeader::Class()
 
 1533atomic_TClass_ptr JDAQHit::fgIsA(
nullptr);  
 
 1536const char *JDAQHit::Class_Name()
 
 1538   return "KM3NETDAQ::JDAQHit";
 
 1542const char *JDAQHit::ImplFileName()
 
 1544   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQHit*)
nullptr)->GetImplFileName();
 
 1548int JDAQHit::ImplFileLine()
 
 1550   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQHit*)
nullptr)->GetImplFileLine();
 
 1554TClass *JDAQHit::Dictionary()
 
 1561TClass *JDAQHit::Class()
 
 1570atomic_TClass_ptr JDAQModuleIdentifier::fgIsA(
nullptr);  
 
 1573const char *JDAQModuleIdentifier::Class_Name()
 
 1575   return "KM3NETDAQ::JDAQModuleIdentifier";
 
 1579const char *JDAQModuleIdentifier::ImplFileName()
 
 1581   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQModuleIdentifier*)
nullptr)->GetImplFileName();
 
 1585int JDAQModuleIdentifier::ImplFileLine()
 
 1587   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQModuleIdentifier*)
nullptr)->GetImplFileLine();
 
 1591TClass *JDAQModuleIdentifier::Dictionary()
 
 1598TClass *JDAQModuleIdentifier::Class()
 
 1600   if (!fgIsA.load()) { R__LOCKGUARD(gInterpreterMutex); fgIsA = 
::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQModuleIdentifier*)
nullptr)->GetClass(); }
 
 1607atomic_TClass_ptr JDAQPMTIdentifier::fgIsA(
nullptr);  
 
 1610const char *JDAQPMTIdentifier::Class_Name()
 
 1612   return "KM3NETDAQ::JDAQPMTIdentifier";
 
 1616const char *JDAQPMTIdentifier::ImplFileName()
 
 1618   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQPMTIdentifier*)
nullptr)->GetImplFileName();
 
 1622int JDAQPMTIdentifier::ImplFileLine()
 
 1624   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQPMTIdentifier*)
nullptr)->GetImplFileLine();
 
 1628TClass *JDAQPMTIdentifier::Dictionary()
 
 1635TClass *JDAQPMTIdentifier::Class()
 
 1644atomic_TClass_ptr JDAQKeyHit::fgIsA(
nullptr);  
 
 1647const char *JDAQKeyHit::Class_Name()
 
 1649   return "KM3NETDAQ::JDAQKeyHit";
 
 1653const char *JDAQKeyHit::ImplFileName()
 
 1655   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQKeyHit*)
nullptr)->GetImplFileName();
 
 1659int JDAQKeyHit::ImplFileLine()
 
 1661   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQKeyHit*)
nullptr)->GetImplFileLine();
 
 1665TClass *JDAQKeyHit::Dictionary()
 
 1672TClass *JDAQKeyHit::Class()
 
 1681atomic_TClass_ptr JDAQTriggeredHit::fgIsA(
nullptr);  
 
 1684const char *JDAQTriggeredHit::Class_Name()
 
 1686   return "KM3NETDAQ::JDAQTriggeredHit";
 
 1690const char *JDAQTriggeredHit::ImplFileName()
 
 1692   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQTriggeredHit*)
nullptr)->GetImplFileName();
 
 1696int JDAQTriggeredHit::ImplFileLine()
 
 1698   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQTriggeredHit*)
nullptr)->GetImplFileLine();
 
 1702TClass *JDAQTriggeredHit::Dictionary()
 
 1709TClass *JDAQTriggeredHit::Class()
 
 1718atomic_TClass_ptr JDAQEvent::fgIsA(
nullptr);  
 
 1721const char *JDAQEvent::Class_Name()
 
 1723   return "KM3NETDAQ::JDAQEvent";
 
 1727const char *JDAQEvent::ImplFileName()
 
 1729   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQEvent*)
nullptr)->GetImplFileName();
 
 1733int JDAQEvent::ImplFileLine()
 
 1735   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQEvent*)
nullptr)->GetImplFileLine();
 
 1739TClass *JDAQEvent::Dictionary()
 
 1746TClass *JDAQEvent::Class()
 
 1755atomic_TClass_ptr JDAQFrame::fgIsA(
nullptr);  
 
 1758const char *JDAQFrame::Class_Name()
 
 1760   return "KM3NETDAQ::JDAQFrame";
 
 1764const char *JDAQFrame::ImplFileName()
 
 1766   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQFrame*)
nullptr)->GetImplFileName();
 
 1770int JDAQFrame::ImplFileLine()
 
 1772   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQFrame*)
nullptr)->GetImplFileLine();
 
 1776TClass *JDAQFrame::Dictionary()
 
 1783TClass *JDAQFrame::Class()
 
 1792atomic_TClass_ptr JDAQFrameStatus::fgIsA(
nullptr);  
 
 1795const char *JDAQFrameStatus::Class_Name()
 
 1797   return "KM3NETDAQ::JDAQFrameStatus";
 
 1801const char *JDAQFrameStatus::ImplFileName()
 
 1803   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQFrameStatus*)
nullptr)->GetImplFileName();
 
 1807int JDAQFrameStatus::ImplFileLine()
 
 1809   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQFrameStatus*)
nullptr)->GetImplFileLine();
 
 1813TClass *JDAQFrameStatus::Dictionary()
 
 1820TClass *JDAQFrameStatus::Class()
 
 1829atomic_TClass_ptr JDAQSuperFrameHeader::fgIsA(
nullptr);  
 
 1832const char *JDAQSuperFrameHeader::Class_Name()
 
 1834   return "KM3NETDAQ::JDAQSuperFrameHeader";
 
 1838const char *JDAQSuperFrameHeader::ImplFileName()
 
 1840   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQSuperFrameHeader*)
nullptr)->GetImplFileName();
 
 1844int JDAQSuperFrameHeader::ImplFileLine()
 
 1846   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQSuperFrameHeader*)
nullptr)->GetImplFileLine();
 
 1850TClass *JDAQSuperFrameHeader::Dictionary()
 
 1857TClass *JDAQSuperFrameHeader::Class()
 
 1859   if (!fgIsA.load()) { R__LOCKGUARD(gInterpreterMutex); fgIsA = 
::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQSuperFrameHeader*)
nullptr)->GetClass(); }
 
 1866atomic_TClass_ptr JDAQSuperFrame::fgIsA(
nullptr);  
 
 1869const char *JDAQSuperFrame::Class_Name()
 
 1871   return "KM3NETDAQ::JDAQSuperFrame";
 
 1875const char *JDAQSuperFrame::ImplFileName()
 
 1877   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQSuperFrame*)
nullptr)->GetImplFileName();
 
 1881int JDAQSuperFrame::ImplFileLine()
 
 1883   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQSuperFrame*)
nullptr)->GetImplFileLine();
 
 1887TClass *JDAQSuperFrame::Dictionary()
 
 1894TClass *JDAQSuperFrame::Class()
 
 1903atomic_TClass_ptr JDAQSummaryFrame::fgIsA(
nullptr);  
 
 1906const char *JDAQSummaryFrame::Class_Name()
 
 1908   return "KM3NETDAQ::JDAQSummaryFrame";
 
 1912const char *JDAQSummaryFrame::ImplFileName()
 
 1914   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQSummaryFrame*)
nullptr)->GetImplFileName();
 
 1918int JDAQSummaryFrame::ImplFileLine()
 
 1920   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQSummaryFrame*)
nullptr)->GetImplFileLine();
 
 1924TClass *JDAQSummaryFrame::Dictionary()
 
 1931TClass *JDAQSummaryFrame::Class()
 
 1940atomic_TClass_ptr JDAQSummarysliceHeader::fgIsA(
nullptr);  
 
 1943const char *JDAQSummarysliceHeader::Class_Name()
 
 1945   return "KM3NETDAQ::JDAQSummarysliceHeader";
 
 1949const char *JDAQSummarysliceHeader::ImplFileName()
 
 1951   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQSummarysliceHeader*)
nullptr)->GetImplFileName();
 
 1955int JDAQSummarysliceHeader::ImplFileLine()
 
 1957   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQSummarysliceHeader*)
nullptr)->GetImplFileLine();
 
 1961TClass *JDAQSummarysliceHeader::Dictionary()
 
 1968TClass *JDAQSummarysliceHeader::Class()
 
 1970   if (!fgIsA.load()) { R__LOCKGUARD(gInterpreterMutex); fgIsA = 
::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQSummarysliceHeader*)
nullptr)->GetClass(); }
 
 1977atomic_TClass_ptr JDAQTimesliceHeader::fgIsA(
nullptr);  
 
 1980const char *JDAQTimesliceHeader::Class_Name()
 
 1982   return "KM3NETDAQ::JDAQTimesliceHeader";
 
 1986const char *JDAQTimesliceHeader::ImplFileName()
 
 1988   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQTimesliceHeader*)
nullptr)->GetImplFileName();
 
 1992int JDAQTimesliceHeader::ImplFileLine()
 
 1994   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQTimesliceHeader*)
nullptr)->GetImplFileLine();
 
 1998TClass *JDAQTimesliceHeader::Dictionary()
 
 2005TClass *JDAQTimesliceHeader::Class()
 
 2007   if (!fgIsA.load()) { R__LOCKGUARD(gInterpreterMutex); fgIsA = 
::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQTimesliceHeader*)
nullptr)->GetClass(); }
 
 2014atomic_TClass_ptr JDAQTimeslice::fgIsA(
nullptr);  
 
 2017const char *JDAQTimeslice::Class_Name()
 
 2019   return "KM3NETDAQ::JDAQTimeslice";
 
 2023const char *JDAQTimeslice::ImplFileName()
 
 2025   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQTimeslice*)
nullptr)->GetImplFileName();
 
 2029int JDAQTimeslice::ImplFileLine()
 
 2031   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQTimeslice*)
nullptr)->GetImplFileLine();
 
 2035TClass *JDAQTimeslice::Dictionary()
 
 2042TClass *JDAQTimeslice::Class()
 
 2051atomic_TClass_ptr JDAQTimesliceL0::fgIsA(
nullptr);  
 
 2054const char *JDAQTimesliceL0::Class_Name()
 
 2056   return "KM3NETDAQ::JDAQTimesliceL0";
 
 2060const char *JDAQTimesliceL0::ImplFileName()
 
 2062   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQTimesliceL0*)
nullptr)->GetImplFileName();
 
 2066int JDAQTimesliceL0::ImplFileLine()
 
 2068   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQTimesliceL0*)
nullptr)->GetImplFileLine();
 
 2072TClass *JDAQTimesliceL0::Dictionary()
 
 2079TClass *JDAQTimesliceL0::Class()
 
 2088atomic_TClass_ptr JDAQTimesliceL1::fgIsA(
nullptr);  
 
 2091const char *JDAQTimesliceL1::Class_Name()
 
 2093   return "KM3NETDAQ::JDAQTimesliceL1";
 
 2097const char *JDAQTimesliceL1::ImplFileName()
 
 2099   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQTimesliceL1*)
nullptr)->GetImplFileName();
 
 2103int JDAQTimesliceL1::ImplFileLine()
 
 2105   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQTimesliceL1*)
nullptr)->GetImplFileLine();
 
 2109TClass *JDAQTimesliceL1::Dictionary()
 
 2116TClass *JDAQTimesliceL1::Class()
 
 2125atomic_TClass_ptr JDAQTimesliceL2::fgIsA(
nullptr);  
 
 2128const char *JDAQTimesliceL2::Class_Name()
 
 2130   return "KM3NETDAQ::JDAQTimesliceL2";
 
 2134const char *JDAQTimesliceL2::ImplFileName()
 
 2136   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQTimesliceL2*)
nullptr)->GetImplFileName();
 
 2140int JDAQTimesliceL2::ImplFileLine()
 
 2142   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQTimesliceL2*)
nullptr)->GetImplFileLine();
 
 2146TClass *JDAQTimesliceL2::Dictionary()
 
 2153TClass *JDAQTimesliceL2::Class()
 
 2162atomic_TClass_ptr JDAQTimesliceSN::fgIsA(
nullptr);  
 
 2165const char *JDAQTimesliceSN::Class_Name()
 
 2167   return "KM3NETDAQ::JDAQTimesliceSN";
 
 2171const char *JDAQTimesliceSN::ImplFileName()
 
 2173   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQTimesliceSN*)
nullptr)->GetImplFileName();
 
 2177int JDAQTimesliceSN::ImplFileLine()
 
 2179   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQTimesliceSN*)
nullptr)->GetImplFileLine();
 
 2183TClass *JDAQTimesliceSN::Dictionary()
 
 2190TClass *JDAQTimesliceSN::Class()
 
 2199atomic_TClass_ptr JDAQSummaryslice::fgIsA(
nullptr);  
 
 2202const char *JDAQSummaryslice::Class_Name()
 
 2204   return "KM3NETDAQ::JDAQSummaryslice";
 
 2208const char *JDAQSummaryslice::ImplFileName()
 
 2210   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQSummaryslice*)
nullptr)->GetImplFileName();
 
 2214int JDAQSummaryslice::ImplFileLine()
 
 2216   return ::ROOT::GenerateInitInstanceLocal((const ::KM3NETDAQ::JDAQSummaryslice*)
nullptr)->GetImplFileLine();
 
 2220TClass *JDAQSummaryslice::Dictionary()
 
 2227TClass *JDAQSummaryslice::Class()
 
 2235atomic_TClass_ptr AAObject::fgIsA(
nullptr);  
 
 2238const char *AAObject::Class_Name()
 
 2244const char *AAObject::ImplFileName()
 
 2246   return ::ROOT::GenerateInitInstanceLocal((const ::AAObject*)
nullptr)->GetImplFileName();
 
 2250int AAObject::ImplFileLine()
 
 2252   return ::ROOT::GenerateInitInstanceLocal((const ::AAObject*)
nullptr)->GetImplFileLine();
 
 2256TClass *AAObject::Dictionary()
 
 2263TClass *AAObject::Class()
 
 2270atomic_TClass_ptr Vec::fgIsA(
nullptr);  
 
 2273const char *Vec::Class_Name()
 
 2279const char *Vec::ImplFileName()
 
 2281   return ::ROOT::GenerateInitInstanceLocal((const ::Vec*)
nullptr)->GetImplFileName();
 
 2285int Vec::ImplFileLine()
 
 2287   return ::ROOT::GenerateInitInstanceLocal((const ::Vec*)
nullptr)->GetImplFileLine();
 
 2291TClass *Vec::Dictionary()
 
 2305atomic_TClass_ptr Hit::fgIsA(
nullptr);  
 
 2308const char *Hit::Class_Name()
 
 2314const char *Hit::ImplFileName()
 
 2316   return ::ROOT::GenerateInitInstanceLocal((const ::Hit*)
nullptr)->GetImplFileName();
 
 2320int Hit::ImplFileLine()
 
 2322   return ::ROOT::GenerateInitInstanceLocal((const ::Hit*)
nullptr)->GetImplFileLine();
 
 2326TClass *Hit::Dictionary()
 
 2340atomic_TClass_ptr Trk::fgIsA(
nullptr);  
 
 2343const char *Trk::Class_Name()
 
 2349const char *Trk::ImplFileName()
 
 2351   return ::ROOT::GenerateInitInstanceLocal((const ::Trk*)
nullptr)->GetImplFileName();
 
 2355int Trk::ImplFileLine()
 
 2357   return ::ROOT::GenerateInitInstanceLocal((const ::Trk*)
nullptr)->GetImplFileLine();
 
 2361TClass *Trk::Dictionary()
 
 2375atomic_TClass_ptr Evt::fgIsA(
nullptr);  
 
 2378const char *Evt::Class_Name()
 
 2384const char *Evt::ImplFileName()
 
 2386   return ::ROOT::GenerateInitInstanceLocal((const ::Evt*)
nullptr)->GetImplFileName();
 
 2390int Evt::ImplFileLine()
 
 2392   return ::ROOT::GenerateInitInstanceLocal((const ::Evt*)
nullptr)->GetImplFileLine();
 
 2396TClass *Evt::Dictionary()
 
 2410atomic_TClass_ptr Head::fgIsA(
nullptr);  
 
 2413const char *Head::Class_Name()
 
 2419const char *Head::ImplFileName()
 
 2421   return ::ROOT::GenerateInitInstanceLocal((const ::Head*)
nullptr)->GetImplFileName();
 
 2425int Head::ImplFileLine()
 
 2427   return ::ROOT::GenerateInitInstanceLocal((const ::Head*)
nullptr)->GetImplFileLine();
 
 2431TClass *Head::Dictionary()
 
 2438TClass *Head::Class()
 
 2445atomic_TClass_ptr MultiHead::fgIsA(
nullptr);  
 
 2448const char *MultiHead::Class_Name()
 
 2454const char *MultiHead::ImplFileName()
 
 2456   return ::ROOT::GenerateInitInstanceLocal((const ::MultiHead*)
nullptr)->GetImplFileName();
 
 2460int MultiHead::ImplFileLine()
 
 2462   return ::ROOT::GenerateInitInstanceLocal((const ::MultiHead*)
nullptr)->GetImplFileLine();
 
 2466TClass *MultiHead::Dictionary()
 
 2473TClass *MultiHead::Class()
 
 2485      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQAbstractPreamble[nElements] : new ::KM3NETDAQ::JDAQAbstractPreamble[nElements];
 
 
 2496      (
static_cast<current_t*
>(p))->~current_t();
 
 
 2506void JDAQUTCExtended::Streamer(
TBuffer &R__b)
 
 2511      R__b.ReadClassBuffer(KM3NETDAQ::JDAQUTCExtended::Class(),
this);
 
 2513      R__b.WriteClassBuffer(KM3NETDAQ::JDAQUTCExtended::Class(),
this);
 
 2521      return  p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQUTCExtended : new ::KM3NETDAQ::JDAQUTCExtended;
 
 
 2524      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQUTCExtended[nElements] : new ::KM3NETDAQ::JDAQUTCExtended[nElements];
 
 
 2535      (
static_cast<current_t*
>(p))->~current_t();
 
 
 2541void JDAQChronometer::Streamer(
TBuffer &R__b)
 
 2546      R__b.ReadClassBuffer(KM3NETDAQ::JDAQChronometer::Class(),
this);
 
 2548      R__b.WriteClassBuffer(KM3NETDAQ::JDAQChronometer::Class(),
this);
 
 2556      return  p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQChronometer : new ::KM3NETDAQ::JDAQChronometer;
 
 
 2559      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQChronometer[nElements] : new ::KM3NETDAQ::JDAQChronometer[nElements];
 
 
 2570      (
static_cast<current_t*
>(p))->~current_t();
 
 
 2591      (
static_cast<current_t*
>(p))->~current_t();
 
 
 2601void JDAQHeader::Streamer(
TBuffer &R__b)
 
 2606      R__b.ReadClassBuffer(KM3NETDAQ::JDAQHeader::Class(),
this);
 
 2608      R__b.WriteClassBuffer(KM3NETDAQ::JDAQHeader::Class(),
this);
 
 2616      return  p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQHeader : new ::KM3NETDAQ::JDAQHeader;
 
 
 2619      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQHeader[nElements] : new ::KM3NETDAQ::JDAQHeader[nElements];
 
 
 2630      (
static_cast<current_t*
>(p))->~current_t();
 
 
 2636void JDAQTriggerCounter::Streamer(
TBuffer &R__b)
 
 2641      R__b.ReadClassBuffer(KM3NETDAQ::JDAQTriggerCounter::Class(),
this);
 
 2643      R__b.WriteClassBuffer(KM3NETDAQ::JDAQTriggerCounter::Class(),
this);
 
 2651      return  p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQTriggerCounter : new ::KM3NETDAQ::JDAQTriggerCounter;
 
 
 2654      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQTriggerCounter[nElements] : new ::KM3NETDAQ::JDAQTriggerCounter[nElements];
 
 
 2665      (
static_cast<current_t*
>(p))->~current_t();
 
 
 2671void JDAQTriggerMask::Streamer(
TBuffer &R__b)
 
 2676      R__b.ReadClassBuffer(KM3NETDAQ::JDAQTriggerMask::Class(),
this);
 
 2678      R__b.WriteClassBuffer(KM3NETDAQ::JDAQTriggerMask::Class(),
this);
 
 2686      return  p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQTriggerMask : new ::KM3NETDAQ::JDAQTriggerMask;
 
 
 2689      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQTriggerMask[nElements] : new ::KM3NETDAQ::JDAQTriggerMask[nElements];
 
 
 2700      (
static_cast<current_t*
>(p))->~current_t();
 
 
 2706void JDAQEventHeader::Streamer(
TBuffer &R__b)
 
 2711      R__b.ReadClassBuffer(KM3NETDAQ::JDAQEventHeader::Class(),
this);
 
 2713      R__b.WriteClassBuffer(KM3NETDAQ::JDAQEventHeader::Class(),
this);
 
 2721      return  p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQEventHeader : new ::KM3NETDAQ::JDAQEventHeader;
 
 
 2724      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQEventHeader[nElements] : new ::KM3NETDAQ::JDAQEventHeader[nElements];
 
 
 2735      (
static_cast<current_t*
>(p))->~current_t();
 
 
 2742      return  p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQHit : new ::KM3NETDAQ::JDAQHit;
 
 
 2745      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQHit[nElements] : new ::KM3NETDAQ::JDAQHit[nElements];
 
 
 2756      (
static_cast<current_t*
>(p))->~current_t();
 
 
 2770      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQModuleIdentifier[nElements] : new ::KM3NETDAQ::JDAQModuleIdentifier[nElements];
 
 
 2781      (
static_cast<current_t*
>(p))->~current_t();
 
 
 2792      return  p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQPMTIdentifier : new ::KM3NETDAQ::JDAQPMTIdentifier;
 
 
 2795      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQPMTIdentifier[nElements] : new ::KM3NETDAQ::JDAQPMTIdentifier[nElements];
 
 
 2806      (
static_cast<current_t*
>(p))->~current_t();
 
 
 2817      return  p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQKeyHit : new ::KM3NETDAQ::JDAQKeyHit;
 
 
 2820      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQKeyHit[nElements] : new ::KM3NETDAQ::JDAQKeyHit[nElements];
 
 
 2831      (
static_cast<current_t*
>(p))->~current_t();
 
 
 2842      return  p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQTriggeredHit : new ::KM3NETDAQ::JDAQTriggeredHit;
 
 
 2845      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQTriggeredHit[nElements] : new ::KM3NETDAQ::JDAQTriggeredHit[nElements];
 
 
 2856      (
static_cast<current_t*
>(p))->~current_t();
 
 
 2866void JDAQEvent::Streamer(
TBuffer &R__b)
 
 2871      R__b.ReadClassBuffer(KM3NETDAQ::JDAQEvent::Class(),
this);
 
 2873      R__b.WriteClassBuffer(KM3NETDAQ::JDAQEvent::Class(),
this);
 
 2895      (
static_cast<current_t*
>(p))->~current_t();
 
 
 2901void JDAQFrame::Streamer(
TBuffer &R__b)
 
 2906      R__b.ReadClassBuffer(KM3NETDAQ::JDAQFrame::Class(),
this);
 
 2908      R__b.WriteClassBuffer(KM3NETDAQ::JDAQFrame::Class(),
this);
 
 2916      return  p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQFrame : new ::KM3NETDAQ::JDAQFrame;
 
 
 2919      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQFrame[nElements] : new ::KM3NETDAQ::JDAQFrame[nElements];
 
 
 2930      (
static_cast<current_t*
>(p))->~current_t();
 
 
 2936void JDAQFrameStatus::Streamer(
TBuffer &R__b)
 
 2941      R__b.ReadClassBuffer(KM3NETDAQ::JDAQFrameStatus::Class(),
this);
 
 2943      R__b.WriteClassBuffer(KM3NETDAQ::JDAQFrameStatus::Class(),
this);
 
 2951      return  p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQFrameStatus : new ::KM3NETDAQ::JDAQFrameStatus;
 
 
 2954      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQFrameStatus[nElements] : new ::KM3NETDAQ::JDAQFrameStatus[nElements];
 
 
 2965      (
static_cast<current_t*
>(p))->~current_t();
 
 
 2971void JDAQSuperFrameHeader::Streamer(
TBuffer &R__b)
 
 2976      R__b.ReadClassBuffer(KM3NETDAQ::JDAQSuperFrameHeader::Class(),
this);
 
 2978      R__b.WriteClassBuffer(KM3NETDAQ::JDAQSuperFrameHeader::Class(),
this);
 
 2989      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQSuperFrameHeader[nElements] : new ::KM3NETDAQ::JDAQSuperFrameHeader[nElements];
 
 
 3000      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3006void JDAQSuperFrame::Streamer(
TBuffer &R__b)
 
 3011      R__b.ReadClassBuffer(KM3NETDAQ::JDAQSuperFrame::Class(),
this);
 
 3013      R__b.WriteClassBuffer(KM3NETDAQ::JDAQSuperFrame::Class(),
this);
 
 3035      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3042      return  p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQRate : new ::KM3NETDAQ::JDAQRate;
 
 
 3045      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQRate[nElements] : new ::KM3NETDAQ::JDAQRate[nElements];
 
 
 3056      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3063      return  p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQSummaryFrame : new ::KM3NETDAQ::JDAQSummaryFrame;
 
 
 3066      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQSummaryFrame[nElements] : new ::KM3NETDAQ::JDAQSummaryFrame[nElements];
 
 
 3077      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3087void JDAQSummarysliceHeader::Streamer(
TBuffer &R__b)
 
 3092      R__b.ReadClassBuffer(KM3NETDAQ::JDAQSummarysliceHeader::Class(),
this);
 
 3094      R__b.WriteClassBuffer(KM3NETDAQ::JDAQSummarysliceHeader::Class(),
this);
 
 3105      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQSummarysliceHeader[nElements] : new ::KM3NETDAQ::JDAQSummarysliceHeader[nElements];
 
 
 3116      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3122void JDAQTimesliceHeader::Streamer(
TBuffer &R__b)
 
 3127      R__b.ReadClassBuffer(KM3NETDAQ::JDAQTimesliceHeader::Class(),
this);
 
 3129      R__b.WriteClassBuffer(KM3NETDAQ::JDAQTimesliceHeader::Class(),
this);
 
 3140      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) ::
KM3NETDAQ::JDAQTimesliceHeader[nElements] : new ::KM3NETDAQ::JDAQTimesliceHeader[nElements];
 
 
 3151      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3157void JDAQTimeslice::Streamer(
TBuffer &R__b)
 
 3162      R__b.ReadClassBuffer(KM3NETDAQ::JDAQTimeslice::Class(),
this);
 
 3164      R__b.WriteClassBuffer(KM3NETDAQ::JDAQTimeslice::Class(),
this);
 
 3186      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3192void JDAQTimesliceL0::Streamer(
TBuffer &R__b)
 
 3197      R__b.ReadClassBuffer(KM3NETDAQ::JDAQTimesliceL0::Class(),
this);
 
 3199      R__b.WriteClassBuffer(KM3NETDAQ::JDAQTimesliceL0::Class(),
this);
 
 3221      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3227void JDAQTimesliceL1::Streamer(
TBuffer &R__b)
 
 3232      R__b.ReadClassBuffer(KM3NETDAQ::JDAQTimesliceL1::Class(),
this);
 
 3234      R__b.WriteClassBuffer(KM3NETDAQ::JDAQTimesliceL1::Class(),
this);
 
 3256      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3262void JDAQTimesliceL2::Streamer(
TBuffer &R__b)
 
 3267      R__b.ReadClassBuffer(KM3NETDAQ::JDAQTimesliceL2::Class(),
this);
 
 3269      R__b.WriteClassBuffer(KM3NETDAQ::JDAQTimesliceL2::Class(),
this);
 
 3291      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3297void JDAQTimesliceSN::Streamer(
TBuffer &R__b)
 
 3302      R__b.ReadClassBuffer(KM3NETDAQ::JDAQTimesliceSN::Class(),
this);
 
 3304      R__b.WriteClassBuffer(KM3NETDAQ::JDAQTimesliceSN::Class(),
this);
 
 3326      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3332void JDAQSummaryslice::Streamer(
TBuffer &R__b)
 
 3337      R__b.ReadClassBuffer(KM3NETDAQ::JDAQSummaryslice::Class(),
this);
 
 3339      R__b.WriteClassBuffer(KM3NETDAQ::JDAQSummaryslice::Class(),
this);
 
 3361      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3366void AAObject::Streamer(
TBuffer &R__b)
 
 3371      R__b.ReadClassBuffer(AAObject::Class(),
this);
 
 3373      R__b.WriteClassBuffer(AAObject::Class(),
this);
 
 3380      return  p ? 
new(p) 
::AAObject : new ::AAObject;
 
 
 3383      return p ? 
new(p) 
::AAObject[nElements] : new ::AAObject[nElements];
 
 
 3387      delete (
static_cast<::
AAObject*
>(p));
 
 
 3390      delete [] (
static_cast<::
AAObject*
>(p));
 
 
 3394      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3399void Vec::Streamer(
TBuffer &R__b)
 
 3404      R__b.ReadClassBuffer(Vec::Class(),
this);
 
 3406      R__b.WriteClassBuffer(Vec::Class(),
this);
 
 3413      return  p ? 
new(p) 
::Vec : new ::Vec;
 
 
 3416      return p ? 
new(p) 
::Vec[nElements] : new ::Vec[nElements];
 
 
 3420      delete (
static_cast<::
Vec*
>(p));
 
 
 3423      delete [] (
static_cast<::
Vec*
>(p));
 
 
 3426      typedef ::Vec current_t;
 
 3427      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3432void Hit::Streamer(
TBuffer &R__b)
 
 3437      R__b.ReadClassBuffer(Hit::Class(),
this);
 
 3439      R__b.WriteClassBuffer(Hit::Class(),
this);
 
 3446      return  p ? 
new(p) 
::Hit : new ::Hit;
 
 
 3449      return p ? 
new(p) 
::Hit[nElements] : new ::Hit[nElements];
 
 
 3453      delete (
static_cast<::
Hit*
>(p));
 
 
 3456      delete [] (
static_cast<::
Hit*
>(p));
 
 
 3459      typedef ::Hit current_t;
 
 3460      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3465void Trk::Streamer(
TBuffer &R__b)
 
 3470      R__b.ReadClassBuffer(Trk::Class(),
this);
 
 3472      R__b.WriteClassBuffer(Trk::Class(),
this);
 
 3479      return  p ? 
new(p) 
::Trk : new ::Trk;
 
 
 3482      return p ? 
new(p) 
::Trk[nElements] : new ::Trk[nElements];
 
 
 3486      delete (
static_cast<::
Trk*
>(p));
 
 
 3489      delete [] (
static_cast<::
Trk*
>(p));
 
 
 3492      typedef ::Trk current_t;
 
 3493      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3498void Evt::Streamer(
TBuffer &R__b)
 
 3503      R__b.ReadClassBuffer(Evt::Class(),
this);
 
 3505      R__b.WriteClassBuffer(Evt::Class(),
this);
 
 3512      return  p ? 
new(p) 
::Evt : new ::Evt;
 
 
 3515      return p ? 
new(p) 
::Evt[nElements] : new ::Evt[nElements];
 
 
 3519      delete (
static_cast<::
Evt*
>(p));
 
 
 3522      delete [] (
static_cast<::
Evt*
>(p));
 
 
 3525      typedef ::Evt current_t;
 
 3526      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3531void Head::Streamer(
TBuffer &R__b)
 
 3536      R__b.ReadClassBuffer(Head::Class(),
this);
 
 3538      R__b.WriteClassBuffer(Head::Class(),
this);
 
 3545      return  p ? 
new(p) 
::Head : new ::Head;
 
 
 3548      return p ? 
new(p) 
::Head[nElements] : new ::Head[nElements];
 
 
 3552      delete (
static_cast<::
Head*
>(p));
 
 
 3555      delete [] (
static_cast<::
Head*
>(p));
 
 
 3558      typedef ::Head current_t;
 
 3559      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3564void MultiHead::Streamer(
TBuffer &R__b)
 
 3569      R__b.ReadClassBuffer(MultiHead::Class(),
this);
 
 3571      R__b.WriteClassBuffer(MultiHead::Class(),
this);
 
 3581      return p ? 
new(p) 
::MultiHead[nElements] : new ::MultiHead[nElements];
 
 
 3588      delete [] (
static_cast<::
MultiHead*
>(p));
 
 
 3592      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3609      static ::TVirtualIsAProxy* isa_proxy = new ::TIsAProxy(
typeid(
vector<string>));
 
 3610      static ::ROOT::TGenericClassInfo 
 
 3611         instance(
"vector<string>", -2, 
"vector", 389,
 
 3612                  typeid(
vector<string>), ::ROOT::Internal::DefineBehavior(ptr, ptr),
 
 3620      instance.AdoptCollectionProxyInfo(TCollectionProxyInfo::Generate(TCollectionProxyInfo::Pushback< 
vector<string> >()));
 
 3622      instance.AdoptAlternate(::ROOT::AddClassAlternate(
"vector<string>",
"std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >"));
 
 
 3657      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3674      static ::TVirtualIsAProxy* isa_proxy = new ::TIsAProxy(
typeid(
vector<int>));
 
 3675      static ::ROOT::TGenericClassInfo 
 
 3676         instance(
"vector<int>", -2, 
"vector", 389,
 
 3677                  typeid(
vector<int>), ::ROOT::Internal::DefineBehavior(ptr, ptr),
 
 3685      instance.AdoptCollectionProxyInfo(TCollectionProxyInfo::Generate(TCollectionProxyInfo::Pushback< 
vector<int> >()));
 
 3687      instance.AdoptAlternate(::ROOT::AddClassAlternate(
"vector<int>",
"std::vector<int, std::allocator<int> >"));
 
 
 3711      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) 
vector<int>[nElements] : 
new vector<int>[nElements];
 
 
 3722      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3739      static ::TVirtualIsAProxy* isa_proxy = new ::TIsAProxy(
typeid(
vector<double>));
 
 3740      static ::ROOT::TGenericClassInfo 
 
 3741         instance(
"vector<double>", -2, 
"vector", 389,
 
 3742                  typeid(
vector<double>), ::ROOT::Internal::DefineBehavior(ptr, ptr),
 
 3750      instance.AdoptCollectionProxyInfo(TCollectionProxyInfo::Generate(TCollectionProxyInfo::Pushback< 
vector<double> >()));
 
 3752      instance.AdoptAlternate(::ROOT::AddClassAlternate(
"vector<double>",
"std::vector<double, std::allocator<double> >"));
 
 
 3787      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3804      static ::TVirtualIsAProxy* isa_proxy = new ::TIsAProxy(
typeid(
vector<Trk>));
 
 3805      static ::ROOT::TGenericClassInfo 
 
 3806         instance(
"vector<Trk>", -2, 
"vector", 389,
 
 3807                  typeid(
vector<Trk>), ::ROOT::Internal::DefineBehavior(ptr, ptr),
 
 3815      instance.AdoptCollectionProxyInfo(TCollectionProxyInfo::Generate(TCollectionProxyInfo::Pushback< 
vector<Trk> >()));
 
 3817      instance.AdoptAlternate(::ROOT::AddClassAlternate(
"vector<Trk>",
"std::vector<Trk, std::allocator<Trk> >"));
 
 
 3841      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) 
vector<Trk>[nElements] : 
new vector<Trk>[nElements];
 
 
 3852      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3870      static ::ROOT::TGenericClassInfo 
 
 3871         instance(
"vector<KM3NETDAQ::JDAQTriggeredHit>", -2, 
"vector", 389,
 
 3882      instance.AdoptAlternate(::ROOT::AddClassAlternate(
"vector<KM3NETDAQ::JDAQTriggeredHit>",
"std::vector<KM3NETDAQ::JDAQTriggeredHit, std::allocator<KM3NETDAQ::JDAQTriggeredHit> >"));
 
 
 3917      (
static_cast<current_t*
>(p))->~current_t();
 
 
 3935      static ::ROOT::TGenericClassInfo 
 
 3936         instance(
"vector<KM3NETDAQ::JDAQSuperFrame>", -2, 
"vector", 389,
 
 3947      instance.AdoptAlternate(::ROOT::AddClassAlternate(
"vector<KM3NETDAQ::JDAQSuperFrame>",
"std::vector<KM3NETDAQ::JDAQSuperFrame, std::allocator<KM3NETDAQ::JDAQSuperFrame> >"));
 
 
 3982      (
static_cast<current_t*
>(p))->~current_t();
 
 
 4000      static ::ROOT::TGenericClassInfo 
 
 4001         instance(
"vector<KM3NETDAQ::JDAQSummaryFrame>", -2, 
"vector", 389,
 
 4012      instance.AdoptAlternate(::ROOT::AddClassAlternate(
"vector<KM3NETDAQ::JDAQSummaryFrame>",
"std::vector<KM3NETDAQ::JDAQSummaryFrame, std::allocator<KM3NETDAQ::JDAQSummaryFrame> >"));
 
 
 4047      (
static_cast<current_t*
>(p))->~current_t();
 
 
 4065      static ::ROOT::TGenericClassInfo 
 
 4066         instance(
"vector<KM3NETDAQ::JDAQKeyHit>", -2, 
"vector", 389,
 
 4077      instance.AdoptAlternate(::ROOT::AddClassAlternate(
"vector<KM3NETDAQ::JDAQKeyHit>",
"std::vector<KM3NETDAQ::JDAQKeyHit, std::allocator<KM3NETDAQ::JDAQKeyHit> >"));
 
 
 4112      (
static_cast<current_t*
>(p))->~current_t();
 
 
 4129      static ::TVirtualIsAProxy* isa_proxy = new ::TIsAProxy(
typeid(
vector<Hit>));
 
 4130      static ::ROOT::TGenericClassInfo 
 
 4131         instance(
"vector<Hit>", -2, 
"vector", 389,
 
 4132                  typeid(
vector<Hit>), ::ROOT::Internal::DefineBehavior(ptr, ptr),
 
 4140      instance.AdoptCollectionProxyInfo(TCollectionProxyInfo::Generate(TCollectionProxyInfo::Pushback< 
vector<Hit> >()));
 
 4142      instance.AdoptAlternate(::ROOT::AddClassAlternate(
"vector<Hit>",
"std::vector<Hit, std::allocator<Hit> >"));
 
 
 4166      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) 
vector<Hit>[nElements] : 
new vector<Hit>[nElements];
 
 
 4177      (
static_cast<current_t*
>(p))->~current_t();
 
 
 4194      static ::TVirtualIsAProxy* isa_proxy = new ::TIsAProxy(
typeid(
vector<Head>));
 
 4195      static ::ROOT::TGenericClassInfo 
 
 4196         instance(
"vector<Head>", -2, 
"vector", 389,
 
 4197                  typeid(
vector<Head>), ::ROOT::Internal::DefineBehavior(ptr, ptr),
 
 4205      instance.AdoptCollectionProxyInfo(TCollectionProxyInfo::Generate(TCollectionProxyInfo::Pushback< 
vector<Head> >()));
 
 4207      instance.AdoptAlternate(::ROOT::AddClassAlternate(
"vector<Head>",
"std::vector<Head, std::allocator<Head> >"));
 
 
 4231      return p ? ::new(
static_cast<::ROOT::Internal::TOperatorNewHelper*
>(p)) 
vector<Head>[nElements] : 
new vector<Head>[nElements];
 
 
 4242      (
static_cast<current_t*
>(p))->~current_t();
 
 
 4260      static ::ROOT::TGenericClassInfo 
 
 4261         instance(
"map<string,string>", -2, 
"map", 100,
 
 4270      instance.AdoptCollectionProxyInfo(TCollectionProxyInfo::Generate(TCollectionProxyInfo::MapInsert< 
map<string,string> >()));
 
 4272      instance.AdoptAlternate(::ROOT::AddClassAlternate(
"map<string,string>",
"std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >"));
 
 
 4307      (
static_cast<current_t*
>(p))->~current_t();
 
 
 4312  void TriggerDictionaryInitialization_G__KM3NeTROOT_Impl() {
 
 4313    static const char* headers[] = {
 
 4317    static const char* includePaths[] = {
 
 4318"/builds/common/jpp/externals/km3net-dataformat/build",
 
 4320"/usr/local/include/",
 
 4321"/builds/common/jpp/externals/km3net-dataformat/build/src/",
 
 4324    static const char* fwdDeclCode = R
"DICTFWDDCLS( 
 4325#line 1 "G__KM3NeTROOT dictionary forward declarations' payload" 
 4326#pragma clang diagnostic ignored "-Wkeyword-compat" 
 4327#pragma clang diagnostic ignored "-Wignored-attributes" 
 4328#pragma clang diagnostic ignored "-Wreturn-type-c-linkage" 
 4329extern int __Cling_AutoLoading_Map; 
 4330namespace KM3NETDAQ{class JDAQAbstractPreamble;} 
 4331namespace KM3NETDAQ{class __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQUTCExtended.hh")))  JDAQUTCExtended;} 
 4332namespace KM3NETDAQ{class JDAQChronometer;} 
 4333namespace KM3NETDAQ{class __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQPreamble.hh")))  JDAQPreamble;} 
 4334namespace KM3NETDAQ{class __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQHeader.hh")))  __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQEventHeader.hh")))  JDAQHeader;} 
 4335namespace KM3NETDAQ{class __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQTriggerCounter.hh")))  __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQEventHeader.hh")))  JDAQTriggerCounter;} 
 4336namespace KM3NETDAQ{class __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQTriggerMask.hh")))  __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQEventHeader.hh")))  JDAQTriggerMask;} 
 4337namespace KM3NETDAQ{class __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQEventHeader.hh")))  JDAQEventHeader;} 
 4338namespace KM3NETDAQ{class __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQHit.hh")))  JDAQHit;} 
 4339namespace KM3NETDAQ{class __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQModuleIdentifier.hh")))  __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQKeyHit.hh")))  JDAQModuleIdentifier;} 
 4340namespace KM3NETDAQ{class __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQPMTIdentifier.hh")))  __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQKeyHit.hh")))  JDAQPMTIdentifier;} 
 4341namespace KM3NETDAQ{class __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQKeyHit.hh")))  JDAQKeyHit;} 
 4342namespace KM3NETDAQ{class __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQTriggeredHit.hh")))  JDAQTriggeredHit;} 
 4343namespace KM3NETDAQ{class JDAQEvent;} 
 4344namespace KM3NETDAQ{class JDAQFrame;} 
 4345namespace KM3NETDAQ{class JDAQFrameStatus;} 
 4346namespace KM3NETDAQ{class __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQSuperFrameHeader.hh")))  __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQSuperFrame.hh")))  JDAQSuperFrameHeader;} 
 4347namespace KM3NETDAQ{class __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQSuperFrame.hh")))  JDAQSuperFrame;} 
 4348namespace KM3NETDAQ{class JDAQRate;} 
 4349namespace KM3NETDAQ{class JDAQSummaryFrame;} 
 4350namespace KM3NETDAQ{class __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQSummarysliceHeader.hh")))  JDAQSummarysliceHeader;} 
 4351namespace KM3NETDAQ{class __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQTimesliceHeader.hh")))  __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQTimeslice.hh")))  JDAQTimesliceHeader;} 
 4352namespace KM3NETDAQ{class __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQTimeslice.hh")))  JDAQTimeslice;} 
 4353namespace KM3NETDAQ{struct __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQTimeslice.hh")))  JDAQTimesliceL0;} 
 4354namespace KM3NETDAQ{struct __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQTimeslice.hh")))  JDAQTimesliceL1;} 
 4355namespace KM3NETDAQ{struct __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQTimeslice.hh")))  JDAQTimesliceL2;} 
 4356namespace KM3NETDAQ{struct __attribute__((annotate("$clingAutoload$km3net-dataformat/online/JDAQTimeslice.hh")))  JDAQTimesliceSN;} 
 4357namespace KM3NETDAQ{class JDAQSummaryslice;} 
 4359struct __attribute__((annotate("$clingAutoload$km3net-dataformat/offline/Vec.hh")))  __attribute__((annotate("$clingAutoload$km3net-dataformat/offline/Hit.hh")))  Vec; 
 4360struct __attribute__((annotate("$clingAutoload$km3net-dataformat/offline/Hit.hh")))  Hit; 
 4361struct __attribute__((annotate("$clingAutoload$km3net-dataformat/offline/Trk.hh")))  Trk; 
 4366    static const char* payloadCode = R
"DICTPAYLOAD( 
 4367#line 1 "G__KM3NeTROOT dictionary payload" 
 4370#define _BACKWARD_BACKWARD_WARNING_H 
 4375#include "km3net-dataformat/online/JDAQException.hh" 
 4389namespace KM3NETDAQ {
 
 4394#if NAMESPACE == ANTARES  
 
 4395  static const int NUMBER_OF_PMTS          =  3;    //!< Total number of PMTs in module
 
 4397  static const int NUMBER_OF_PMTS          = 31;    //!< Total number of PMTs in module
 
 4424      if (bit < 0 || bit > 31) {
 
 4425        throw JDAQException("JBit: illegal bit range.");
 
 4448    void set(int& mask) const
 
 4459    void unset(int& mask) const
 
 4471    void set(int& mask, const bool value) const
 
 4486    int write(const int value) const
 
 4488      return (value << bit) & get();
 
 4498    int read(const int mask) const
 
 4500      return (mask & get()) >> bit;
 
 4510    bool has(const int mask) const
 
 4512      return (mask & get()) != 0;
 
 4539    JBits(int __lsb, int __msb) :
 
 4543      if (lsb < 0   || lsb > 31 ||
 
 4544          msb < lsb || msb > 31) {
 
 4545        throw JDAQException("JBits: illegal bit range.");
 
 4559      static const unsigned int mask[] = { 0x00000001,
 
 4599      return (int) (mask[msb-lsb] << lsb);
 
 4609    int write(const int value) const
 
 4611      return (value << lsb) & get();
 
 4621    int read(const int mask) const
 
 4623      return (mask & get()) >> lsb;
 
 4633    bool has(const int mask) const
 
 4635      return (get() & mask) != 0;
 
 4639    int lsb;        //!< least significant bit
 
 4640    int msb;        //!< most  significant bit
 
 4644  static const JBit   DAQ_WHITE_RABBIT        (31);       //!< White Rabbit status
 
 4645  static const JBits  DAQ_TDC                 ( 0, 30);   //!< TDC  high-rate veto status
 
 4646  static const JBits  DAQ_FIFO                ( 0, 30);   //!< FIFO almost full bits
 
 4648  static const JBit   DAQ_UDP_TRAILER         (31);       //!< UDP trailer
 
 4649  static const JBits  DAQ_UDP_RECEIVED_PACKETS( 0, 15);   //!< Mask of UDP received packets
 
 4650  static const JBits  DAQ_UDP_SEQUENCE_NUMBER (16, 31);   //!< Mask of UDP sequence number
 
 4654#ifndef __JDAQABSTRACTPREAMBLE__
 
 4655#define __JDAQABSTRACTPREAMBLE__
 
 4657#include "km3net-dataformat/online/JDAQDataTypes.hh"
 
 4658#include "km3net-dataformat/online/JDAQRoot.hh"
 
 4665namespace KM3NETDAQ {
 
 4674  class JDAQAbstractPreamble {
 
 4682    JDAQAbstractPreamble(JDAQType<T> type) :
 
 4684      type  (KM3NETDAQ::getDataType(type))
 
 4691    JDAQAbstractPreamble() :
 
 4702    int getLength() const 
 
 4713    int getDataType() const 
 
 4719    ClassDefNV(JDAQAbstractPreamble,1);
 
 4728#ifndef __JDAQCHRONOMETER__
 
 4729#define __JDAQCHRONOMETER__
 
 4734#include "km3net-dataformat/online/JDAQRoot.hh"
 
 4735#include "km3net-dataformat/online/JDAQUTCExtended.hh"
 
 4736#include "km3net-dataformat/online/JDAQClock.hh"
 
 4743namespace KM3NETDAQ {
 
 4748  class JDAQChronometer
 
 4752    friend size_t getSizeof<JDAQChronometer>();
 
 4753    friend JReader& operator>>(JReader&, JDAQChronometer&);
 
 4754    friend JWriter& operator<<(JWriter&, const JDAQChronometer&);
 
 4774    JDAQChronometer(const int __detector_id,
 
 4776                    const int __frame_index) :
 
 4777      detector_id(__detector_id),
 
 4779      frame_index(__frame_index),
 
 4780      timeslice_start(getTimeOfFrame(__frame_index))
 
 4792    JDAQChronometer(const int __detector_id,
 
 4794                    const int __frame_index,
 
 4795                    const JDAQUTCExtended& __timeslice_start) :
 
 4796      detector_id(__detector_id),
 
 4798      frame_index(__frame_index),
 
 4799      timeslice_start(__timeslice_start)
 
 4806    virtual ~JDAQChronometer()
 
 4815    const JDAQChronometer& getDAQChronometer() const 
 
 4817      return static_cast<const JDAQChronometer&>(*this); 
 
 4826    void setDAQChronometer(const JDAQChronometer& chronometer)
 
 4828      static_cast<JDAQChronometer&>(*this) = chronometer;
 
 4837    int getDetectorID() const 
 
 4848    int getRunNumber() const 
 
 4859    int getFrameIndex() const 
 
 4871    JDAQUTCExtended getTimesliceStart() const
 
 4873      return timeslice_start;
 
 4882    void setRunNumber(const int run)
 
 4893    void setFrameIndex(const int frame_index)
 
 4895      this->frame_index = frame_index;
 
 4904    void setTimesliceStart(const JDAQUTCExtended& timeslice_start)
 
 4906      this->timeslice_start = timeslice_start;
 
 4910    ClassDef(JDAQChronometer,3);
 
 4917    JDAQUTCExtended timeslice_start;
 
 4928  inline std::ostream& operator<<(std::ostream& out, const JDAQChronometer& chronometer)
 
 4930    using namespace std;
 
 4932    out << setw(8) << chronometer.getDetectorID();
 
 4934    out << setw(8) << chronometer.getRunNumber();
 
 4936    out << setw(8) << chronometer.getFrameIndex();
 
 4938    out <<            chronometer.getTimesliceStart();
 
 4950  inline double getTimeOfRTS(const JDAQChronometer& chronometer)
 
 4952    return getTimeOfRTS(chronometer.getFrameIndex());
 
 4963  inline bool operator==(const JDAQChronometer& first,
 
 4964                         const JDAQChronometer& second)
 
 4966    return (first.getDetectorID()     == second.getDetectorID()    &&
 
 4967            first.getRunNumber()      == second.getRunNumber()     &&
 
 4968            first.getFrameIndex()     == second.getFrameIndex()    &&
 
 4969            first.getTimesliceStart() == second.getTimesliceStart());
 
 4980  inline bool operator!=(const JDAQChronometer& first,
 
 4981                         const JDAQChronometer& second)
 
 4983    return !(first == second);
 
 4994  inline double getTimeDifference(const JDAQChronometer& first, const JDAQChronometer& second)
 
 4996    return getTimeDifference(first.getTimesliceStart(), second.getTimesliceStart());
 
 5001#ifndef __JDAQCLOCK__
 
 5002#define __JDAQCLOCK__
 
 5009#include "km3net-dataformat/online/JDAQException.hh"
 
 5016namespace KM3NETDAQ {
 
 5019    static double FRAME_TIME_NS =  100000000.0;     //!< Frame time [ns]
 
 5020    static double RESET_TIME_NS =  FRAME_TIME_NS;   //!< TDC dynamic range [ns]
 
 5032    enum JDAQClock_t { KM3NET = 1, PPM_DU = 3, ANTARES = 101 };
 
 5040    JDAQClock(const JDAQClock_t clock = KM3NET)
 
 5042      this->clock = clock;
 
 5053    JDAQClock_t get() const
 
 5064    void set(const JDAQClock_t clock)
 
 5066      this->clock = clock;
 
 5077      switch (this->clock) {
 
 5080        FRAME_TIME_NS =  100000000.0;
 
 5081        RESET_TIME_NS =  FRAME_TIME_NS;
 
 5085        FRAME_TIME_NS =  (1<<27);
 
 5086        RESET_TIME_NS =  FRAME_TIME_NS;
 
 5090        FRAME_TIME_NS =  13107200.0 * 8;
 
 5091        RESET_TIME_NS = 419430400.0;
 
 5095        throw JDAQException("Undefined clock.");
 
 5107    friend inline std::istream& operator>>(std::istream& in, JDAQClock& clock)
 
 5109      using namespace std;
 
 5116        clock.set((JDAQClock_t) clk);
 
 5118      catch(const std::exception& error) {
 
 5119        in.setstate(ios_base::badbit);
 
 5133    friend inline std::ostream& operator<<(std::ostream& out, const JDAQClock& clock)
 
 5135      return out << clock.clock;
 
 5151  inline bool operator==(const JDAQClock& first, const JDAQClock& second)
 
 5153    return first.get() == second.get();
 
 5162  inline double getFrameTime() 
 
 5164    return FRAME_TIME_NS; 
 
 5173  inline double getRTS() 
 
 5175    return RESET_TIME_NS; 
 
 5185  inline double getTimeOfFrame(const int frame_index)
 
 5187    if (frame_index != 0)
 
 5188      return (double) (frame_index - 1) * FRAME_TIME_NS;
 
 5200  inline double getTimeOfFrame(const unsigned int frame_index)
 
 5202    if (frame_index != 0)
 
 5203      return (double) (frame_index - 1) * FRAME_TIME_NS;
 
 5215  inline double getTimeOfRTS(const double t_ns)
 
 5217    return std::floor(t_ns/RESET_TIME_NS) * RESET_TIME_NS;
 
 5227  inline double getTimeOfRTS(const int frame_index)
 
 5229    return std::floor(getTimeOfFrame(frame_index)/RESET_TIME_NS) * RESET_TIME_NS;
 
 5239  inline double getTimeOfRTS(const unsigned int frame_index)
 
 5241    return std::floor(getTimeOfFrame(frame_index)/RESET_TIME_NS) * RESET_TIME_NS;
 
 5251  inline int getFrameIndex(const double t_ns)
 
 5253    return (int) (t_ns / FRAME_TIME_NS) + 1;
 
 5263  inline double getTimeSinceRTS(const int frame_index)
 
 5265    return std::fmod(getTimeOfFrame(frame_index), RESET_TIME_NS);
 
 5275  inline double getTimeSinceRTS(const unsigned int frame_index)
 
 5277    return std::fmod(getTimeOfFrame(frame_index), RESET_TIME_NS);
 
 5287  inline double getTimeSinceRTS(const double& t_ns)
 
 5289    return std::fmod(t_ns, RESET_TIME_NS);
 
 5297  inline void setClock()
 
 5299    KM3NETDAQ::JDAQClock clock(KM3NETDAQ::JDAQClock::ANTARES);
 
 5302  using KM3NETDAQ::getFrameTime;
 
 5303  using KM3NETDAQ::getRTS;
 
 5304  using KM3NETDAQ::getTimeOfFrame;
 
 5305  using KM3NETDAQ::getTimeOfRTS;
 
 5306  using KM3NETDAQ::getFrameIndex;
 
 5307  using KM3NETDAQ::getTimeSinceRTS;
 
 5314  inline void setClock()
 
 5316    KM3NETDAQ::JDAQClock clock(KM3NETDAQ::JDAQClock::KM3NET);
 
 5319  using KM3NETDAQ::getFrameTime;
 
 5320  using KM3NETDAQ::getRTS;
 
 5321  using KM3NETDAQ::getTimeOfFrame;
 
 5322  using KM3NETDAQ::getTimeOfRTS;
 
 5323  using KM3NETDAQ::getFrameIndex;
 
 5324  using KM3NETDAQ::getTimeSinceRTS;
 
 5328#ifndef __JDAQDATATYPES__
 
 5329#define __JDAQDATATYPES__
 
 5331#include "km3net-dataformat/definitions/daqdatatypes.hh"
 
 5337namespace KM3NETDAQ {
 
 5345    typedef T  data_type;
 
 5354  inline int getDataType()
 
 5356    return getDataType(JDAQType<T>());
 
 5368  inline int getDataType(const JDAQType<T>& type);
 
 5371  class  JDAQSuperFrame;
 
 5372  class  JDAQSummaryFrame;
 
 5373  class  JDAQTimeslice;
 
 5374  struct JDAQTimesliceL0;
 
 5375  struct JDAQTimesliceL1;
 
 5376  struct JDAQTimesliceL2;
 
 5377  struct JDAQTimesliceSN;
 
 5378  class  JDAQSummaryslice;
 
 5382  inline int getDataType(const JDAQType<JDAQSuperFrame>&)   { return DAQSUPERFRAME; }
 
 5383  inline int getDataType(const JDAQType<JDAQSummaryFrame>&) { return DAQSUMMARYFRAME; }
 
 5384  inline int getDataType(const JDAQType<JDAQTimeslice>&)    { return DAQTIMESLICE; }
 
 5385  inline int getDataType(const JDAQType<JDAQTimesliceL0>&)  { return DAQTIMESLICEL0; }
 
 5386  inline int getDataType(const JDAQType<JDAQTimesliceL1>&)  { return DAQTIMESLICEL1; }
 
 5387  inline int getDataType(const JDAQType<JDAQTimesliceL2>&)  { return DAQTIMESLICEL2; }
 
 5388  inline int getDataType(const JDAQType<JDAQTimesliceSN>&)  { return DAQTIMESLICESN; }
 
 5389  inline int getDataType(const JDAQType<JDAQSummaryslice>&) { return DAQSUMMARYSLICE; }
 
 5390  inline int getDataType(const JDAQType<JDAQEvent>&)        { return DAQEVENT; }
 
 5394#ifndef __JDAQEVENT__
 
 5395#define __JDAQEVENT__
 
 5401#include "km3net-dataformat/online/JDAQRoot.hh"
 
 5402#include "km3net-dataformat/online/JDAQPreamble.hh"
 
 5403#include "km3net-dataformat/online/JDAQEventHeader.hh"
 
 5404#include "km3net-dataformat/online/JDAQHit.hh"
 
 5405#include "km3net-dataformat/online/JDAQKeyHit.hh"
 
 5406#include "km3net-dataformat/online/JDAQTriggeredHit.hh"
 
 5407#include "km3net-dataformat/online/JDAQPrint.hh"
 
 5414namespace KM3NETDAQ {
 
 5417  typedef  JDAQKeyHit             JDAQSnapshotHit;
 
 5424    public JDAQPreamble,
 
 5425    public JDAQEventHeader
 
 5429    using JDAQTriggerMask::getTriggerMask;
 
 5431    friend size_t getSizeof(const JDAQEvent&);
 
 5432    friend JReader& operator>>(JReader&, JDAQEvent&);
 
 5433    friend JWriter& operator<<(JWriter&, const JDAQEvent&);
 
 5439      JDAQPreamble(JDAQType<JDAQEvent>()),
 
 5449    JDAQEvent(const JDAQEventHeader& header) :
 
 5450      JDAQPreamble(JDAQType<JDAQEvent>()),
 
 5451      JDAQEventHeader(header)
 
 5459    class const_iterator : 
 
 5460      public std::vector<T>::const_iterator
 
 5467        std::vector<T>::const_iterator()
 
 5476      const_iterator(const typename std::vector<T>::const_iterator& i) :
 
 5477        std::vector<T>::const_iterator(i)
 
 5486    class const_reverse_iterator : 
 
 5487      public std::vector<T>::const_reverse_iterator
 
 5493      const_reverse_iterator() :
 
 5494        std::vector<T>::const_reverse_iterator()
 
 5503      const_reverse_iterator(const typename std::vector<T>::const_reverse_iterator& i) :
 
 5504        std::vector<T>::const_reverse_iterator(i)
 
 5515    const std::vector<T>& getHits() const;
 
 5524    std::vector<T>& getHits();
 
 5533    const_iterator<T> begin() const;
 
 5542    const_iterator<T> end() const;
 
 5551    const_reverse_iterator<T> rbegin() const;
 
 5560    const_reverse_iterator<T> rend() const;
 
 5569    unsigned int size() const;
 
 5586      snapshotHits .clear();
 
 5587      triggeredHits.clear();
 
 5596    void push_back(const JDAQKeyHit& hit)
 
 5598      snapshotHits.push_back(hit);
 
 5607    void push_back(const JDAQTriggeredHit& hit)
 
 5609      triggeredHits.push_back(hit);
 
 5619    static JTriggerMask_t getTriggerMask(const JDAQTriggeredHit& hit) 
 
 5621      return hit.getTriggerMask();
 
 5631    JTriggerMask_t getTriggerMask(const JDAQSnapshotHit& hit) const
 
 5633      for (std::vector<JDAQTriggeredHit>::const_iterator i = triggeredHits.begin(); i != triggeredHits.end(); ++i) {
 
 5635          return i->getTriggerMask();
 
 5639      return JTriggerMask_t(0);
 
 5650    std::ostream& print(std::ostream& out, const bool lpr = false) const;
 
 5653    ClassDef(JDAQEvent,4);
 
 5657    std::vector<JDAQTriggeredHit> triggeredHits;
 
 5658    std::vector<JDAQSnapshotHit>  snapshotHits;
 
 5669  bool operator==(const JDAQEvent& first,
 
 5670                  const JDAQEvent& second);
 
 5680  inline bool operator!=(const JDAQEvent& first,
 
 5681                         const JDAQEvent& second)
 
 5683    return !(first == second);
 
 5694  inline std::ostream& operator<<(std::ostream& out, const JDAQEvent& event)
 
 5696    return event.print(out, getDAQLongprint());
 
 5707  inline double getTimeDifference(const JDAQEvent& first, const JDAQEvent& second);
 
 5711#ifndef __JDAQEVENTHEADER__
 
 5712#define __JDAQEVENTHEADER__
 
 5714#include "km3net-dataformat/online/JDAQRoot.hh"
 
 5715#include "km3net-dataformat/online/JDAQHeader.hh"
 
 5716#include "km3net-dataformat/online/JDAQTriggerCounter.hh"
 
 5717#include "km3net-dataformat/online/JDAQTriggerMask.hh"
 
 5724namespace KM3NETDAQ {
 
 5729  class JDAQEventHeader :
 
 5731    public JDAQTriggerCounter,
 
 5732    public JDAQTriggerMask
 
 5736    friend size_t getSizeof<JDAQEventHeader>();
 
 5737    friend JReader& operator>>(JReader&, JDAQEventHeader&);
 
 5738    friend JWriter& operator<<(JWriter&, const JDAQEventHeader&);
 
 5745      JDAQTriggerCounter(),
 
 5756    const JDAQEventHeader& getDAQEventHeader() const
 
 5758      return static_cast<const JDAQEventHeader&>(*this);
 
 5768    inline bool is_same(const JDAQEventHeader& header) const
 
 5770      return (this->getDetectorID() == header.getDetectorID() &&
 
 5771              this->getRunNumber()  == header.getRunNumber()  &&
 
 5772              this->getFrameIndex() == header.getFrameIndex() &&
 
 5773              this->getCounter()    == header.getCounter());
 
 5782    unsigned int getOverlays() const
 
 5788    ClassDef(JDAQEventHeader,3);
 
 5792    unsigned int overlays;
 
 5803  inline bool operator==(const JDAQEventHeader& first,
 
 5804                         const JDAQEventHeader& second)
 
 5806    return (first.getDAQHeader()         == second.getDAQHeader()         &&
 
 5807            first.getDAQTriggerCounter() == second.getDAQTriggerCounter() &&
 
 5808            first.getDAQTriggerMask()    == second.getDAQTriggerMask());
 
 5819  inline bool operator!=(const JDAQEventHeader& first,
 
 5820                         const JDAQEventHeader& second)
 
 5822    return !(first == second);
 
 5827#ifndef __JDAQEXCEPTION__
 
 5828#define __JDAQEXCEPTION__
 
 5838namespace KM3NETDAQ {
 
 5844  class JDAQException : public std::exception { 
 
 5851    JDAQException(const std::string& error) :
 
 5860    ~JDAQException() throw()
 
 5869    virtual const char* what() const throw() 
 
 5871      return buffer.c_str();
 
 5881    friend inline std::ostream& operator<<(std::ostream& out, const JDAQException& exception)
 
 5883      return out << exception.what();
 
 5887    const std::string buffer;
 
 5892#ifndef __JDAQFRAME__
 
 5893#define __JDAQFRAME__
 
 5901#include "km3net-dataformat/online/JDAQHit.hh"
 
 5902#include "km3net-dataformat/online/JDAQRoot.hh"
 
 5903#include "km3net-dataformat/online/JDAQException.hh"
 
 5909namespace KM3NETDAQ {
 
 5914  class JDAQFrameSubset
 
 5918    typedef  const JDAQHit*                         const_iterator;
 
 5919    typedef  std::reverse_iterator<const_iterator>  const_reverse_iterator;
 
 5928    JDAQFrameSubset(const int number_of_hits, const JDAQHit* data) :
 
 5929      numberOfHits(number_of_hits),
 
 5934    const_iterator begin() const { return buffer; }
 
 5935    const_iterator end()   const { return buffer + numberOfHits; }
 
 5937    const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); }
 
 5938    const_reverse_iterator rend()   const { return const_reverse_iterator(begin()); }
 
 5940    bool empty() const { return numberOfHits == 0; }
 
 5942    int size() const { return numberOfHits; }
 
 5944    const JDAQHit* data() const { return buffer; }
 
 5948    const int      numberOfHits;
 
 5949    const JDAQHit* buffer;
 
 5960    typedef  const JDAQHit*                         const_iterator;
 
 5961    typedef  JDAQHit*                               iterator;
 
 5962    typedef  std::reverse_iterator<const_iterator>  const_reverse_iterator;
 
 5963    typedef  std::reverse_iterator<iterator>        reverse_iterator;
 
 5965    friend size_t getSizeof(const JDAQFrame&);
 
 5966    friend JReader& operator>>(JReader&, JDAQFrame&);
 
 5967    friend JWriter& operator<<(JWriter&, const JDAQFrame&);
 
 5983    JDAQFrame(const JDAQFrame& frame) :
 
 5996    JDAQFrame(JDAQFrame&& frame) :
 
 5997      numberOfHits(frame.numberOfHits),
 
 5998      buffer      (frame.buffer)
 
 6000      frame.numberOfHits = 0;
 
 6001      frame.buffer       = NULL;
 
 6011    JDAQFrame(const int number_of_hits, const JDAQHit* data) :
 
 6015      add(number_of_hits, data);
 
 6022    virtual ~JDAQFrame()
 
 6034    JDAQFrame& operator=(const JDAQFrame& frame)
 
 6047      if (buffer != NULL) {
 
 6056    const_iterator begin() const { return buffer; }
 
 6057    const_iterator end()   const { return buffer + numberOfHits; }
 
 6060    iterator begin() { return buffer; }
 
 6061    iterator end()   { return buffer + numberOfHits; }
 
 6064    const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); }
 
 6065    const_reverse_iterator rend()   const { return const_reverse_iterator(begin()); }
 
 6068    reverse_iterator rbegin() { return reverse_iterator(end()); }
 
 6069    reverse_iterator rend()   { return reverse_iterator(begin()); }
 
 6072    bool empty() const { return numberOfHits == 0; }
 
 6074    int size() const { return numberOfHits; }
 
 6076    const JDAQHit* data() const { return buffer; }
 
 6077    JDAQHit*       data()       { return buffer; }
 
 6086    const JDAQHit& operator[](int index) const
 
 6088      return buffer[index];
 
 6098    JDAQFrameSubset subset(const int i1, const int i2) const
 
 6100      return JDAQFrameSubset(i2 - i1, buffer + i1);
 
 6110    JDAQFrame& add(const JDAQFrame& frame) 
 
 6112      return add(frame.numberOfHits, frame.buffer);
 
 6123    JDAQFrame& add(const int number_of_hits, const JDAQHit* data)
 
 6125      if (number_of_hits > 0) {
 
 6127        resize(numberOfHits + number_of_hits);
 
 6129        memcpy(buffer + numberOfHits - number_of_hits, data, number_of_hits * sizeof(JDAQHit));
 
 6141    void swap(JDAQFrame& frame) 
 
 6143      std::swap(numberOfHits, frame.numberOfHits);
 
 6144      std::swap(buffer,       frame.buffer);
 
 6148    int      numberOfHits;        // following comment line is used by rootcint
 
 6149    JDAQHit* buffer;              // [numberOfHits]
 
 6152    ClassDef(JDAQFrame,1);
 
 6164    void resize(const int number_of_hits)
 
 6166      if (number_of_hits > numberOfHits) {
 
 6168        const int number_of_bytes = number_of_hits * sizeof(JDAQHit);
 
 6171          buffer = (JDAQHit*) malloc(number_of_bytes);
 
 6173          buffer = (JDAQHit*) realloc(buffer, number_of_bytes);
 
 6175        if (buffer == NULL) {
 
 6176          throw JDAQException("JDAQFrame::resize(): Memory exception - number of hits = " + std::to_string(number_of_hits));
 
 6179        numberOfHits = number_of_hits;
 
 6192  inline bool operator==(const JDAQFrame& first,
 
 6193                         const JDAQFrame& second)
 
 6195    if (first.size() == second.size()) {
 
 6197      for (JDAQFrame::const_iterator p = first.begin(), q = second.begin(); p != first.end(); ++p, ++q) {
 
 6219  inline bool operator!=(const JDAQFrame& first,
 
 6220                         const JDAQFrame& second)
 
 6222    return !(first == second);
 
 6227#ifndef __JDAQFRAMESTATUS__
 
 6228#define __JDAQFRAMESTATUS__
 
 6230#include "km3net-dataformat/online/JDAQ.hh"
 
 6231#include "km3net-dataformat/online/JDAQException.hh"
 
 6232#include "km3net-dataformat/online/JDAQRoot.hh"
 
 6238namespace KM3NETDAQ {
 
 6243  class JDAQFrameStatus {
 
 6246    friend size_t getSizeof<JDAQFrameStatus>();
 
 6247    friend JReader& operator>>(JReader&, JDAQFrameStatus&);
 
 6248    friend JWriter& operator<<(JWriter&, const JDAQFrameStatus&);
 
 6271    JDAQFrameStatus(const int __daq,
 
 6274                    const int __status_3 = 0,
 
 6275                    const int __status_4 = 0) :
 
 6279      status_3(__status_3),
 
 6280      status_4(__status_4)
 
 6291    static const JDAQFrameStatus& getInstance()
 
 6293      static const JDAQFrameStatus status(DAQ_UDP_RECEIVED_PACKETS.write(2) | DAQ_UDP_SEQUENCE_NUMBER.write(1),
 
 6294                                          DAQ_WHITE_RABBIT.write(1),
 
 6295                                          DAQ_FIFO.write(0) | DAQ_UDP_TRAILER.write(1));
 
 6306    const JDAQFrameStatus& getDAQFrameStatus() const
 
 6308      return static_cast<const JDAQFrameStatus&>(*this);
 
 6317    void setDAQFrameStatus(const JDAQFrameStatus& status)
 
 6319      static_cast<JDAQFrameStatus&>(*this) = status;
 
 6328    int getDAQStatus() const 
 
 6339    int getStatus() const 
 
 6341      return this->status;
 
 6350    int getFIFOStatus() const 
 
 6361    bool testDAQStatus() const 
 
 6363      return (getUDPNumberOfReceivedPackets() == (getUDPMaximalSequenceNumber() + 1)) && hasUDPTrailer();
 
 6372    bool testStatus() const 
 
 6374      return testWhiteRabbitStatus() && testTDCStatus();
 
 6383    int getUDPNumberOfReceivedPackets() const 
 
 6385      return DAQ_UDP_RECEIVED_PACKETS.read(this->daq);
 
 6394    int getUDPMaximalSequenceNumber() const 
 
 6396      return DAQ_UDP_SEQUENCE_NUMBER.read(this->daq);
 
 6405    bool testWhiteRabbitStatus() const
 
 6407      return DAQ_WHITE_RABBIT.has(this->status);
 
 6416    bool testTDCStatus() const 
 
 6418      return !testHighRateVeto();
 
 6427    bool testHighRateVeto() const
 
 6429      return DAQ_TDC.has(this->status);
 
 6439    bool testHighRateVeto(const int tdc) const
 
 6441      return JBit(tdc).has(this->status);
 
 6450    int countHighRateVeto() const
 
 6454      if (testHighRateVeto()) {
 
 6455        for (int pmt = 0; pmt != NUMBER_OF_PMTS; ++pmt) {
 
 6456          if (JBit(pmt).has(this->status)) {
 
 6471    bool testFIFOStatus() const 
 
 6473      return DAQ_FIFO.has(this->fifo);
 
 6483    bool testFIFOStatus(const int tdc) const
 
 6485      return JBit(tdc).has(this->fifo);
 
 6494    int countFIFOStatus() const
 
 6498      if (testFIFOStatus()) {
 
 6499        for (int pmt = 0; pmt != NUMBER_OF_PMTS; ++pmt) {
 
 6500          if (JBit(pmt).has(this->fifo)) {
 
 6513    int countActiveChannels() const
 
 6515      int n = NUMBER_OF_PMTS;
 
 6517      if (testHighRateVeto() || testFIFOStatus()) {
 
 6518        for (int pmt = 0; pmt != NUMBER_OF_PMTS; ++pmt) {
 
 6519          if ( JBit(pmt).has(this->status) || JBit(pmt).has(this->fifo) ) {
 
 6535    bool hasUDPTrailer() const
 
 6537      return DAQ_UDP_TRAILER.has(this->fifo);
 
 6547    void setHighRateVeto(const int tdc, const bool value)
 
 6549      JBit(tdc).set(this->status, value);
 
 6553    ClassDefNV(JDAQFrameStatus,1);
 
 6556    int  daq;         // DAQ  status
 
 6557    int  status;      // TDC  status
 
 6558    int  fifo;        // FIFO status
 
 6559    int  status_3;    // spare
 
 6560    int  status_4;    // spare
 
 6571  inline bool operator==(const JDAQFrameStatus& first,
 
 6572                         const JDAQFrameStatus& second)
 
 6574    return (first.getDAQStatus()  == second.getDAQStatus()  &&
 
 6575            first.getStatus()     == second.getStatus()     &&
 
 6576            first.getFIFOStatus() == second.getFIFOStatus());
 
 6587  inline bool operator!=(const JDAQFrameStatus& first,
 
 6588                         const JDAQFrameStatus& second)
 
 6590    return !(first == second);
 
 6595#ifndef __JDAQHEADER__
 
 6596#define __JDAQHEADER__
 
 6598#include "km3net-dataformat/online/JDAQRoot.hh"
 
 6599#include "km3net-dataformat/online/JDAQChronometer.hh"
 
 6606namespace KM3NETDAQ {
 
 6612    public JDAQChronometer
 
 6616    friend size_t getSizeof<JDAQHeader>();
 
 6617    friend JReader& operator>>(JReader&, JDAQHeader&);
 
 6618    friend JWriter& operator<<(JWriter&, const JDAQHeader&);
 
 6633    JDAQHeader(const JDAQChronometer& chronometer) :
 
 6634      JDAQChronometer(chronometer)
 
 6643    const JDAQHeader& getDAQHeader() const 
 
 6645      return static_cast<const JDAQHeader&>(*this); 
 
 6654    void setDAQHeader(const JDAQHeader& header)
 
 6656      static_cast<JDAQHeader&>(*this) = header;
 
 6660    ClassDef(JDAQHeader,2);
 
 6671  inline bool operator==(const JDAQHeader& first,
 
 6672                         const JDAQHeader& second)
 
 6674    return (first.getDAQChronometer() == second.getDAQChronometer());
 
 6685  inline bool operator!=(const JDAQHeader& first,
 
 6686                         const JDAQHeader& second)
 
 6688    return !(first == second);
 
 6701#include <netinet/in.h>
 
 6704#include "km3net-dataformat/online/JDAQ.hh"
 
 6705#include "km3net-dataformat/online/JDAQRoot.hh"
 
 6706#include "km3net-dataformat/online/JDAQException.hh"
 
 6713namespace KM3NETDAQ {
 
 6730    typedef  unsigned char             JPMT_t;    //!< PMT channel in FPGA
 
 6731    typedef  unsigned int              JTDC_t;    //!< leading edge [ns]
 
 6732    typedef  unsigned char             JTOT_t;    //!< time over threshold [ns]
 
 6734    friend size_t getSizeof<JDAQHit>();
 
 6735    friend JReader& operator>>(JReader&, JDAQHit&);
 
 6736    friend JWriter& operator<<(JWriter&, const JDAQHit&);
 
 6752    JDAQHit(const JPMT_t pmt_id,
 
 6753            const JTDC_t tdc_ns,
 
 6754            const JTOT_t tot_ns) :
 
 6767    inline JPMT_t getPMT() const
 
 6778    inline JTDC_t getT() const
 
 6789    inline JTOT_t getToT() const
 
 6800    static JTOT_t getMaximalToT()
 
 6813    friend inline std::istream& operator>>(std::istream& in, JDAQHit& hit)
 
 6819      if (in >> pmt >> tdc >> tot) {
 
 6820        hit = JDAQHit(pmt, tdc, tot);
 
 6834    friend inline std::ostream& operator<<(std::ostream& out, const JDAQHit& hit)
 
 6836      using namespace std;
 
 6838      out << setw(2) << (int) hit.getPMT() << ' '
 
 6839          << setw(8) << (int) hit.getT()   << ' '
 
 6840          << setw(3) << (int) hit.getToT();
 
 6846    ClassDefNV(JDAQHit,2);
 
 6850    JPMT_t pmt;       //!< PMT readout channel in FPGA
 
 6851    JTDC_t tdc;       //!< leading edge        [ns]
 
 6852    JTOT_t tot;       //!< time over threshold [ns]
 
 6866  inline bool operator<(const JDAQHit& first,
 
 6867                        const JDAQHit& second)
 
 6869    if (first.getT() != second.getT())
 
 6870      return first.getT()   < second.getT();
 
 6872      return first.getPMT() < second.getPMT();
 
 6883  inline bool operator==(const JDAQHit& first,
 
 6884                         const JDAQHit& second)
 
 6886    return (first.getPMT() == second.getPMT()  &&
 
 6887            first.getT()   == second.getT()    &&
 
 6888            first.getToT() == second.getToT());
 
 6899  inline bool operator!=(const JDAQHit& first,
 
 6900                         const JDAQHit& second)
 
 6902    return !(first == second);
 
 6907#ifndef __JDAQKEYHIT__
 
 6908#define __JDAQKEYHIT__
 
 6910#include "km3net-dataformat/online/JDAQRoot.hh"
 
 6911#include "km3net-dataformat/online/JDAQModuleIdentifier.hh"
 
 6912#include "km3net-dataformat/online/JDAQHit.hh"
 
 6913#include "km3net-dataformat/online/JDAQPMTIdentifier.hh"
 
 6920namespace KM3NETDAQ {
 
 6926    public JDAQModuleIdentifier,
 
 6931    friend size_t getSizeof<JDAQKeyHit>();
 
 6932    friend JReader& operator>>(JReader&, JDAQKeyHit&);
 
 6933    friend JWriter& operator<<(JWriter&, const JDAQKeyHit&);
 
 6939      JDAQModuleIdentifier(),
 
 6950    JDAQKeyHit(const JDAQModuleIdentifier& id,
 
 6951               const JDAQHit&              hit) :
 
 6952      JDAQModuleIdentifier(id),
 
 6960    virtual ~JDAQKeyHit()
 
 6969    operator JDAQPMTIdentifier () const
 
 6971      return JDAQPMTIdentifier(this->getModuleID(), this->getPMT());
 
 6975    ClassDef(JDAQKeyHit,1);
 
 6989  inline bool operator<(const JDAQKeyHit& first,
 
 6990                        const JDAQKeyHit& second)
 
 6992    if (first.getModuleID() == second.getModuleID()) {
 
 6993      if (first.getPMT() == second.getPMT())
 
 6994        return first.getT()   < second.getT();
 
 6996        return first.getPMT() < second.getPMT();
 
 6998      return first.getModuleID() < second.getModuleID();
 
 7012  inline bool operator==(const JDAQKeyHit& first,
 
 7013                         const JDAQKeyHit& second)
 
 7015    return (first.getModuleID() == second.getModuleID() &&
 
 7016            first.getPMT()      == second.getPMT()      &&
 
 7017            first.getT()        == second.getT());
 
 7028  inline bool operator!=(const JDAQKeyHit& first,
 
 7029                         const JDAQKeyHit& second)
 
 7031    return !(first == second);
 
 7036#ifndef __JDAQMODULEIDENTIFIER__
 
 7037#define __JDAQMODULEIDENTIFIER__
 
 7042#include "km3net-dataformat/online/JDAQRoot.hh"
 
 7049namespace KM3NETDAQ {
 
 7054  class JDAQModuleIdentifier
 
 7058    friend size_t getSizeof<JDAQModuleIdentifier>();
 
 7059    friend JReader& operator>>(JReader&, JDAQModuleIdentifier&);
 
 7060    friend JWriter& operator<<(JWriter&, const JDAQModuleIdentifier&);
 
 7065    JDAQModuleIdentifier() :
 
 7075    JDAQModuleIdentifier(const int __id) :
 
 7085    const JDAQModuleIdentifier& getModuleIdentifier() const 
 
 7096    void setModuleIdentifier(const JDAQModuleIdentifier& module)
 
 7107    int getModuleID() const 
 
 7120    friend inline std::istream& operator>>(std::istream& in, JDAQModuleIdentifier& module)
 
 7135    friend inline std::ostream& operator<<(std::ostream& out, const JDAQModuleIdentifier& module)
 
 7143    ClassDefNV(JDAQModuleIdentifier,1);
 
 7158  inline bool operator==(const JDAQModuleIdentifier& first, const JDAQModuleIdentifier& second)
 
 7160    return first.getModuleID() == second.getModuleID(); 
 
 7171  inline bool operator!=(const JDAQModuleIdentifier& first, const JDAQModuleIdentifier& second)
 
 7173    return first.getModuleID() != second.getModuleID();
 
 7184  inline bool operator==(const JDAQModuleIdentifier& module, const int id)
 
 7186    return module.getModuleID() == id; 
 
 7197  inline bool operator!=(const JDAQModuleIdentifier& module, const int id)
 
 7199    return module.getModuleID() != id; 
 
 7210  inline bool operator<(const JDAQModuleIdentifier& first, const JDAQModuleIdentifier& second)
 
 7212    return first.getModuleID() < second.getModuleID();
 
 7223  inline bool operator<(const JDAQModuleIdentifier& module, const int id)
 
 7225    return module.getModuleID() < id;
 
 7232  struct JDAQModuleComparator {
 
 7234     * Default constructor.
 
 7236    JDAQModuleComparator()
 
 7247    bool operator()(const JDAQModuleIdentifier& first, const JDAQModuleIdentifier& second) const
 
 7249      return first.getModuleID() < second.getModuleID();
 
 7255#ifndef __JDAQPMTIDENTIFIER__
 
 7256#define __JDAQPMTIDENTIFIER__
 
 7261#include "km3net-dataformat/online/JDAQModuleIdentifier.hh"
 
 7262#include "km3net-dataformat/online/JDAQRoot.hh"
 
 7269namespace KM3NETDAQ {
 
 7274  class JDAQPMTIdentifier :
 
 7275    public JDAQModuleIdentifier
 
 7279    friend size_t getSizeof<JDAQPMTIdentifier>();
 
 7280    friend JReader& operator>>(JReader&, JDAQPMTIdentifier&);
 
 7281    friend JWriter& operator<<(JWriter&, const JDAQPMTIdentifier&);
 
 7286    JDAQPMTIdentifier() :
 
 7287      JDAQModuleIdentifier(),
 
 7298    JDAQPMTIdentifier(const JDAQModuleIdentifier& id,
 
 7299                      const int                   pmt_address) :
 
 7300      JDAQModuleIdentifier(id),
 
 7301      address             (pmt_address)
 
 7310    const JDAQPMTIdentifier& getPMTIdentifier() const 
 
 7321    void setPMTIdentifier(const JDAQPMTIdentifier& pmt)
 
 7332    int getPMTAddress() const 
 
 7345    friend inline std::istream& operator>>(std::istream& in, JDAQPMTIdentifier& pmt)
 
 7347      in >> static_cast<JDAQModuleIdentifier&>(pmt);
 
 7361    friend inline std::ostream& operator<<(std::ostream& out, const JDAQPMTIdentifier& pmt)
 
 7363      out << static_cast<const JDAQModuleIdentifier&>(pmt) << ' ';
 
 7380    static inline bool compare(const JDAQPMTIdentifier& first, const JDAQPMTIdentifier& second)
 
 7382      return ((first .getModuleIdentifier() == second.getModuleIdentifier() ||
 
 7383               first .getModuleIdentifier() == -1                           ||
 
 7384               second.getModuleIdentifier() == -1)                          &&
 
 7385              (first .getPMTAddress()       == second.getPMTAddress()       ||
 
 7386               first .getPMTAddress()       == -1                           ||
 
 7387               second.getPMTAddress()       == -1));
 
 7391    ClassDefNV(JDAQPMTIdentifier,1);
 
 7408  inline bool operator<(const JDAQPMTIdentifier& first, const JDAQPMTIdentifier& second)
 
 7410    if (first.getModuleIdentifier() == second.getModuleIdentifier())
 
 7411      return first.getPMTAddress()       < second.getPMTAddress();
 
 7413      return first.getModuleIdentifier() < second.getModuleIdentifier();
 
 7426  inline bool operator==(const JDAQPMTIdentifier& first, const JDAQPMTIdentifier& second)
 
 7428    return (first.getModuleIdentifier() == second.getModuleIdentifier() &&
 
 7429            first.getPMTAddress()       == second.getPMTAddress());
 
 7440  inline bool operator!=(const JDAQPMTIdentifier& first,
 
 7441                         const JDAQPMTIdentifier& second)
 
 7443    return !(first == second);
 
 7448#ifndef __JDAQPREAMBLE__
 
 7449#define __JDAQPREAMBLE__
 
 7454#include "km3net-dataformat/online/JDAQRoot.hh"
 
 7455#include "km3net-dataformat/online/JDAQDataTypes.hh"
 
 7456#include "km3net-dataformat/online/JDAQAbstractPreamble.hh"
 
 7463namespace KM3NETDAQ {
 
 7473  class JDAQPreamble :
 
 7474    public JDAQAbstractPreamble,
 
 7485    JDAQPreamble(const JDAQType<T>& type) :
 
 7486      JDAQAbstractPreamble(type)
 
 7491    friend size_t getSizeof<JDAQPreamble>();
 
 7492    friend JReader& operator>>(JReader&, JDAQPreamble&);
 
 7493    friend JWriter& operator<<(JWriter&, const JDAQPreamble&);
 
 7499      JDAQAbstractPreamble()
 
 7506    virtual ~JDAQPreamble()
 
 7523    static JDAQPreamble getDAQPreamble(const T& object)
 
 7525      static JDAQPreamble preamble;
 
 7527      preamble.length = getSizeof(object);
 
 7528      preamble.type   = KM3NETDAQ::getDataType<T>();
 
 7541    friend inline std::ostream& operator<<(std::ostream& out, const JDAQPreamble& preamble)
 
 7543      using namespace std;
 
 7545      out << setw(8) << preamble.length;
 
 7547      out << setw(6) << preamble.type;
 
 7553    ClassDef(JDAQPreamble,1);
 
 7558#ifndef __JDAQPRINT__
 
 7559#define __JDAQPRINT__
 
 7565namespace KM3NETDAQ {
 
 7572  inline bool& getDAQLongprint()
 
 7585  inline void setDAQLongprint(const bool option)
 
 7587    getDAQLongprint() = option;
 
 7598#include "km3net-dataformat/online/JDAQException.hh"
 
 7606  class JReader;       // forward declaration for friend
 
 7607  class JWriter;       // forward declaration for friend
 
 7610namespace KM3NETDAQ {
 
 7620  inline size_t getSizeof();
 
 7630using namespace KM3NETDAQ;
 
 7633#ifndef __JDAQSUMMARYFRAME__
 
 7634#define __JDAQSUMMARYFRAME__
 
 7640#include "km3net-dataformat/online/JDAQException.hh"
 
 7641#include "km3net-dataformat/online/JDAQ.hh"
 
 7642#include "km3net-dataformat/online/JDAQClock.hh"
 
 7643#include "km3net-dataformat/online/JDAQModuleIdentifier.hh"
 
 7644#include "km3net-dataformat/online/JDAQFrameStatus.hh"
 
 7645#include "km3net-dataformat/online/JDAQSuperFrame.hh"
 
 7652namespace KM3NETDAQ {
 
 7658  class JDAQSummaryFrame;
 
 7671    friend class JDAQSummaryFrame;
 
 7674    typedef unsigned char  JRate_t;                 // type of value to store rate
 
 7682    static double getMinimalRate()
 
 7693    static double getMaximalRate()
 
 7706    static JRate_t getValue(const int numberOfHits, const double frameTime_ns)
 
 7708      return getValue(numberOfHits * 1.0e9 / frameTime_ns);
 
 7718    static JRate_t getValue(const double rate_Hz)
 
 7720      if      (rate_Hz <= getMinimalRate())
 
 7722      else if (rate_Hz >= getMaximalRate())
 
 7723        return std::numeric_limits<JRate_t>::max();
 
 7725        return (JRate_t) (log(rate_Hz/getMinimalRate()) / getFactor() + 0.5);
 
 7735    static double getRate(const JRate_t value)
 
 7740        return get_rate(value);
 
 7750    static double getWeight(const JRate_t value)
 
 7755        W = get_rate(0.5)   - getMinimalRate();
 
 7756      else if (value == std::numeric_limits<JRate_t>::max())
 
 7757        W = getMaximalRate() - get_rate(std::numeric_limits<JRate_t>::max() - 0.5);
 
 7759        W = get_rate((double) value + 0.5) - get_rate((double) value - 0.5);
 
 7772      return (int) std::numeric_limits<JRate_t>::max() + 1;
 
 7782    static const double* getData(const double factor = 1.0) 
 
 7784      static std::vector<double> buffer;
 
 7788      buffer.push_back(getMinimalRate() * factor);
 
 7790      for (int i = 1; i != JDAQRate::getN(); ++i) {
 
 7791        buffer.push_back(get_rate(i - 0.5) * factor);
 
 7794      buffer.push_back(getMaximalRate() * factor);
 
 7796      return buffer.data();
 
 7813    JRate_t getValue() const
 
 7825    void setValue(const int numberOfHits, const double frameTime_ns)
 
 7827      value = getValue(numberOfHits, frameTime_ns);
 
 7836    void setValue(const double rate_Hz)
 
 7838      value = getValue(rate_Hz);
 
 7847    double getRate() const
 
 7849      return getRate(value);
 
 7858    double getWeight() const
 
 7860      return getWeight(value);
 
 7870    JDAQRate& mul(const double factor)
 
 7872      setValue(getRate() * factor);
 
 7884    JDAQRate& div(const double factor)
 
 7886      setValue(getRate() / factor);
 
 7898    bool is_valid() const
 
 7900      return (value != 0 && value != std::numeric_limits<JRate_t>::max());
 
 7914    static const double getFactor()
 
 7916      return std::log(getMaximalRate() / getMinimalRate()) / std::numeric_limits<JRate_t>::max();
 
 7926    static double get_rate(const double value)
 
 7928      return getMinimalRate() * std::exp(value * getFactor());
 
 7940  inline bool operator==(const JDAQRate& first,
 
 7941                         const JDAQRate& second)
 
 7943    return (first.getValue() == second.getValue());
 
 7954  inline bool operator!=(const JDAQRate& first,
 
 7955                         const JDAQRate& second)
 
 7957    return (first.getValue() != second.getValue());
 
 7964  class JDAQSummaryFrame :
 
 7965    public JDAQModuleIdentifier,
 
 7966    public JDAQFrameStatus
 
 7970    typedef JDAQRate::JRate_t  JRate_t;
 
 7972    friend size_t getSizeof<JDAQSummaryFrame>();
 
 7973    friend JReader& operator>>(JReader&, JDAQSummaryFrame&);
 
 7974    friend JWriter& operator<<(JWriter&, const JDAQSummaryFrame&);
 
 7979    JDAQSummaryFrame() :
 
 7980      JDAQModuleIdentifier(),
 
 7990    JDAQSummaryFrame(const JDAQModuleIdentifier& id) :
 
 7991      JDAQModuleIdentifier(id),
 
 7992      JDAQFrameStatus(JDAQFrameStatus::getInstance())
 
 8005    JDAQSummaryFrame(const JDAQSuperFrame& input) :
 
 8006      JDAQModuleIdentifier(input.getModuleID()),
 
 8007      JDAQFrameStatus     (input.getDAQFrameStatus())
 
 8009      using namespace std;
 
 8011      typedef JDAQHit::JPMT_t  JPMT_t;
 
 8012      typedef JDAQHit::JTDC_t  JTDC_t;
 
 8014      vector<int> counter(numeric_limits<JPMT_t>::max(), 0);
 
 8016      int n = input.size();
 
 8018      for (JDAQSuperFrame::const_iterator i = input.begin(); n != 0; --n, ++i) {
 
 8019        ++counter[i->getPMT()];
 
 8022      for (int i = 0; i != NUMBER_OF_PMTS; ++i) {
 
 8023        data[i].setValue(counter[i], getFrameTime());
 
 8026      if (input.testHighRateVeto() || input.testFIFOStatus()) {
 
 8028        // determine last hit for each PMT
 
 8030        vector<JTDC_t> limit(numeric_limits<JPMT_t>::max(), 0);
 
 8032        int n = input.size();
 
 8034        for (JDAQSuperFrame::const_iterator i = input.begin(); n != 0; --n, ++i) {
 
 8035          if (i->getT() > limit[i->getPMT()]) {
 
 8036            limit[i->getPMT()] = i->getT();
 
 8040        for (int i = 0; i != NUMBER_OF_PMTS; ++i) {
 
 8041          if (input.testHighRateVeto(i) || input.testFIFOStatus(i)) {
 
 8042            if (limit[i] != 0) {
 
 8043              data[i].setValue((double) counter[i] * 1.0e9 / (double) limit[i]);
 
 8057    const JDAQRate& operator[](const int tdc) const
 
 8059      if (tdc >= 0 && tdc < NUMBER_OF_PMTS)
 
 8062        throw JDAQException("TDC out of range.");
 
 8072    JDAQRate& operator[](const int tdc)
 
 8074      if (tdc >= 0 && tdc < NUMBER_OF_PMTS)
 
 8077        throw JDAQException("TDC out of range.");
 
 8087    JRate_t getValue(const int tdc) const
 
 8089      return data[tdc].getValue();
 
 8100    double getRate(const int tdc, const double factor = 1.0) const
 
 8102      return data[tdc].getRate() * factor;
 
 8113    double getWeight(const int tdc, const double factor = 1.0) const
 
 8115      return data[tdc].getWeight() / factor;
 
 8125    void setRate(const int tdc, const double rate_Hz)
 
 8127      return data[tdc].setValue(rate_Hz);
 
 8131    static int ROOT_IO_VERSION;     //!< Streamer version of JDAQSummaryslice as obtained from ROOT file.
 
 8134    ClassDefNV(JDAQSummaryFrame,2);
 
 8139    JDAQRate data[NUMBER_OF_PMTS];
 
 8150  inline bool operator==(const JDAQSummaryFrame& first,
 
 8151                         const JDAQSummaryFrame& second)
 
 8153    if (first.getModuleIdentifier() == second.getModuleIdentifier() &&
 
 8154        first.getDAQFrameStatus()   == second.getDAQFrameStatus()) {
 
 8156      for (int i = 0; i != NUMBER_OF_PMTS; ++i) {
 
 8157        if (first[i] != second[i]) {
 
 8178  inline bool operator!=(const JDAQSummaryFrame& first,
 
 8179                         const JDAQSummaryFrame& second)
 
 8181    return !(first == second);
 
 8186#ifndef __JDAQSUMMARYSLICE__
 
 8187#define __JDAQSUMMARYSLICE__
 
 8193#include "km3net-dataformat/online/JDAQRoot.hh"
 
 8194#include "km3net-dataformat/online/JDAQPreamble.hh"
 
 8195#include "km3net-dataformat/online/JDAQSummaryFrame.hh"
 
 8196#include "km3net-dataformat/online/JDAQSummarysliceHeader.hh"
 
 8197#include "km3net-dataformat/online/JDAQTimeslice.hh"
 
 8198#include "km3net-dataformat/online/JDAQClock.hh"
 
 8205namespace KM3NETDAQ {
 
 8210  class JDAQSummaryslice :
 
 8211    public JDAQPreamble,
 
 8212    public JDAQSummarysliceHeader,
 
 8213    public std::vector<JDAQSummaryFrame>
 
 8217    friend size_t getSizeof(const JDAQSummaryslice&);
 
 8218    friend JReader& operator>>(JReader&, JDAQSummaryslice&);
 
 8219    friend JWriter& operator<<(JWriter&, const JDAQSummaryslice&);
 
 8224    JDAQSummaryslice() :
 
 8225      JDAQPreamble(JDAQType<JDAQSummaryslice>()),
 
 8226      JDAQSummarysliceHeader(),
 
 8227      std::vector<JDAQSummaryFrame>()
 
 8236    JDAQSummaryslice(const JDAQChronometer& chronometer) :
 
 8237      JDAQPreamble(JDAQType<JDAQSummaryslice>()),
 
 8238      JDAQSummarysliceHeader(chronometer),
 
 8239      std::vector<JDAQSummaryFrame>()
 
 8248    JDAQSummaryslice(const JDAQTimeslice& timeslice) :
 
 8249      JDAQPreamble(JDAQType<JDAQSummaryslice>()),
 
 8250      JDAQSummarysliceHeader(timeslice),
 
 8251      std::vector<JDAQSummaryFrame>()
 
 8253      for (JDAQTimeslice::const_iterator i = timeslice.begin(); i != timeslice.end(); ++i) {
 
 8254        this->push_back(JDAQSummaryFrame(*i));
 
 8262    virtual ~JDAQSummaryslice()
 
 8273    std::ostream& print(std::ostream& out, const bool lpr = false) const
 
 8275      using namespace std;
 
 8277      out << this->ClassName() << endl;
 
 8278      out << dynamic_cast<const JDAQPreamble&>   (*this) << endl;
 
 8279      out << dynamic_cast<const JDAQChronometer&>(*this) << endl;
 
 8281      for (JDAQSummaryslice::const_iterator module = this->begin(); module != this->end(); ++module) {
 
 8283        out << ' ' << setw(10) << module->getModuleID();
 
 8284        out << ' ' << setw(8)  << setfill('0') << hex << module->getStatus()     << dec << setfill(' ');
 
 8285        out << '|' << setw(8)  << setfill('0') << hex << module->getFIFOStatus() << dec << setfill(' ');
 
 8286        out << ' ' << setw(2)  << module->getUDPNumberOfReceivedPackets();
 
 8287        out << ' ' << setw(2)  << module->getUDPMaximalSequenceNumber();
 
 8290          for (int pmt = 0; pmt != NUMBER_OF_PMTS; ++pmt) {
 
 8291            out << ' ' << fixed << showpoint << setw(4) << setprecision(1) << module->getRate(pmt) * 1.0e-3;
 
 8307    static void actionAtFileOpen(int version)
 
 8309      JDAQSummaryFrame::ROOT_IO_VERSION = version;
 
 8313    ClassDef(JDAQSummaryslice,6);
 
 8324  inline std::ostream& operator<<(std::ostream& out, const KM3NETDAQ::JDAQSummaryslice& summary)
 
 8326    return summary.print(out, getDAQLongprint());
 
 8337  inline bool operator==(const JDAQSummaryslice& first,
 
 8338                         const JDAQSummaryslice& second)
 
 8340    return (first.getDAQSummarysliceHeader()                         == second.getDAQSummarysliceHeader()                         &&
 
 8341            static_cast<const std::vector<JDAQSummaryFrame>&>(first) == static_cast<const std::vector<JDAQSummaryFrame>&>(second));
 
 8352  inline bool operator!=(const JDAQSummaryslice& first,
 
 8353                         const JDAQSummaryslice& second)
 
 8355    return !(first == second);
 
 8360#ifndef __JDAQSUMMARYSLICEHEADER__
 
 8361#define __JDAQSUMMARYSLICEHEADER__
 
 8363#include "km3net-dataformat/online/JDAQRoot.hh"
 
 8364#include "km3net-dataformat/online/JDAQHeader.hh"
 
 8371namespace KM3NETDAQ {
 
 8376  class JDAQSummarysliceHeader :
 
 8383    JDAQSummarysliceHeader() :
 
 8393    JDAQSummarysliceHeader(const JDAQChronometer& chronometer) :
 
 8394      JDAQHeader(chronometer)
 
 8403    const JDAQSummarysliceHeader& getDAQSummarysliceHeader() const
 
 8405      return static_cast<const JDAQSummarysliceHeader&>(*this);
 
 8409    ClassDef(JDAQSummarysliceHeader,2);
 
 8420  inline bool operator==(const JDAQSummarysliceHeader& first,
 
 8421                         const JDAQSummarysliceHeader& second)
 
 8423    return (first.getDAQHeader() == second.getDAQHeader());
 
 8434  inline bool operator!=(const JDAQSummarysliceHeader& first,
 
 8435                         const JDAQSummarysliceHeader& second)
 
 8437    return !(first == second);
 
 8442#ifndef __JDAQSUPERFRAME__
 
 8443#define __JDAQSUPERFRAME__
 
 8445#include "km3net-dataformat/online/JDAQ.hh"
 
 8446#include "km3net-dataformat/online/JDAQPreamble.hh"
 
 8447#include "km3net-dataformat/online/JDAQSuperFrameHeader.hh"
 
 8448#include "km3net-dataformat/online/JDAQFrame.hh"
 
 8449#include "km3net-dataformat/online/JDAQHit.hh"
 
 8450#include "km3net-dataformat/online/JDAQRoot.hh"
 
 8451#include "km3net-dataformat/online/JDAQException.hh"
 
 8458namespace KM3NETDAQ {
 
 8463  class JDAQSuperFrame :
 
 8464    public JDAQPreamble,
 
 8465    public JDAQSuperFrameHeader,
 
 8470    typedef  JDAQFrame::const_iterator           const_iterator;
 
 8471    typedef  JDAQFrame::iterator                 iterator;
 
 8472    typedef  JDAQFrame::const_reverse_iterator   const_reverse_iterator;
 
 8473    typedef  JDAQFrame::reverse_iterator         reverse_iterator;
 
 8475    friend size_t getSizeof(const JDAQSuperFrame&);
 
 8476    friend JReader& operator>>(JReader&, JDAQSuperFrame&);
 
 8477    friend JWriter& operator<<(JWriter&, const JDAQSuperFrame&);
 
 8483      JDAQPreamble(JDAQType<JDAQSuperFrame>()),
 
 8484      JDAQSuperFrameHeader(),
 
 8494    JDAQSuperFrame(const JDAQSuperFrameHeader& header) :
 
 8495      JDAQPreamble(JDAQType<JDAQSuperFrame>()),
 
 8496      JDAQSuperFrameHeader(header),
 
 8506    JDAQSuperFrame(const JDAQSuperFrame& super_frame) :
 
 8507      JDAQPreamble(JDAQType<JDAQSuperFrame>()),
 
 8508      JDAQSuperFrameHeader(super_frame.getDAQSuperFrameHeader()),
 
 8509      JDAQFrame(super_frame)
 
 8519    JDAQSuperFrame& add(const JDAQSuperFrame& super_frame) 
 
 8521      if (this->getModuleID() != super_frame.getModuleID())
 
 8522        throw JDAQException("JDAQSuperFrame::add(): Different module identifiers.");
 
 8524      return add(static_cast<const JDAQFrame&>(super_frame));
 
 8534    JDAQSuperFrame& add(const JDAQHit& hit)
 
 8536      return add(1, &hit);
 
 8546    JDAQSuperFrame& add(const JDAQFrame& frame) 
 
 8548      return add(frame.numberOfHits, frame.buffer);
 
 8559    JDAQSuperFrame& add(const int number_of_hits, const JDAQHit* data)
 
 8561      JDAQFrame::add(number_of_hits, data);
 
 8567    ClassDef(JDAQSuperFrame,3);
 
 8578  inline bool operator==(const JDAQSuperFrame& first,
 
 8579                         const JDAQSuperFrame& second)
 
 8581    if (first.getDAQSuperFrameHeader() == second.getDAQSuperFrameHeader() &&
 
 8582        first.size()                   == second.size()) {
 
 8584      for (JDAQSuperFrame::const_iterator p = first.begin(), q = second.begin(); p != first.end(); ++p, ++q) {
 
 8606  inline bool operator!=(const JDAQSuperFrame& first,
 
 8607                         const JDAQSuperFrame& second)
 
 8609    return !(first == second);
 
 8614#ifndef __JDAQSUPERFRAMEHEADER__
 
 8615#define __JDAQSUPERFRAMEHEADER__
 
 8617#include "km3net-dataformat/online/JDAQ.hh"
 
 8618#include "km3net-dataformat/online/JDAQHeader.hh"
 
 8619#include "km3net-dataformat/online/JDAQModuleIdentifier.hh"
 
 8620#include "km3net-dataformat/online/JDAQFrameStatus.hh"
 
 8621#include "km3net-dataformat/online/JDAQRoot.hh"
 
 8627namespace KM3NETDAQ {
 
 8632  class JDAQSuperFrameHeader :
 
 8634    public JDAQModuleIdentifier,
 
 8635    public JDAQFrameStatus
 
 8639    friend size_t getSizeof<JDAQSuperFrameHeader>();
 
 8640    friend JReader& operator>>(JReader&, JDAQSuperFrameHeader&);
 
 8641    friend JWriter& operator<<(JWriter&, const JDAQSuperFrameHeader&);
 
 8646    JDAQSuperFrameHeader() :
 
 8648      JDAQModuleIdentifier(),
 
 8659    JDAQSuperFrameHeader(const JDAQChronometer& chronometer,
 
 8661      JDAQHeader          (chronometer),
 
 8662      JDAQModuleIdentifier(id),
 
 8663      JDAQFrameStatus     (JDAQFrameStatus::getInstance())
 
 8674    JDAQSuperFrameHeader(const JDAQChronometer& chronometer,
 
 8676                         const JDAQFrameStatus& status) :
 
 8677      JDAQHeader          (chronometer),
 
 8678      JDAQModuleIdentifier(id),
 
 8679      JDAQFrameStatus     (status)
 
 8688    const JDAQSuperFrameHeader& getDAQSuperFrameHeader() const
 
 8690      return static_cast<const JDAQSuperFrameHeader&>(*this);
 
 8699    void setDAQSuperFrameHeader(const JDAQSuperFrameHeader& header)
 
 8701      static_cast<JDAQSuperFrameHeader&>(*this) = header;
 
 8705    ClassDef(JDAQSuperFrameHeader,2);
 
 8716  inline bool operator==(const JDAQSuperFrameHeader& first,
 
 8717                         const JDAQSuperFrameHeader& second)
 
 8719    return (first.getDAQHeader()        == second.getDAQHeader()         &&
 
 8720            first.getModuleIdentifier() == second.getModuleIdentifier()  &&
 
 8721            first.getDAQFrameStatus()   == second.getDAQFrameStatus());
 
 8732  inline bool operator!=(const JDAQSuperFrameHeader& first,
 
 8733                         const JDAQSuperFrameHeader& second)
 
 8735    return !(first == second);
 
 8740#ifndef __JDAQTIMESLICE__
 
 8741#define __JDAQTIMESLICE__
 
 8748#include "km3net-dataformat/online/JDAQRoot.hh"
 
 8749#include "km3net-dataformat/online/JDAQPreamble.hh"
 
 8750#include "km3net-dataformat/online/JDAQTimesliceHeader.hh"
 
 8751#include "km3net-dataformat/online/JDAQSuperFrame.hh"
 
 8752#include "km3net-dataformat/online/JDAQException.hh"
 
 8753#include "km3net-dataformat/online/JDAQPrint.hh"
 
 8760namespace KM3NETDAQ {
 
 8763  class JDAQSummaryslice;
 
 8769  class JDAQTimeslice :
 
 8770    public JDAQPreamble,
 
 8771    public JDAQTimesliceHeader,
 
 8772    public std::vector<JDAQSuperFrame>
 
 8776    friend size_t getSizeof(const JDAQTimeslice&);
 
 8777    friend JReader& operator>>(JReader&, JDAQTimeslice&);
 
 8778    friend JWriter& operator<<(JWriter&, const JDAQTimeslice&);
 
 8784      JDAQPreamble(JDAQType<JDAQTimeslice>()),
 
 8785      JDAQTimesliceHeader(),
 
 8786      std::vector<JDAQSuperFrame>()
 
 8795    JDAQTimeslice(const JDAQChronometer& chronometer) :
 
 8796      JDAQPreamble(JDAQType<JDAQTimeslice>()),
 
 8797      JDAQTimesliceHeader(chronometer),
 
 8798      std::vector<JDAQSuperFrame>()
 
 8808    JDAQTimeslice(const JDAQEvent& event,
 
 8809                  const bool       snapshot = true);
 
 8819    JDAQTimeslice(const JDAQEvent&        event,
 
 8820                  const JDAQSummaryslice& summary,
 
 8821                  const bool              snapshot = true);
 
 8827    virtual ~JDAQTimeslice()
 
 8838      for (iterator i = this->begin(); i != this->end(); ++i) {
 
 8842      std::vector<JDAQSuperFrame>::clear();
 
 8852    JDAQTimeslice& operator=(const JDAQTimeslice& timeslice)
 
 8856      setDAQChronometer(timeslice.getDAQChronometer());
 
 8858      for (const_iterator i = timeslice.begin(); i != timeslice.end(); ++i) {
 
 8872    JDAQTimeslice& add(const JDAQTimeslice& timeslice) 
 
 8874      using namespace std;
 
 8876      map<JDAQModuleIdentifier, int> buffer;
 
 8878      for (const_iterator i = this->begin(); i != this->end(); ++i) {
 
 8879        buffer[i->getModuleIdentifier()] = distance(static_cast<const JDAQTimeslice&>(*this).begin(),i);
 
 8882      for (JDAQTimeslice::const_iterator i = timeslice.begin(); i != timeslice.end(); ++i) {
 
 8884        map<JDAQModuleIdentifier, int>::const_iterator p = buffer.find(i->getModuleIdentifier());
 
 8886        if (p != buffer.end()) {
 
 8888          JDAQSuperFrame& frame = this->at(p->second);
 
 8892          sort(frame.begin(), frame.end());
 
 8896          this->push_back(*i);
 
 8911    std::ostream& print(std::ostream& out, const bool lpr = false) const
 
 8913      using namespace std;
 
 8915      out << this->ClassName() << endl;
 
 8916      out << dynamic_cast<const JDAQPreamble&>   (*this) << endl;
 
 8917      out << dynamic_cast<const JDAQChronometer&>(*this) << endl;
 
 8919      for (JDAQTimeslice::const_iterator frame = this->begin(); frame != this->end(); ++frame) {
 
 8921        out << ' ' << setw(10) << frame->getModuleID();
 
 8922        out << ' ' << setw(6)  << frame->getLength();
 
 8923        out << ' ' << setw(6)  << frame->getDataType();
 
 8924        out << ' ' << setw(6)  << frame->getTimesliceStart();
 
 8925        out << ' ' << setw(8)  << setfill('0') << hex << frame->getStatus()     << dec << setfill(' ');
 
 8926        out << '|' << setw(8)  << setfill('0') << hex << frame->getFIFOStatus() << dec << setfill(' ');
 
 8927        out << ' ' << setw(2)  << frame->getUDPNumberOfReceivedPackets();
 
 8928        out << '/' << setw(2)  << frame->getUDPMaximalSequenceNumber();
 
 8929        out << ' ' << setw(6)  << frame->size();
 
 8933          if (!frame->empty()) {
 
 8935            out << ' ' << setw(10) << frame-> begin()->getT();
 
 8937            out << ' ' << setw(10) << frame->rbegin()->getT();
 
 8948          for (JDAQFrame::const_iterator hit = frame->begin(); hit != frame->end(); ++hit, ++n) {
 
 8949            out << setw(2) << (int) hit->getPMT() << ' ' 
 
 8950                << setw(8) << (int) hit->getT()   << ' ' 
 
 8951                << setw(3) << (int) hit->getToT() << (n%10 == 0 ? '\n' : ' ');
 
 8962    ClassDef(JDAQTimeslice,4);
 
 8973  inline bool operator==(const JDAQTimeslice& first,
 
 8974                         const JDAQTimeslice& second)
 
 8976    return (first.getDAQTimesliceHeader()                          == second.getDAQTimesliceHeader()                          &&
 
 8977            static_cast<const std::vector<JDAQSuperFrame>&>(first) == static_cast<const std::vector<JDAQSuperFrame>&>(second));
 
 8988  inline bool operator!=(const JDAQTimeslice& first,
 
 8989                         const JDAQTimeslice& second)
 
 8991    return !(first == second);
 
 8998  struct JDAQTimesliceL0 : public JDAQTimeslice { ClassDef(JDAQTimesliceL0,1); };
 
 9004  struct JDAQTimesliceL1 : public JDAQTimeslice { ClassDef(JDAQTimesliceL1,1); };
 
 9010  struct JDAQTimesliceL2 : public JDAQTimeslice { ClassDef(JDAQTimesliceL2,1); };
 
 9016  struct JDAQTimesliceSN : public JDAQTimeslice { ClassDef(JDAQTimesliceSN,1); };
 
 9026  inline std::ostream& operator<<(std::ostream& out, const JDAQTimeslice& timeslice)
 
 9028    return timeslice.print(out, getDAQLongprint());
 
 9033#ifndef __JDAQTIMESLICEHEADER__
 
 9034#define __JDAQTIMESLICEHEADER__
 
 9036#include "km3net-dataformat/online/JDAQRoot.hh"
 
 9037#include "km3net-dataformat/online/JDAQHeader.hh"
 
 9043namespace KM3NETDAQ {
 
 9048  class JDAQTimesliceHeader :
 
 9055    JDAQTimesliceHeader() :
 
 9065    JDAQTimesliceHeader(const JDAQChronometer& chronometer) :
 
 9066      JDAQHeader(chronometer)
 
 9075    const JDAQTimesliceHeader& getDAQTimesliceHeader() const
 
 9077      return static_cast<const JDAQTimesliceHeader&>(*this);
 
 9081    ClassDef(JDAQTimesliceHeader,2);
 
 9092  inline bool operator==(const JDAQTimesliceHeader& first,
 
 9093                         const JDAQTimesliceHeader& second)
 
 9095    return (first.getDAQHeader() == second.getDAQHeader());
 
 9106  inline bool operator!=(const JDAQTimesliceHeader& first,
 
 9107                         const JDAQTimesliceHeader& second)
 
 9109    return !(first == second);
 
 9114#ifndef __JDAQTRIGGERCOUNTER__
 
 9115#define __JDAQTRIGGERCOUNTER__
 
 9117#include "km3net-dataformat/online/JDAQRoot.hh"
 
 9124namespace KM3NETDAQ {
 
 9130  typedef unsigned long long int                            JTriggerCounter_t;
 
 9136  class JDAQTriggerCounter {
 
 9143    JDAQTriggerCounter(const JTriggerCounter_t counter)
 
 9145      this->trigger_counter = counter;
 
 9151    friend size_t getSizeof<JDAQTriggerCounter>();
 
 9152    friend JReader& operator>>(JReader&, JDAQTriggerCounter&);
 
 9153    friend JWriter& operator<<(JWriter&, const JDAQTriggerCounter&);
 
 9161    JDAQTriggerCounter()
 
 9163      trigger_counter = getInstance().next();
 
 9170    virtual ~JDAQTriggerCounter()
 
 9179    static JDAQTriggerCounter& getInstance()
 
 9181      static JDAQTriggerCounter counter(0);
 
 9192    const JDAQTriggerCounter& getDAQTriggerCounter() const
 
 9194      return static_cast<const JDAQTriggerCounter&>(*this);
 
 9203      getInstance().trigger_counter = 0;
 
 9212    JTriggerCounter_t getCounter() const
 
 9214      return trigger_counter;
 
 9223    void setCounter(const JTriggerCounter_t counter)
 
 9225      this->trigger_counter = counter;
 
 9234    JTriggerCounter_t next()
 
 9236      return trigger_counter++;
 
 9240    ClassDef(JDAQTriggerCounter,1);
 
 9244    JTriggerCounter_t trigger_counter;
 
 9255  inline bool operator==(const JDAQTriggerCounter& first,
 
 9256                         const JDAQTriggerCounter& second)
 
 9258    return (first.getCounter() == second.getCounter());
 
 9269  inline bool operator!=(const JDAQTriggerCounter& first,
 
 9270                         const JDAQTriggerCounter& second)
 
 9272    return !(first == second);
 
 9277#ifndef __JDAQTRIGGERMASK__
 
 9278#define __JDAQTRIGGERMASK__
 
 9284#include "km3net-dataformat/online/JDAQRoot.hh"
 
 9291namespace KM3NETDAQ {
 
 9297  typedef unsigned long long int                            JTriggerMask_t;
 
 9303  static const unsigned int NUMBER_OF_TRIGGER_BITS = sizeof(JTriggerMask_t) * 8;
 
 9312  inline JTriggerMask_t getTriggerMask(const unsigned int bit)
 
 9314    if (bit < NUMBER_OF_TRIGGER_BITS)
 
 9315      return JTriggerMask_t(1) << bit;
 
 9324  class JDAQTriggerMask {
 
 9327    friend size_t getSizeof<JDAQTriggerMask>();
 
 9328    friend JReader& operator>>(JReader&, JDAQTriggerMask&);
 
 9329    friend JWriter& operator<<(JWriter&, const JDAQTriggerMask&);
 
 9344    JDAQTriggerMask(const JTriggerMask_t mask) :
 
 9354    JDAQTriggerMask(const std::string& buffer) :
 
 9355      trigger_mask(valueOf(buffer).getTriggerMask())
 
 9362    virtual ~JDAQTriggerMask()
 
 9371    const JDAQTriggerMask& getDAQTriggerMask() const
 
 9373      return static_cast<const JDAQTriggerMask&>(*this);
 
 9382    JTriggerMask_t getTriggerMask() const
 
 9384      return trigger_mask;
 
 9393    void setDAQTriggerMask(const JDAQTriggerMask& mask)
 
 9395      trigger_mask = mask.trigger_mask;
 
 9404    void setTriggerMask(const JTriggerMask_t mask)
 
 9406      trigger_mask = mask;
 
 9416    JDAQTriggerMask& addTriggerMask(const JDAQTriggerMask& mask)
 
 9418      trigger_mask |= mask.trigger_mask;
 
 9430    inline bool hasTriggerMask(const JDAQTriggerMask& mask) const
 
 9432      return trigger_mask & mask.trigger_mask;
 
 9442    inline JDAQTriggerMask& addTriggerBit(const unsigned int bit)
 
 9444      trigger_mask |= KM3NETDAQ::getTriggerMask(bit);
 
 9456    inline bool hasTriggerBit(const unsigned int bit) const
 
 9458      return trigger_mask & KM3NETDAQ::getTriggerMask(bit);
 
 9468    static JDAQTriggerMask valueOf(const std::string& buffer)
 
 9470      JDAQTriggerMask trigger_mask;
 
 9472      unsigned int bit = 0;
 
 9474      for (std::string::const_reverse_iterator i = buffer.rbegin(); i != buffer.rend() && bit != NUMBER_OF_TRIGGER_BITS; ++i, ++bit) {
 
 9476          trigger_mask.addTriggerBit(bit);
 
 9480      return trigger_mask;
 
 9489    std::string toString() const
 
 9491      std::string buffer(NUMBER_OF_TRIGGER_BITS, '0');
 
 9493      unsigned int bit = 0;
 
 9495      for (std::string::reverse_iterator i = buffer.rbegin(); i != buffer.rend() && bit != NUMBER_OF_TRIGGER_BITS; ++i, ++bit) {
 
 9496        if (hasTriggerBit(bit)) {
 
 9512    friend inline std::istream& operator>>(std::istream& in, JDAQTriggerMask& mask)
 
 9517        mask= JDAQTriggerMask::valueOf(buffer);
 
 9531    friend inline std::ostream& operator<<(std::ostream& out, const JDAQTriggerMask& mask)
 
 9533      out << mask.toString();
 
 9539    ClassDef(JDAQTriggerMask,1);
 
 9543    JTriggerMask_t  trigger_mask;
 
 9547  static const JDAQTriggerMask TRIGGER_MASK_ON   =  JDAQTriggerMask(~JTriggerMask_t(0));  //!< Trigger mask on;
 
 9548  static const JDAQTriggerMask TRIGGER_MASK_OFF  =  JDAQTriggerMask( JTriggerMask_t(0));  //!< Trigger mask off;
 
 9558  inline bool operator==(const JDAQTriggerMask& first,
 
 9559                         const JDAQTriggerMask& second)
 
 9561    return (first.getTriggerMask() == second.getTriggerMask());
 
 9572  inline bool operator!=(const JDAQTriggerMask& first,
 
 9573                         const JDAQTriggerMask& second)
 
 9575    return !(first == second);
 
 9580#ifndef __JDAQTRIGGEREDHIT__
 
 9581#define __JDAQTRIGGEREDHIT__
 
 9583#include "km3net-dataformat/online/JDAQRoot.hh"
 
 9584#include "km3net-dataformat/online/JDAQModuleIdentifier.hh"
 
 9585#include "km3net-dataformat/online/JDAQHit.hh"
 
 9586#include "km3net-dataformat/online/JDAQKeyHit.hh"
 
 9587#include "km3net-dataformat/online/JDAQTriggerMask.hh"
 
 9594namespace KM3NETDAQ {
 
 9599  class JDAQTriggeredHit :
 
 9601    public JDAQTriggerMask
 
 9605    friend size_t getSizeof<JDAQTriggeredHit>();
 
 9606    friend JReader& operator>>(JReader&, JDAQTriggeredHit&);
 
 9607    friend JWriter& operator<<(JWriter&, const JDAQTriggeredHit&);
 
 9612    JDAQTriggeredHit() :
 
 9625    JDAQTriggeredHit(const JDAQModuleIdentifier& ID,
 
 9627                     const JDAQTriggerMask&      mask) :
 
 9629      JDAQTriggerMask(mask)
 
 9636    virtual ~JDAQTriggeredHit()
 
 9640    ClassDef(JDAQTriggeredHit,2);
 
 9651  inline bool operator==(const JDAQTriggeredHit& first,
 
 9652                         const JDAQTriggeredHit& second)
 
 9654    return (static_cast<const JDAQKeyHit&>     (first) == static_cast<const JDAQKeyHit&>     (second) &&
 
 9655            static_cast<const JDAQTriggerMask&>(first) == static_cast<const JDAQTriggerMask&>(second));
 
 9666  inline bool operator!=(const JDAQTriggeredHit& first,
 
 9667                         const JDAQTriggeredHit& second)
 
 9669    return !(first == second);
 
 9674#ifndef __JDAQUTCEXTENDED__
 
 9675#define __JDAQUTCEXTENDED__
 
 9687#include "km3net-dataformat/online/JDAQRoot.hh"
 
 9690namespace KM3NETDAQ {
 
 9695  class JDAQUTCExtended 
 
 9699    friend size_t getSizeof<JDAQUTCExtended>();
 
 9700    friend JReader& operator>>(JReader&, JDAQUTCExtended&);
 
 9701    friend JWriter& operator<<(JWriter&, const JDAQUTCExtended&);
 
 9709      UTC_16nanosecondcycles(0)
 
 9719    JDAQUTCExtended(const uint32_t seconds,
 
 9720                    const uint32_t cycles):
 
 9721      UTC_seconds(seconds),
 
 9722      UTC_16nanosecondcycles(cycles)
 
 9731    JDAQUTCExtended(const double nanoseconds)
 
 9733      setTimeNanoSecond(nanoseconds);
 
 9740    virtual ~JDAQUTCExtended()
 
 9749    bool getWRStatus() const
 
 9751      return (UTC_seconds & ~getMask()) != 0;
 
 9760    uint32_t getUTCseconds() const
 
 9762      return (UTC_seconds & getMask());
 
 9771    uint32_t getUTC16nanosecondcycles() const
 
 9773      return UTC_16nanosecondcycles;
 
 9782    double getTimeNanoSecond() const
 
 9784      return getUTCseconds() * 1.0e9  +  getUTC16nanosecondcycles() * getTick();
 
 9793    void setTimeNanoSecond(const double utc_ns)
 
 9795      UTC_seconds            = (uint32_t) ( utc_ns * 1.0e-9);
 
 9796      UTC_16nanosecondcycles = (uint32_t) ((utc_ns - UTC_seconds*1.0e9) / getTick());
 
 9805    void addTimeNanoSecond(const double t_ns)
 
 9807      const double   x_ns  =  (double) getUTC16nanosecondcycles() * (double) getTick()  +  t_ns;
 
 9808      const uint32_t t_s   =  (uint32_t) (x_ns * 1.0e-9);
 
 9811      UTC_16nanosecondcycles  = (uint32_t) ((x_ns - t_s*1.0e9) / getTick());
 
 9820    static JDAQUTCExtended min()
 
 9822      return JDAQUTCExtended(0,0);
 
 9831    static JDAQUTCExtended max()
 
 9833      return JDAQUTCExtended(std::numeric_limits<uint32_t>::max(),
 
 9834                             std::numeric_limits<uint32_t>::max());
 
 9843    static uint32_t getMask() 
 
 9854    static double getTick()
 
 9865    static const JDAQUTCExtended& getInstance() 
 
 9867      static JDAQUTCExtended utc(1600000000, 0);
 
 9880    friend inline std::istream& operator>>(std::istream& in, JDAQUTCExtended& utc)
 
 9882      in >> utc.UTC_seconds;
 
 9884      in >> utc.UTC_16nanosecondcycles;
 
 9897    friend inline std::ostream& operator<<(std::ostream& out, const JDAQUTCExtended& utc)
 
 9899      using namespace std;
 
 9901      const char c = out.fill();
 
 9903      out << setw(10) << utc.getUTCseconds();
 
 9905      out << setw(10) << setfill('0') << utc.getUTC16nanosecondcycles() << setfill(c);
 
 9911    ClassDef(JDAQUTCExtended,1);
 
 9915    uint32_t UTC_seconds;
 
 9916    uint32_t UTC_16nanosecondcycles;
 
 9927  inline bool operator<(const JDAQUTCExtended& first, const JDAQUTCExtended& second)
 
 9929    if (first.getUTCseconds() == second.getUTCseconds())
 
 9930      return first.getUTC16nanosecondcycles() < second.getUTC16nanosecondcycles();
 
 9932      return first.getUTCseconds() < second.getUTCseconds();
 
 9943  inline bool operator>(const JDAQUTCExtended& first, const JDAQUTCExtended& second)
 
 9945    return (second < first);
 
 9956  inline bool operator<=(const JDAQUTCExtended& first, const JDAQUTCExtended& second)
 
 9958    return !(second < first);
 
 9969  inline bool operator>=(const JDAQUTCExtended& first, const JDAQUTCExtended& second)
 
 9971    return !(first < second);
 
 9982  inline bool operator==(const JDAQUTCExtended& first, const JDAQUTCExtended& second)
 
 9984    return (first.getUTCseconds()            == second.getUTCseconds()            &&
 
 9985            first.getUTC16nanosecondcycles() == second.getUTC16nanosecondcycles());
 
 9996  inline bool operator!=(const JDAQUTCExtended& first, const JDAQUTCExtended& second)
 
 9998    return !(first == second);
 
10009  inline double getTimeDifference(const JDAQUTCExtended& first, const JDAQUTCExtended& second)
 
10011    const double utc_s   =  ((double) second.getUTCseconds()            - (double) first.getUTCseconds());
 
10012    const double utc_ns  =  ((double) second.getUTC16nanosecondcycles() - (double) first.getUTC16nanosecondcycles()) * JDAQUTCExtended::getTick();
 
10014    return utc_s  +  utc_ns*1.0e-9;
 
10019#ifndef AAOBJECTINCLUDED
 
10020#define AAOBJECTINCLUDED
 
10022#include "TObject.h"
 
10027#include <algorithm>
 
10029#include "km3net-dataformat/offline/Exception.hh"
 
10036struct AAObject : public TObject
 
10038  std::vector<double>      usr;              ///< user data
 
10039  std::vector<std::string> usr_names;        ///< user keys
 
10047  int idx( const std::string& key ) const
 
10049    auto i = std::find (usr_names.begin(), usr_names.end(), key );
 
10050    if (i == usr_names.end()) return -1;
 
10051    return i - usr_names.begin();
 
10060  bool haveusr( const std::string& key ) const
 
10062    return idx( key ) >= 0;
 
10072  int idxusr_checked( const std::string& key ) const
 
10074    int r = idx( key );
 
10077      THROW(Exception, "No user data for key " << key << " in aanet object of type " << this -> ClassName());
 
10090  double getusr(const std::string& key) const
 
10092    const int i = idx( key );
 
10096      THROW(Exception, "No user data for key " << key << " in aanet object of type " << this -> ClassName());
 
10099    if ( unsigned(i) >= usr.size() )
 
10101      THROW(Exception, "Warning: inconsistent user data " << i << " >= " << usr.size());
 
10113  void setusr(const std::string & key, double value )
 
10115    int i = idx( key );
 
10118      if ( usr.size() < usr_names.size() )
 
10120        // this should not happen, but let's just add empty data
 
10121        usr.resize( usr_names.size() );
 
10125        // this is possible, add empty ("") names
 
10126        usr_names.resize( usr.size() );
 
10129      usr_names.push_back( key );
 
10130      usr.push_back( value );
 
10144  bool delusr( const std::string& key )
 
10146    int i = idx( key );
 
10147    if ( i < 0 ) return false;
 
10149    usr.erase ( usr.begin() + i );
 
10150    usr_names.erase( usr_names.begin() + i );
 
10160    usr_names.resize(0);
 
10168  void printusr(std::ostream& out = std::cout )
 
10170    unsigned n = std::max( usr.size(), usr_names.size() );
 
10172    for (unsigned i = 0; i < n ; i++)
 
10174      std::string name = "(unnamed)";
 
10175      if ( i < usr_names.size() && usr_names[i] != "" ) name = usr_names[i];
 
10176      out << i << " \t " << name << " : \t ";
 
10177      if ( i < usr.size() ) out << usr[i] << std::endl;
 
10178      else                  out << "(none)" << std::endl;
 
10185  AAObject() : any(NULL) {}
 
10189  TObject* any;                              ///< Pointer to "any" user data.
 
10191  ClassDef(AAObject, 6)
 
10195#ifndef EVT_HH_INCLUDED
 
10196#define EVT_HH_INCLUDED
 
10198#include "km3net-dataformat/offline/AAObject.hh"
 
10199#include "km3net-dataformat/offline/Hit.hh"
 
10200#include "km3net-dataformat/offline/Trk.hh"
 
10201#include "km3net-dataformat/offline/Hit.hh"
 
10202#include "km3net-dataformat/offline/Exception.hh"
 
10204#include "TTimeStamp.h"
 
10206#include <uuid/uuid.h>
 
10214struct Evt: public AAObject
 
10216  int id;                       ///< offline event identifier
 
10217  int det_id;                   ///< detector identifier from DAQ
 
10218  int mc_id;                    ///< identifier of the MC event (as found in ascii or antcc file).
 
10220  int run_id;                   ///< DAQ run identifier
 
10221  int mc_run_id;                ///< MC run identifier
 
10223  int frame_index;              ///< from the raw data
 
10224  ULong64_t trigger_mask;       ///< trigger mask from raw data (i.e. the trigger bits)
 
10225  ULong64_t trigger_counter;    ///< trigger counter
 
10226  unsigned int overlays;        ///< number of overlaying triggered events
 
10227  TTimeStamp t;                 ///< UTC time of the timeslice, or the event_time for MC. (default: 01 Jan 1970 00:00:00)
 
10229  uuid_t header_uuid;           ///< UUID of header containing the event-weight information
 
10232  std::vector<Hit> hits;        ///< list of hits
 
10233  std::vector<Trk> trks;        ///< list of reconstructed tracks (can be several because of prefits,showers, etc).
 
10236  std::vector<double> w;         ///< MC: Weights w[0]=w1, w[1]=w2, w[2]=w3 (see e.g. <a href="https://simulation.pages.km3net.de/taglist/taglist.pdf">Tag list</a> or km3net-dataformat/definitions)
 
10237  std::vector<double> w2list;    ///< MC: factors that make up w[1]=w2       (see e.g. <a href="https://simulation.pages.km3net.de/taglist/taglist.pdf">Tag list</a> or km3net-dataformat/definitions)
 
10238  std::vector<double> w3list;    ///< MC: atmospheric flux information
 
10240  TTimeStamp mc_event_time;      ///< MC: true generation time (UTC) of the event, (default: 01 Jan 1970 00:00:00)
 
10241  double mc_t;                   ///< MC: time where the mc-event was put in the timeslice, since start of run (offset+frameidx*timeslice_duration)
 
10242  std::vector<Hit> mc_hits;      ///< MC: list of MC truth hits
 
10243  std::vector<Trk> mc_trks;      ///< MC: list of MC truth tracks
 
10245  // --- place to store user info ---
 
10246  TString  comment;              ///< user can use this as he/she likes
 
10247  int      index;                ///< user can use this as he/she likes
 
10248  int      flags;                ///< user can use this as he/she likes
 
10255    id(0), det_id(0), mc_id(0), run_id(0), mc_run_id(0), frame_index(0),
 
10256    trigger_mask(0), trigger_counter(0),
 
10257    overlays(0), t(0), mc_event_time(0), mc_t(0), index(0), flags(0)
 
10259    uuid_clear(this->header_uuid);
 
10268  void print(std::ostream& out = std::cout) const
 
10270    out << "Evt: id=" << id <<
 
10271        " run_id=" << run_id <<
 
10272        " #hits=" << hits.size() <<
 
10273        " #mc_hits=" << mc_hits.size() <<
 
10274        " #trks=" << trks.size() <<
 
10275        " #mc_trks=" << mc_trks.size() << std::endl;
 
10295    for (auto& t : trks )    t.hit_ids.clear();
 
10296    for (auto& t : mc_trks ) t.hit_ids.clear();
 
10308  std::vector<const Trk*> primary_trks() const
 
10310    std::vector<const Trk*> r;
 
10311    for (auto& t : mc_trks )
 
10313      if ( t.is_primary() ) r.push_back(&t);
 
10325  std::vector<Trk*> primary_trks()
 
10327    std::vector<Trk*> r;
 
10328    for (auto& t : mc_trks )
 
10330      if ( t.is_primary() ) r.push_back(&t);
 
10341  const Trk* neutrino() const
 
10343    for (auto& t : mc_trks )
 
10345      if ( t.is_neutrino() ) return &t;
 
10358    // see Effective C++, Scott Meyers, ISBN-13: 9780321334879.
 
10359    return const_cast<Trk *>(static_cast<const Evt &>(*this).neutrino() );
 
10370  const Trk* primary_neutrino() const
 
10372    for ( auto& t : mc_trks )
 
10374      if ( t.is_neutrino() and t.is_primary() ) return &t;
 
10386  Trk* primary_neutrino()
 
10388    return const_cast<Trk *>(static_cast<const Evt &>(*this).primary_neutrino() );
 
10400  const Trk* leading_lepton() const
 
10402    const Trk* nu = primary_neutrino();
 
10403    if (!nu) return nullptr;
 
10405    for (auto& t : mc_trks )
 
10407      if ( t.is_lepton()    &&
 
10408      t.mother_id == nu->id &&
 
10409      !t.is_orphan() ) return &t;
 
10422  Trk* leading_lepton()
 
10424    return const_cast<Trk *>(static_cast<const Evt &>(*this).leading_lepton() );
 
10434  const Trk * get_parent_of( const Trk & child ) const
 
10436    for (auto& t : mc_trks )
 
10438      if (child.mother_id == t.id ) return &t;
 
10452  Trk* get_parent_of( const Trk & child )
 
10454    return const_cast<Trk *>(static_cast<const Evt &>(*this).get_parent_of(child) );
 
10463  static void actionAtFileOpen(int version)
 
10465    ROOT_IO_VERSION = version;
 
10468  static int ROOT_IO_VERSION;    //!< Streamer version as obtained from ROOT file.
 
10474#ifndef EXCEPTION_HH_INCLUDED
 
10475#define EXCEPTION_HH_INCLUDED
 
10477#include <exception>
 
10486class Exception : public std::exception {
 
10493  Exception(const std::string& error) :
 
10502  ~Exception() throw()
 
10511  virtual const char* what() const throw()
 
10513    return buffer.c_str();
 
10523  friend inline std::ostream& operator<<(std::ostream& out, const Exception& exception)
 
10525    return out << exception.what();
 
10536  static inline std::ostream& getOstream()
 
10538    static std::ostringstream buffer;
 
10546  const std::string buffer;
 
10557#define THROW(Exception_t, A) do { throw Exception_t(static_cast<std::ostringstream&>(Exception::getOstream() << __FILE__ << ':' << __LINE__ << std::endl << A).str()); } while(0)
 
10561#ifndef HEAD_HH_INCLUDED
 
10562#define HEAD_HH_INCLUDED
 
10564#include "km3net-dataformat/offline/Vec.hh"
 
10565#include "km3net-dataformat/offline/Exception.hh"
 
10567#include "TObject.h"
 
10573#include <algorithm>
 
10582static inline void trimstring(std::string &s)
 
10585  s.erase( s.begin(), std::find_if(s.begin(), s.end(), [](int ch) {
 
10586    return !std::isspace(ch);
 
10590  s.erase(std::find_if(s.rbegin(), s.rend(), [](int ch) {
 
10591    return !std::isspace(ch);
 
10592  }).base(), s.end());
 
10603inline std::vector<std::string> splitstring(const std::string& str, char delim = ' ')
 
10605  using namespace std;
 
10609  stringstream ss(str);
 
10611  while (getline(ss, token, delim))
 
10614    if (token != "") r.push_back(token);
 
10624struct Head : public TObject, std::map<std::string, std::string>
 
10627    static constexpr const char* const UUID = "UUID";
 
10637  bool have_line (std::string key ) const
 
10639    return count( key ) != 0;
 
10649  const std::string& get_line( std::string key ) const
 
10651    return this->at(key);
 
10661  std::string& get_line( std::string key )
 
10663    return this->at(key);
 
10675  std::vector< std::string> matching_keys( const std::string& tag ) const
 
10677    std::vector< std::string> r;
 
10679    auto match = [&] (const std::string & key) {
 
10681      if (key == tag) return true;
 
10683      if ( key.find( tag ) != 0 ) return false;
 
10685      // what is left should be of the form _d(ddd)
 
10686      std::string left = key.substr( tag.length(), key.length() );
 
10687      if (left.length() < 2 || left[0] != '_' ) return false ;
 
10688      for ( unsigned i = 1; i < left.length(); i++ )
 
10690        if (!std::isdigit( left[i] )) return false ;
 
10695    for ( auto& p : *this )
 
10697      if ( match( p.first ) ) r.push_back( p.first );
 
10714  std::vector< std::string > get_lines( const std::string& tag ) const
 
10716    std::vector< std::string > r;
 
10718    for ( auto& key : matching_keys( tag ) ) {
 
10719      r.push_back( get_line( key ) );
 
10736  std::string set_line( std::string tag, std::string line , bool ensure_unique = true )
 
10738    std::string k = tag;
 
10741      for (int i = 1; find(k) != end() ; i++)
 
10743        k = tag + "_" + std::to_string(i);
 
10746    std::map<std::string, std::string>::operator[]( k ) = line;
 
10758  std::string get_field( std::string key, int idx ) const
 
10760    using namespace std;
 
10762    vector<string> v = splitstring( get_line(key) );
 
10764    if ( idx < 0 || idx >= int ( v.size() ) )
 
10766      THROW(Exception, "Cannot find word number " << idx << " in line " << get_line(key) << " for key: " << key);
 
10780  int get_index_of_field(std::string key, std::string field) const
 
10782    auto& d = _hdr_dict();
 
10783    if ( d.count(key) == 0 ) return -1;
 
10784    auto v = d.at(key);
 
10785    auto i = std::find (v.begin(), v.end(), field );
 
10786    if (i == v.end()) return -1;
 
10787    return i - v.begin();
 
10800  std::string get_field( std::string key, std::string field ) const
 
10802    int idx = get_index_of_field(key, field);
 
10806      THROW(Exception, "Failed to find" << key << " " << field);
 
10809    return get_field( key, idx );
 
10823  void set_field( std::string key, std::string field, std::string value )
 
10825    using namespace std;
 
10827    if ( field == "" ) get_line( key ) = value;
 
10829    int idx = get_index_of_field( key, field );
 
10833      THROW(Exception, "GFailed to find field in header line: " << key << " " << field);
 
10836    vector<string> vals = splitstring( get_line( key ) );
 
10838    // if the fields before do not exist, add padding
 
10839    while ( int( vals.size() ) <= idx ) vals.push_back("0");
 
10844    for (unsigned i = 0; i < vals.size() ; i++ )
 
10847      if ( i != vals.size() - 1) ss << " ";
 
10849    set_line( key, ss.str() );
 
10858  void print ( std::ostream& out = std::cout ) const
 
10860    if (count("start_run")) out << "start_run: " << at("start_run") << std::endl;
 
10862    for ( auto& p : *this )
 
10864      if ( p.first == "start_run" || p.first == "end_event" ) continue;
 
10865      out << p.first << ": " << p.second << std::endl ;
 
10867    out << "end_event:" << std::endl;
 
10875  static const std::map<std::string, std::vector<std::string> >& _hdr_dict() 
 
10877    using namespace std;
 
10879    // map with, for each tag (key), a vector of field-names
 
10881    static map<string, vector<string> > r;
 
10882    if ( r.size() > 0 ) return r;
 
10886      "cut_primary cut_seamuon cut_in cut_nu:Emin Emax cosTmin cosTmax\n"
 
10887      "generator physics simul:program version date time\n"
 
10888      "seed:program level iseed\n"
 
10889      "PM1_type_area:type area TTS\n"
 
10891      "model:interaction muon scattering numberOfEnergyBins\n"
 
10892      "can:zmin zmax r\n"
 
10893      "genvol:zmin zmax r volume numberOfEvents\n"
 
10894      "merge:time gain\n"
 
10895      "coord_origin:x y z\n"
 
10896      "translate:x y z\n"
 
10897      "genhencut:gDir Emin\n"
 
10898      "k40:rate time\n"               // note lower-case k  
 
10899      "K40:livetime\n"                // note capital K
 
10900      "norma:primaryFlux numberOfPrimaries\n"
 
10901      "livetime:numberOfSeconds errorOfSeconds\n"
 
10902      "flux:type key file_1 file_2\n"
 
10904      "fixedcan:xcenter ycenter zmin zmax radius\n"
 
10905      "start_run:run_id";
 
10907    for ( auto line : splitstring(desc, '\n') )
 
10909      auto v = splitstring( line, ':');
 
10911      vector< string > fields = splitstring( v[1] );
 
10912      for ( auto key : splitstring( v[0] ) )
 
10926  double ngen() const
 
10928    return stod ( get_field("genvol", "numberOfEvents") );
 
10936  double daq_livetime() const
 
10938    return stod ( get_field("DAQ", "livetime") );
 
10947  double mc_livetime() const
 
10949    return stod ( get_field("livetime", "numberOfSeconds") );
 
10957  Vec coord_origin() const
 
10959    return Vec( stod( get_field("coord_origin", "x") ),
 
10960                stod( get_field("coord_origin", "y") ),
 
10961                stod( get_field("coord_origin", "z") ));
 
10969  Vec translate() const
 
10971    return Vec( stod( get_field("translate", "x") ),
 
10972                stod( get_field("translate", "y") ),
 
10973                stod( get_field("translate", "z") ));
 
10983  static void actionAtFileOpen(int version)
 
10985    ROOT_IO_VERSION = version;
 
10988  static int ROOT_IO_VERSION;    //!< Streamer version as obtained from ROOT file.
 
10990  ClassDef(Head, 2 );
 
11001inline std::ostream& operator<<(std::ostream& out, const Head& h)
 
11009#ifndef HIT_HH_INCLUDED
 
11010#define HIT_HH_INCLUDED
 
11012#include "TObject.h"
 
11013#include "TString.h"
 
11014#include "km3net-dataformat/offline/Vec.hh"
 
11021  // straight from the data
 
11022  int dom_id;                          ///< module identifier from the data (unique in the detector).
 
11023  unsigned int channel_id;             ///< PMT channel id {0,1, .., 30} local to moduke
 
11024  unsigned int tdc;                    ///< hit tdc (=time in ns)
 
11025  unsigned int tot;                    ///< tot value as stored in raw data (int for pyroot)
 
11026  ULong64_t trig;                      ///< non-zero if the hit is a trigger hit.
 
11028  int pmt_id;                          ///< global PMT identifier as found in evt files
 
11030  // values after calibration
 
11031  double t;                            ///< hit time (from tdc+calibration or MC truth)
 
11032  double a;                            ///< hit amplitude (in p.e.)
 
11033  Vec pos;                             ///< hit position
 
11034  Vec dir;                             ///< hit direction; i.e. direction of the PMT
 
11036  int type;                            ///< particle type or parametrisation used for hit (mc only)
 
11037  int origin;                          ///< track id of the track that created this hit (mc only)
 
11039  unsigned pattern_flags;              ///< some number that you can use to flag the hit
 
11044  Hit(): id(0), dom_id(0), channel_id(0), tdc(0), tot(0), trig(0), pmt_id(0),
 
11045    t(0), a(0), type(0), origin(0), pattern_flags(0) {}
 
11046  //virtual ~Hit() {}
 
11054  void read(const Hit& h) { *this = h;}
 
11061  void write(Hit& h) const { h = *this;}
 
11068  void print( std::ostream& out = std::cout ) const
 
11070    out << "Hit: id=" << id << " dom=" << dom_id << " channel=" << channel_id;
 
11071    out << " pmt=" << pmt_id << " t=" << t << " tot=" << tot;
 
11072    out << " pos="; pos.print(out);
 
11073    out << " dir="; dir.print(out);
 
11076  ClassDefNV(Hit, 106) // reserve <100 for antcc class of the same name
 
11080#ifndef MULTIHEAD_HH_INCLUDED
 
11081#define MULTIHEAD_HH_INCLUDED
 
11084#include <uuid/uuid.h>
 
11086#include "km3net-dataformat/offline/Evt.hh"
 
11087#include "km3net-dataformat/offline/Head.hh"
 
11089#include "TObject.h"
 
11097  public std::vector<Head>,
 
11104    std::vector<Head>(),
 
11112  virtual ~MultiHead()
 
11126  const_iterator find(const uuid_t& uuid,
 
11127                      const bool    useCache = false) const
 
11129    using namespace std;
 
11131    static struct Cache
 
11133      Cache() { uuid_clear(this->uuid); }
 
11141      for (cache.it = this->cbegin(); cache.it != this->cend(); ++cache.it) {
 
11143        const Head& head     = *cache.it;
 
11144        string      uuid_str = head.at(Head::tags::UUID);
 
11146        uuid_str.erase(remove_if(uuid_str.begin(), uuid_str.end(), ::isspace), uuid_str.end());
 
11148        uuid_parse(uuid_str.c_str(), cache.uuid);
 
11150        if (uuid_compare(uuid, cache.uuid) == 0) {
 
11155      return this->end();
 
11159      if (uuid_compare(uuid, cache.uuid) == 0) {
 
11162        return find(uuid, false);
 
11177  const_iterator find(const Evt& event,
 
11178                      const bool useCache = false) const
 
11180    return find(event.header_uuid, useCache);
 
11190  bool insert(const Head& header)
 
11192    using namespace std;
 
11194    string uuid_str = header.at(Head::tags::UUID);
 
11195    uuid_str.erase(remove_if(uuid_str.begin(), uuid_str.end(), ::isspace), uuid_str.end());
 
11198    uuid_parse(uuid_str.c_str(), uuid);
 
11200    if (uuid_is_null(uuid) == 0 && find(uuid) == this->cend()) {
 
11202      this->push_back(header);
 
11217  size_t join(const MultiHead& multiHead)
 
11219    using namespace std;
 
11223    for (const_iterator i = multiHead.cbegin(); i != multiHead.cend(); ++i) {
 
11224      n += (size_t) this->insert(*i);
 
11236  static void actionAtFileOpen(int version)
 
11238    ROOT_IO_VERSION = version;
 
11242  static int ROOT_IO_VERSION;    //!< Streamer version as obtained from ROOT file.
 
11244  ClassDef(MultiHead, 1);
 
11248#ifndef TRK_HH_INCLUDED
 
11249#define TRK_HH_INCLUDED
 
11252#include "TDatabasePDG.h"
 
11253#include "TPDGCode.h"
 
11254#include "km3net-dataformat/offline/AAObject.hh"
 
11255#include "km3net-dataformat/offline/Vec.hh"
 
11256#include "km3net-dataformat/definitions/trkmembers.hh"
 
11261struct Trk: public AAObject
 
11263  int    id;                          ///< track identifier
 
11264  Vec    pos;                         ///< postion [m] of the track at time t 
 
11265  Vec    dir;                         ///< track direction
 
11266  double t;                           ///< track time [ns] (when the particle is at pos )
 
11267  double E;                           ///< Energy [GeV] (either MC truth or reconstructed)
 
11269  double len;                         ///< length, if applicable [m]
 
11270  double lik;                         ///< likelihood or lambda value (for aafit, lambda)
 
11271  int    type;                        ///< MC: particle type in PDG encoding
 
11272  int               rec_type;         ///< identifier of the fitting algorithm/chain/strategy, see km3net-dataformat/definitions/reconstruction.csv
 
11273  std::vector<int>  rec_stages;       ///< list of identifyers of succesfull fitting stages resulting in this track
 
11275  int status;                         ///< MC status code, see km3net-dataformat/definitions/trkmembers.csv for values
 
11276  int mother_id;                      ///< MC id of the parent particle 
 
11277  int counter;                        ///< used by CORSIKA7 MC generation to store interaction counters, see <a href="https://web.iap.kit.edu/corsika/usersguide/usersguide.pdf">CORSIKA Userguide</a>
 
11279  std::vector<double> fitinf;         ///< place to store additional fit info, see km3net-dataformat/definitions/fitparameters.csv
 
11280  std::vector<int>    hit_ids;        ///< list of associated hit-ids (corresponds to Hit::id).
 
11281  std::vector<double> error_matrix;   ///< (NxN) error covariance matrix for fit parameters (stored as linear vector)
 
11282  std::string    comment;             ///< use as you like
 
11287  Trk(): id(0),t(0),E(0),len(0),lik(0), type(0), rec_type(0), status(TRK_ST_UNDEFINED), mother_id(TRK_MOTHER_UNDEFINED), counter(0) {}
 
11297  void read(const Trk& t) { *this = t;}
 
11304  void write(Trk& t)      const { t = *this; }
 
11312  std::string name() const
 
11314    TParticlePDG* p = TDatabasePDG::Instance()->GetParticle( type );
 
11315    if (!p) return "unnamed state ("+ std::to_string(type)+")";
 
11316    return p->GetName();
 
11324  bool is_primary() const
 
11326    return status==TRK_ST_PRIMARYNEUTRINO || status==TRK_ST_PRIMARYCOSMIC;
 
11334  bool is_finalstate() const
 
11336    return status==TRK_ST_FINALSTATE;
 
11346  bool is_neutrino() const
 
11348    return type == kNuE || type == kNuEBar || type == kNuMu || type == kNuMuBar || type == kNuTau || type == kNuTauBar;
 
11358     return type == kElectron || type == kPositron;
 
11368  bool is_muon() const 
 
11370    return type == kMuonMinus || type == kMuonPlus;
 
11380  bool is_tau() const
 
11382    return type == kTauMinus || type == kTauPlus;
 
11392  bool is_lepton() const 
 
11394    return is_e() || is_muon() || is_tau();
 
11402  bool is_orphan() const
 
11404    return mother_id == TRK_MOTHER_NONE;
 
11413  std::vector< Trk* > get_daughters ( std::vector<Trk>& mctrks )
 
11415    std::vector<Trk*> r;
 
11417    for( auto& t : mctrks )
 
11419             if ( t.mother_id == id ) r.push_back( &t );
 
11429  void print(std::ostream& out=std::cout) const
 
11431    out << "Trk: id=" << id << " pos="; pos.print(out);
 
11432    out << " dir="; dir.print(out);
 
11433    out << " t=" << t << " E=" << E << " pdg-type=" << type;
 
11440#ifndef VEC_HH_INCLUDED
 
11441#define VEC_HH_INCLUDED
 
11462  Vec(double x_, double y_, double z_) : x(x_), y(y_), z(z_) {}
 
11467  Vec():x(0),y(0),z(0) {}
 
11475  double dot(const Vec& v) const { return v.x*x + v.y*y+ v.z*z;}
 
11483  Vec cross(const Vec r)   const { return Vec ( y*r.z-z*r.y, z*r.x-x*r.z, x*r.y-y*r.x);}
 
11491  Vec& operator+=(const Vec& v)  { x+=v.x; y+=v.y; z+=v.z; return *this;}
 
11499  Vec& operator-=(const Vec& v)  { x-=v.x; y-=v.y; z-=v.z; return *this;}
 
11507  Vec& operator*=(double d)      { x*=d; y*=d; z*=d; return *this;}
 
11515  Vec& operator/=(double d)      { return operator*=( 1.0 / d ); }
 
11522  Vec operator-() const          { return Vec(-x,-y,-z); }
 
11530  bool operator==( const Vec& v ) const { return x==v.x && y==v.y && z==v.z ; }
 
11538  bool operator!=( const Vec& v ) const { return x!=v.x || y!=v.y || z!=v.z ; }
 
11548  Vec& set(double xx, double yy, double zz) { x=xx; y=yy; z=zz; return *this;}
 
11557  Vec& set_angles(double theta, double phi)
 
11559    x = sin ( theta ) * cos( phi );
 
11560    y = sin ( theta ) * sin( phi );
 
11570  double phi()   const { return atan2( y,x ); }
 
11577  double theta() const { return acos(z); }
 
11584  double len()   const { double l = dot(*this); return (l > 0)? sqrt(l) : 0; }
 
11591  double lenxy() const { const double r2 = x*x + y*y; return (r2>0) ? sqrt(r2) :0; }
 
11598  Vec& normalize() { return operator/=( len() ); }
 
11605  void print( std::ostream& out = std::cout ) const
 
11607        out << "Vec:" << x << " " << y << " " << z;
 
11615  const char* __repr__() const 
 
11617    static std::string buffer;
 
11619    std::ostringstream s; 
 
11625    return buffer.c_str();
 
11634  Vec __add__(const Vec& v) const { Vec r=*this; return r+=v; }
 
11642  Vec __sub__(const Vec& v) const { Vec r=*this; return r-=v; }
 
11650  Vec __mul__(double d )    const { Vec r=*this; return r*=d; }
 
11658  Vec __rmul__(double d )   const { return __mul__(d);        } 
 
11666  Vec __div__(double d )    const { Vec r=*this; return r/=d; }
 
11674  Vec& rotate_z(double ang)
 
11676    const Vec o = *this; 
 
11677    x = o.x *cos(ang) - o.y * sin(ang);
 
11678    y = o.x *sin(ang) + o.y * cos(ang);
 
11689  Vec& rotate_x(double ang)
 
11691    const Vec o = *this;
 
11693    y = o.y *cos(ang) + o.z * -sin(ang);
 
11694    z = o.y *sin(ang) + o.z * cos(ang);
 
11704  Vec& rotate_y(double ang)
 
11706    const Vec o = *this;
 
11707    x = o.x *cos(ang) + o.z * sin(ang);
 
11709    z = -o.x *sin(ang) + o.z * cos(ang);
 
11723inline std::ostream& operator<<( std::ostream& out , const Vec& v )
 
11725  out << v.x << " " << v.y << " " << v.z << " ";
 
11736inline std::istream& operator>>(std::istream& in, Vec& v) 
 
11738  in >> v.x >> v.y >> v.z ; return in;
 
11748inline double cos_angle_between( const Vec& a, const Vec& b)
 
11750  const double n = a.len() * b.len();
 
11751  return a.dot(b) / n;
 
11761inline double angle_between( const Vec& a, const Vec& b )
 
11763  double c = cos_angle_between( a, b );
 
11764  if ( c < -1 ) return M_PI;
 
11765  if ( c > 1  ) return 0;
 
11776inline Vec operator+(const Vec& a, const Vec& b) { Vec r(a); return r+=b;}
 
11785inline Vec operator-(const Vec& a, const Vec& b) { Vec r(a); return r-=b;}
 
11794inline Vec operator*(double a, const Vec& v)     { return Vec(a*v.x,a*v.y,a*v.z);}
 
11803inline Vec operator*(const Vec& v, double a)     { return Vec(a*v.x,a*v.y,a*v.z);}
 
11812inline Vec operator/(const Vec& v, double a)     { return Vec(v.x/a,v.y/a,v.z/a);}
 
11815#ifndef IO_ASCII_INCLUDED
 
11816#define IO_ASCII_INCLUDED
 
11823#include "km3net-dataformat/offline/Evt.hh"
 
11824#include "km3net-dataformat/offline/Hit.hh"
 
11825#include "km3net-dataformat/offline/Trk.hh"
 
11826#include "km3net-dataformat/offline/Head.hh"
 
11827#include "km3net-dataformat/offline/Exception.hh"
 
11828#include "km3net-dataformat/definitions/w2list_gseagen.hh" 
 
11829#include "km3net-dataformat/definitions/trkmembers.hh"
 
11831#include "TDatabasePDG.h"
 
11835const char* const  auto_t          =  "auto";
 
11836const char* const  start_run_t     =  "start_run:";
 
11837const char* const  start_event_t   =  "start_event:";
 
11838const char* const  hit_t           =  "hit:";
 
11839const char* const  hit_raw_t       =  "hit_raw:";
 
11840const char* const  track_in_t      =  "track_in:";
 
11841const char* const  track_t         =  "track:";
 
11842const char* const  track_fit_t     =  "track_fit:";
 
11843const char* const  neutrino_t      =  "neutrino:";
 
11844const char* const  track_primary_t =  "track_primary:";
 
11845const char* const  track_bundle_t  =  "track_bundle:";
 
11846//const char* const  primarylepton_t =  "primarylepton:";
 
11847const char* const  weights_t       =  "weights:";
 
11848const char* const  w2list_t        =  "w2list:";
 
11849const char* const  w3list_t        =  "w3list:";
 
11850const char* const  hourangle_t     =  "hourangle:";
 
11851const char* const  eventtime_t     =  "eventtime:";
 
11852const char* const  center_on_can_t =  "center_on_can:";
 
11853const char* const  muon_decay_t    =  "muon_decay:";
 
11854const char* const  end_event_t     =  "end_event:";
 
11857namespace mc_usr_keys
 
11859// track-level quantities
 
11860const char* const energy_lost_in_can = "energy_lost_in_can";
 
11863// event-level corsika variables
 
11864const char* const muon_decay_x = "muon_decay_x";
 
11865const char* const muon_decay_y = "muon_decay_y";
 
11866const char* const muon_decay_z = "muon_decay_z";
 
11868const char* const center_on_can_x = "center_on_can_x";
 
11869const char* const center_on_can_y = "center_on_can_y";
 
11870const char* const center_on_can_z = "center_on_can_z";
 
11871const char* const hourangle = "hourangle";
 
11875namespace io_stringutil
 
11884inline bool startswith( const std::string& a, const std::string& b )
 
11886  if ( a.find( b ) == 0 ) return true;
 
11896inline std::string trim(const std::string& s)
 
11898  using namespace std;
 
11900  if ( s == "" ) return s;
 
11902  string::size_type i1;
 
11903  string::size_type i2;
 
11905  for (i1 = 0; i1 < s.length(); i1++)
 
11907    if ( !isspace (s[i1]) ) break;
 
11909  for (i2 = s.length() - 1 ; i2 > i1 ; i2--)
 
11911    if ( !isspace (s[i2]) ) break;
 
11913  return s.substr( i1, i2 - i1 + 1 );
 
11925inline int pdg_code( int geant3_code )
 
11927  if ( geant3_code == -1 ) return -1; // used for k40 hits
 
11928  if ( geant3_code < 0 ) return pdg_code( -geant3_code ); // used for scattered
 
11930  return TDatabasePDG::Instance()->ConvertGeant3ToPdg( geant3_code );
 
11939inline int geant3_code( int pdg_code )
 
11941  if (pdg_code == -1 )   return -1;
 
11942  if (pdg_code == +311 ) return geant3_code( 130 ); // K0 -> K0long
 
11943  if (pdg_code == -311 ) return geant3_code( 130 ); // K0bar -> K0long
 
11945  return TDatabasePDG::Instance()->ConvertPdgToGeant3( pdg_code );
 
11956inline bool read ( Vec& v, std::istream& is)
 
11958  is >> v.x >> v.y >> v.z;
 
11969inline bool write( const Vec& v, std::ostream& os)
 
11971  os << v.x << ' ' << v.y << ' ' << v.z;
 
11983inline bool read ( Hit& h, std::istream& is, bool read_mc = false  )
 
11985  h.dom_id     = 0; // need a proper det file to
 
11986  h.channel_id = 0; // set these.
 
11988  is >> h.id >> h.pmt_id >> h.a >> h.t;
 
11995    is >> h.type >> h.origin;
 
11998  // at this point, an additional pure_a and pure_t may be present,
 
11999  // but we do not read them.
 
12013inline bool write( const Hit& h, std::ostream& os, const std::string& tag = mc_keys::hit_t)
 
12015  int om_id = h.pmt_id; // todo: deal with this better.
 
12017  os << tag << ' ' << h.id << ' ' << om_id << ' ' << h.a << ' ' << h.t;
 
12018  if ( tag != mc_keys::hit_raw_t ) {
 
12019    os << ' ' << h.type  << ' ' << h.origin; // not writing pure_a and pure_t
 
12032inline std::vector<double> read_line_to_vector( std::istream& is )
 
12034  using namespace std;
 
12040  istringstream il(ss);
 
12041  for ( double x; il >> x ; ) r.push_back( x );
 
12053template<typename T>
 
12054inline void push_front( std::vector<T>& vec, const T& value )
 
12056  vec.insert( vec.begin(), value );
 
12068inline bool read ( Evt& evt, std::istream& is, bool skip_hits = false )
 
12070  using namespace std;
 
12074  // find next start_event
 
12076  while ( w != mc_keys::start_event_t && is.good() ) is >> w;
 
12078  int mc_event_type;   // dummy - this is always 1 in all files.
 
12079  is >> evt.mc_id >> mc_event_type;
 
12081  Trk trk_nu, trk_primary;
 
12082  bool have_trk_nu(false), have_trk_primary(false);
 
12085  evt.mc_trks.clear();
 
12087  evt.mc_hits.clear();
 
12098    if (skip_hits && ( w == mc_keys::hit_t || w == mc_keys::hit_raw_t)) {
 
12099      is.ignore( 1000, '\n' );
 
12103    if ( w == mc_keys::hit_t ) {
 
12105      read( h, is, true );
 
12106      evt.mc_hits.push_back( h );
 
12108    } else if ( w == mc_keys::hit_raw_t ) {
 
12110      read( h, is, false);
 
12111      evt.hits.push_back( h );
 
12113    } else if ( w == mc_keys::track_in_t     ||
 
12114                w == mc_keys::track_t        ||
 
12115                w == mc_keys::neutrino_t     ||
 
12116                w == mc_keys::track_bundle_t ||
 
12117                w == mc_keys::track_primary_t ) {
 
12125      getline( is, line );
 
12126      istringstream ii(line);
 
12128      if ( w != mc_keys::track_bundle_t ) {
 
12134      ii >> t.pos >> t.dir >> t.E;
 
12138        if ( w == mc_keys::track_in_t) {
 
12140          t.status = TRK_ST_FINALSTATE;
 
12142          ii >> t.t >> t.type;
 
12146            t.type = pdg_code( t.type );
 
12150            if ( ii.fail() ) { // missing length is not an error
 
12151              evt.mc_trks.push_back( t );
 
12158            if ( ii.fail() ) { // missing eloss is not an error
 
12159              evt.mc_trks.push_back( t );
 
12163            t.setusr( mc_usr_keys::energy_lost_in_can, eloss);
 
12165            evt.mc_trks.push_back( t );
 
12168        } else if ( w == mc_keys::track_t ) {
 
12172          evt.trks.push_back( t );
 
12174        } else if ( w == mc_keys::neutrino_t ) {
 
12176          t.status = TRK_ST_PRIMARYNEUTRINO;
 
12178          // the last item we will read is W2LIST_GSEAGEN_CC, make enough space;
 
12179          if (evt.w2list.size() < W2LIST_GSEAGEN_CC+1 ) evt.w2list.resize(W2LIST_GSEAGEN_CC+1);
 
12182            evt.w2list[W2LIST_GSEAGEN_BX]    >> 
 
12183            evt.w2list[W2LIST_GSEAGEN_BY]    >> 
 
12184            evt.w2list[W2LIST_GSEAGEN_ICHAN] >> 
 
12186            evt.w2list[W2LIST_GSEAGEN_CC];
 
12189          have_trk_nu = true;
 
12191        } else if ( w == mc_keys::track_primary_t ) {
 
12193          t.status = TRK_ST_PRIMARYCOSMIC;
 
12195          ii >> t.t >> trk_primary.type; // nucleus id (in pdg format or not?)
 
12198          have_trk_primary = true;
 
12200        } else if ( w == mc_keys::track_bundle_t ) {
 
12202          t.type   = PDG_MUONBUNDLE;
 
12203          t.status = TRK_ST_MUONBUNDLE;
 
12205          evt.mc_trks.push_back( t );
 
12209          ostream& out = Exception::getOstream();
 
12210          out << "Unknown tag " << w << " for trk ";
 
12212          throw Exception(static_cast<ostringstream&>(out).str());
 
12217        ostream& out = Exception::getOstream();
 
12218        out << "Error reading trk ";
 
12220        throw Exception(static_cast<ostringstream&>(out).str());
 
12223    } else if ( w == mc_keys::weights_t) {
 
12225      evt.w = read_line_to_vector( is );
 
12227    } else if ( w == mc_keys::w2list_t) {
 
12229      auto v = read_line_to_vector( is );
 
12230      evt.w2list.resize( std::max( evt.w2list.size(), v.size()));
 
12231      std::copy( v.begin(), v.end() , evt.w2list.begin() );
 
12233    } else if ( w == mc_keys::w3list_t) {
 
12235      evt.w3list = read_line_to_vector( is );
 
12237    } else if ( w == mc_keys::hourangle_t ) {
 
12241      evt.setusr(mc_usr_keys::hourangle, ha );
 
12243    } else if ( w == mc_keys::center_on_can_t) {
 
12245      // in corsika files, there is the (undocumented?) center_on_can tag,
 
12246      // which denoets the projection of the primary on the can. The direction
 
12247      // of the center_on_can 'track' is by defintion the direction of the
 
12248      // primary. We record the position in the usr data.
 
12250      vector<double> v = read_line_to_vector( is );
 
12252      if ( v.size() > 3 ) {
 
12253        evt.setusr(mc_usr_keys::center_on_can_x, v[1] );
 
12254        evt.setusr(mc_usr_keys::center_on_can_y, v[2] );
 
12255        evt.setusr(mc_usr_keys::center_on_can_z, v[3] );
 
12258    } else if ( w == mc_keys::eventtime_t ) {
 
12260      unsigned nsec, n16ns_ticks;
 
12261      is >> nsec >> n16ns_ticks;
 
12262      evt.mc_event_time.SetSec( nsec );
 
12263      evt.mc_event_time.SetNanoSec( n16ns_ticks * 16 );
 
12265    } else if ( w == mc_keys::muon_decay_t) {
 
12267      // in km3sim files, there are additional tags, including this one
 
12268      vector<double> v = read_line_to_vector( is );
 
12269      if ( v.size() > 4 )
 
12271        evt.setusr(mc_usr_keys::muon_decay_x, v[2] );
 
12272        evt.setusr(mc_usr_keys::muon_decay_y, v[3] );
 
12273        evt.setusr(mc_usr_keys::muon_decay_z, v[4] );
 
12276    } else if ( w == mc_keys::end_event_t) {
 
12278      // finalize the mc_tracks -- as best we can.
 
12280      // If there is both a primary, and a neutrino, then the primary
 
12281      // will go second (mc_trks[1]) with id=-1 and the neutrino will
 
12282      // be mc_trks[0] with id=0. Unless they are same particle (identical
 
12283      // pos,dir,E); in that case the primary is skipped.
 
12284      // The primarylepton tag is not stored as a seperate Trk.
 
12286      if ( have_trk_primary && have_trk_nu ) {
 
12288        bool same = trk_nu.pos == trk_primary.pos &&
 
12289                    trk_nu.dir == trk_primary.dir &&
 
12290                    trk_nu.E   == trk_primary.E;
 
12293          trk_primary.id = -1;
 
12294          push_front( evt.mc_trks, trk_primary);
 
12298        push_front( evt.mc_trks, trk_nu);
 
12300      } else if ( have_trk_primary  ) {
 
12302        trk_primary.id = 0;
 
12303        push_front( evt.mc_trks, trk_primary);
 
12305      } else if ( have_trk_nu ) {
 
12308        push_front( evt.mc_trks, trk_nu);
 
12314      is.ignore( 1000, '\n' );
 
12321    THROW(Exception, "Error while reading ascii event" << w << ' ' << evt.id);
 
12335inline bool write( const Evt& evt, std::ostream& os )
 
12337  using namespace std;
 
12339  // set precision to 12 digits.
 
12340  const int precision = 12;
 
12341  auto old_flags = os.flags();
 
12342  auto old_precision = os.precision( precision );
 
12343  os.unsetf( std::ios_base::scientific | std::ios_base::fixed ); // default behaviour
 
12345  os << mc_keys::start_event_t << ' ' << evt.mc_id << ' ' << 1 << endl;
 
12347  for ( auto& trk : evt.mc_trks ) {
 
12349    const std::string& tag = trk.comment;
 
12352       << (tag != mc_keys::track_bundle_t ? trk.id : trk.len) << ' '
 
12357    if ( tag == mc_keys::track_in_t ) {
 
12359      os << ' ' << trk.t << ' ' << geant3_code(trk.type) << ' ' << trk.len;
 
12361      if ( trk.haveusr( mc_usr_keys::energy_lost_in_can ) ) {
 
12362        os << ' ' << trk.getusr( mc_usr_keys::energy_lost_in_can );
 
12367    } else if ( tag == mc_keys::track_primary_t ) {
 
12369      os << ' ' << trk.t << ' ' << trk.type << endl;
 
12371    } else if ( tag == mc_keys::neutrino_t ) {
 
12373      double bx(0), by(0);
 
12374      int ichan(0), cc(0);
 
12376      if ( evt.w2list.size() > W2LIST_GSEAGEN_CC ) {
 
12377        bx    = evt.w2list[W2LIST_GSEAGEN_BX];
 
12378        by    = evt.w2list[W2LIST_GSEAGEN_BY];
 
12379        ichan = evt.w2list[W2LIST_GSEAGEN_ICHAN];
 
12380        cc    = evt.w2list[W2LIST_GSEAGEN_CC];
 
12397  for ( auto& trk : evt.trks    ) {
 
12398    os << mc_keys::track_fit_t << ' ' << trk.id << ' ' << trk.pos << ' ' << trk.dir << ' ' << trk.E << ' ' << trk.t << endl;
 
12401  for ( auto& hit : evt.mc_hits )  write ( hit, os, mc_keys::hit_t);
 
12402  for ( auto& hit : evt.hits    )  write ( hit, os, mc_keys::hit_raw_t);
 
12404  os << mc_keys::weights_t; for (auto&  w : evt.w      ) os << ' ' << w; os << endl;
 
12405  os << mc_keys::w2list_t;  for (auto&  w : evt.w2list ) os << ' ' << w; os << endl;
 
12406  os << mc_keys::w3list_t;  for (auto&  w : evt.w3list ) os << ' ' << w; os << endl;
 
12408  os << mc_keys::eventtime_t << evt.mc_event_time.GetSec() << " "
 
12409     << evt.mc_event_time.GetNanoSec() / 16 << endl;
 
12411  os << mc_keys::end_event_t << endl;
 
12413  // restore os to how we found it.
 
12414  os.flags( old_flags );
 
12415  os.precision( old_precision );
 
12433inline bool read( Head& hdr, std::istream& is )
 
12435  using namespace std;
 
12439  bool start = false;
 
12441  while (getline( is, line ))
 
12443    if ( io_stringutil::startswith(line, mc_keys::end_event_t))
 
12448    if ( io_stringutil::startswith(line, mc_keys::start_run_t))
 
12453    if ( io_stringutil::startswith(line, mc_keys::start_event_t))
 
12455      THROW(Exception, "Unexpected tag " << mc_keys::start_event_t << " found while reading header at " << line << " (could mean the evt file has no header)");
 
12458    if (!start) continue;
 
12460    vector<string> v = splitstring( line, ':' );
 
12463      std::cout << "Warning: line with empty tag found when reading header" << endl;
 
12464      std::cout << "        "<< line << endl;
 
12465      std::cout << "         will be skipped" << endl;
 
12469    // the following with unsure key in the map is unique by adding _1 _2 etc.
 
12470    hdr.set_line( io_stringutil::trim(v[0]), io_stringutil::trim(v[1]) );
 
12476    THROW(Exception, "Reading of MC header terminated before finding a start_run: tag. Please check your file");
 
12490inline bool write( const Head& hdr, std::ostream& os )
 
12497#ifndef IOONLINEINCLUDED
 
12498#define IOONLINEINCLUDED
 
12500#include "km3net-dataformat/offline/Evt.hh"
 
12501#include "km3net-dataformat/offline/Hit.hh"
 
12502#include "km3net-dataformat/offline/Trk.hh"
 
12503#include "km3net-dataformat/offline/Exception.hh"
 
12505#include "km3net-dataformat/online/JDAQEvent.hh"
 
12506#include "km3net-dataformat/online/JDAQKeyHit.hh"
 
12507#include "km3net-dataformat/online/JDAQTimeslice.hh"
 
12508#include "km3net-dataformat/online/JDAQSummaryslice.hh"
 
12510#include "TStreamerInfo.h"
 
12513#include "km3net-dataformat/definitions/root.hh"
 
12519using namespace KM3NETDAQ;
 
12527inline void read(Hit& hit, const JDAQHit& daqhit )
 
12529  hit.channel_id = daqhit.getPMT();
 
12530  hit.tot        = daqhit.getToT();
 
12531  hit.tdc        = daqhit.getT(); // GetT() just return the bare TDC
 
12540inline void read(Hit& hit, const JDAQKeyHit& daqhit )
 
12542  hit.id = hit.pmt_id = 0;
 
12544  hit.dom_id     = daqhit.getModuleID();
 
12545  hit.channel_id = daqhit.getPMT();
 
12546  hit.tot        = daqhit.getToT();
 
12547  hit.tdc        = daqhit.getT(); // GetT() just return the bare TDC
 
12556inline void read(Evt& evt, const JDAQEvent& de)
 
12558  evt.run_id          = de.getRunNumber();
 
12559  evt.det_id          = de.getDetectorID();
 
12560  evt.frame_index     = de.getFrameIndex();
 
12561  evt.trigger_counter = de.getCounter();
 
12562  evt.overlays        = de.getOverlays();
 
12563  evt.trigger_mask    = de.getTriggerMask();
 
12564  evt.t.SetSec(     de.getTimesliceStart().getUTCseconds() );
 
12565  evt.t.SetNanoSec( de.getTimesliceStart().getUTC16nanosecondcycles() * 16 );
 
12567  // The only way to know the hits that are also in the triggeredhits collection
 
12568  // is by dom and channel id and time.
 
12571  std::map<int, std::map< int, std::map < unsigned int, Hit*> > > M;
 
12573  const std::vector<JDAQSnapshotHit>&   snapshotHits = de.getHits<JDAQSnapshotHit>();
 
12574  const std::vector<JDAQTriggeredHit>& triggeredHits = de.getHits<JDAQTriggeredHit>();
 
12576  // http://stackoverflow.com/questions/10735135/reallocation-in-stdvector-after-stdvector-reserve
 
12578  evt.hits.reserve(snapshotHits.size());
 
12580  for (auto& daqhit : snapshotHits ) // JDAQSnapshotHit
 
12584    evt.hits.push_back( h );
 
12585    M[ h.dom_id ][ h.channel_id ][ h.tdc ] = &(*evt.hits.rbegin());
 
12588  for (auto& daqtrighit : triggeredHits)
 
12590    Hit* g = M[daqtrighit.getModuleID()][daqtrighit.getPMT()][daqtrighit.getT()];
 
12593      g->trig = daqtrighit.getTriggerMask ();
 
12595      THROW(Exception, "Failed to flag snaphot hit " << (int) daqtrighit.getModuleID() << "." << (int) daqtrighit.getPMT() << " " << daqtrighit.getT());
 
12606inline void read( Evt& evt, const JDAQTimeslice& ts )
 
12608  evt.run_id          = ts.getRunNumber();
 
12609  evt.det_id          = ts.getDetectorID();
 
12610  evt.frame_index     = ts.getFrameIndex();
 
12611  evt.t.SetSec( ts.getTimesliceStart().getUTCseconds() );
 
12612  evt.t.SetNanoSec( ts.getTimesliceStart().getUTC16nanosecondcycles() * 16 );
 
12615  // a timeslice is a vector of JDAQSuperFrame's, which is a JDAQFrame, which
 
12616  // is an stl::vector-like object (supporting stl-like iteration.)
 
12618  Hit h; h.id = 0; h.pmt_id = 0;
 
12620  for (auto& sf : ts )
 
12622    for (auto& daqhit : sf )
 
12625      h.dom_id = sf.getModuleID();
 
12626      evt.hits.push_back(h);
 
12641inline JDAQSummaryslice* get_summary_slice( TFile* f , int frame_index )
 
12643  static TFile* _f = 0;
 
12644  static TTree*  S = 0;
 
12645  static TBranch* BS = 0;
 
12646  JDAQSummaryslice *r = 0 ;
 
12648  if (!f) THROW(Exception, "get_summary_slice called with TFile pointer that is null");
 
12651  // in principle, event if the pointer-value is the same, we could have been given a new file
 
12653  if ( !_f || _f->GetUUID().Compare( f->GetUUID() ) != 0 ) // setup for tree reading and build tree index
 
12657    // first we have to deal with the following....
 
12658    // The streamer of JDAQSummaryFrame needs to know what to do since
 
12659    // this information is not written to root file.
 
12661    const char* name = JDAQSummaryslice::Class()->GetName();
 
12663    JDAQSummaryFrame::ROOT_IO_VERSION = ((TStreamerInfo*)_f -> GetStreamerInfoList()->FindObject(name))->GetClassVersion();
 
12665    S = (TTree*) _f->Get( TTREE_ONLINE_SUMMARYSLICE );
 
12669      THROW(Exception, "Failed to get summary slice TTree : " <<  TTREE_ONLINE_SUMMARYSLICE );
 
12672    BS = S->GetBranch( TBRANCH_ONLINE_SUMMARYSLICE );
 
12676      THROW(Exception, "Failed to get brach :" << TBRANCH_ONLINE_SUMMARYSLICE );
 
12679    std::cout << "building index to lookup summary slices..." << std::endl;
 
12680    int n = S->BuildIndex("frame_index");
 
12682    BS->SetAddress( &r );
 
12685  int nbytes = S->GetEntryWithIndex( frame_index ); // returns -1 if not found
 
12688    THROW(Exception, "Failed to find summary slice entry with frame_index " << frame_index);
 
12695#ifndef __TOOLS_MULTIPLICITY__
 
12696#define __TOOLS_MULTIPLICITY__
 
12698#include "km3net-dataformat/offline/Evt.hh"
 
12699#include "km3net-dataformat/offline/Trk.hh"
 
12707inline int get_multiplicity(const Evt& event)
 
12709  using namespace std;
 
12711  // Bundle multiplicity is stored in the `len` member variable for `track_bundle`s.
 
12713  for ( auto& t : event.mc_trks ) {
 
12714    if ( t.status == TRK_ST_MUONBUNDLE ) { return (int) t.len; } 
 
12717  ostream& out = Exception::getOstream();
 
12718  out << "get_multiplicity(): The following event does not correspond to a muon bundle:" << endl;
 
12720  throw Exception(static_cast<ostringstream&>(out).str());
 
12724#ifndef __TOOLS_RECONSTRUCTION__
 
12725#define __TOOLS_RECONSTRUCTION__
 
12728#include <algorithm>
 
12730#include "km3net-dataformat/offline/Hit.hh"
 
12731#include "km3net-dataformat/offline/Vec.hh"
 
12732#include "km3net-dataformat/offline/Trk.hh"
 
12733#include "km3net-dataformat/offline/Evt.hh"
 
12734#include "km3net-dataformat/offline/Exception.hh"
 
12735#include "km3net-dataformat/definitions/reconstruction.hh"
 
12749struct rec_stages_range {
 
12753  rec_stages_range() :
 
12755    upper(std::numeric_limits<int>::max())
 
12765  rec_stages_range(const int lower, const int upper) :
 
12776  rec_stages_range(const int stage) :
 
12788  inline bool operator()(const int stage) const
 
12790    return (stage >= lower && stage <= upper);
 
12807template<int reconstruction_type>
 
12808struct quality_sorter {
 
12818  inline bool operator()(const Trk& first, const Trk& second) const
 
12820    if (first.rec_stages.size() == second.rec_stages.size())
 
12821      return first.lik > second.lik;
 
12823      return first.rec_stages.size() > second.rec_stages.size();
 
12832struct has_history {
 
12839  has_history(const int type,  const rec_stages_range range) :
 
12848  inline bool operator()(const Trk& track) const
 
12850    if (track.rec_type == type)
 
12851      return std::find_if(track.rec_stages.begin(), track.rec_stages.end(), range) != track.rec_stages.end();
 
12856  const int              type;    //!< reconstruction type
 
12857  const rec_stages_range range;   //!< range of application types
 
12867inline bool has_jppmuon_prefit(const Trk& track)
 
12869  return ::has_history(JPP_RECONSTRUCTION_TYPE, JMUONPREFIT)(track);
 
12879inline bool has_jppmuon_simplex(const Trk& track)
 
12881  return ::has_history(JPP_RECONSTRUCTION_TYPE, JMUONSIMPLEX)(track);
 
12891inline bool has_jppmuon_gandalf(const Trk& track)
 
12893  return ::has_history(JPP_RECONSTRUCTION_TYPE, JMUONGANDALF)(track);
 
12903inline bool has_jppmuon_energy(const Trk& track)
 
12905  return ::has_history(JPP_RECONSTRUCTION_TYPE, JMUONENERGY)(track);
 
12915inline bool has_jppmuon_start(const Trk& track)
 
12917  return ::has_history(JPP_RECONSTRUCTION_TYPE, JMUONSTART)(track);
 
12927inline bool has_jppmuon_fit(const Trk& track)
 
12929  return ::has_history(JPP_RECONSTRUCTION_TYPE, rec_stages_range(JMUONBEGIN, JMUONEND))(track);
 
12939inline bool has_shower_prefit(const Trk& track)
 
12941  return ::has_history(JPP_RECONSTRUCTION_TYPE, JSHOWERPREFIT)(track);
 
12951inline bool has_shower_positionfit(const Trk& track)
 
12953  return ::has_history(JPP_RECONSTRUCTION_TYPE, JSHOWERPOSITIONFIT)(track);
 
12963inline bool has_shower_completefit(const Trk& track)
 
12965  return ::has_history(JPP_RECONSTRUCTION_TYPE, JSHOWERCOMPLETEFIT)(track);
 
12975inline bool has_shower_fit(const Trk& track)
 
12977  return ::has_history(JPP_RECONSTRUCTION_TYPE, rec_stages_range(JSHOWERBEGIN, JSHOWEREND))(track);
 
12987inline bool has_aashower_fit(const Trk& track)
 
12989  return ::has_history(AANET_RECONSTRUCTION_TYPE, rec_stages_range(AASHOWERBEGIN, AASHOWEREND))(track);
 
13001template<class JTrackSelector_t>
 
13002inline bool has_reconstructed_track(const Evt& evt, JTrackSelector_t selector)
 
13004  return std::find_if(evt.trks.begin(), evt.trks.end(), selector) != evt.trks.end();
 
13015template<int reconstruction_type>
 
13016inline bool has_reconstructed_track(const Evt& evt, const rec_stages_range range = rec_stages_range())
 
13018  return ::has_reconstructed_track(evt, ::has_history(reconstruction_type, range));
 
13028inline bool has_reconstructed_jppmuon(const Evt& evt)
 
13030  return ::has_reconstructed_track(evt, has_jppmuon_fit);
 
13040inline bool has_reconstructed_jppshower(const Evt& evt)
 
13042  return ::has_reconstructed_track(evt, ::has_shower_fit);
 
13052inline bool has_reconstructed_aashower(const Evt& evt)
 
13054  return ::has_reconstructed_track(evt, has_aashower_fit);
 
13070template<class JTrackSelector_t, class JQualitySorter_t>
 
13071inline const Trk& get_best_reconstructed_track(const Evt&       evt,
 
13072                                               JTrackSelector_t selector,
 
13073                                               JQualitySorter_t comparator)
 
13075  std::vector<Trk>::const_iterator p = std::find_if(evt.trks.begin(), evt.trks.end(), selector);
 
13077  for (std::vector<Trk>::const_iterator i = p; i != evt.trks.end(); ++i) {
 
13078    if (selector(*i) && comparator(*i, *p)) {
 
13083  if (p != evt.trks.end())
 
13086    THROW(Exception, "This event has no reconstructed track with given selector.");
 
13097template<int reconstruction_type>
 
13098inline const Trk& get_best_reconstructed_track(const Evt& evt, const rec_stages_range range = rec_stages_range())
 
13100  return get_best_reconstructed_track(evt, ::has_history(reconstruction_type, range), quality_sorter<reconstruction_type>());
 
13110inline const Trk& get_best_reconstructed_jppmuon(const Evt& evt)
 
13112  return get_best_reconstructed_track(evt, has_jppmuon_fit, quality_sorter<JPP_RECONSTRUCTION_TYPE>());
 
13122inline const Trk& get_best_reconstructed_jppshower(const Evt& evt)
 
13124  return get_best_reconstructed_track(evt, ::has_shower_fit, quality_sorter<JPP_RECONSTRUCTION_TYPE>());
 
13134inline const Trk& get_best_reconstructed_aashower(const Evt& evt)
 
13136  return get_best_reconstructed_track(evt, ::has_aashower_fit, quality_sorter<AANET_RECONSTRUCTION_TYPE>());
 
13140#ifndef __TOOLS__TIME_CONVERTER__
 
13141#define __TOOLS__TIME_CONVERTER__
 
13143#include "km3net-dataformat/offline/Evt.hh"
 
13144#include "km3net-dataformat/online/JDAQClock.hh"
 
13145#include "km3net-dataformat/online/JDAQChronometer.hh"
 
13158class time_converter
 
13176  time_converter(const Evt& event) :
 
13178    __t1(getTimeOfRTS(event.frame_index))
 
13188  time_converter(const Evt&             event,
 
13189                 const JDAQChronometer& chronometer) :
 
13191    __t1(getTimeOfRTS(chronometer))
 
13200  double getTime() const
 
13202    return __t1 - __t0;
 
13211  double putTime() const
 
13213    return __t0 - __t1;
 
13223  double getTime(const double t0) const
 
13225    return t0 + __t1 - __t0;
 
13235  double putTime(const double t0) const
 
13237    return t0 - __t1 + __t0;
 
13241  double __t0;   // Monte Carlo event time [ns]
 
13242  double __t1;   // DAQ RTS [ns]
 
13247#undef  _BACKWARD_BACKWARD_WARNING_H
 
13249    static const char* classesHeaders[] = {
 
13250"AAObject", payloadCode, 
"@",
 
13251"Evt", payloadCode, 
"@",
 
13252"Head", payloadCode, 
"@",
 
13253"Hit", payloadCode, 
"@",
 
13254"KM3NETDAQ::JDAQAbstractPreamble", payloadCode, 
"@",
 
13255"KM3NETDAQ::JDAQChronometer", payloadCode, 
"@",
 
13256"KM3NETDAQ::JDAQEvent", payloadCode, 
"@",
 
13257"KM3NETDAQ::JDAQEventHeader", payloadCode, 
"@",
 
13258"KM3NETDAQ::JDAQFrame", payloadCode, 
"@",
 
13259"KM3NETDAQ::JDAQFrameStatus", payloadCode, 
"@",
 
13260"KM3NETDAQ::JDAQHeader", payloadCode, 
"@",
 
13261"KM3NETDAQ::JDAQHit", payloadCode, 
"@",
 
13262"KM3NETDAQ::JDAQKeyHit", payloadCode, 
"@",
 
13263"KM3NETDAQ::JDAQModuleIdentifier", payloadCode, 
"@",
 
13264"KM3NETDAQ::JDAQPMTIdentifier", payloadCode, 
"@",
 
13265"KM3NETDAQ::JDAQPreamble", payloadCode, 
"@",
 
13266"KM3NETDAQ::JDAQRate", payloadCode, 
"@",
 
13267"KM3NETDAQ::JDAQSummaryFrame", payloadCode, 
"@",
 
13268"KM3NETDAQ::JDAQSummaryslice", payloadCode, 
"@",
 
13269"KM3NETDAQ::JDAQSummarysliceHeader", payloadCode, 
"@",
 
13270"KM3NETDAQ::JDAQSuperFrame", payloadCode, 
"@",
 
13271"KM3NETDAQ::JDAQSuperFrameHeader", payloadCode, 
"@",
 
13272"KM3NETDAQ::JDAQTimeslice", payloadCode, 
"@",
 
13273"KM3NETDAQ::JDAQTimesliceHeader", payloadCode, 
"@",
 
13274"KM3NETDAQ::JDAQTimesliceL0", payloadCode, 
"@",
 
13275"KM3NETDAQ::JDAQTimesliceL1", payloadCode, 
"@",
 
13276"KM3NETDAQ::JDAQTimesliceL2", payloadCode, 
"@",
 
13277"KM3NETDAQ::JDAQTimesliceSN", payloadCode, 
"@",
 
13278"KM3NETDAQ::JDAQTriggerCounter", payloadCode, 
"@",
 
13279"KM3NETDAQ::JDAQTriggerMask", payloadCode, 
"@",
 
13280"KM3NETDAQ::JDAQTriggeredHit", payloadCode, 
"@",
 
13281"KM3NETDAQ::JDAQUTCExtended", payloadCode, 
"@",
 
13282"MultiHead", payloadCode, 
"@",
 
13283"Trk", payloadCode, 
"@",
 
13284"Vec", payloadCode, 
"@",
 
13287    static bool isInitialized = 
false;
 
13288    if (!isInitialized) {
 
13289      TROOT::RegisterModule(
"G__KM3NeTROOT",
 
13290        headers, includePaths, payloadCode, fwdDeclCode,
 
13291        TriggerDictionaryInitialization_G__KM3NeTROOT_Impl, {}, classesHeaders, 
false);
 
13292      isInitialized = 
true;
 
13295  static struct DictInit {
 
13297      TriggerDictionaryInitialization_G__KM3NeTROOT_Impl();
 
13299  } __TheDictionaryInitializer;
 
13301void TriggerDictionaryInitialization_G__KM3NeTROOT() {
 
13302  TriggerDictionaryInitialization_G__KM3NeTROOT_Impl();
 
Simple data structure for the DAQ preamble required for a correct calculation of the object size for ...
 
Data storage class for rate measurement of one PMT.
 
Data storage class for rate measurements of all PMTs in one module.
 
Data frame of one optical module.
 
Auxiliary class to count triggers.
 
Auxiliary class for trigger mask.
 
Data structure for UTC time.
 
KM3NeT DAQ data structures and auxiliaries.
 
static TGenericClassInfo * GenerateInitInstanceLocal(const ::KM3NETDAQ::JDAQAbstractPreamble *)
 
static void destruct_KM3NETDAQcLcLJDAQKeyHit(void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQHeader(void *p)
 
static void destruct_KM3NETDAQcLcLJDAQTimeslice(void *p)
 
static void deleteArray_Vec(void *p)
 
static void destruct_KM3NETDAQcLcLJDAQFrame(void *p)
 
static void streamer_KM3NETDAQcLcLJDAQSummaryFrame(TBuffer &buf, void *obj)
 
static void destruct_KM3NETDAQcLcLJDAQTimesliceL1(void *p)
 
static void destruct_Hit(void *p)
 
static void destruct_Vec(void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQSummaryslice(Long_t size, void *p)
 
static void * new_KM3NETDAQcLcLJDAQSummaryFrame(void *p=nullptr)
 
static void deleteArray_AAObject(void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQChronometer(void *p)
 
static void delete_KM3NETDAQcLcLJDAQHit(void *p)
 
static void * new_vectorlEHitgR(void *p=nullptr)
 
static void * new_vectorlEKM3NETDAQcLcLJDAQSuperFramegR(void *p=nullptr)
 
static void * newArray_KM3NETDAQcLcLJDAQEvent(Long_t size, void *p)
 
static void * new_KM3NETDAQcLcLJDAQFrame(void *p=nullptr)
 
static void * newArray_KM3NETDAQcLcLJDAQTriggerCounter(Long_t size, void *p)
 
static void * new_KM3NETDAQcLcLJDAQUTCExtended(void *p=nullptr)
 
static void * new_maplEstringcOstringgR(void *p=nullptr)
 
static void * new_vectorlETrkgR(void *p=nullptr)
 
static void delete_AAObject(void *p)
 
static void * new_Vec(void *p=nullptr)
 
static void deleteArray_vectorlETrkgR(void *p)
 
static void * newArray_Trk(Long_t size, void *p)
 
static void delete_KM3NETDAQcLcLJDAQSuperFrame(void *p)
 
static void delete_KM3NETDAQcLcLJDAQKeyHit(void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQPreamble(Long_t size, void *p)
 
static void * new_KM3NETDAQcLcLJDAQPreamble(void *p=nullptr)
 
static void * new_KM3NETDAQcLcLJDAQKeyHit(void *p=nullptr)
 
static void destruct_vectorlEstringgR(void *p)
 
static void vectorlEstringgR_TClassManip(TClass *)
 
static void destruct_Trk(void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQTriggeredHit(Long_t size, void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQAbstractPreamble(void *p)
 
static void vectorlEKM3NETDAQcLcLJDAQSummaryFramegR_TClassManip(TClass *)
 
static void streamer_KM3NETDAQcLcLJDAQPreamble(TBuffer &buf, void *obj)
 
static void * newArray_vectorlETrkgR(Long_t size, void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQPMTIdentifier(Long_t size, void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQTimesliceL0(Long_t size, void *p)
 
static void destruct_KM3NETDAQcLcLJDAQTimesliceHeader(void *p)
 
static TClass * KM3NETDAQcLcLJDAQRate_Dictionary()
 
static void * newArray_KM3NETDAQcLcLJDAQSuperFrame(Long_t size, void *p)
 
static void KM3NETDAQcLcLJDAQRate_TClassManip(TClass *)
 
static TClass * maplEstringcOstringgR_Dictionary()
 
static void vectorlEHitgR_TClassManip(TClass *)
 
static void delete_vectorlEKM3NETDAQcLcLJDAQSuperFramegR(void *p)
 
static void destruct_vectorlEKM3NETDAQcLcLJDAQSummaryFramegR(void *p)
 
static void delete_KM3NETDAQcLcLJDAQTimeslice(void *p)
 
static void * newArray_vectorlEHitgR(Long_t size, void *p)
 
static void maplEstringcOstringgR_TClassManip(TClass *)
 
static void deleteArray_vectorlEKM3NETDAQcLcLJDAQSuperFramegR(void *p)
 
static void * newArray_Vec(Long_t size, void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQHit(void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQEventHeader(void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQSuperFrame(void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQTimesliceL0(void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQAbstractPreamble(Long_t size, void *p)
 
static void * newArray_vectorlEKM3NETDAQcLcLJDAQTriggeredHitgR(Long_t size, void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQPreamble(void *p)
 
R__UseDummy(_R__UNIQUE_DICT_(Init))
 
static void * newArray_KM3NETDAQcLcLJDAQRate(Long_t size, void *p)
 
static void destruct_KM3NETDAQcLcLJDAQHit(void *p)
 
static void deleteArray_vectorlEstringgR(void *p)
 
static void destruct_KM3NETDAQcLcLJDAQTimesliceL2(void *p)
 
static void destruct_KM3NETDAQcLcLJDAQSummarysliceHeader(void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQSummarysliceHeader(Long_t size, void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQPMTIdentifier(void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQHit(Long_t size, void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQTimeslice(void *p)
 
static void delete_KM3NETDAQcLcLJDAQSummaryslice(void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQUTCExtended(void *p)
 
static void destruct_KM3NETDAQcLcLJDAQRate(void *p)
 
static TClass * vectorlEHitgR_Dictionary()
 
static void * new_KM3NETDAQcLcLJDAQSummarysliceHeader(void *p=nullptr)
 
static void delete_KM3NETDAQcLcLJDAQChronometer(void *p)
 
static void * newArray_MultiHead(Long_t size, void *p)
 
static void delete_vectorlEdoublegR(void *p)
 
static void vectorlEKM3NETDAQcLcLJDAQTriggeredHitgR_TClassManip(TClass *)
 
static void delete_MultiHead(void *p)
 
static void delete_KM3NETDAQcLcLJDAQUTCExtended(void *p)
 
static void streamer_KM3NETDAQcLcLJDAQModuleIdentifier(TBuffer &buf, void *obj)
 
static void * new_KM3NETDAQcLcLJDAQEvent(void *p=nullptr)
 
static void delete_maplEstringcOstringgR(void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQTimesliceL1(void *p)
 
static void streamer_KM3NETDAQcLcLJDAQAbstractPreamble(TBuffer &buf, void *obj)
 
static void delete_Evt(void *p)
 
static void destruct_vectorlEHeadgR(void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQKeyHit(void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQTimesliceL1(Long_t size, void *p)
 
static void destruct_KM3NETDAQcLcLJDAQAbstractPreamble(void *p)
 
static void * new_Trk(void *p=nullptr)
 
static void * newArray_AAObject(Long_t size, void *p)
 
static void destruct_KM3NETDAQcLcLJDAQFrameStatus(void *p)
 
static void * new_KM3NETDAQcLcLJDAQSuperFrame(void *p=nullptr)
 
static void deleteArray_Evt(void *p)
 
static void delete_KM3NETDAQcLcLJDAQTimesliceL1(void *p)
 
static void * new_KM3NETDAQcLcLJDAQModuleIdentifier(void *p=nullptr)
 
static void * new_KM3NETDAQcLcLJDAQRate(void *p=nullptr)
 
static void * new_KM3NETDAQcLcLJDAQEventHeader(void *p=nullptr)
 
static void * newArray_maplEstringcOstringgR(Long_t size, void *p)
 
static void delete_KM3NETDAQcLcLJDAQFrameStatus(void *p)
 
TGenericClassInfo * GenerateInitInstance(const ::KM3NETDAQ::JDAQAbstractPreamble *)
 
static void delete_Head(void *p)
 
static TClass * vectorlEKM3NETDAQcLcLJDAQTriggeredHitgR_Dictionary()
 
static void destruct_KM3NETDAQcLcLJDAQEvent(void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQTimesliceL2(void *p)
 
static void delete_KM3NETDAQcLcLJDAQEvent(void *p)
 
static void vectorlEdoublegR_TClassManip(TClass *)
 
static void * newArray_vectorlEKM3NETDAQcLcLJDAQKeyHitgR(Long_t size, void *p)
 
static void * new_vectorlEstringgR(void *p=nullptr)
 
static void * newArray_KM3NETDAQcLcLJDAQTimeslice(Long_t size, void *p)
 
static void streamer_KM3NETDAQcLcLJDAQHit(TBuffer &buf, void *obj)
 
static void delete_Vec(void *p)
 
static void delete_KM3NETDAQcLcLJDAQSuperFrameHeader(void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQTimesliceHeader(void *p)
 
static void destruct_KM3NETDAQcLcLJDAQChronometer(void *p)
 
static void vectorlEKM3NETDAQcLcLJDAQSuperFramegR_TClassManip(TClass *)
 
static void delete_vectorlEintgR(void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQTimesliceHeader(Long_t size, void *p)
 
static void delete_Trk(void *p)
 
static TClass * vectorlEstringgR_Dictionary()
 
static void delete_vectorlEHeadgR(void *p)
 
static void * new_KM3NETDAQcLcLJDAQAbstractPreamble(void *p=nullptr)
 
static void * newArray_Hit(Long_t size, void *p)
 
static void deleteArray_Hit(void *p)
 
static void * new_KM3NETDAQcLcLJDAQTimesliceL2(void *p=nullptr)
 
static void destruct_KM3NETDAQcLcLJDAQSuperFrameHeader(void *p)
 
static void delete_vectorlEHitgR(void *p)
 
static void deleteArray_vectorlEintgR(void *p)
 
static void destruct_maplEstringcOstringgR(void *p)
 
static void * new_KM3NETDAQcLcLJDAQTimesliceSN(void *p=nullptr)
 
static void destruct_KM3NETDAQcLcLJDAQSummaryslice(void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQSummarysliceHeader(void *p)
 
static void * newArray_vectorlEintgR(Long_t size, void *p)
 
static void delete_Hit(void *p)
 
static void delete_KM3NETDAQcLcLJDAQModuleIdentifier(void *p)
 
static void * new_vectorlEdoublegR(void *p=nullptr)
 
static void destruct_KM3NETDAQcLcLJDAQSuperFrame(void *p)
 
static void delete_KM3NETDAQcLcLJDAQTriggerMask(void *p)
 
static void deleteArray_MultiHead(void *p)
 
static void destruct_Head(void *p)
 
static void * new_vectorlEKM3NETDAQcLcLJDAQKeyHitgR(void *p=nullptr)
 
static void * new_vectorlEKM3NETDAQcLcLJDAQTriggeredHitgR(void *p=nullptr)
 
static void * new_KM3NETDAQcLcLJDAQTriggerCounter(void *p=nullptr)
 
static void delete_KM3NETDAQcLcLJDAQRate(void *p)
 
static void delete_KM3NETDAQcLcLJDAQEventHeader(void *p)
 
static void destruct_MultiHead(void *p)
 
static void streamer_KM3NETDAQcLcLJDAQKeyHit(TBuffer &buf, void *obj)
 
static void * newArray_Evt(Long_t size, void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQTimesliceL2(Long_t size, void *p)
 
static void deleteArray_vectorlEdoublegR(void *p)
 
static void destruct_KM3NETDAQcLcLJDAQTimesliceL0(void *p)
 
static void * new_vectorlEHeadgR(void *p=nullptr)
 
static void streamer_KM3NETDAQcLcLJDAQTriggeredHit(TBuffer &buf, void *obj)
 
static void destruct_vectorlETrkgR(void *p)
 
static void * new_Hit(void *p=nullptr)
 
static void deleteArray_maplEstringcOstringgR(void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQTriggerMask(Long_t size, void *p)
 
static TClass * vectorlETrkgR_Dictionary()
 
static void * new_Evt(void *p=nullptr)
 
::ROOT::TGenericClassInfo * _R__UNIQUE_DICT_(Init)
 
static void * new_KM3NETDAQcLcLJDAQTriggeredHit(void *p=nullptr)
 
static void vectorlETrkgR_TClassManip(TClass *)
 
static void * new_KM3NETDAQcLcLJDAQTriggerMask(void *p=nullptr)
 
static void destruct_vectorlEdoublegR(void *p)
 
static void vectorlEintgR_TClassManip(TClass *)
 
static void deleteArray_KM3NETDAQcLcLJDAQRate(void *p)
 
static void destruct_vectorlEHitgR(void *p)
 
static void destruct_vectorlEKM3NETDAQcLcLJDAQTriggeredHitgR(void *p)
 
static void deleteArray_vectorlEHeadgR(void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQSuperFrameHeader(Long_t size, void *p)
 
static void * new_KM3NETDAQcLcLJDAQHit(void *p=nullptr)
 
static void vectorlEKM3NETDAQcLcLJDAQKeyHitgR_TClassManip(TClass *)
 
static void * newArray_KM3NETDAQcLcLJDAQTimesliceSN(Long_t size, void *p)
 
static void destruct_KM3NETDAQcLcLJDAQTriggerMask(void *p)
 
static void * new_KM3NETDAQcLcLJDAQTimesliceL0(void *p=nullptr)
 
static void streamer_KM3NETDAQcLcLJDAQPMTIdentifier(TBuffer &buf, void *obj)
 
static void * newArray_vectorlEstringgR(Long_t size, void *p)
 
static void * new_Head(void *p=nullptr)
 
static void * newArray_KM3NETDAQcLcLJDAQEventHeader(Long_t size, void *p)
 
static void delete_KM3NETDAQcLcLJDAQTimesliceL0(void *p)
 
static void deleteArray_vectorlEKM3NETDAQcLcLJDAQSummaryFramegR(void *p)
 
static void delete_KM3NETDAQcLcLJDAQPMTIdentifier(void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQKeyHit(Long_t size, void *p)
 
static void delete_KM3NETDAQcLcLJDAQPreamble(void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQTriggerMask(void *p)
 
static void delete_vectorlEstringgR(void *p)
 
static void deleteArray_Trk(void *p)
 
static void * new_KM3NETDAQcLcLJDAQChronometer(void *p=nullptr)
 
static void * newArray_vectorlEKM3NETDAQcLcLJDAQSummaryFramegR(Long_t size, void *p)
 
static void * new_KM3NETDAQcLcLJDAQTimesliceHeader(void *p=nullptr)
 
static void destruct_KM3NETDAQcLcLJDAQUTCExtended(void *p)
 
static void * new_vectorlEKM3NETDAQcLcLJDAQSummaryFramegR(void *p=nullptr)
 
static void deleteArray_KM3NETDAQcLcLJDAQTriggeredHit(void *p)
 
static void * new_KM3NETDAQcLcLJDAQSummaryslice(void *p=nullptr)
 
static void delete_vectorlETrkgR(void *p)
 
static void delete_KM3NETDAQcLcLJDAQSummaryFrame(void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQTimesliceSN(void *p)
 
static void destruct_Evt(void *p)
 
static void destruct_vectorlEintgR(void *p)
 
static void delete_KM3NETDAQcLcLJDAQFrame(void *p)
 
static void delete_KM3NETDAQcLcLJDAQTimesliceL2(void *p)
 
static void destruct_vectorlEKM3NETDAQcLcLJDAQSuperFramegR(void *p)
 
static void destruct_KM3NETDAQcLcLJDAQPreamble(void *p)
 
static TClass * vectorlEintgR_Dictionary()
 
static void * new_KM3NETDAQcLcLJDAQTimeslice(void *p=nullptr)
 
static void destruct_KM3NETDAQcLcLJDAQTriggeredHit(void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQFrame(Long_t size, void *p)
 
static TClass * vectorlEHeadgR_Dictionary()
 
static void delete_KM3NETDAQcLcLJDAQTimesliceSN(void *p)
 
static void * new_KM3NETDAQcLcLJDAQHeader(void *p=nullptr)
 
static void * newArray_vectorlEKM3NETDAQcLcLJDAQSuperFramegR(Long_t size, void *p)
 
static TClass * vectorlEKM3NETDAQcLcLJDAQSuperFramegR_Dictionary()
 
static void * new_MultiHead(void *p=nullptr)
 
static void deleteArray_KM3NETDAQcLcLJDAQTriggerCounter(void *p)
 
static void delete_KM3NETDAQcLcLJDAQTimesliceHeader(void *p)
 
static void * new_KM3NETDAQcLcLJDAQTimesliceL1(void *p=nullptr)
 
static void destruct_KM3NETDAQcLcLJDAQEventHeader(void *p)
 
static void destruct_KM3NETDAQcLcLJDAQHeader(void *p)
 
static void * newArray_Head(Long_t size, void *p)
 
static TClass * vectorlEdoublegR_Dictionary()
 
static void deleteArray_KM3NETDAQcLcLJDAQFrameStatus(void *p)
 
static void destruct_vectorlEKM3NETDAQcLcLJDAQKeyHitgR(void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQFrameStatus(Long_t size, void *p)
 
static void vectorlEHeadgR_TClassManip(TClass *)
 
static void deleteArray_KM3NETDAQcLcLJDAQSuperFrameHeader(void *p)
 
static void delete_KM3NETDAQcLcLJDAQHeader(void *p)
 
static void destruct_KM3NETDAQcLcLJDAQTriggerCounter(void *p)
 
static void deleteArray_vectorlEKM3NETDAQcLcLJDAQTriggeredHitgR(void *p)
 
static void * newArray_vectorlEdoublegR(Long_t size, void *p)
 
static void delete_vectorlEKM3NETDAQcLcLJDAQTriggeredHitgR(void *p)
 
static void destruct_KM3NETDAQcLcLJDAQModuleIdentifier(void *p)
 
static void delete_KM3NETDAQcLcLJDAQAbstractPreamble(void *p)
 
static void * new_AAObject(void *p=nullptr)
 
static void delete_KM3NETDAQcLcLJDAQTriggerCounter(void *p)
 
static void * new_KM3NETDAQcLcLJDAQFrameStatus(void *p=nullptr)
 
static void deleteArray_Head(void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQModuleIdentifier(Long_t size, void *p)
 
static void destruct_KM3NETDAQcLcLJDAQPMTIdentifier(void *p)
 
static void deleteArray_vectorlEHitgR(void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQModuleIdentifier(void *p)
 
static void delete_KM3NETDAQcLcLJDAQTriggeredHit(void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQHeader(Long_t size, void *p)
 
static TClass * vectorlEKM3NETDAQcLcLJDAQSummaryFramegR_Dictionary()
 
static void delete_vectorlEKM3NETDAQcLcLJDAQSummaryFramegR(void *p)
 
static void deleteArray_vectorlEKM3NETDAQcLcLJDAQKeyHitgR(void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQFrame(void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQSummaryFrame(Long_t size, void *p)
 
static void destruct_AAObject(void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQUTCExtended(Long_t size, void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQSummaryFrame(void *p)
 
static void * newArray_KM3NETDAQcLcLJDAQChronometer(Long_t size, void *p)
 
static void destruct_KM3NETDAQcLcLJDAQSummaryFrame(void *p)
 
static void delete_KM3NETDAQcLcLJDAQSummarysliceHeader(void *p)
 
static void * new_vectorlEintgR(void *p=nullptr)
 
static void * new_KM3NETDAQcLcLJDAQPMTIdentifier(void *p=nullptr)
 
static void * new_KM3NETDAQcLcLJDAQSuperFrameHeader(void *p=nullptr)
 
static void destruct_KM3NETDAQcLcLJDAQTimesliceSN(void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQSummaryslice(void *p)
 
static TClass * vectorlEKM3NETDAQcLcLJDAQKeyHitgR_Dictionary()
 
static void * newArray_vectorlEHeadgR(Long_t size, void *p)
 
static void delete_vectorlEKM3NETDAQcLcLJDAQKeyHitgR(void *p)
 
static void deleteArray_KM3NETDAQcLcLJDAQEvent(void *p)
 
AAObject is a base class for I/O-classes that adds the possibility to add 'user' information which wi...
 
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
 
The Head class reflects the header of Monte-Carlo event files, which consists of keys (also referred ...
 
Timeslice data structure for L0 data.
 
Timeslice data structure for L1 data.
 
Timeslice data structure for L2 data.
 
Timeslice data structure for SN data.
 
The Trk class represents a Monte Carlo (MC) particle as well as a reconstructed track/shower.
 
The Vec class is a straightforward 3-d vector, which also works in pyroot.