DSPSR Documentation

Introduction

DSPSR implements a family of C++ classes that may be used in the loading and manipulation of observational data, primarily as a regularly sampled function of time. This includes both phase-coherent data, as stored by baseband recording systems, and detected data, as produced by a filterbank system. The functionality, contained in the dsp namespace, is divided into three main classes: data containers, operations, and auxilliary objects.

The most general data container is the dsp::TimeSeries class, which is used to store the floating point representation of the signal in a variety of states. The dsp::BitSeries class is used to store the N-bit digitized data before unpacking into a TimeSeries object.

The main DSP algorithms are implemented by classes that inherit the dsp::Operation base class. These operate on dsp::TimeSeries objects and can:

  • convert digitized data to floating point representation (dsp::Unpacker class)
  • coherently dedisperse data (dsp::Convolution class)
  • fold data using a tempo polyco or tempo2 predictor (dsp::Fold class)
  • etc...

The auxilliary classes perform operations on arrays of data, such as multiplying a frequency response matrix by a spectrum field vector (e.g. the dsp::Response class).

Adding a new File Format

A class that inherits dsp::File is used to load uninterpreted N-bit digitized data into a dsp::BitSeries object. An associated class that inherits dsp::Unpacker is used to convert the digitized data into floating point representation.

When adding a new file format, the following steps should be followed:

  • Create a new subdirectory of baseband, say baseband/backend, and create all new files here.

  • Inherit dsp::File or one of its derived classes, implement the header-parsing code, and add the new class to File_registry.C using preprocessor directives.

  • Inherit dsp::Unpacker or one of its derived classes, implement the bit-unpacking code, and add the new class to Unpacker_registry.C using preprocessor directives.

  • Define the appropriate preprocessor directives within an optional section of Makefile.backends.


Generated using doxygen 1.8.1.1