casa
$Rev:20696$
|
StokesConverter converts any set of polarizations into any other one. More...
#include <StokesConverter.h>
Public Member Functions | |
StokesConverter () | |
default constructor, does not set up a conversion | |
StokesConverter (const Vector< Int > &out, const Vector< Int > &in, Bool rescale=False) | |
Set up a conversion from in to out. | |
~StokesConverter () | |
desctructor | |
StokesConverter (const StokesConverter &other) | |
Copy constructor. | |
StokesConverter & | operator= (const StokesConverter &other) |
Assignment,. | |
void | setConversion (const Vector< Int > &out, const Vector< Int > &in, Bool rescale=False) |
Change or Set the conversion. | |
void | convert (Array< Complex > &out, const Array< Complex > &in) const |
convert data, first dimension of input must match that of the input conversion vector used to set up the conversion. | |
void | convert (Array< Bool > &out, const Array< Bool > &in) const |
convert flags, first dimension of input must match that of the input conversion vector used to set up the conversion. | |
void | convert (Array< Float > &out, const Array< Float > &in, Bool sigma=False) const |
convert weights, first dimension of input must match that of the input conversion vector used to set up the conversion. | |
void | invert (Array< Bool > &out, const Array< Bool > &in) const |
invert flags, first dimension of input must match that of the output conversion vector used to set up the conversion. | |
Protected Member Functions | |
void | initConvMatrix () |
initialize the polarization conversion matrix | |
Private Attributes | |
Vector< Int > | in_p |
Vector< Int > | out_p |
Bool | rescale_p |
Matrix< Complex > | conv_p |
Matrix< Complex > | iquvConv_p |
Bool | doIQUV_p |
Matrix< Bool > | flagConv_p |
Matrix< Float > | wtConv_p |
Matrix< Complex > | polConv_p |
StokesConverter converts any set of polarizations into any other one.
Public interface
StokesConverter is a class that converts Stokes Parameters
This class is used to convert polarizations from one system to another. First the conversion wanted is specified and then large blocks of data can be converted.
// create converter StokesConverter sc; Vector<Int> out(7),in(4); // set the input polarizations in(0)=Stokes::RR; in(1)=Stokes::LL; in(2)=Stokes::RL; in(3)=Stokes::LR; // set the required output out(0)=Stokes::I; out(1)=Stokes::Q; out(2)=Stokes::U; out(3)=Stokes::V; out(4)=Stokes::Ptotal; out(5)=Stokes::Pangle; out(6)=Stokes::PFlinear; // initialize the conversion engine sc.setConversion(out,in); // set up some test data Vector<Complex> datain(4),dataout(7); datain(0)=1.0; datain(1)=0.9; datain(2)=0.3; datain(3)=0.2; // convert the data sc.convert(dataout,datain);
Polarization conversion is needed in various places. It makes sense to provide all conversion in one place.
Definition at line 109 of file StokesConverter.h.
default constructor, does not set up a conversion
casa::StokesConverter::StokesConverter | ( | const Vector< Int > & | out, |
const Vector< Int > & | in, | ||
Bool | rescale = False |
||
) |
Set up a conversion from in to out.
The in and out vectors contain a list of polarization present/wanted in that order. The in vector should match the data to convert. (CORR_TYPE column in SPECTRAL_WINDOW table contains this info) The rescale option will correct for crosscorrelation data that has been scaled to the level Stokes I (common practice in radioastronomy: even though officially I=XX+YY, in practice we need to do I=(XX+YY)/2, set rescale to True to do the latter).
desctructor
casa::StokesConverter::StokesConverter | ( | const StokesConverter & | other | ) |
Copy constructor.
void casa::StokesConverter::convert | ( | Array< Complex > & | out, |
const Array< Complex > & | in | ||
) | const |
convert data, first dimension of input must match that of the input conversion vector used to set up the conversion.
Output is resized as needed.
void casa::StokesConverter::convert | ( | Array< Bool > & | out, |
const Array< Bool > & | in | ||
) | const |
convert flags, first dimension of input must match that of the input conversion vector used to set up the conversion.
Output is resized as needed. All output depending on a flagged input will be flagged.
void casa::StokesConverter::convert | ( | Array< Float > & | out, |
const Array< Float > & | in, | ||
Bool | sigma = False |
||
) | const |
convert weights, first dimension of input must match that of the input conversion vector used to set up the conversion.
Output is resized as needed. Set sigma to True when converting sigma's using this routine.
void casa::StokesConverter::initConvMatrix | ( | ) | [protected] |
initialize the polarization conversion matrix
void casa::StokesConverter::invert | ( | Array< Bool > & | out, |
const Array< Bool > & | in | ||
) | const |
invert flags, first dimension of input must match that of the output conversion vector used to set up the conversion.
Output is resized as needed. All output depending on a flagged input will be flagged. This does the inverse operation of convert, allowing flagging of converted data to be transferred back to the original data.
StokesConverter& casa::StokesConverter::operator= | ( | const StokesConverter & | other | ) |
Assignment,.
void casa::StokesConverter::setConversion | ( | const Vector< Int > & | out, |
const Vector< Int > & | in, | ||
Bool | rescale = False |
||
) |
Change or Set the conversion.
Arguments are the same as for constructor above.
Matrix<Complex> casa::StokesConverter::conv_p [mutable, private] |
Definition at line 175 of file StokesConverter.h.
Bool casa::StokesConverter::doIQUV_p [private] |
Definition at line 177 of file StokesConverter.h.
Matrix<Bool> casa::StokesConverter::flagConv_p [private] |
Definition at line 178 of file StokesConverter.h.
Vector<Int> casa::StokesConverter::in_p [private] |
Definition at line 172 of file StokesConverter.h.
Matrix<Complex> casa::StokesConverter::iquvConv_p [mutable, private] |
Definition at line 176 of file StokesConverter.h.
Vector<Int> casa::StokesConverter::out_p [private] |
Definition at line 172 of file StokesConverter.h.
Matrix<Complex> casa::StokesConverter::polConv_p [private] |
Definition at line 180 of file StokesConverter.h.
Bool casa::StokesConverter::rescale_p [private] |
Definition at line 173 of file StokesConverter.h.
Matrix<Float> casa::StokesConverter::wtConv_p [private] |
Definition at line 179 of file StokesConverter.h.