casacore
Loading...
Searching...
No Matches
MeasurementSet.h
Go to the documentation of this file.
1// # MeasurementSet.h: A Table to hold astronomical data (a set of Measurements)
2// # Copyright (C) 1996,1997,1999,2000,2001,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 addressed 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#ifndef MS_MEASUREMENTSET_H
27#define MS_MEASUREMENTSET_H
28
29#include <casacore/casa/aips.h>
30#include <casacore/ms/MeasurementSets/MSTable.h>
31#include <casacore/ms/MeasurementSets/MSMainEnums.h>
32#include <casacore/ms/MeasurementSets/MSAntenna.h>
33#include <casacore/ms/MeasurementSets/MSDataDescription.h>
34#include <casacore/ms/MeasurementSets/MSDoppler.h>
35#include <casacore/ms/MeasurementSets/MSFeed.h>
36#include <casacore/ms/MeasurementSets/MSField.h>
37#include <casacore/ms/MeasurementSets/MSFlagCmd.h>
38#include <casacore/ms/MeasurementSets/MSFreqOffset.h>
39#include <casacore/ms/MeasurementSets/MSHistory.h>
40#include <casacore/ms/MeasurementSets/MSObservation.h>
41#include <casacore/ms/MeasurementSets/MSPointing.h>
42#include <casacore/ms/MeasurementSets/MSPolarization.h>
43#include <casacore/ms/MeasurementSets/MSProcessor.h>
44#include <casacore/ms/MeasurementSets/MSSource.h>
45#include <casacore/ms/MeasurementSets/MSSpectralWindow.h>
46#include <casacore/ms/MeasurementSets/MSState.h>
47#include <casacore/ms/MeasurementSets/MSSysCal.h>
48#include <casacore/ms/MeasurementSets/MSWeather.h>
49#include <set>
50
51namespace casacore { // # NAMESPACE CASACORE - BEGIN
52
53class MrsEligibility { // Memory Resident Subtable (Mrs) Eligibility (no pun intended)
54
55 public:
57
58 friend MrsEligibility operator-(const MrsEligibility& a, SubtableId subtableId);
59 friend MrsEligibility operator+(const MrsEligibility& a, SubtableId subtableId);
62
63 // Returns true if the specified subtable is in the set of subtables
64 // eligible for memory residency.
65 Bool isEligible(SubtableId subtableId) const;
66
67 // Factory methods to create MrsEligibility sets. The two functions with
68 // parameter packs used to be variable argument functions. Because of this,
69 // it used to be required to use the id MSMainEnums::UNDEFINED_KEYWORD as the
70 // last parameter.
71 // Now that the functions use parameter packs, this is no longer required,
72 // and a value of UNDEFINED_KEYWORD is ignored.
76
77 template <typename... SubtableIds>
78 static MrsEligibility eligibleSubtables(SubtableIds... subtableIds) {
79 MrsEligibility eligible;
80 for (const SubtableId subtableId : {subtableIds...}) {
81 // This function was converted from variable argument functions
82 // to using a parameter pack. Because of this, callers specify 'UNDEFINED_KEYWORD'
83 // as the last parameter, which can just be ignored.
84 if (subtableId != MSMainEnums::UNDEFINED_KEYWORD) {
85 ThrowIf(!isSubtable(subtableId), "Invalid subtable ID: " + std::to_string(subtableId));
86 eligible.eligible_p.insert(subtableId);
87 }
88 }
89 return eligible;
90 }
91
92 template <typename... SubtableIds>
93 static MrsEligibility allButTheseSubtables(SubtableIds... subtableIds) {
94 MrsEligibility ineligible;
95 for (const SubtableId subtableId : {subtableIds...}) {
96 // This function was converted from variable argument functions
97 // to using a parameter pack. Because of this, callers specify 'UNDEFINED_KEYWORD'
98 // as the last parameter, which can just be ignored.
99 if (subtableId != MSMainEnums::UNDEFINED_KEYWORD) {
100 ThrowIf(!isSubtable(subtableId), "Invalid subtable ID: " + std::to_string(subtableId));
101 ineligible.eligible_p.insert(subtableId);
102 }
103 }
104
105 // Get the set of all subtables and then subtract off the
106 // caller specified columns. Return the result
107 MrsEligibility eligible;
108 set_difference(allSubtables_p.eligible_p.begin(), allSubtables_p.eligible_p.end(),
109 ineligible.eligible_p.begin(), ineligible.eligible_p.end(),
110 inserter(eligible.eligible_p, eligible.eligible_p.begin()));
111 return eligible;
112 }
113
114 private:
115 typedef std::set<MSMainEnums::PredefinedKeywords> Eligible;
116
118
120
121 static Bool isSubtable(SubtableId subtableId);
122};
123
124// Creates a new MrsEligibilitySet by adding or removing the specified subtable or
125// the specified set of subtables.
130
131// # Forward Declarations, more could be if they weren't part of the
132// # static classes
133class SetupNewTable;
134template <class T>
135class Block;
136class MDirection;
137class MEpoch;
138class MFrequency;
139class MPosition;
140class Record;
141
142// # forward declared so that the following typedef is up-front
143class MeasurementSet;
144
145// MeasurementSet is too cumbersome for a number of common uses,
146// so we give a typedef here.
148
149// <summary>
150// A Table intended to hold astronomical data (a set of Measurements).
151// </summary>
152
153// <use visibility=export>
154
155// <reviewed reviewer="Bob Garwood" date="1997/02/01" tests="tMeasurementSet.cc" demos="">
156
157// <prerequisite>
158// <li> <linkto module="Tables:description">Tables</linkto> module
159// <li> <linkto class="MSTable">MSTable</linkto>
160// </prerequisite>
161//
162// <etymology>
163// The MeasurementSet is where all data are ultimately to be found
164// in Casacore. Since, this is a collection of
165// measurements (either actual or simulated), the term MeasurementSet
166// seems appropriate.
167// </etymology>
168//
169// <synopsis>
170// A MeasurementSet is a Table. Most operations on a MeasurementSet are
171// Table operations. See the <linkto module="Tables:description">Tables</linkto>
172// module for a list of those operations. The member functions provided by this
173// class are primarily convenience functions to help users follow the
174// agreed upon column and keyword naming conventions. They are useful when
175// creating a Table following the MeasurementSet conventions from
176// scratch as well as when creating the column objects to access those
177// columns.
178//
179// The standard way of accessing
180// table columns is through Strings. Mistakes in typing the column
181// name will not be caught at compile time (and may not be caught at
182// run time). We have therefore decided to use an enumeration
183// to specify columns so that many mistakes will be caught at compile
184// time. This requires functions to map to and from this enumeration
185// to the strings that are ultimately used.
186//
187// Upon destruction, the table is checked to see that the
188// MeasurementSet remains valid, i.e., all required columns are present
189// An exception is thrown if not all required columns are present
190// Nevertheless, the table will be flushed to disk if it is writable -
191// preserving its state.
192//
193// A MeasurementSet has a number of required subtables. These are stored
194// as keywords in the Table. Access to these subtables is provided via
195// member functions (e.g. antenna() for the ANTENNA table). All subtables
196// have associated MeasurementSet-like classes defined for them (MSAntenna
197// for the ANTENNA table) which provide analogous column and keyword mapping
198// as provided here.
199//
200// While the class name, MeasurementSet, is descriptive, it is often
201// too long for many common uses. The typedef MS is provided as
202// a convenient shorthand for MeasurementSet. The example below uses this
203// typedef.
204//
205// Due to the inheritance scheme, it was necessary to separate the enumerations
206// used by MeasurementSet into a separate class,
207// <linkto class=MSMainEnums>MSMainEnums</linkto>.
208//
209// </synopsis>
210//
211// <example>
212// This example illustrates a simple use of the MeasurementSet class.
213// <srcblock>
214// // create the table descriptor
215// TableDesc simpleDesc = MS::requiredTableDesc();
216// // set up a new table
217// SetupNewTable newTab("simpleTab", simpleDesc, Table::New);
218// // create the MeasurementSet
219// MeasurementSet simpleMS(newTab);
220// // now we need to define all required subtables
221// // the following call does this for us if we don't need to
222// // specify details of Storage Managers for columns.
223// simpleMS.createDefaultSubtables(Table::New);
224// // fill MeasurementSet via its Table interface
225// // For example, construct one of the columns
226// TableColumn feed(simpleMS, MS::columnName(MS::FEED1));
227// rownr_t rownr = 0;
228// // add a row
229// simpleMS.addRow();
230// // set the values in that row, e.g. the feed column
231// feed.putScalar(rownr,1);
232// // Access a subtable
233// ArrayColumn<Double> antpos(simpleMS.antenna(),
234// MSAntenna::columnName(MSAntenna::POSITION));
235// simpleMS.antenna().addRow();
236// Array<Double> position(3);
237// position(0)=1.; position(1)=2.; position(2)=3.;
238// antpos.put(0,position);
239// // etc.
240// </srcblock>
241//
242// </example>
243//
244// <motivation>
245// The Table module is more than adequate as a container of data.
246// However, in order for applications to be useful with data from
247// different sources, some conventions need to be adopted in the use
248// of Tables to store data. The MeasurementSet is
249// where those conventions are defined and, to some extent, enforced.
250//
251// There are a number of reasons why MeasurementSet is more
252// than just a Table.
253// <ul>
254// <li> To provide one location where the column and keyword names, data
255// types, and table comment strings are found.
256// <li> To provide one location where the required table descriptor for
257// the MeasurementSet is found.
258// <li> To provide a means of verifying the validity of a MeasurementSet
259// at construction and destruction.
260// <li> To allow application programmers to catch name or data type
261// mistakes at compile time rather than at run time.
262// </ul>
263//
264// </motivation>
265//
266// <todo asof="1996/2/22">
267// <li> referenceCopy() should be more flexible with the storage managers used
268// for the columns which are not merely references.
269// <li> When ForwardColumnEngine is fixed so that it can deal with
270// tables already in the cache, modify the test program. It may also
271// be necessary to modify referenceCopy().
272// </todo>
273
274class MeasurementSet : public MSTable<MSMainEnums>, public MSMainEnums {
275 public:
276 // This constructs an empty MeasurementSet, only useful to assign to
277 // (it is not a valid MS yet).
279
280 // These constructors mirror the Table ones with additional checking
281 // on validity (verifying that the MS will have the required columns
282 // and keywords)
283 // An exception is thrown if the constructed Table is not a valid MS
284 // <thrown>
285 // <li> AipsError
286 // </thrown>
287 // <group name=tableLikeConstructors>
288
291
292 MeasurementSet(const String& tableName, const TableLock& lockOptions, bool doNotLockSubtables,
294 // Allows keeping subtables unlocked/read-locked independent of lock
295 // mode of main table.
296
297 MeasurementSet(const String& tableName, const String& tableDescName, TableOption = Table::Old);
298 MeasurementSet(const String& tableName, const String& tableDescName, const TableLock& lockOptions,
300 MeasurementSet(SetupNewTable& newTab, rownr_t nrrow = 0, Bool initialize = False);
302 Bool initialize = False);
303 MeasurementSet(const Table& table, const MeasurementSet* otherMs = NULL);
304
305#ifdef HAVE_MPI
306 MeasurementSet(MPI_Comm comm, SetupNewTable& newTab, rownr_t nrrow = 0, Bool initialize = False);
307 MeasurementSet(MPI_Comm comm, SetupNewTable& newTab, const TableLock& lockOptions,
308 rownr_t nrrow = 0, Bool initialize = False);
309#endif // HAVE_MPI
310
312 // </group>
313
314 // As with tables, the destructor writes the table if necessary.
315 // Additional checking is done here to verify that all required
316 // columns are still present.
317 // If it is NOT valid, it will write the table and then throw an exception.
318 // <thrown>
319 // <li> AipsError
320 // </thrown>
322
323 // Assignment operator, reference semantics
325
326 // Make a special copy of this MS which references all columns from
327 // this MS except those mentioned; those are empty and writable.
328 // Each forwarded column has the same writable status as the underlying
329 // column. The mentioned columns all use the AipsIO storage manager.
330 // The main use of this is for the synthesis package where corrected and
331 // model visibilities are stored as new DATA columns in an MS which
332 // references the raw MS for the other columns. Except for these special
333 // cases, the use of this function will be rare.
335 const Block<String>& writableColumns) const;
336
337 // Converts the MS to make the specified set of subtables memory resident.
338 void setMemoryResidentSubtables(const MrsEligibility& mrsEligibility);
339
340 // Return the name of each of the subtables. This should be used by the
341 // filler to create the subtables in the correct location.
342 // <group>
360 // </group>
361
362 // Access functions for the subtables, using the MS-like interface for each
363 // <group>
367 MSFeed& feed() { return feed_p; }
368 MSField& field() { return field_p; }
376 MSSource& source() { return source_p; }
378 MSState& state() { return state_p; }
379 MSSysCal& sysCal() { return sysCal_p; }
381 const MSAntenna& antenna() const { return antenna_p; }
383 const MSDoppler& doppler() const { return doppler_p; }
384 const MSFeed& feed() const { return feed_p; }
385 const MSField& field() const { return field_p; }
386 const MSFlagCmd& flagCmd() const { return flagCmd_p; }
387 const MSFreqOffset& freqOffset() const { return freqOffset_p; }
388 const MSHistory& history() const { return history_p; }
389 const MSObservation& observation() const { return observation_p; }
390 const MSPointing& pointing() const { return pointing_p; }
391 const MSPolarization& polarization() const { return polarization_p; }
392 const MSProcessor& processor() const { return processor_p; }
393 const MSSource& source() const { return source_p; }
395 const MSState& state() const { return state_p; }
396 const MSSysCal& sysCal() const { return sysCal_p; }
397 const MSWeather& weather() const { return weather_p; }
398 // </group>
399
401
402 // Initialize the references to the subtables. You need to call
403 // this only if you assign new subtables to the table keywords.
404 // This also checks for validity of the table and its subtables.
405 // Set clear to True to clear the subtable references (used in assignment)
406 void initRefs(Bool clear = False);
407
408 // Create default subtables: fills the required subtable keywords with
409 // tables of the correct type, mainly for testing and as an example of
410 // how to do this for specific fillers. In practice these tables will
411 // often have more things specified, like dimensions of arrays and
412 // storage managers for the various columns.
414#ifdef HAVE_MPI
416#endif // HAVE_MPI
417
418 // Initialize the statics appropriately. This does not need to be
419 // called by users, it is called by the implementation class
420 // MSTableImpl.
422
423 // Create DATA column from existing FLOAT_DATA column. Noop if DATA already
424 // exists or neither exists (returns False in that case).
426
427 // Validate Measure references - check that all Measure columns have their
428 // reference value set, report the ones that don't.
430
431 // Flush all the tables and subtables associated with this
432 // MeasurementSet. This function calls the Table::flush() function on the
433 // main table and all the standard subtables including optional
434 // subtables. See the Table class for a description of the sync argument.
435 void flush(Bool sync = False);
436
437 // Return a record of the indices that the msselection selection selected
438 Record msseltoindex(const String& spw = "", const String& field = "", const String& baseline = "",
439 const String& time = "", const String& scan = "", const String& uvrange = "",
440 const String& observation = "", const String& poln = "",
441 const String& taql = "");
442
443 protected:
444 // Clears all of the subtable components of this object (i.e., set to
445 // value of subtable's default constructor).
447
448 // Assigns one subtable to another if the original subtable (otherSubtable)
449 // is not null and is also memory resident
450 void copySubtable(const Table& otherSubtable, Table& subTable);
451
452 // Copies (assigns) all of the non-null subtables from the other MS into this one.
453 void copySubtables(const MeasurementSet& other);
454
455 // Returns true if the named subtable is eligible for memory residency.
456 Bool isEligibleForMemoryResidency(const String& subtableName) const;
457
458 // Opens all of the eligible subtables in memory resident form
460
461 // The top level name for MRS related CASARC settings
462 static String getMrsAipsRcBase() { return "MemoryResidentSubtables"; }
463
464 private:
465 // temporary function to add the CATEGORY keyword to the FLAG_CATEGORY
466 // column if it isn't there yet. 2000/08/22
467 // remove this and the calls next MS update
468 void addCat();
469
470 // check that the MS is the latest version (2.0)
472
473 // Creates subtables using an explicit MPI communicator (if MPI support
474 // is enabled)
475 template <typename T>
477
478 // Opens a single subtable as memory resident (if permitted).
479 template <typename Subtable>
480 void openMrSubtable(Subtable& subtable, const String& subtableName);
481
482 // Opens a single subtable if not present in MS object but defined in on-disk MS
483 template <typename Subtable>
484 void openSubtable(Subtable& subtable, const String& subtableName, Bool useLock);
485
486 // keep references to the subtables
489 MSDoppler doppler_p; // optional
499 MSSource source_p; // optional
502 MSSysCal sysCal_p; // optional
503 MSWeather weather_p; // optional
504
505 bool doNotLockSubtables_p; // used to prevent subtable locking to allow parallel interprocess
506 // sharing
507 int mrsDebugLevel_p; // logging level currently enabled
508 Bool hasBeenDestroyed_p; // required by the need to throw an exception in the destructor
510 Bool memoryResidentSubtables_p; // true if memory resident subtables are enabled
511 MrsEligibility mrsEligibility_p; // subtables which can be made memory resident
512};
513
514} // namespace casacore
515
516#endif
#define ThrowIf(c, m)
Throw an AipsError exception if the condition is true.
Definition Error.h:100
Enums for the MeasurementSet main table.
Definition MSMainEnums.h:59
PredefinedKeywords
Keywords with a predefined meaning.
@ UNDEFINED_KEYWORD
"True" keywords are defined.
void openSubtable(Subtable &subtable, const String &subtableName, Bool useLock)
Opens a single subtable if not present in MS object but defined in on-disk MS.
MSAntenna & antenna()
Access functions for the subtables, using the MS-like interface for each.
void createDefaultSubtables(MPI_Comm comm, Table::TableOption option=Table::Scratch)
MeasurementSet(const Table &table, const MeasurementSet *otherMs=NULL)
const MSFreqOffset & freqOffset() const
String fieldTableName() const
MSObservation & observation()
void copySubtables(const MeasurementSet &other)
Copies (assigns) all of the non-null subtables from the other MS into this one.
MrsEligibility getMrsEligibility() const
const MSObservation & observation() const
String stateTableName() const
MSFreqOffset & freqOffset()
const MSAntenna & antenna() const
String freqOffsetTableName() const
String processorTableName() const
const MSSource & source() const
MeasurementSet(const String &tableName, const String &tableDescName, TableOption=Table::Old)
Allows keeping subtables unlocked/read-locked independent of lock mode of main table.
const MSWeather & weather() const
void copySubtable(const Table &otherSubtable, Table &subTable)
Assigns one subtable to another if the original subtable (otherSubtable) is not null and is also memo...
Bool isEligibleForMemoryResidency(const String &subtableName) const
Returns true if the named subtable is eligible for memory residency.
MSDataDescription dataDesc_p
MeasurementSet(const String &tableName, const TableLock &lockOptions, TableOption=Table::Old)
const MSSpectralWindow & spectralWindow() const
const MSSysCal & sysCal() const
const MSHistory & history() const
MeasurementSet()
This constructs an empty MeasurementSet, only useful to assign to (it is not a valid MS yet).
Record msseltoindex(const String &spw="", const String &field="", const String &baseline="", const String &time="", const String &scan="", const String &uvrange="", const String &observation="", const String &poln="", const String &taql="")
Return a record of the indices that the msselection selection selected.
MeasurementSet(MPI_Comm comm, SetupNewTable &newTab, const TableLock &lockOptions, rownr_t nrrow=0, Bool initialize=False)
const MSState & state() const
MSAntenna antenna_p
keep references to the subtables
const MSField & field() const
void createDefaultSubtables(Table::TableOption option=Table::Scratch)
Create default subtables: fills the required subtable keywords with tables of the correct type,...
String flagCmdTableName() const
String spectralWindowTableName() const
String dopplerTableName() const
String historyTableName() const
String feedTableName() const
MSSpectralWindow & spectralWindow()
MeasurementSet(SetupNewTable &newTab, rownr_t nrrow=0, Bool initialize=False)
String sysCalTableName() const
void setMemoryResidentSubtables(const MrsEligibility &mrsEligibility)
Converts the MS to make the specified set of subtables memory resident.
const MSFeed & feed() const
MeasurementSet(const String &tableName, const String &tableDescName, const TableLock &lockOptions, TableOption=Table::Old)
virtual ~MeasurementSet()
As with tables, the destructor writes the table if necessary.
void flush(Bool sync=False)
Flush all the tables and subtables associated with this MeasurementSet.
const MSDataDescription & dataDescription() const
String sourceTableName() const
void openMrSubtables()
Opens all of the eligible subtables in memory resident form.
void createDefaultSubtables_impl(Table::TableOption option, T comm)
Creates subtables using an explicit MPI communicator (if MPI support is enabled).
void openMrSubtable(Subtable &subtable, const String &subtableName)
Opens a single subtable as memory resident (if permitted).
void initRefs(Bool clear=False)
Initialize the references to the subtables.
MSPolarization polarization_p
MSSpectralWindow spectralWindow_p
String observationTableName() const
String dataDescriptionTableName() const
MeasurementSet(const String &tableName, TableOption=Table::Old)
These constructors mirror the Table ones with additional checking on validity (verifying that the MS ...
Bool validateMeasureRefs()
Validate Measure references - check that all Measure columns have their reference value set,...
MeasurementSet(SetupNewTable &newTab, const TableLock &lockOptions, rownr_t nrrow=0, Bool initialize=False)
static String getMrsAipsRcBase()
The top level name for MRS related CASARC settings.
Bool makeComplexData()
Create DATA column from existing FLOAT_DATA column.
const MSFlagCmd & flagCmd() const
static MSTableMaps initMaps()
Initialize the statics appropriately.
String weatherTableName() const
String antennaTableName() const
Return the name of each of the subtables.
void addCat()
temporary function to add the CATEGORY keyword to the FLAG_CATEGORY column if it isn't there yet.
String polarizationTableName() const
MeasurementSet(MPI_Comm comm, SetupNewTable &newTab, rownr_t nrrow=0, Bool initialize=False)
MeasurementSet & operator=(const MeasurementSet &)
Assignment operator, reference semantics.
const MSProcessor & processor() const
const MSPolarization & polarization() const
MeasurementSet(const MeasurementSet &other)
void checkVersion()
check that the MS is the latest version (2.0)
MrsEligibility mrsEligibility_p
MSDataDescription & dataDescription()
const MSPointing & pointing() const
MeasurementSet referenceCopy(const String &newTableName, const Block< String > &writableColumns) const
Make a special copy of this MS which references all columns from this MS except those mentioned; thos...
void clearSubtables()
Clears all of the subtable components of this object (i.e., set to value of subtable's default constr...
MSPolarization & polarization()
String pointingTableName() const
MeasurementSet(const String &tableName, const TableLock &lockOptions, bool doNotLockSubtables, TableOption=Table::Old)
const MSDoppler & doppler() const
std::set< MSMainEnums::PredefinedKeywords > Eligible
Bool isEligible(SubtableId subtableId) const
Returns true if the specified subtable is in the set of subtables eligible for memory residency.
static MrsEligibility noneEligible()
static Bool isSubtable(SubtableId subtableId)
friend MrsEligibility operator-(const MrsEligibility &a, const MrsEligibility &b)
friend MrsEligibility operator+(const MrsEligibility &a, const MrsEligibility &b)
friend MrsEligibility operator-(const MrsEligibility &a, SubtableId subtableId)
Creates a new MrsEligibilitySet by adding or removing the specified subtable or the specified set of ...
static MrsEligibility defaultEligible()
static const MrsEligibility allSubtables_p
friend MrsEligibility operator+(const MrsEligibility &a, SubtableId subtableId)
static MrsEligibility allEligible()
Factory methods to create MrsEligibility sets.
static MrsEligibility allButTheseSubtables(SubtableIds... subtableIds)
MSMainEnums::PredefinedKeywords SubtableId
static MrsEligibility eligibleSubtables(SubtableIds... subtableIds)
Create a new table - define shapes, data managers, etc.
String: the storage and methods of handling collections of characters.
Definition String.h:355
const TableLock & lockOptions() const
Get the locking options.
Definition Table.h:1064
const String & tableName() const
Get the table name.
Definition Table.h:1121
TableOption
Define the possible options how a table can be opened.
Definition Table.h:168
@ Scratch
new table, which gets marked for delete
Definition Table.h:176
@ Old
existing table
Definition Table.h:170
String operator+(const String &lhs, const String &rhs)
Global concatenation operators.
Definition String.h:816
For temporary backward namespace compatibility, use casa as alias for casacore.
Definition mainpage.dox:28
const Bool False
Definition aipstype.h:42
TableExprNode time(const TableExprNode &node)
Definition ExprNode.h:1368
LatticeExprNode operator-(const LatticeExprNode &expr)
MeasurementSet MS
MeasurementSet is too cumbersome for a number of common uses, so we give a typedef here.
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
uInt64 rownr_t
Define the type of a row number in a table.
Definition aipsxtype.h:44