casa
5.7.0-16
|
Models the spectral variation with a spectral index. More...
#include <SpectralIndex.h>
Public Member Functions | |
SpectralIndex () | |
The default SpectralIndex has a reference frequency of 1 GHz in the LSR frame and a spectral index of zero. More... | |
SpectralIndex (const casacore::MFrequency &refFreq, casacore::Double exponent=0.0) | |
Construct a SpectralIndex with specified reference frequency and exponent. More... | |
SpectralIndex (const SpectralIndex &other) | |
The copy constructor uses copy semantics. More... | |
virtual | ~SpectralIndex () |
The destructor does nothing special. More... | |
SpectralIndex & | operator= (const SpectralIndex &other) |
The assignment operator uses copy semantics. More... | |
virtual ComponentType::SpectralShape | type () const |
return the actual spectral type ie., ComponentType::SPECTRAL_INDEX More... | |
const casacore::Double & | index () const |
set/get the spectral index. More... | |
void | setIndex (const casacore::Double &newIndex) |
const casacore::Vector < casacore::Double > & | stokesIndex () const |
void | setStokesIndex (const casacore::Vector< casacore::Double > &newIndex) |
virtual casacore::Double | sample (const casacore::MFrequency ¢erFrequency) const |
Return the scaling factor that indicates what proportion of the flux is at the specified frequency. More... | |
virtual void | sampleStokes (const casacore::MFrequency ¢erFrequency, casacore::Vector< casacore::Double > &iquv) const |
return full casacore::Stokes version especially for models which have different frequency dependence for the casacore::Stokes param (1 or 4 elements) So as allow for fractional pol change and angle change of linear pol w.r.t frequency A a four casacore::Vector of original IQUV should be passed in and it will hold the return values More... | |
virtual void | sample (casacore::Vector< casacore::Double > &scale, const casacore::Vector< casacore::MFrequency::MVType > &frequencies, const casacore::MFrequency::Ref &refFrame) const |
Same as the previous function except that many frequencies can be sampled at once. More... | |
virtual void | sampleStokes (casacore::Vector< casacore::Vector< casacore::Double > > &scale, const casacore::Vector< casacore::MFrequency::MVType > &frequencies, const casacore::MFrequency::Ref &refFrame) const |
So as allow for fractional pol change and angle change of linear pol w.r.t frequency casacore::Vector of four Vectors of original IQUV should be passed in and it will hold the return values Uitimately this math should really go in Flux and FluxRep to where a rotation of linear pol is allowed. More... | |
virtual SpectralModel * | clone () const |
Return a pointer to a copy of this object upcast to a SpectralModel object. More... | |
virtual casacore::uInt | nParameters () const |
return the number of parameters. More... | |
virtual void | setParameters (const casacore::Vector< casacore::Double > &newSpectralParms) |
virtual casacore::Vector < casacore::Double > | parameters () const |
virtual void | setErrors (const casacore::Vector< casacore::Double > &newSpectralErrs) |
virtual casacore::Vector < casacore::Double > | errors () const |
virtual casacore::Bool | fromRecord (casacore::String &errorMessage, const casacore::RecordInterface &record) |
These functions convert between a casacore::Record and a SpectralIndex. More... | |
virtual casacore::Bool | toRecord (casacore::String &errorMessage, casacore::RecordInterface &record) const |
Convert the class to an Record representation. More... | |
virtual casacore::Bool | convertUnit (casacore::String &errorMessage, const casacore::RecordInterface &record) |
Convert the parameters of the spectral index object to the specified units. More... | |
virtual casacore::Bool | ok () const |
casacore::Function which checks the internal data of this class for consistant values. More... | |
Public Member Functions inherited from casa::SpectralModel | |
virtual | ~SpectralModel () |
a virtual destructor is needed so that the actual destructor in the derived class will be used. More... | |
virtual const casacore::String & | ident () const |
Specify the identification of the record (e.g. More... | |
virtual void | setRefFrequency (const casacore::MFrequency &newRefFreq) |
set/get the reference frequency More... | |
const casacore::MFrequency & | refFrequency () const |
const casacore::Unit & | frequencyUnit () const |
get the frequency unit, and change the default frequency unit to the specified one. More... | |
void | convertFrequencyUnit (const casacore::Unit &freqUnit) |
void | setRefFrequencyError (const casacore::Quantum< casacore::Double > &newRefFreqErr) |
set/get the error in the reference frequency. More... | |
const casacore::Quantum < casacore::Double > & | refFrequencyError () const |
Public Member Functions inherited from casacore::RecordTransformable | |
virtual | ~RecordTransformable () |
The destructor must be virtual so that the destructor of derived classes is actually used. More... | |
virtual Bool | fromString (String &error, const String &inString) |
Initialise the class from a String representation. More... | |
Private Attributes | |
casacore::Double | itsIndex |
casacore::Vector < casacore::Double > | itsStokesIndex |
casacore::Double | itsError |
Additional Inherited Members | |
Static Public Member Functions inherited from casa::SpectralModel | |
static ComponentType::SpectralShape | getType (casacore::String &errorMessage, const casacore::RecordInterface &record) |
Return the spectral shape that the supplied record represents. More... | |
Protected Member Functions inherited from casa::SpectralModel | |
SpectralModel () | |
The constructors and assignment operator are protected as only derived classes should use them. More... | |
SpectralModel (const casacore::MFrequency &refFreq, const casacore::Unit &=casacore::Unit("GHz")) | |
SpectralModel (const SpectralModel &other) | |
SpectralModel & | operator= (const SpectralModel &other) |
casacore::Double | refFreqInFrame (const casacore::MFrequency::Ref &frame) const |
Return the value refFrequency in the requested frame... More... | |
Static Protected Member Functions inherited from casa::SpectralModel | |
static casacore::Bool | badError (const casacore::Quantum< casacore::Double > &quantum) |
returns true if the quantum is not a non-negative quantity with units dimensionally identical to the Hz More... | |
Models the spectral variation with a spectral index.
Public interface
This class models the spectral variation of a component with a spectral index.
This class like the other spectral models becomes more useful when used through the SkyComponent class, which incorporates the flux and spatial variation of the emission, or through the ComponentList class, which handles groups of SkyComponent objects.
A spectral index is the exponent in a power law model for the variation flux with frequency. It is mathematically is defined as:
Where:
nu_0
alpha
nu
As with all classes derived from SpectralModel the basic operation of this class is to model the flux as a function of frequency. This class does not know what the flux is at the reference frequency. Instead the sample functions return factors that are used to scale the flux and calculate the amount of flux at a specified frequency.
Besides the reference frequency this class has one parameter; the spectral index. This parameter can be set & queried using the general purpose parameters
functions or the class specific index
functions.
<Dec-2013> Have added a full stokes spectral variation... This is done via setting setStokesIndex. If setIndex is used then only the first element of 4 parameters is set The 4 elements are 0) alpha for stokes I..such that 1) alpha for linear pol fraction i.e make sure that Q and U is such that sqrt(Q_0^2+U_0^2)/I_0 * (nu/nu_0)^alpha(1)) is obeyed. 2) Rot measure (RM=alpha(2)) value to rotate linear pol by angle RM*(lambda^2- lambda_0^2) 3) alpha for circular pol fraction i.e to make V such that V/I=V_0/I_0 *(nu/nu_0)^alpha(3) </Dec-2013> This class also contains functions (toRecord
& fromRecord
) which perform the conversion between Records and SpectralIndex objects. These functions define how a SpectralIndex object is represented in glish. The format of the record that is generated and accepted by these functions is:
The frequency field contains a record representation of a frequency measure and its format is defined in the Measures module. Its refer field defines the reference frame for the direction and the m0 field defines the value of the reference frequency. The parsing of the type field is case insensitive. The index field contains the spectral index.
These examples are coded in the tSpectralModel.h file.
In this example a SpectralIndex object is created and used to calculate the flux at a number of frequencies.
A Spectral Index frequency variation is the most widely used model in radio astronomy. In particular the NFRA package 'newstar' uses it extensively.
Definition at line 194 of file SpectralIndex.h.
casa::SpectralIndex::SpectralIndex | ( | ) |
The default SpectralIndex has a reference frequency of 1 GHz in the LSR frame and a spectral index of zero.
As such it is no different from the ConstantSpectrum class (except slower).
casa::SpectralIndex::SpectralIndex | ( | const casacore::MFrequency & | refFreq, |
casacore::Double | exponent = 0.0 |
||
) |
Construct a SpectralIndex with specified reference frequency and exponent.
casa::SpectralIndex::SpectralIndex | ( | const SpectralIndex & | other | ) |
The copy constructor uses copy semantics.
|
virtual |
The destructor does nothing special.
|
virtual |
Return a pointer to a copy of this object upcast to a SpectralModel object.
The class that uses this function is responsible for deleting the pointer. This is used to implement a virtual copy constructor.
Implements casa::SpectralModel.
|
virtual |
Convert the parameters of the spectral index object to the specified units.
Only one field of the supplied record is used, namely 'index'. This field is optional as the spectral index is a unitless quantity. If the index field is specified it must have the empty string as its value. This function always returns true unless the index field is specified and does not contain an empty string.
Implements casa::SpectralModel.
|
virtual |
Implements casa::SpectralModel.
|
virtual |
These functions convert between a casacore::Record and a SpectralIndex.
These functions define how a SpectralIndex object is represented in glish and this is detailed in the synopsis above. These functions return false if the record is malformed and append an error message to the supplied string giving the reason.
Implements casa::SpectralModel.
const casacore::Double& casa::SpectralIndex::index | ( | ) | const |
set/get the spectral index.
|
virtual |
return the number of parameters.
There is one parameter or 4 for this spectral model, namely the spectral index for I or I,Q,U,V. So you supply a unit length vector or one 4 element long when using these functions. Otherwise an exception (casacore::AipsError) may be thrown.
Implements casa::SpectralModel.
|
virtual |
casacore::Function which checks the internal data of this class for consistant values.
Returns true if everything is fine otherwise returns false.
Reimplemented from casa::SpectralModel.
SpectralIndex& casa::SpectralIndex::operator= | ( | const SpectralIndex & | other | ) |
The assignment operator uses copy semantics.
|
virtual |
Implements casa::SpectralModel.
|
virtual |
Return the scaling factor that indicates what proportion of the flux is at the specified frequency.
ie. if the centreFrequency argument is the reference frequency then this function will always return one. At other frequencies it will return a non-negative number.
Implements casa::SpectralModel.
|
virtual |
Same as the previous function except that many frequencies can be sampled at once.
The reference frame must be the same for all the specified frequencies. Uses a customised implementation for improved speed.
Implements casa::SpectralModel.
|
virtual |
return full casacore::Stokes version especially for models which have different frequency dependence for the casacore::Stokes param (1 or 4 elements) So as allow for fractional pol change and angle change of linear pol w.r.t frequency A a four casacore::Vector of original IQUV should be passed in and it will hold the return values
Implements casa::SpectralModel.
|
virtual |
So as allow for fractional pol change and angle change of linear pol w.r.t frequency casacore::Vector of four Vectors of original IQUV should be passed in and it will hold the return values Uitimately this math should really go in Flux and FluxRep to where a rotation of linear pol is allowed.
Implements casa::SpectralModel.
|
virtual |
Implements casa::SpectralModel.
void casa::SpectralIndex::setIndex | ( | const casacore::Double & | newIndex | ) |
|
virtual |
Implements casa::SpectralModel.
void casa::SpectralIndex::setStokesIndex | ( | const casacore::Vector< casacore::Double > & | newIndex | ) |
const casacore::Vector<casacore::Double>& casa::SpectralIndex::stokesIndex | ( | ) | const |
|
virtual |
Convert the class to an Record representation.
The input record may already contain fields and these fields may be silently overridden. New fields may be added to the input Record. If the transformation succeeds then the error String is unchanged and the function returns True. Otherwise the function returns False and appends an error message to the supplied String giving the reason why the conversion failed.
Implements casa::SpectralModel.
|
virtual |
return the actual spectral type ie., ComponentType::SPECTRAL_INDEX
Implements casa::SpectralModel.
|
private |
Definition at line 287 of file SpectralIndex.h.
|
private |
Definition at line 285 of file SpectralIndex.h.
|
private |
Definition at line 286 of file SpectralIndex.h.