Source
// X-Y phase for ALMA -- ORIGINAL ad hoc version as GJones specialization, but in Xf position
//# XJones.h: Cross-hand phase calibration
//# Copyright (C) 1996,1997,2000,2001,2002,2003,2011
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be adressed as follows:
//# Internet email: aips2-request@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
//#
//#
namespace casa { //# NAMESPACE CASA - BEGIN
// Forward declarations
class VisEquation;
// **********************************************************
// X: position angle calibration (for circulars!)
// (rendered as a Mueller for now)
class XMueller : public SolvableVisMueller {
public:
// Constructor
XMueller(VisSet& vs);
XMueller(casacore::String msname,casacore::Int MSnAnt,casacore::Int MSnSpw);
XMueller(const MSMetaInfoForCal& msmc);
XMueller(const casacore::Int& nAnt);
virtual ~XMueller();
// Return the type enum
virtual Type type() { return VisCal::X; };
// Return type name as string
virtual casacore::String typeName() { return "X Mueller"; };
virtual casacore::String longTypeName() { return "X Mueller (baseline-based)"; };
// Type of Jones matrix according to nPar()
virtual Mueller::MuellerType muellerType() { return Mueller::Diagonal; };
// Local setApply
using SolvableVisCal::setApply;
virtual void setApply(const casacore::Record& apply);
// Local setSolve
using SolvableVisCal::setSolve;
void setSolve(const casacore::Record& solvepar);
// Turn off normalization by model....
virtual casacore::Bool normalizable() { return false; };
// X gathers/solves for itself
virtual casacore::Bool useGenericGatherForSolve() { return false; };
// X gathers/solves for itself
virtual void selfGatherAndSolve(VisSet& vs, VisEquation& ve) { newselfSolve(vs,ve); };
virtual void newselfSolve(VisSet& vs, VisEquation& ve); // new supports combine
protected:
// X has just 1 complex parameter, storing a phase