ComponentUpdate.h

Classes

ComponentUpdate -- This class updates components in UV plane (full description)

class ComponentUpdate

Types

enum Type

SEPARATE = 0
Sove each source individually
COMBINED
Slove in one solution
CLUSTER
Solve in clusters of sources
N_Type
Number of options

enum Solve

ILM = 0
Solve for I and l,m
N_Solve
Number of solvable parameters

Interface

Public Members
ComponentUpdate()
explicit ComponentUpdate(const ComponentList &model)
ComponentUpdate(const ComponentList &model, const ComponentUpdate::Solve solve)
ComponentUpdate(const ComponentList &model, const ComponentUpdate::Solve solve, const ComponentUpdate::Type tp)
~ComponentUpdate()
void makeEquations(const Array<DComplex> &deriv, const Vector<DComplex> &data)
Bool solve(Matrix<Double> &sol, Matrix<Double> &err)
Private Members
ComponentUpdate(const ComponentUpdate &other)
ComponentUpdate &operator=(const ComponentUpdate &other)
void init()
void clean()

Description

Review Status

Date Reviewed:
yyyy/mm/dd

Prerequisite

Etymology

Component and Update

Synopsis

This class is an update machine for model components. The updating is done using UV-plane information (and, of course, already available calibration information). In principle all the elements of a component can be updated (like polarisation flux, position, etc), but certain combinations are more useful (and orthogonal enough) to be of practical use.

The update process works by comparing the theoretical UV-plane expectations of a model component, with the actual UV-plane data, and solve, in the least-squares sense) for the component data elements. In practice the full nodel sky, as known, is subtracted from the observed data, after which the solution for for differnces is done. This solution can proceed in a variety of ways:

Non-component sky models (like images) could be adjusted for their overall parameters (integrated flux, position) as well. This could be added at a later stage.

Not all of the different possibilities and adjustable parameters will be implemented initially.

Motivation

To provide an accurate way to adjust model component parameters from the observed data, using all the available data.

To Do

Member Description

enum Type

The different solution types

enum Solve

The different solvable parameters

ComponentUpdate()

Default constructor -- update not possible without one or more set() methods.

explicit ComponentUpdate(const ComponentList &model)

Construct an update machine for the sources in the given ComponentList, using the 'separate' type of solution, and ILM solve. Note that the component list must be a writable one to receive the updates.

ComponentUpdate(const ComponentList &model, const ComponentUpdate::Solve solve)

Construct an update machine for the sources in the given ComponentList, using the specified sovables and the separate type.

ComponentUpdate(const ComponentList &model, const ComponentUpdate::Solve solve, const ComponentUpdate::Type tp)

Construct an update machine for the sources in the given ComponentList, using the specified type of solution and solvables

~ComponentUpdate()

Destructor

void makeEquations(const Array<DComplex> &deriv, const Vector<DComplex> &data)

Create the solution equations. For each series of UV points, provide the following information to the engine (we can speed it up later by having raw rather than Array type interface). Needed: Extra arguments possible: data weight.
Extra calls: Just provide list of data (and weight) and UVW coordinates. Calls to some Skymodel.visibility() and/or .derivative() would then suffice.
Improvements, by providing telescope rather than baseline based data; proper care taken analytically of integration over time and frequency.

Bool solve(Matrix<Double> &sol, Matrix<Double> &err)

Provide the solution (i.e. dI/I and dl, dm) with errors (standard deviation of solution). The Matrices filled (and resized) are of sizes 3,nsource.

ComponentUpdate(const ComponentUpdate &other)

Copy constructor (not implemented)

ComponentUpdate &operator=(const ComponentUpdate &other)

Assignment (not implemented)

void init()

Initialise the list of fitting areas

void clean()

Empty the list of fitting areas