PSRCHIVE Documentation

Introduction

The PSRCHIVE Library implements a set of base classes (in C++) that may be used in the storage, manipulation, and analysis of the observational data commonly used in pulsar experiments. The base classes implement a wide variety of general purpose, flexible routines.

Pulse Profiles

The basic quantity observed in most pulsar experiments is the pulse profile: a one-dimensional array of some measured quantity as a function of pulse phase. This is represented by the Pulsar::Profile class. The Pulsar::Integration class contains a two-dimensional array of Pulsar::Profile objects, each integrated over the same time interval. The Pulsar::Profile objects are typically organized as a function of polarization and observing frequency, though other measured states are possible. The Pulsar::Archive class implements a one-dimensional array of Pulsar::Integration objects, each with similar observational parameters and each in "pulse phase" with each other.

Container Interface

The Pulsar::Profile, Pulsar::Integration, and Pulsar::Archive classes are Pulsar::Container classes; they implement a minimal set of operations required to load, store, and perform simple manipulations of their contents. For example, the Pulsar::Profile class provides the following member functions:

  • offset - adds offset to each bin of the profile
  • scale - multiplies each bin of the profile by scale
  • rotate - rotates the profile in phase
  • bscrunch - integrates neighbouring phase bins in profile
  • fold - integrates neighbouring sections of the profile

The Pulsar::Integration class implements a minimal set of operations required to manipulate a set of Pulsar::Profile objects in the polarization and frequency domains. In addition to simple nested calls of the above functions, these include:

  • dedisperse - rotates all profiles to remove dispersion delays between channels
  • defaraday - transforms all profiles to remove Faraday rotation between channels
  • fscrunch - integrates profiles from neighbouring channels
  • pscrunch - integrates profiles from two polarizations into one total intensity
  • invint - forms the polarimetric invariant interval from Stokes (I,Q,U,V)
  • transform - performs a polarimetric transformation

The Pulsar::Archive virtual base class is the interface that will be used in most applications. In addition to providing interfaces to all of the above functions, the Pulsar::Archive class implements:

  • tscrunch - integrates profiles from neighbouring Integrations
  • append - copies (or transfers) the Integrations from one Archive to another
  • set_ephemeris - installs a new ephemeris and polyco, and aligns all profiles to it

For a complete list of the methods defined in each of these base classes, please see the Compound List.

More sophisticated operations are generally implemented as separate classes that take one of the Pulsar::Container classes as an input. These mostly inherit the Pulsar::Algorithm base class.

Algorithm Interface

The interface to an Pulsar::Algorithm is arbitrary. The base class exists only as a means of classification. Pulsar::Algorithm classes can be used to calculate statistics, find the best-fit shift between a profile and a template, perform scattered power correction, etc.

Archive File Formats

The Pulsar::Archive virtual base class specifies only the minimal set of information required in order to implement basic data reduction algorithms. Although it specifies the interface to set and get the values of various attributes and load and unload data from file, no storage or I/O capability is implemented by Pulsar::Archive. These methods, especially those related to file I/O, must be implemented by classes that inherit the Pulsar::Archive base class.

Most observatories and research groups use unique file formats and associate different pieces of information with their observations. The derived classes must therefore implement the storage and modification of this auxiliary information. This may be facilitated using the Archive::Extension classes.

In general, applications need not know anything about the specific archive file format with which they are dealing. New Pulsar::Archive instances are created and loaded from file by calling the static Pulsar::Archive::load factory.


Generated using doxygen 1.8.14