Table Of Contents

Previous topic

New In v4

Next topic

Working with Q Frames

This Page

Q Frames

Native extensions for handling of sub-events by adding a fifth canonical stream type, called DAQ (for Data Acquisition). This frame type holds the detector readout information (and simulation information) for a particular detector global trigger. One or multiple views can be made into these data by using a splitter module to produce Physics frames following the DAQ frame. Using the mix-in mechanism for multiple streams, all the DAQ information (i.e. the readouts) is available to reconstructions also in the subevent frames, without duplication on disk. This lays the foundation for introduction of other time-varying non-physics data (e.g. monitoring output like mainboard temperatures) into the data stream.

The usual modules that operate on DAQ frames are calibration and low-level reconstruction modules (e.g. waveform calibration and pulse extraction), as well as splitter modules that produce Physics frames that are views into the DAQ frame. Since simulation is global data for a particular trigger, simulation modules are also expected to operate on DAQ frames.

New Classes and Modules

QConverter
Converts old-style Physics-only data into data that looks like it began as Q frames and passed through the null splitter. Reassigns frame keys based on name and type from the P frame in the original data into a new Q frame.
I3InfiniteSource
Provides an infinite source of empty frames (DAQ frames, by default) optionally preceded by the contents of an I3 file (e.g. GCD data).
I3Splitter
Base class for splitter modules. Handles low-level details like frame mixing and subevent ID assignment.
I3NullSplitter
The simplest splitter module – produces a P frame containing the entire event.
I3RecoPulseSeriesMapMask
An object representing a subset of another I3RecoPulseSeriesMap.
I3PacketModule
A base class for modules that want to operate atomically on “packets” of DAQ frames followed by all of the subevents into which they have been split. This is intended for use by algorithms that need to make global decisions (e.g. a module that joins several subevents together) based on the entire set of events. Note that thought is required before implementing such a module – this is very rarely something you actually want to do.

Extended Classes

I3EventHeader
Additional fields for sub event stream (a string set to the instance name of the splitter module that produces this subevent) and subevent ID (unique per stream per event).
I3Frame
Added additional stop type (DAQ).
I3Module
Added additional stop type (DAQ).
I3Writer
Add DropOrphanStreams option to remove parent frames with no children. For example, one may want to discard DAQ frames where all child physics events have been dropped; this can be done by setting DropOrphanStreams=[icetray.I3Frame.DAQ]. A similar procedure can be used to drop redundant GCD frames.