Manages multiple signal path transformations in a reception model. More...

#include <SignalPath.h>

Inheritance diagram for Calibration::SignalPath:
Reference::Able Reference::HeapTracked

Public Member Functions

 SignalPath (Pulsar::Calibrator::Type *)
 Default constructor.
void set_name (const std::string &_name)
 Set the name of this instance.
void copy (SignalPath *other)
 Copy state of other instance.
void share (SignalPath *other)
 Share reception model and common transformations of other instance.
void set_response (MEAL::Complex2 *)
 Set the response transformation.
void reset ()
 Reset the response to its initial/unmodified value.
void set_response_variation (unsigned iparam, MEAL::Univariate< MEAL::Scalar > *)
 Allow the specified response parameter to vary as a function of time.
const MEAL::Univariate< MEAL::Scalar > * get_response_variation (unsigned iparam) const
 Get the specified response parameter temporal variation function.
void set_impurity (MEAL::Real4 *)
 Include an impurity transformation.
void set_basis (MEAL::Complex2 *)
 Set the transformation to the receptor basis.
bool has_basis () const
MEAL::Complex2get_basis ()
const MEAL::Complex2get_basis () const
void set_constant_pulsar_gain (bool=true)
 Set true when the pulsar Stokes parameters have been normalized.
void set_foreach_calibrator (const MEAL::Complex2 *)
 Set the transformation to be cloned for each calibrator.
void set_stepeach_calibrator (const VariableBackend *)
 Set the VariableBackend step to be cloned for each calibrator.
void set_gain_variation (MEAL::Univariate< MEAL::Scalar > *)
 Set gain to the univariate function of time.
void set_diff_gain_variation (MEAL::Univariate< MEAL::Scalar > *)
 Set differential gain to the univariate function of time.
void set_diff_phase_variation (MEAL::Univariate< MEAL::Scalar > *)
 Set differential phase to the univariate function of time.
const MEAL::Scalarget_gain_variation () const
 Get the gain function of time.
const MEAL::Scalarget_diff_gain_variation () const
 Get the differential gain function of time.
const MEAL::Scalarget_diff_phase_variation () const
 Get the differential phase function of time.
void add_calibrator_epoch (const MJD &)
 Add a step if any of the above functions require it.
void add_gain_step (const MJD &)
 Add a step to the gain variations.
void add_diff_gain_step (const MJD &)
 Add a step to the differential gain variations.
void add_diff_phase_step (const MJD &)
 Add a step to the differential phase variations.
void add_step (const MJD &mjd, Calibration::VariableBackend *backend=0)
 Insert a step into the instrumental response at the specified time.
void add_observation_epoch (const MJD &)
 Record the epochs of observations.
void set_reference_epoch (const MJD &epoch)
 Set the reference epoch.
void update ()
 Update the relevant estimate.
void fit_gain (bool flag)
 Allow the absolute gain to vary as a free parameter.
void equal_ellipticities ()
 Set the receptor ellipticities to a single value.
bool reduce_nfree ()
 Attempt to reduce the number of degrees of freedom in the model.
void check_constraints ()
 Check all relevant constraints.
void solve ()
 Solve the measurement equation.
void add_psr_path (VariableBackendEstimate *)
 Add a new signal path for pulsar observations.
void add_cal_path (VariableBackendEstimate *)
 Add a new signal path for poln calibrator observations.
void fix_orientation ()
 Fix the rotation about the line of sight.
unsigned get_cal_path_index (const MJD &) const
 Get the index for the signal path experienced by the reference source.
unsigned get_psr_path_index (const MJD &) const
 Get the index for the signal path experienced by the pulsar.
VariableBackendEstimateget_backend (const MJD &epoch) const
 Get the backend that spans the specified epoch.
VariableBackendEstimatemax_weight_backend ()
 Get the backend with the maximum weight.
void integrate_calibrator (const MJD &epoch, const MEAL::Complex2 *xform)
 Integrate a calibrator solution.
Calibration::ReceptionModelget_equation ()
 Get the measurement equation.
const Calibration::ReceptionModelget_equation () const
 Get the measurement equation solver.
void set_equation (Calibration::ReceptionModel *)
 Set the measurement equation.
void set_solver (Calibration::ReceptionModel::Solver *)
 Set the algorithm used to solve the measurement equation.
void copy_transformation (const MEAL::Complex2 *)
 Copy the parameters for the signal path experienced by the pulsar.
const MEAL::Complex2get_transformation () const
 Get the instrumental transformation.
MEAL::Complex2get_transformation ()
 Get the instrumental transformation.
void add_transformation (MEAL::Complex2 *)
 Add a transformation to the ReceptionModel.
const MEAL::Complex2get_pulsar_transformation (const MJD &) const
 Get the full signal path experienced by the pulsar.
void get_covariance (std::vector< double > &covar, const MJD &epoch)
 Get the covariance vector at the specified epoch.
void disengage_time_variations (const MJD &epoch)
 Deactivate time variations and set the Instrument to the given epoch.
void engage_time_variations ()
 Activate time varations.
bool get_time_variations_engaged () const
 Return true if time-variations are engaged.
void set_step_after_cal (bool flag=true)
 Set whether steps occur before or after cals.
void set_refcal_through_frontend (bool flag=true)
 e.g. true if noise diode illuminates feed; false if coupled after OMT
void set_valid (bool f, const char *reason=0)
bool get_valid () const
std::string get_invalid_reason () const
void set_projection (MEAL::Variable< MEAL::Complex2 > *)
MEAL::Variable< MEAL::Complex2 > * get_projection ()
void set_faraday_rotation (MEAL::Variable< MEAL::Complex2 > *)
MEAL::Variable< MEAL::Complex2 > * get_faraday_rotation ()
Public Member Functions inherited from Reference::Able
 Able (const Able &)
Ableoperator= (const Able &)
unsigned get_reference_count () const
Public Member Functions inherited from Reference::HeapTracked
 HeapTracked (const HeapTracked &)
HeapTrackedoperator= (const HeapTracked &)
bool __is_on_heap () const

Public Attributes

MEAL::Axis< MJDtime
 The time axis.

Static Public Attributes

static bool verbose = false
 Verbosity flag.

Protected Types

typedef Reference::To< MEAL::Univariate< MEAL::Scalar > > ScalarReference
 Temporal variation of response parameters.

Protected Member Functions

VariableBackendEstimatenew_backend (MEAL::Complex2 *response=0)
 Return a newly constructed and initialized backend.
void integrate_parameter (MEAL::Scalar *function, double value)
void update_parameter (MEAL::Scalar *function, double value)
void set_min_step (MEAL::Scalar *function, double minimum)
 Set the minimum step if Scalar is a Steps.
void offset_steps (MEAL::Scalar *function, double offset)
 Offset the steps if Scalar is a Steps.
void set_free (unsigned iparam, const MJD &mjd)
 Allow specified parameter to vary freely in step that spans mjd.
void fix_last_step (MEAL::Scalar *function)
 Remove the last step if there is no data there.
Protected Member Functions inherited from Reference::Able
Handle__reference (bool active) const
void __dereference (bool auto_delete=true) const

Protected Attributes

bool valid
 validity flag
std::string invalid_reason
 reason for valid == false
Reference::To< Calibration::ReceptionModelequation
 The measurement equation.
Reference::To< Calibration::ReceptionModel::Solversolver
 The algorithm used to solve the measurement equation.
Reference::To< MEAL::Complex2response
 The common instrumental response to be modelled.
Reference::To< MEAL::Complex2initial_response
 Clone of newly created/unmodified respone used to implement reset.
Reference::To< MEAL::Complex2basis
 The basis correction computed by the BasisCorrection class.
Reference::To< MEAL::ProductRule< MEAL::Complex2 > > instrument
 The instrumental response multiplied by the basis.
Reference::To< MEAL::Variable< MEAL::Complex2 > > projection
 The transformation from the celestial sphere to the receptors.
Reference::To< MEAL::Variable< MEAL::Complex2 > > faraday_rotation
 Ionospheric and interstellar Faraday rotation.
Reference::To< MEAL::ChainRule< MEAL::Complex2 > > response_chain
 ChainRule used to model response parameter variations.
std::map< unsigned, ScalarReferenceresponse_variation
Calibration::ConvertMJD convert
 Used to convert MJD to double.
std::vector< Reference::To< VariableBackendEstimate > > backends
 The set of instrumental backend transformations for each epoch.
Reference::To< const MEAL::Complex2foreach_pcal
 Transformation cloned for each calibrator observation.
Reference::To< const MEAL::Complex2foreach_fcal
Reference::To< const Calibration::VariableBackendstepeach_pcal
Reference::To< MEAL::Univariate< MEAL::Scalar > > gain_variation
Reference::To< MEAL::Univariate< MEAL::Scalar > > diff_gain_variation
Reference::To< MEAL::Univariate< MEAL::Scalar > > diff_phase_variation
Reference::To< MEAL::Real4impurity
 The (optional) common instrumental impurity to be modelled.
Reference::To< MEAL::Complex2solution_response
 The instrumental response returned by get_transformation.
bool time_variations_engaged
bool step_after_cal
bool constant_pulsar_gain
bool refcal_through_frontend
MJD min_epoch
MJD max_epoch

Additional Inherited Members

Static Public Member Functions inherited from Reference::Able
static size_t get_instance_count ()
Static Public Member Functions inherited from Reference::HeapTracked
static void * operator new (size_t size, void *ptr=0)
static void operator delete (void *location, void *ptr)
static void operator delete (void *location)
static size_t get_heap_queue_size ()

Detailed Description

Manages multiple signal path transformations in a reception model.

As in Table 1 of van Straten (2004), different types of observations are subjected to different polarimetric transformations.

Each SignalPath instance manages the polarimetric tranformations for observations of a single pulsar, its reference source (e.g. noise diode), and a flux calibrator.

Multiple pulsars are managed by multiple SignalPaths that share a reception model and a common set of polarimetric transformations.

Member Function Documentation

◆ add_psr_path()

void SignalPath::add_psr_path ( VariableBackendEstimate * backend)

Add a new signal path for pulsar observations.

Signal path experienced by pulsar signal

References add_transformation(), equation, faraday_rotation, Calibration::VariableBackendEstimate::get_psr_response(), projection, and verbose.

◆ get_equation()

Calibration::ReceptionModel * SignalPath::get_equation ( )

Get the measurement equation.

Get the measurement equation solver.

References equation.

Referenced by get_covariance(), and solve().

◆ get_pulsar_transformation()

const MEAL::Complex2 * SignalPath::get_pulsar_transformation ( const MJD & epoch) const

Get the full signal path experienced by the pulsar.

Get the signal path experienced by the pulsar.

References get_backend().

◆ max_weight_backend()

VariableBackendEstimate * SignalPath::max_weight_backend ( )

Get the backend with the maximum weight.

return the backend with the maximum weight

References backends.

Referenced by get_covariance().

◆ share()

void SignalPath::share ( SignalPath * other)

Share reception model and common transformations of other instance.

Common transformations are experienced by all sources.

References equation, faraday_rotation, impurity, projection, response, and SignalPath().

Member Data Documentation

◆ backends

std::vector< Reference::To< VariableBackendEstimate > > Calibration::SignalPath::backends
protected

The set of instrumental backend transformations for each epoch.

The VariableBackendEstimate class handles jumps in the instrumental response that apply to both calibrator and pulsar observations.

Referenced by add_observation_epoch(), add_step(), disengage_time_variations(), engage_time_variations(), get_backend(), get_covariance(), max_weight_backend(), reduce_nfree(), set_constant_pulsar_gain(), set_diff_gain_variation(), set_diff_phase_variation(), set_gain_variation(), set_refcal_through_frontend(), set_reference_epoch(), solve(), and update().

◆ impurity

Reference::To< MEAL::Real4 > Calibration::SignalPath::impurity
protected

The (optional) common instrumental impurity to be modelled.

When used, all signal paths include this transformation, which supplements the response to be modeled and output as a solution.

Referenced by add_transformation(), set_impurity(), share(), and solve().

◆ response

Reference::To< MEAL::Complex2 > Calibration::SignalPath::response
protected

The common instrumental response to be modelled.

All signal paths include this transformation, which is the response to be modeled and output as a solution.

Other transformations mostly deal with variations as a function of time, variations between signals of different types, etc.

Referenced by add_step(), copy_transformation(), disengage_time_variations(), equal_ellipticities(), fit_gain(), fix_orientation(), get_covariance(), get_transformation(), reset(), set_basis(), set_response(), share(), and update().

◆ solution_response

Reference::To< MEAL::Complex2 > Calibration::SignalPath::solution_response
protected

The instrumental response returned by get_transformation.

Place holder for fiducial solution when there are multiple signal paths.

Referenced by get_covariance(), and get_transformation().


The documentation for this class was generated from the following files:

Generated using doxygen 1.14.0