Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
  • pdsdata for C++
  • pypdsdata for Python

Description of XTC

Here is the brief description of the XTC file format produced by the LUSI on-line. LUSI XTC format inherited its main features from PSDM:BaBar XTC format.

...

There are several convenience classes for reading and examining the content of the XTC files. XtcFileIterator is an iterator class for reading the sequence of datagrams from the XTC files. XtcIterator is an abstract base class for iteration over the content of the single Xtc object. O2OTranslator package has a specific implementation of this iterator called O2OXtcIterator (and friend class O2OXtcScannerI).

Online data formats

The original data objects are produced by on-line system and are shipped to offline in XTC format. Every object in XTC is a part of the specific "transition" and interpretation of the object contents is done in the context of that particular transition. These types of the transitions are defined now:

  • Map and Unmap – allocation/deallocation of the resources
  • Configure and Unconfigure – configuration of the system
  • BeginRun and EndRun – happen at begin and end of run
  • BeginCalibCycle and EndCalibCycle – happen at begin and end of calibration cycle, many experiments have only one calibration cycle but there are experiments that use multiple cycles.
  • Pause and Resume
  • Enable and Disable
  • L1Accept – correspond to a single trigger or shot

The transitions in XTC file correspond to the transition in the Dataflow system and they are nested. Particularly Configure/Unconfigure transitions are nested inside Map/Unmap, BeginRun/EndRun are nested inside Configure/Unconfigure, BeginCalibCycle/EndCalibCycle are nested inside BeginRun/EndRun, and Pause/Resume and L1Accept are nested inside BeginCalibCycle/EndCalibCycle. There could be multiple nested transitions inside a single upper-level transition, this is certainly true for L1Accept transitions, but also can be the case for BeginCalibCycle/EndCalibCycle, BeginRun/EndRun, and Configure/Unconfigure too.