Line data Source code
1 : //# EPointMBuf.h: SolvableVisJones calibration main table buffer 2 : //# Copyright (C) 1996,1997,1998,2001,2002,2003 3 : //# Associated Universities, Inc. Washington DC, USA. 4 : //# 5 : //# This library is free software; you can redistribute it and/or modify it 6 : //# under the terms of the GNU Library General Public License as published by 7 : //# the Free Software Foundation; either version 2 of the License, or (at your 8 : //# option) any later version. 9 : //# 10 : //# This library is distributed in the hope that it will be useful, but WITHOUT 11 : //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 : //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public 13 : //# License for more details. 14 : //# 15 : //# You should have received a copy of the GNU Library General Public License 16 : //# along with this library; if not, write to the Free Software Foundation, 17 : //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA. 18 : //# 19 : //# Correspondence concerning AIPS++ should be adressed as follows: 20 : //# Internet email: casa-feedback@nrao.edu. 21 : //# Postal address: AIPS++ Project Office 22 : //# National Radio Astronomy Observatory 23 : //# 520 Edgemont Road 24 : //# Charlottesville, VA 22903-2475 USA 25 : //# 26 : //# 27 : //# $Id$ 28 : 29 : #ifndef CALIBRATION_EPOINTMBUF_H 30 : #define CALIBRATION_EPOINTMBUF_H 31 : 32 : #include <synthesis/CalTables/TimeVarVJMBuf.h> 33 : #include <synthesis/CalTables/EPointMCol.h> 34 : #include <synthesis/CalTables/SolvableVJTable.h> 35 : namespace casa { 36 : // <summary> 37 : // EPointMBuf: EPoint calibration main table buffer 38 : // </summary> 39 : 40 : // <use visibility=export> 41 : 42 : // <reviewed reviewer="" date="" tests="" demos=""> 43 : 44 : // <prerequisite> 45 : // <li> <linkto class="CalMainBuffer">CalMainBuffer</linkto> module 46 : // <li> <linkto class="TimeVarVisJonesMBuf">TimeVarVisJonesMBuf</linkto> module 47 : // </prerequisite> 48 : // 49 : // <etymology> 50 : // From "solvable visibility Jones matrix", "cal main table" and "buffer" 51 : // </etymology> 52 : // 53 : // <synopsis> 54 : // The EPointMBuf class holds a buffer, optionally connected to a 55 : // EPoint calibration main table iterator (of base type 56 : // CalIterBase). Specializations for different solvable Jones matrix 57 : // types are provided through inheritance. 58 : // </synopsis> 59 : // 60 : // <example> 61 : // <srcblock> 62 : // </srcblock> 63 : // </example> 64 : // 65 : // <motivation> 66 : // Encapsulate EPoint calibration main table data buffers. 67 : // </motivation> 68 : // 69 : // <todo asof="01/08/01"> 70 : // (i) Deal with non-standard columns. 71 : // </todo> 72 : 73 : class EPointMBuf : public TimeVarVisJonesMBuf 74 : { 75 : public: 76 : // Default constructor. No connection to an underlying 77 : // calibration table iterator in this case. 78 : EPointMBuf(); 79 : 80 : // Construct from a set of calibration buffer indices and 81 : // their specified values. Non-index columns will be set 82 : // to default values, and there is no connection to an 83 : // underlying calibration table iterator in this case. 84 : EPointMBuf (const casacore::Vector<casacore::Int>& calIndices, 85 : const casacore::Block<casacore::Vector<casacore::Int> >& indexValues); 86 : 87 : // Construct from a calibration table iterator. The calibration 88 : // buffer will remain synchronized with the iterator. 89 : EPointMBuf (CalIterBase& calIter); 90 : 91 : // Write the current buffer at the end of a specified cal table; 92 : // returns the number of rows appended 93 : virtual casacore::Int append (CalTable& calTable); 94 : 95 : // Maximum number of rows in the calibration buffer 96 : virtual casacore::Int nRow(); 97 : 98 : // casacore::Data field accessors 99 : virtual casacore::Array<casacore::Float>& pointingOffset(); 100 : 101 : protected: 102 : // Factory method to create a columns accessor object of the appropriate type 103 0 : virtual EPointMCol* newCalMainCol (CalTable& calTable) { 104 : return new 105 0 : EPointMCol(dynamic_cast<EPointTable&>(calTable));}; 106 : 107 : // Calibration table columns accessor 108 0 : virtual EPointMCol* calMainCol() 109 0 : {return dynamic_cast<EPointMCol*>(CalMainBuffer::calMainCol());}; 110 : 111 : // Invalidate the current cache. 112 : virtual void invalidate(); 113 : 114 : // <group> 115 : // Fill the cal buffer attribute columns in an empty cal buffer, 116 : // after the cal indices have been set using fillIndices(). The 117 : // cal indices, specified as enums from class MSCalEnums, are excluded 118 : // as non-attribute columns 119 : // 120 : // Use a visibility buffer to define the attribute values (NYI) 121 0 : virtual void fillAttributes(const casacore::Vector<casacore::Int>& /*calIndices*/, 122 0 : const VisBuffer& /*vb*/) {}; 123 : // 124 : // Set default attribute values 125 : virtual void fillAttributes(const casacore::Vector<casacore::Int>& calIndices); 126 : // </group> 127 : 128 : private: 129 : // Buffer fields 130 : casacore::Array<casacore::Float> pointingOffset_p; 131 : 132 : // Buffer field status flags 133 : casacore::Bool pointingOffsetOK_p; 134 : }; 135 : } 136 : #endif