Loading...
Searching...
No Matches
Stokes.h
Go to the documentation of this file.
//# Stokes.h: Stokes parameter definitions for interface to table data
//# Copyright (C) 1994,1995,1996,1997,2000
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//# Internet email: casa-feedback@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
#ifndef MEASURES_STOKES_H
#define MEASURES_STOKES_H
#include <casacore/casa/aips.h>
#include <casacore/casa/BasicSL/String.h>
#include <casacore/casa/Utilities/Fallible.h>
#include <casacore/casa/Arrays/Vector.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
// <summary>
// Stokes parameter definitions for interface to table data.
// </summary>
// <reviewed tests="tStokes">
// </reviewed>
// <synopsis>
// This enumerates the available Stokes types, but does not define
// the operations for conversion between Stokes types.
// This class is a wrapper for the ENUM and conversion functions.
// </synopsis>
class Stokes {
public:
// The Stokes types are defined by this enum.
//
// <note role=warning>
// <b>DO NOT CHANGE THE ORDER OF THESE TYPES</b>, as the integers corresponding
// to the <src>enum</src> are required for storage in Tables.
// One can add to these types, but the order must be preserved.
// The correlation products are required to have the order indicated with
// values of 1,2,3,4 plus n*4.
// </note>
//
//# The enum comments below are placed in the position they are to make the
//# extracted documentation look nice.
enum StokesTypes {
// undefined value = 0
Undefined=0,
I,
Q,
U,
// standard stokes parameters
V,
//
RR,
RL,
LR,
// circular correlation products
LL,
//
XX,
XY,
YX,
// linear correlation products
YY,
//
RX,
RY,
LX,
LY,
XR,
XL,
YR,
// mixed correlation products
YL,
//
PP,
PQ,
QP,
// general quasi-orthogonal correlation products
QQ,
//
RCircular,
LCircular,
// single dish polarization types
Linear,
// Polarized intensity ((Q^2+U^2+V^2)^(1/2))
Ptotal,
// Linearly Polarized intensity ((Q^2+U^2)^(1/2))
Plinear,
// Polarization Fraction (Ptotal/I)
PFtotal,
// Linear Polarization Fraction (Plinear/I)
PFlinear,
// Linear Polarization Angle (0.5 arctan(U/Q)) (in radians)
Pangle
};
// The number of StokesTypes.
// <note role=warning>
// <b>Update</b> <src>NumberOfTypes</src> when entries are added.
// </note>
enum {
// The number of StokesTypes.
NumberOfTypes = 33
};
// convert Int to StokesTypes, returns Stokes::Undefined if
// it is an invalid type
static StokesTypes type(Int stokesNumber);
// convert String to StokesTypes, returns Stokes::Undefined if
// it is an unrecognized string. The valid strings are the
// same as the characters used in the enum above (i.e.
// "I" returns Stokes::I, "Linear" returns Stokes::Linear, etc).
static StokesTypes type(const String & stokesName);
// convert StokesTypes to String, Stokes::Undefined returns
// "??".
static String name(StokesTypes stokesType);
// get all recognized stokes names in no guaranteed order.
static Vector<String> allNames(Bool includeUndefined = False);
// map StokesTypes to receptor number (0 or 1) for the
// interferometric correlation products.
// e.g. XY will give receptor1==0 receptor2==1 etc.
// I,Q,U,V and the single dish types will produce invalid
// Fallible.
// <group>
static Fallible<Int> receptor1(StokesTypes stokesType);
static Fallible<Int> receptor2(StokesTypes stokesType);
// </group>
// These two functions map stokes type to FITS type and vice versa. If you add a
// StokesType you should change these functions as well.
// <ul>
// <li> I,Q,U,V <-> 1,2,3,4
// <li> RR,LL,RL,LR <-> -1,-2,-3,-4 Note! Not the same as enum order!
// <li> XX,YY,XY,YX <-> -5,-6,-7,-8 Note! Not the same as enum order!
// <li> Otherwise, FITS type <-> 100 + Int(stokesType). This is not standard FITS.
// </ul>
// <group>
static Int FITSValue(StokesTypes which);
static StokesTypes fromFITSValue(Int);
// </group>
private:
};
} //# NAMESPACE CASACORE - END
#endif
casacore::Fallible
Mark a value as valid or invalid.
Definition Fallible.h:121
casacore::Stokes
Definition Stokes.h:49
casacore::Stokes::StokesTypes
StokesTypes
The Stokes types are defined by this enum.
Definition Stokes.h:64
casacore::Stokes::YR
@ YR
Definition Stokes.h:91
casacore::Stokes::LR
@ LR
Definition Stokes.h:75
casacore::Stokes::XR
@ XR
Definition Stokes.h:89
casacore::Stokes::Undefined
@ Undefined
undefined value = 0
Definition Stokes.h:66
casacore::Stokes::Linear
@ Linear
single dish polarization types
Definition Stokes.h:104
casacore::Stokes::LY
@ LY
Definition Stokes.h:88
casacore::Stokes::U
@ U
Definition Stokes.h:69
casacore::Stokes::LCircular
@ LCircular
Definition Stokes.h:102
casacore::Stokes::LX
@ LX
Definition Stokes.h:87
casacore::Stokes::PP
@ PP
Definition Stokes.h:95
casacore::Stokes::RR
@ RR
Definition Stokes.h:73
casacore::Stokes::XL
@ XL
Definition Stokes.h:90
casacore::Stokes::YX
@ YX
Definition Stokes.h:81
casacore::Stokes::RY
@ RY
Definition Stokes.h:86
casacore::Stokes::I
@ I
Definition Stokes.h:67
casacore::Stokes::YY
@ YY
linear correlation products
Definition Stokes.h:83
casacore::Stokes::PFtotal
@ PFtotal
Polarization Fraction (Ptotal/I).
Definition Stokes.h:110
casacore::Stokes::Q
@ Q
Definition Stokes.h:68
casacore::Stokes::QQ
@ QQ
general quasi-orthogonal correlation products
Definition Stokes.h:99
casacore::Stokes::RL
@ RL
Definition Stokes.h:74
casacore::Stokes::Ptotal
@ Ptotal
Polarized intensity ((Q^2+U^2+V^2)^(1/2)).
Definition Stokes.h:106
casacore::Stokes::PFlinear
@ PFlinear
Linear Polarization Fraction (Plinear/I).
Definition Stokes.h:112
casacore::Stokes::LL
@ LL
circular correlation products
Definition Stokes.h:77
casacore::Stokes::V
@ V
standard stokes parameters
Definition Stokes.h:71
casacore::Stokes::XX
@ XX
Definition Stokes.h:79
casacore::Stokes::QP
@ QP
Definition Stokes.h:97
casacore::Stokes::XY
@ XY
Definition Stokes.h:80
casacore::Stokes::RX
@ RX
Definition Stokes.h:85
casacore::Stokes::YL
@ YL
mixed correlation products
Definition Stokes.h:93
casacore::Stokes::Pangle
@ Pangle
Linear Polarization Angle (0.5 arctan(U/Q)) (in radians).
Definition Stokes.h:114
casacore::Stokes::Plinear
@ Plinear
Linearly Polarized intensity ((Q^2+U^2)^(1/2)).
Definition Stokes.h:108
casacore::Stokes::RCircular
@ RCircular
Definition Stokes.h:101
casacore::Stokes::PQ
@ PQ
Definition Stokes.h:96
casacore::Stokes::receptor1
static Fallible< Int > receptor1(StokesTypes stokesType)
map StokesTypes to receptor number (0 or 1) for the interferometric correlation products.
casacore::Stokes::receptor2
static Fallible< Int > receptor2(StokesTypes stokesType)
casacore::Stokes::FITSValue
static Int FITSValue(StokesTypes which)
These two functions map stokes type to FITS type and vice versa.
casacore::Stokes::type
static StokesTypes type(Int stokesNumber)
convert Int to StokesTypes, returns Stokes::Undefined if it is an invalid type
casacore::Stokes::fromFITSValue
static StokesTypes fromFITSValue(Int)
casacore::Stokes::allNames
static Vector< String > allNames(Bool includeUndefined=False)
get all recognized stokes names in no guaranteed order.
casacore::Stokes::type
static StokesTypes type(const String &stokesName)
convert String to StokesTypes, returns Stokes::Undefined if it is an unrecognized string.
casacore::Stokes::name
static String name(StokesTypes stokesType)
convert StokesTypes to String, Stokes::Undefined returns "??".
casacore::Stokes::NumberOfTypes
@ NumberOfTypes
The number of StokesTypes.
Definition Stokes.h:123
casacore::String
String: the storage and methods of handling collections of characters.
Definition String.h:223
casacore::Vector
Definition Vector.h:82
casacore
this file contains all the compiler specific defines
Definition mainpage.dox:28
casacore::False
const Bool False
Definition aipstype.h:42
casacore::Int
int Int
Definition aipstype.h:48
casacore::Bool
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40