diff --git a/CEP/BB/BBSKernel/include/BBSKernel/MNS/MeqAzEl.h b/CEP/BB/BBSKernel/include/BBSKernel/MNS/MeqAzEl.h new file mode 100644 index 0000000000000000000000000000000000000000..4c767bc4a11c598173bf5a64d5a1bd5fddf2888d --- /dev/null +++ b/CEP/BB/BBSKernel/include/BBSKernel/MNS/MeqAzEl.h @@ -0,0 +1,77 @@ +//# MeqAzEl.h: Azimuth and elevation for a direction (ra,dec) on the sky. +//# +//# Copyright (C) 2007 +//# ASTRON (Netherlands Foundation for Research in Astronomy) +//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, seg@astron.nl +//# +//# This program is free software; you can redistribute it and/or modify +//# it under the terms of the GNU General Public License as published by +//# the Free Software Foundation; either version 2 of the License, or +//# (at your option) any later version. +//# +//# This program 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 General Public License for more details. +//# +//# You should have received a copy of the GNU General Public License +//# along with this program; if not, write to the Free Software +//# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +//# +//# $Id$ + +#ifndef MNS_MEQAZEL_H +#define MNS_MEQAZEL_H + +#include <BBSKernel/MNS/MeqExpr.h> +#include <BBSKernel/MNS/MeqResultVec.h> + +#ifdef EXPR_GRAPH +#include <Common/lofar_string.h> +#endif + +namespace LOFAR +{ +namespace BBS +{ +class MeqSource; +class MeqStation; +class MeqRequest; +class MeqMatrix; + +// \ingroup BBSKernel +// \addtogroup MNS +// @{ + +class MeqAzEl: public MeqExprRep +{ +public: + enum + { + IN_RA, + IN_DEC, + IN_X, + IN_Y, + IN_Z, + N_InputPort + } InputPort; + + MeqAzEl(MeqSource &source, MeqStation &station); + MeqResultVec getResultVec(const MeqRequest &request); + +private: + void evaluate(const MeqRequest& request, const MeqMatrix &in_ra, + const MeqMatrix &in_dec, const MeqMatrix &in_x, const MeqMatrix &in_y, + const MeqMatrix &in_z, MeqMatrix &out_az, MeqMatrix &out_el); + +#ifdef EXPR_GRAPH + virtual std::string getLabel(); +#endif +}; + +// @} + +} // namespace BBS +} // namespace LOFAR + +#endif diff --git a/CEP/BB/BBSKernel/include/BBSKernel/MNS/MeqDipoleBeam.h b/CEP/BB/BBSKernel/include/BBSKernel/MNS/MeqDipoleBeam.h new file mode 100644 index 0000000000000000000000000000000000000000..fcd541cf3993e8a80becd2ea3e5c403d4e243b3d --- /dev/null +++ b/CEP/BB/BBSKernel/include/BBSKernel/MNS/MeqDipoleBeam.h @@ -0,0 +1,71 @@ +//# MeqDipoleBeam.h: Dipole voltage beam (analytic) +//# +//# Copyright (C) 2007 +//# ASTRON (Netherlands Foundation for Research in Astronomy) +//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, seg@astron.nl +//# +//# This program is free software; you can redistribute it and/or modify +//# it under the terms of the GNU General Public License as published by +//# the Free Software Foundation; either version 2 of the License, or +//# (at your option) any later version. +//# +//# This program 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 General Public License for more details. +//# +//# You should have received a copy of the GNU General Public License +//# along with this program; if not, write to the Free Software +//# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +//# +//# $Id$ + +#ifndef MNS_MEQDIPOLEBEAM_H +#define MNS_MEQDIPOLEBEAM_H + +#include <BBSKernel/MNS/MeqExpr.h> +#include <BBSKernel/MNS/MeqJonesExpr.h> +#include <BBSKernel/MNS/MeqJonesResult.h> +#include <casa/BasicSL/Constants.h> + +namespace LOFAR +{ +namespace BBS +{ + +// \ingroup BBSKernel +// \addtogroup MNS +// @{ + +class MeqDipoleBeam: public MeqJonesExprRep +{ +public: + enum + { + IN_AZEL, + N_InputPort + } InputPort; + + MeqDipoleBeam(MeqExpr azel, double height = 1.706, double length = 1.38, + double slant = casa::C::pi / 4.001, double orientation = 0.0); + + virtual MeqJonesResult getJResult(const MeqRequest &request); + +private: + void evaluate(const MeqRequest &request, const MeqMatrix &in_az, + const MeqMatrix &in_el, MeqMatrix &out_E_theta, MeqMatrix &out_E_phi, + double height, double length, double slant, double orientation); + +#ifdef EXPR_GRAPH + virtual std::string getLabel(); +#endif + + double itsHeight, itsLength, itsSlant, itsOrientation; +}; + +// @} + +} //# namespace BBS +} //# namespace LOFAR + +#endif diff --git a/CEP/BB/BBSKernel/include/BBSKernel/MNS/MeqExpr.h b/CEP/BB/BBSKernel/include/BBSKernel/MNS/MeqExpr.h index 7e7d7251c8d3d4e02bb9a66a3b9006e7b673b451..1bbffb149bbffb3fa11679a9ffa38fbd9aa47fa3 100644 --- a/CEP/BB/BBSKernel/include/BBSKernel/MNS/MeqExpr.h +++ b/CEP/BB/BBSKernel/include/BBSKernel/MNS/MeqExpr.h @@ -144,6 +144,7 @@ protected: // It also increases NParents in the child. void addChild(MeqExpr child); void removeChild(MeqExpr child); + MeqExpr getChild(size_t index); private: // Forbid copy and assignment. diff --git a/CEP/BB/BBSKernel/include/BBSKernel/MNS/MeqMatrix.h b/CEP/BB/BBSKernel/include/BBSKernel/MNS/MeqMatrix.h index 58570dbcb59b2a20bb4c476a6011389b83f45f85..45e9d8a06bd5323d5d24706297389e19fcb1b9c4 100644 --- a/CEP/BB/BBSKernel/include/BBSKernel/MNS/MeqMatrix.h +++ b/CEP/BB/BBSKernel/include/BBSKernel/MNS/MeqMatrix.h @@ -139,6 +139,9 @@ public: void show (ostream& os) const { itsRep->show (os); } + bool isArray() const + { return itsRep->isArray(); } + bool isComplex() const { return itsRep->isComplex(); } diff --git a/CEP/BB/BBSKernel/include/BBSKernel/Makefile.am b/CEP/BB/BBSKernel/include/BBSKernel/Makefile.am index d74ded1e593429da5db2cc3fcd6528aa91b754c3..b80322d366777e964186ed88ce86737b95121387 100644 --- a/CEP/BB/BBSKernel/include/BBSKernel/Makefile.am +++ b/CEP/BB/BBSKernel/include/BBSKernel/Makefile.am @@ -13,10 +13,12 @@ pkginclude_HEADERS = \ VisSelection.h pkginclude_MNS_HEADERS = \ + MNS/MeqAzEl.h \ MNS/MeqBaseDFTPS.h \ MNS/MeqBaseLinPS.h \ MNS/MeqDFTPS.h \ MNS/MeqDiag.h \ + MNS/MeqDipoleBeam.h \ MNS/MeqDomain.h \ MNS/MeqExpr.h \ MNS/MeqFunklet.h \ diff --git a/CEP/BB/BBSKernel/include/BBSKernel/Model.h b/CEP/BB/BBSKernel/include/BBSKernel/Model.h index a8e546027c6773e9fb20e996d9c4066620833b4d..db9f5c865452f68d2953c5dc40a06ee2f5eeaf84 100644 --- a/CEP/BB/BBSKernel/include/BBSKernel/Model.h +++ b/CEP/BB/BBSKernel/include/BBSKernel/Model.h @@ -57,9 +57,10 @@ public: enum ModelComponent { - GAIN = 0, + BANDPASS = 0, + GAIN, DIRECTIONAL_GAIN, - BANDPASS, + DIPOLE_BEAM, PHASORS, N_ModelComponent }; diff --git a/CEP/BB/BBSKernel/include/BBSKernel/VisSelection.h b/CEP/BB/BBSKernel/include/BBSKernel/VisSelection.h index c4898d065a620d39e5c582870144327bcca7c37c..c4f4f40e1104c75827b99b31acac58d6850551f4 100644 --- a/CEP/BB/BBSKernel/include/BBSKernel/VisSelection.h +++ b/CEP/BB/BBSKernel/include/BBSKernel/VisSelection.h @@ -112,6 +112,7 @@ public: private: bool convertTime(const string &in, double &out) const; + vector<bool> itsFieldFlags; pair<size_t, size_t> itsChannelRange; pair<double, double> itsTimeRange;