casa  5.7.0-16
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MirFiller.h
Go to the documentation of this file.
1 //# MirFiller.h: defines the MirFiller class for filling Miriad data
2 //# Copyright (C) 2000,2001,2002
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 addressed as follows:
20 //# Internet email: aips2-request@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: MirFiller.h,v 1.2 2009/09/03 23:28:32 pteuben Exp $
28 
29 #ifndef BIMA_MIRFILLER_H
30 #define BIMA_MIRFILLER_H
31 
32 #include <list>
33 #include <casa/Arrays/Vector.h>
34 #include <casa/Arrays/Cube.h>
35 #include <casa/Arrays/Matrix.h>
36 #include <casa/Logging/LogIO.h>
37 
40 
41 #include <casa/namespace.h>
42 //# Forward Declarations
43 namespace casacore{
44 
45 class Record;
46 class String;
47 class AipsError;
48 class MeasurementSet;
49 }
50 
51 namespace casa { //# NAMESPACE CASA - BEGIN
52 //class FillMetadata;
53 //class GlishRecord;
54 } //# NAMESPACE CASA - END
55 
56 class MirPol;
57 class MirSource;
58 class MirFreqSetup;
60 
61 class FillMetadata;
62 
63 // <summary>
64 // BIMA MIRIAD dataset to MeasurementSet2 filler
65 // </summary>
66 //
67 // <use visibility=export>
68 //
69 // <reviewed reviewer="" date="yyyy/mm/dd" tests="" demos="">
70 // </reviewed>
71 //
72 // <prerequisite>
73 // <li> <linkto class="casacore::Record">casacore::Record</linkto> -- for holding options
74 // </prerequisite>
75 //
76 // <etymology>
77 // MirFiller is the successor to the BimaFiller (class and application).
78 // It attempts to be more general in its filling of Miriad data while still
79 // retaining special functionality for BIMA data specifically.
80 // </etymology>
81 //
82 // <synopsis>
83 // MirFiller converts an input Miriad dataset into an output casacore::MeasurementSet
84 // (ver. 2). It is attached to its Miriad dataset at construction; it can
85 // subsequently be used to fill several output MSes, perhaps with different
86 // data from the input dataset, in sequence (i.e. it is not thread-safe).
87 //
88 // Default use of this class would be to construct an instance attached to
89 // a Miriad dataset, and then call its <src>fill()</src> method, passing
90 // it the output measurement set name. This will load all data found in
91 // the input dataset into the measurement set. Restricting the filling to
92 // specific spectral windows can be controled via the <src>select()</src>
93 // function.
94 //
95 // <h3>Miriad Dataset Spectral Layout and
96 // its Mapping to the Measurement Set</h3>
97 //
98 // Each record in a Miriad dataset organizes its correlation data by
99 // spectral windows and so-called wideband channels. Each Miriad
100 // spectral window contains data from a band of frequencies, broken up
101 // into some number of channels. (Because each channel, then, is
102 // fairly narrow in bandwidth, these correlations are often referred
103 // to as "narrow-band" data.) The wideband channels, in general,
104 // contain single correlations, averaged over some band at potentially
105 // arbitrary frequencies; that is, they are bolometer-like
106 // measurements.
107 //
108 // With BIMA Miriad datasets, the wideband channels are used to store
109 // wide-band averages of the spectral windows. More specifically, the
110 // first wideband channel contains the average of all spectral windows
111 // channels associated with the lower sideband (the first Nwin/2
112 // windows), and the second wideband channel contains the average of
113 // the upper sideband windows. The remaining wideband channels
114 // contain the averages of each of the spectral windows (in the same
115 // order). Thus, if the BIMA Miriad dataset contains Nwin spectral windows,
116 // there will be Nwin+2 wideband channels. The first Nwin/2 windows will
117 // be from the lower sideband, and the rest, from the upper sideband.
118 //
119 // When the Miriad data is converted to an casacore::MS, each spectral window and each
120 // wideband channel is loaded into a separate casacore::MS spectral window. Thus, for
121 // a BIMA dataset with Nwin windows, the output casacore::MS (by default) will contain
122 // Nwin*2+2 spectral windows. The <src>select()</src> function can be used
123 // to restrict the windows that get written.
124 //
125 // <h3>Polarization</h3>
126 //
127 // Miriad datasets stores correlations for different polarizations in
128 // separate records, even if they were observed simultaneously.
129 // (Thus, it is up to the Miriad I/O software to properly combine
130 // records to form new casacore::Stokes correlations.) This is in contrast to
131 // AIPS++ which can store polarizations observed at the same time in the
132 // same record. Furthermore, BIMA can only observe one polarization at
133 // a time. Thus, how polarizations should be loaded from a Miriad dataset
134 // into an AIPS++ Measurment Set depends in part on whether the
135 // polarizations were (effectively) observed simultaneously. It might
136 // also depend on whether polarization calibration is needed and how it
137 // should be done.
138 //
139 // The standard recipe for handling raw BIMA polarization data calls for
140 // the sampling of the polarizations to be loaded into separate records.
141 // This makes time-based editing easier. Once the polarization gains are
142 // applied, one usually time-averages the data over several polarization
143 // switching cycles; in effect, then, one can consider the polarizations
144 // as having been observed simultaneously. Thus, in this time-averaging
145 // step, one collapses the different polarizations into single records for
146 // standard handling by the imaging tools. (Note: the software to support
147 // this operation is still in development as of this writing.)
148 //
149 // The "joinpol" option (set with setOptions()) allows one to control
150 // whether an attempt is made to load polarizations into the same record.
151 // If joinpol is false, all polarizations are loaded into different records;
152 // each record will point to a different polarization setup in the
153 // POLARIZATION table (with each setup containing only one correlation type).
154 // If joinpol is true, then fill() will look for polarizations with the same
155 // time stamp and load them into the same record; the POLARIZATION table will
156 // then only have one setup containing all correlations. Any polarizations
157 // that are not found are set to zero. Thus, for a raw BIMA data
158 // containing multiple polarizations, joinpol equal to true will produce a
159 // much large dataset than joinpol equal to false because of all the extra
160 // zero visibilities that get loaded in.
161 // </synopsis>
162 //
163 // <example>
164 // <srcblock>
165 // // open Miriad dataset 3c273 for filling
166 // MirFiller filler('3c273');
167 //
168 // // if needed, set some options
169 // casacore::Record opts = filler.getOptions();
170 // casacore::RecordFieldPtr<casacore::Double>(opts, "scanlim").define(600);
171 // casacore::RecordFieldPtr<casacore::Bool>(opts, "verbose").define(true);
172 // filler.setOptions(opts);
173 //
174 // // if desired, chose the windows to write
175 // casacore::Vector<casacore::Int> wide(0) // do not write out any wideband channels
176 // casacore::Vector<casacore::Int> splwin(filler.nspect());
177 // for(casacore::Int i=0; i < splwin.nelements(); i++) splwin(i) = i;
178 // filler.select(wide, splwin);
179 //
180 // // fill the output MS
181 // filler.fill('3c273.ms');
182 // </srcblock>
183 // </example>
184 //
185 // <motivation>
186 // The important features of this class are:
187 // <ul>
188 // <li> casacore::Input spectral windows are loaded into separate output windows.
189 // This allows windows to have different rest frequencies associated
190 // with them. It also allows channels within a window to be
191 // contiguous in frequency and having the same width.
192 // <li> Wideband channels are each placed in their own window. This is
193 // particularly important for the sideband averages, which are used
194 // to calculate the G-Jones which can be applied to the spectral
195 // windows.
196 // <li> Associations are set to connect spectral windows and their averages.
197 // This allows the averages to be recalculated if necessary (e.g.
198 // after flagging).
199 // <li> Different polarizations are by default loaded into separate
200 // records as is appropriate for raw BIMA data; however, if
201 // simultaneously measured polarizations exist, an option can be
202 // set to join them into a single record.
203 // </ul>
204 // </motivation>
205 //
206 // <thrown>
207 // <li> <linkto class="casacore::AipsError">casacore::AipsError</linkto> -- if the input
208 // dataset is not in Miriad format or cannot be opened.
209 // <li> <linkto class="MiriadFormatError">MiriadFormatError</linkto>
210 // -- if an illegal format condition is found in the input
211 // Miriad dataset.
212 // <li> <linkto class="UnavailableMiriadDataSelectionError">
213 // UnavailableMiriadDataSelectionError</linkto> -- if the data
214 // selection is known to be out of range.
215 // </thrown>
216 //
217 // <todo asof="2001/03/01">
218 // <li> load planet source models
219 // <li> a splitWindows option may be needed
220 // <li> a more sophisticated handling of multiple polarization setups
221 // may be needed
222 // <li> system temperatures are currently loaded into the SYSCAL as
223 // single-element arrays, regardless of the "official" number of
224 // polarization receptors. This is not strictly in compliance with
225 // the MS2 spec, so it should be fixed.
226 // <li> change getOptions() interface to get output from user (?)
227 // </todo>
228 
229 class MirFiller : public MirVarHandler {
230 private:
231  casacore::uInt debug; // debugging level
232 
233 public:
234 
235  // create the filler, attaching it to a Miriad dataset. <src>mirfile</src>
236  // is the dataset filename, and <src>dbg</src> is the debug level (see
237  // <linkto class="MirFiller:setDebug"><src>setDebugLevel()</src></linkto>).
238  MirFiller(const casacore::String& mirfile, casacore::Bool scan=true, casacore::Int dbg=0);
239 
240  // destruct this filler
241  virtual ~MirFiller();
242 
243  // set the debugging level which controls the amount of debugging
244  // messages that are printed to the terminal (as opposed to the logger).
245  // A value of zero or less will cause no extra messages to be printed;
246  // increasing values will increase the amount of messages.
248  debug = (level < 0) ? 0 : (casacore::uInt) level;
250  }
251 
252  // set the debugging level which controls the amount of debugging
253  // messages that are printed to the terminal. A value of zero or less
254  // means that no extra messages will be printed; increasing values will
255  // increase the amount of messages.
256  casacore::Int getDebugLevel() const { return debug; }
257 
258  // return true if the debugging level is at least as high as a given
259  // level.
260  casacore::Bool Debug(casacore::Int level) { return (((casacore::uInt) level) <= debug); }
261 
262  // return true if this filler should be verbose in its messages. This
263  // will be true if the verbose option is enabled or the debug level is
264  // greater than 1.
265  casacore::Bool verbose() { return (verbose_p || debug > 1); }
266 
267  // return basic characteristics of the input dataset as a GlishRecord. If
268  // scan is true (the default), the entire file will be (re-) scanned
269  // using the current values for the obslim and scanlim options.
270  // If verbose is true (the
271  // default), send a description to the logger.
272  //GlishRecord summary(casacore::Bool verbose=true, casacore::Bool scan=true);
273 
274  // fill the output casacore::MS according to the current selections and options
275  // msfile is the output name to use; it should not already exist.
276  void fill(const casacore::String& msfile) {
277  if (joinpol_p)
278  joinFill(msfile);
279  else
280  noJoinFill(msfile);
281  }
282 
283  // select spectral data from the input Miriad dataset. wideChans is a
284  // list of one-based channel indices. narrowWins is a list of one-based
285  // window indices. The default is to choose all available wide channels
286  // and windows. polsel is a polarization selection: only the correlation
287  // types present will be loaded; a NULL value means take all polarizations
288  // found. (See also the joinpol option under setOptions().)
289  void selectSpectra(const casacore::Vector<casacore::Int>& wideChans,
290  const casacore::Vector<casacore::Int>& narrowWins);
291 // throw(UnavailableMiriadDataSelectionError);
292 
293  // select the polarizations to load. An empty setup means by default
294  // take all polarizations found in the dataset.
295  void selectPols(ConstMirPolSetup &polsel);
296 
297  // set the options for filling. The options are set via a casacore::Record object
298  // for which the following keys are recognized:
299  // <pre>
300  // scanlim the scan time jump limit, in seconds. If the jump in
301  // time between two consecutive Miriad records is greater
302  // than this limit the scan number that gets written out
303  // for that record will be incremented. A change in source
304  // will always increment the scan number unless scanlim is
305  // negative; in this case, all records are forced to have
306  // the same scan number. The default is 5 minutes.
307  //
308  // obslim the observation ID time jump limit, in seconds. The
309  // observation ID is meant to delimit two tracks that might
310  // appear in the same file. If the jump in time
311  // between two consecutive Miriad records is greater than
312  // this limit the scan number that gets written out for
313  // that record will be incremented. The ID will always be
314  // incremented if there is a change in telescope or array
315  // configuration unless obslim is negative, in which case,
316  // all records will be forced to have the same observation
317  // ID. The default is 4 hours.
318  //
319  // tilesize the tiling size to use (in channels?) for storing data
320  // in the casacore::MS using the TiledStorageManager. If the value
321  // is <= 0, the standard (non-tiled) storage manager will
322  // be used. The default is 32.
323  //
324  // wideconv the convention to use for interpreting the wideband channels.
325  // The allowed values are "bima" and "none". In the "bima"
326  // convention, the first two wideband channels are the lower &
327  // upper sideband averages and the remaining channels represent
328  // averages of each of the spectral line windows. Currently,
329  // this option only affects the writing out of window
330  // associations: if wideconv="bima", the associations linking
331  // wideband windows to spectral line windows will be written
332  // according to the convention.
333  //
334  // joinpol If true, multiple polarizations are loaded as a single
335  // polarization setup. Which polarizations are included
336  // depend on the polarization selections. If false (the
337  // default), each polarization is loaded as a separate setup.
338  //
339  // tsyswt If true (the default), the SIGMA and WEIGHT columns will
340  // be filled with values based on the system temperatures, if
341  // found. If false, these columns will be filled with values=1.
342  // The SYSCAL table will be filled if system temperatures are
343  // present, regardless of the value of this option.
344  //
345  // planetfit The maximum fit order to use when fitting the direction of a
346  // planet-tracking field. The actual order used may be less than
347  // this if there is insufficient data. The default is 3.
348  // updmodelint This is the amount of time to wait before updating the
349  // model. By default this is 8 hours.
350  //
351  // movfield if true, exact field positions tracking a moving object will
352  // be written to subtable called BIMA_MOVING_FIELDS.
353  //
354  // compress if true, selected columns will be compressed using scaled
355  // integers. This limits the dynamic range to about 65000:1.
356  // The default is true.
357  //
358  // verbose if true, send extra messages to the logger
359  // </pre>
360  void setOptions(const casacore::Record &opts);
361 
362  // get the current filling options
364 
365  // handle an update to the integration time;
366  // this is a callback routine that is part of the MirVarHandler
367  // interface which must be implemented. This implementation does
368  // nothing.
369  virtual void updateIntTime(FillMetadata &fm, casacore::Double time);
370 
371  // handle an update to the observatory;
372  // this is a callback routine that is part of the MirVarHandler
373  // interface which must be implemented. This implementation flushes
374  // records for the FEED subtable for the last observatory, and adds
375  // a PROCESSOR subtable record for the next table.
377 
378  // handle an update to the array configuration;
379  // this is a callback routine that is part of the MirVarHandler
380  // interface which must be implemented
381  virtual void updateArray(FillMetadata &fm, casacore::Double time);
382 
383  // handle an update to the SOURCE_MODEL column of the SOURCE subtable.
384  // Maybe that this gets incorporated into updateSource at sometime, have
385  // to examine logistics. REWRITEME. dgoscha
387 
388  // handle an update to the array configuration;
389  // this is a callback routine that is part of the MirVarHandler
390  // interface which must be implemented
392 
393  // handle an update to the source;
394  // this is a callback routine that is part of the MirVarHandler
395  // interface which must be implemented
396  virtual void updateSource(FillMetadata &fm, casacore::Double time);
397 
398  // handle an update to the observing field;
399  // this is a callback routine that is part of the MirVarHandler
400  // interface which must be implemented
401  virtual void updateField(FillMetadata &fm, casacore::Double time);
402 
403  // handle an update to the frequency setup;
404  // this is a callback routine that is part of the MirVarHandler
405  // interface which must be implemented
407 
408  // handle an update to system temperatures
409  // this is a callback routine that is part of the MirVarHandler
410  // interface which must be implemented
411  virtual void updateTsys(FillMetadata &fm, casacore::Double time);
412 
413 private:
414 
415  // open and setup the output MS. This includes all initialization that
416  // can be done without reading any data from the input Miriad dataset.
418  casacore::Bool needSrcModel=true);
419 
420  // initialize the output MS. This is called after the first input record
421  // is read in from the input Miriad dataset. It will initialize certain
422  // subtables (currently, POINTING, PROCESSOR, HISTORY, FEED, and
423  // POLARIZATION) based on static or otherwise non-tracked variable
424  // information.
425  void initMS(::FillMetadata& fm);
426 
427  void noJoinFill(const casacore::String& msfile);
428  void joinFill(const casacore::String& msfile);
429 
431  return (abs(a-b) < tol);
432  }
433 
434  // add the current observation information as a new record to the
435  // output ms's OBSERVATION subtable
437 
438  // add the records to the FEED subtable for the current set of antennas
439  // and polarizations
441 
442  // check for moving objects in source list and adjust FIELD subtable
443  // accordingly
445 
446  // add the records to the POINTING subtable for the current set of antennas
448 
449  // add a new set of antenna positions
451 
452  // add the current source to the SOURCE subtable
454 
455  // add the current field to the FIELD subtable
456  void addField(FillMetadata &fm, double time);
457 
458  // add subtable records for the current correlator setup
459  void addCorrelatorSetup(FillMetadata &fm, double time);
460 
461  // add a POLARIZATION record for the current polarization type.
462  void addPolarization(FillMetadata &fm, casacore::Bool addCurrentOnly=false);
463 
464  // add DATA_DESCRIPTION records for the current polarization
465  // and frequency setup
466  void addDataDesc(FillMetadata &fm);
467 
468  // write out the miriad history into the HISTORY table
469  void flushHistory(FillMetadata &fm);
470 
471  // copy the history from a given HISTORY table
472  void copyHistoryFrom(FillMetadata &fm, casacore::String tablename);
473 
474  // add a processor record for the current frequency setup
475  void addProcessor(FillMetadata &fm);
476 
477  // add a filler message to the HISTORY table
478  void addHistoryMessage(FillMetadata &fm, casacore::String priority,
480 
481  // add a record to the SysCal table
483 
484  // initialize the STATE table
485  void initState(FillMetadata &fm);
486 
487  // create a polynomial fit for the direction to a moving source
488  //PJT
491 
492  // info that doesn't change during life of filler
495 
496  // selection info
500 
501  // options
506 
510 
512 };
513 
514 
515 #endif
516 
517 
virtual void updateObservatory(FillMetadata &fm, casacore::Double time)
handle an update to the observatory; this is a callback routine that is part of the MirVarHandler int...
casacore::Double scanlim_p
Definition: MirFiller.h:503
wideConventions wideconv_p
Definition: MirFiller.h:509
int Int
Definition: aipstype.h:50
void addPolarization(FillMetadata &fm, casacore::Bool addCurrentOnly=false)
add a POLARIZATION record for the current polarization type.
void flushObsRecord(FillMetadata &fm, casacore::Double time)
add the current observation information as a new record to the output ms&#39;s OBSERVATION subtable ...
casacore::String histbl_p
options
Definition: MirFiller.h:502
virtual void updateFreqSetup(FillMetadata &fm, casacore::Double time)
handle an update to the frequency setup; this is a callback routine that is part of the MirVarHandler...
casacore::Bool verbose()
return true if this filler should be verbose in its messages.
Definition: MirFiller.h:265
casacore::Record getOptions()
get the current filling options
casacore::Double obslim_p
Definition: MirFiller.h:503
a container for storing the Miriad metadata that must be tracked while filling
Definition: FillMetadata.h:886
casacore::Bool compress_p
Definition: MirFiller.h:505
void noJoinFill(const casacore::String &msfile)
void addProcessor(FillMetadata &fm)
add a processor record for the current frequency setup
casacore::Bool nearAbs(casacore::Double a, casacore::Double b, casacore::Double tol)
Definition: MirFiller.h:430
void addHistoryMessage(FillMetadata &fm, casacore::String priority, casacore::String origin, casacore::String msg)
add a filler message to the HISTORY table
void flushMovingFields(FillMetadata &fm, casacore::Double time)
check for moving objects in source list and adjust FIELD subtable accordingly
casacore::Bool fitskymotion(casacore::Matrix< casacore::Double > &dirfit, const casacore::Vector< casacore::Double > &time, const casacore::Vector< casacore::Double > &ra, const casacore::Vector< casacore::Double > &dec)
create a polynomial fit for the direction to a moving source PJT
an exception indicating that a requested data selection from a Miriad dataset is not available...
Definition: MirExceptions.h:66
ABSTRACT TOOL CLASSES A PlotTool is a higher level event handler for a PlotCanvas The idea is to take common tasks which may require multiple events and put them in one place PlotTools also provide additional functionality in that they can be active and blocking non blocking The PlotCanvas will only send events to active and will not send events to later tools or event handlers if the latest tool was blocking In this way a single tool can be used to handle ALL user interaction via the GUI at one time
Definition: PlotTool.h:43
void fill(const casacore::String &msfile)
return basic characteristics of the input dataset as a GlishRecord.
Definition: MirFiller.h:276
void flushPointingRecords(FillMetadata &fm, casacore::Double time)
add the records to the POINTING subtable for the current set of antennas
casacore::Bool Debug(casacore::Int level)
return true if the debugging level is at least as high as a given level.
Definition: MirFiller.h:260
ostream-like interface to creating log messages.
Definition: LogIO.h:167
casacore::MeasurementSet * setupMS(const casacore::String &msfile, casacore::Int tileSize=0, casacore::Bool needSrcModel=true)
open and setup the output MS.
casacore::Double updmodelint_p
Definition: MirFiller.h:511
casacore::Vector< casacore::Bool > widesel_p
selection info
Definition: MirFiller.h:497
casacore::LogIO log_p
Definition: MirFiller.h:494
casacore::Bool tsyswt_p
Definition: MirFiller.h:505
casacore::uInt addSource(FillMetadata &fm, double time)
add the current source to the SOURCE subtable
casacore::Vector< casacore::Bool > winsel_p
Definition: MirFiller.h:497
casacore::Bool joinpol_p
Definition: MirFiller.h:505
virtual void updateSourceModel(FillMetadata &fm, casacore::Double time)
handle an update to the SOURCE_MODEL column of the SOURCE subtable.
void addField(FillMetadata &fm, double time)
add the current field to the FIELD subtable
casacore::Int getDebugLevel() const
set the debugging level which controls the amount of debugging messages that are printed to the termi...
Definition: MirFiller.h:256
void addDataDesc(FillMetadata &fm)
add DATA_DESCRIPTION records for the current polarization and frequency setup
MirVisReader rdr_p
info that doesn&#39;t change during life of filler
Definition: MirFiller.h:493
static casacore::String wideconvnames[]
Definition: MirFiller.h:508
void addTsysRecords(FillMetadata &fm, casacore::Double time, casacore::Cube< casacore::Float > &tsys)
add a record to the SysCal table
void flushFeedRecords(FillMetadata &fm, casacore::Double time)
add the records to the FEED subtable for the current set of antennas and polarizations ...
void setDebugLevel(casacore::Int level)
set the debugging level which controls the amount of debugging messages that are printed to the termi...
Definition: MirVisReader.h:299
virtual void updateField(FillMetadata &fm, casacore::Double time)
handle an update to the observing field; this is a callback routine that is part of the MirVarHandler...
casacore::Int tilesize_p
Definition: MirFiller.h:504
void flushHistory(FillMetadata &fm)
write out the miriad history into the HISTORY table
casacore::Int planetfit_p
Definition: MirFiller.h:504
void initMS(::FillMetadata &fm)
initialize the output MS.
double Double
Definition: aipstype.h:55
casacore::Bool movfield_p
Definition: MirFiller.h:505
LatticeExprNode abs(const LatticeExprNode &expr)
Numerical 1-argument functions which result in a real number regardless of input expression type...
casacore::Bool verbose_p
Definition: MirFiller.h:505
void selectSpectra(const casacore::Vector< casacore::Int > &wideChans, const casacore::Vector< casacore::Int > &narrowWins)
select spectral data from the input Miriad dataset.
void copyHistoryFrom(FillMetadata &fm, casacore::String tablename)
copy the history from a given HISTORY table
virtual void updatePolSetup(FillMetadata &fm, casacore::Double time)
handle an update to the array configuration; this is a callback routine that is part of the MirVarHan...
a Miriad visibility dataset reader
Definition: MirVisReader.h:251
A hierarchical collection of named fields of various types.
Definition: Record.h:180
bool Bool
Define the standard types used by Casacore.
Definition: aipstype.h:42
void initState(FillMetadata &fm)
initialize the STATE table
casacore::Int nwidesel_p
Definition: MirFiller.h:498
a container for source information
Definition: FillMetadata.h:649
casacore::Int nwinsel_p
Definition: MirFiller.h:498
void addCorrelatorSetup(FillMetadata &fm, double time)
add subtable records for the current correlator setup
virtual Origin origin() const =0
ABSTRACT METHODS //.
A Table intended to hold astronomical data (a set of Measurements).
BIMA MIRIAD dataset to MeasurementSet2 filler.
Definition: MirFiller.h:229
virtual ~MirFiller()
destruct this filler
Base class for all Casacore library errors.
Definition: Error.h:134
virtual void updateIntTime(FillMetadata &fm, casacore::Double time)
handle an update to the integration time; this is a callback routine that is part of the MirVarHandle...
a static container for a set of Miriad polarization correlation types
Definition: FillMetadata.h:416
String: the storage and methods of handling collections of characters.
Definition: String.h:223
void joinFill(const casacore::String &msfile)
void selectPols(ConstMirPolSetup &polsel)
throw(UnavailableMiriadDataSelectionError);
void setOptions(const casacore::Record &opts)
set the options for filling.
MirFiller(const casacore::String &mirfile, casacore::Bool scan=true, casacore::Int dbg=0)
create the filler, attaching it to a Miriad dataset.
void addAntennaPositions(FillMetadata &fm, casacore::Double time)
add a new set of antenna positions
void setDebugLevel(casacore::Int level)
set the debugging level which controls the amount of debugging messages that are printed to the termi...
Definition: MirFiller.h:247
virtual void updateTsys(FillMetadata &fm, casacore::Double time)
handle an update to system temperatures this is a callback routine that is part of the MirVarHandler ...
casacore::uInt debug
Definition: MirFiller.h:231
virtual void updateArray(FillMetadata &fm, casacore::Double time)
handle an update to the array configuration; this is a callback routine that is part of the MirVarHan...
ConstMirPolSetup * defpolsel_p
Definition: MirFiller.h:499
unsigned int uInt
Definition: aipstype.h:51
virtual void updateSource(FillMetadata &fm, casacore::Double time)
handle an update to the source; this is a callback routine that is part of the MirVarHandler interfac...
A description of a Miriad spectroscopy (correlator) setup.
Definition: FillMetadata.h:185
#define casacore
&lt;X11/Intrinsic.h&gt; #defines true, false, casacore::Bool, and String.
Definition: X11Intrinsic.h:42