casacore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Modules | Classes

Create and use scalar and array columns of Quanta and Measures in Tables. More...

Modules

 TableMeasures_module_internal_classes
 Internal TableMeasures_module classes and functions.
 

Classes

class  casacore::ArrayMeasColumn< M >
 Access table array Measure columns. More...
 
class  casacore::ArrayQuantColumn< T >
 Provides read/write access to Array Quantum columns in Tables. More...
 
class  casacore::ScalarMeasColumn< M >
 Read only access to table scalar Measure columns. More...
 
class  casacore::ScalarQuantColumn< T >
 Provides access to Scalar Quantum Columns in Tables. More...
 
class  casacore::TableMeasColumn
 Read only access to table scalar Measure columns. More...
 
class  casacore::TableMeasDesc< M >
 Definition of a Measure column in a Table. More...
 
class  casacore::TableMeasOffsetDesc
 Definition of a Measure Offset in a Table. More...
 
class  casacore::TableMeasRefDesc
 Definition of a Measure Reference in a Table. More...
 
class  casacore::TableMeasValueDesc
 Definition of a Measure Value in a Table. More...
 
class  casacore::TableQuantumDesc
 A class for defining Quantum columns in Tables. More...
 

Detailed Description

Create and use scalar and array columns of Quanta and Measures in Tables.

See below for an overview of the classes in this module.

Prerequisite

Review Status

Reviewed By:
Bob Garwood
Date Reviewed:
1999/12/23

Etymology

Table columns containing Measures and Quanta

Synopsis

The TableMeasures system exists to provide a way of creating (defining) Measure and Quantum Table columns thus enabling the direct storage of Quanta and Measures in Casacore Tables.

Defining Quantum and Measure columns is a once only operation (for each column). It can be seen as an extension to the existing Column Descriptor mechanism which adds a column of a specified type to a table. The (see ())<class=TableMeasDesc>TableMeasDesc and (see ())<class=TableQuantumDesc>TableQuantumDesc class hierarchies are used to define Measure and Quantum columns.

Once defined, Measure and Quantum column objects are used to access a column for reading and writing of Measures and Quanta. For Quantum column objects see the class (see ())<class=ScalarQuantColumn>ScalarQuantColumn and (see ())<class=ArrayQuantColumn>ArrayQuantColumn. For Measure column objects see (see ())<class=ScalarMeasColumn>ScalarMeasColumn and (see ())<class=ArrayMeasColumn>ArrayMeasColumn.

Conversions

The classes accessing the data use the underlying Quanta or Measures classes to convert the units or references of the measures or quanta. The TableMeasures classes do not test if a conversion is possible.
In general one can say that about every unit conversion is possible. The Unit class adjusts units as needed.
Conversions of Measures are only possible if enough information is supplied for the measure's reference.
Take a look at the abovementioned modules to find out about conversions.

Performance

Using the TableMeasures classes makes it easier to deal with measures in tables. However, there is a performance penalty compared to handling the values directly in the table using the Tables classes ScalarColumn and ArrayColumn.

The performance of the TableMeasures classes depends on how the measures are stored; thus if a fixed or variable offset and reference are used. Of course, it also depends on whether the measures have to be converted before they can be stored.
The TableMeasures classes are always slower than the Tables classes, but they offer more convenience. In general one can say that for large tables it is better to use the Tables classes directly to put/get the data. However, even when putting directly using the Tables classes, the column itself should be defined as a TableMeasure. In that way there is one standard way of defining columns as table measures.
For example, the TIME column in a MeasurementSet should be handled directly uisng the Tables classes (because it is so large). On the other hand, the FIELD table is very small and it may make life easier to handle its columns through the TableMeasures classes.

In a test putting an array of quanta using class ArrayQuantColumn took about 5 times as long as doing it directly using class ArrayColumn. The quantum column had variable units. so for each row the unit had to be written as well. Reading it back took about 3 times as long.
When using a qunatum column with fixed units, putting took about 2.5 times as long as using ArrayColumn directly. Each put involved a unit conversion. Reading it back took only 10% more than when using ArrayColumn.

Motivation

The standard Casacore Table system does not directly support Quantum and Measure columns. These classes overcome this limitation.