CoherencyMeasurement.h
1//-*-C++-*-
2/***************************************************************************
3 *
4 * Copyright (C) 2004 by Willem van Straten
5 * Licensed under the Academic Free License version 2.1
6 *
7 ***************************************************************************/
8
9// psrchive/More/Polarimetry/Pulsar/CoherencyMeasurement.h
10
11#ifndef __Calibration_CoherencyMeasurement_H
12#define __Calibration_CoherencyMeasurement_H
13
14#include "MEAL/Argument.h"
15#include "Reference.h"
16#include "Estimate.h"
17#include "Stokes.h"
18#include "Jones.h"
19
20#include <complex>
21
22namespace Calibration {
23
25 /* Among other things, this class implements the interface of the
26 MEAL::WeightingScheme class used by MEAL::LevenbergMacquardt */
28
29 public:
30
32 class Uncertainty;
33
35 CoherencyMeasurement (unsigned input_index = 0);
36
38 void set_input_index (unsigned index);
39
41 unsigned get_input_index () const;
42
44 void set_stokes (const Stokes< Estimate<double> >& stokes);
45
47 void set_stokes (const Stokes< std::complex<double> >& stokes,
48 const Stokes<double>& variance);
49
51 void set_stokes (const Stokes< std::complex<double> >& stokes, Uncertainty*);
52
54 unsigned get_nconstraint () const;
55
58
60 Stokes< Estimate<double> > get_stokes () const;
61
63 Stokes< std::complex< Estimate<double> > > get_complex_stokes () const;
64
66 double get_weighted_norm (const Jones<double>& matrix) const;
67
70
71 void get_weighted_components (const Jones<double>&, std::vector<double>& components) const;
72
74 const Uncertainty* get_uncertainty () const { return uncertainty; }
75
78
80 void set_coordinates () const;
81
83
84 void scale (double);
85
86 protected:
87
89 std::vector< Reference::To<MEAL::Argument::Value> > coordinates;
90
92 unsigned input_index;
93
95 unsigned nconstraint;
96
99
101 Stokes<double> variance;
102
105
106 };
107
110 {
111 public:
112
114 virtual Uncertainty* clone () const = 0;
115
117 virtual void add (const Uncertainty*) = 0;
118
120 virtual double get_weighted_norm (const Jones<double>&) const = 0;
121
124
125 virtual Stokes<std::complex<double>> get_weighted_components (const Jones<double>&) const = 0;
126
128 virtual Stokes<std::complex<double>> get_variance () const = 0;
129
131 virtual void scale (double) = 0;
132 };
133}
134
135
136
137#endif
Estimates the uncertainty of a CoherencyMeasurement.
Definition CoherencyMeasurement.h:110
virtual Stokes< std::complex< double > > get_variance() const =0
Return the variance of each Stokes parameter.
virtual void add(const Uncertainty *)=0
Add the uncertainty of another instance.
virtual void scale(double)=0
Scale the uncertainty by the square of a scalar.
virtual Jones< double > get_weighted_conjugate(const Jones< double > &) const =0
Given a coherency matrix, return the weighted conjugate matrix.
virtual Uncertainty * clone() const =0
Return a copy constructed clone of self.
virtual double get_weighted_norm(const Jones< double > &) const =0
Given a coherency matrix, return the weighted norm.
unsigned nconstraint
The number of constraints provided by this measurement.
Definition CoherencyMeasurement.h:95
void set_stokes(const Stokes< Estimate< double > > &stokes)
Set the measured Stokes parameters.
Definition CoherencyMeasurement.C:43
unsigned input_index
Index of the input to which the measurement corresponds.
Definition CoherencyMeasurement.h:92
void set_coordinates() const
Apply the independent variables.
Definition CoherencyMeasurement.C:203
Stokes< std::complex< Estimate< double > > > get_complex_stokes() const
Get the measured Stokes parameters.
Definition CoherencyMeasurement.C:85
Jones< double > rho
The coherency matrix measurement.
Definition CoherencyMeasurement.h:98
Jones< double > get_coherency() const
Get the measured coherency matrix.
Definition CoherencyMeasurement.C:132
Jones< double > get_weighted_conjugate(const Jones< double > &matrix) const
Given a coherency matrix, return the weighted conjugate matrix.
Definition CoherencyMeasurement.C:151
Stokes< Estimate< double > > get_stokes() const
Get the measured Stokes parameters.
Definition CoherencyMeasurement.C:70
std::vector< Reference::To< MEAL::Argument::Value > > coordinates
The coordinates of the measurement.
Definition CoherencyMeasurement.h:89
void scale(double)
Multiply the coherency matrix measurement by a scalar.
Definition CoherencyMeasurement.C:209
const Uncertainty * get_uncertainty() const
The uncertainty of the measurement.
Definition CoherencyMeasurement.h:74
Reference::To< Uncertainty > uncertainty
The uncertainty of the measurement.
Definition CoherencyMeasurement.h:104
void set_input_index(unsigned index)
Set the index of the input to which the measurement corresponds.
Definition CoherencyMeasurement.C:24
unsigned get_nconstraint() const
Get the number of constraints provided by this measurement.
Definition CoherencyMeasurement.C:36
void add_coordinate(MEAL::Argument::Value *abscissa)
Add an independent variable.
Definition CoherencyMeasurement.C:198
CoherencyMeasurement(unsigned input_index=0)
Default constructor.
Definition CoherencyMeasurement.C:17
unsigned get_input_index() const
Set the index of the input to which the measurement corresponds.
Definition CoherencyMeasurement.C:30
Stokes< double > variance
The variance (if given)
Definition CoherencyMeasurement.h:101
double get_weighted_norm(const Jones< double > &matrix) const
Given a coherency matrix, return the weighted norm.
Definition CoherencyMeasurement.C:139

Generated using doxygen 1.14.0