casacore
Loading...
Searching...
No Matches
ImageProxy.h
Go to the documentation of this file.
1//# ImageProxy.h: Proxy interface to images
2//# Copyright (C) 1997-2007
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 IMAGES_IMAGEPROXY_H
27#define IMAGES_IMAGEPROXY_H
28
29//# Includes
30#include <casacore/casa/aips.h>
31#include <casacore/images/Images/MaskSpecifier.h>
32#include <casacore/lattices/Lattices/LatticeBase.h>
33#include <casacore/lattices/Lattices/TiledShape.h>
34#include <casacore/casa/Containers/ValueHolder.h>
35#include <casacore/casa/Containers/Record.h>
36#include <memory>
37
38namespace casacore {
39
40 //# Forward Declarations.
41 class ImageInfo;
42 template<typename T> class ImageInterface;
43 class LatticeExprNode;
44 class CoordinateSystem;
45 class ImageAttrHandler;
46
47 // <synopsis>
48 // ImageProxy is a proxy to an image having data type Float, Double,
49 // Complex, or DComplex. Its primary purpose is to be bind the images
50 // module to Python through pyrap.images. However, it can also be used
51 // directly in C++.
52 //
53 // An ImageProxy object can be constructed for an image stored on disk in
54 // Casacore, FITS, HDF5, or Miriad format. It can also be constructed given
55 // a shape or an N-dim array with values.
56 // Furthermore it can be constructed from a LEL expression (see class ImageExpr)
57 // or a vector of images to be concatenated (see class ImageConcat).
58 //
59 // Many functions exist to operate on an ImageProxy object. For example:
60 // <ul>
61 // <li> get meta info (shape, data type, coordinates, etc.)
62 // <li> save in Casacore, HDF5, or FITS format.
63 // <li> regrid.
64 // <li> get statistics.
65 // <li> form a subimage (which is done in a virtual way).
66 // </ul>
67 // Functions regrid and statistics can only be used for Float images.
68 // They throw an exception for images with other data types.
69 // Note that using a LEL expression it is possible to (virtually) convert an
70 // image with another type to a Float image.
71 // </synopsis>
72
74 {
75 public:
76 // Default constructor is needed for Boost-Python.
78
79 // Construct from the concatenation of the images along the axis.
80 // The axis must be given as a Fortran-array axis.
81 // All images must be of the same data type.
82 ImageProxy (const Vector<String>& names, Int axis);
83
84 // Construct from a string that contains an image name or image expression.
85 // It is opened using ImageOpener.
86 ImageProxy (const String& name, const String& mask,
87 const std::vector<ImageProxy>& images);
88
89 // Construct from the concatenation of the image objects along the axis.
90 // The axis must be given as a Fortran-array axis.
91 // All images must be of the same data type.
92 //# The dummy arguments are needed to let all constructors have a
93 //# different number of arguments (for Boost-Python).
94 ImageProxy (const std::vector<ImageProxy>& images, Int axis,
95 Int dummy1=0, Int dummy2=0);
96
97 // Construct from a ValueHolder containing an Array of Float or Complex.
98 // If the name is empty it is created as a temporary image, otherwise
99 // as a PagedImage or HDF5Image.
100 // If the coordinates record is empty, default coordinates are used.
101 // A mask is created if the mask name or mask value is not empty.
102 ImageProxy (const ValueHolder& values,
103 const ValueHolder& mask,
104 const Record& coordinates,
105 const String& imageName = String(),
106 Bool overwrite = True,
107 Bool asHDF5 = False,
108 const String& maskName = String(),
109 const IPosition& tileShape = IPosition());
110
111 // Construct from a shape.
112 // If the name is empty it is created as a temporary image, otherwise
113 // as a PagedImage or HDF5Image.
114 // If the coordinates record is empty, default coordinates are used.
115 // A mask is created if the mask name is not empty.
117 const ValueHolder& value,
118 const Record& coordinates,
119 const String& imageName = String(),
120 Bool overwrite = True,
121 Bool asHDF5 = False,
122 const String& maskName = String(),
123 const IPosition& tileShape = IPosition(),
124 Int dummy=0);
125
126 // Construct from an existing image object.
127 ImageProxy (const std::shared_ptr<LatticeBase>&);
128
129 // Copy constructor (reference semantics).
131
132 // Assignment (reference semantics).
134
136
137 // Open the image (which can also be an expression).
138 // It throws an exception if not succeeded.
140 const String& mask = String(),
141 const std::vector<ImageProxy>& images = std::vector<ImageProxy>());
142
143 // Open an image in the file/table with the given name.
144 // The specified mask will be applied (default is default mask).
145 // A null pointer is returned for an unknown image type.
146 // Non-Casacore image types must have been registered to be known.
147 // If not successful, try to open it as an image expression.
148 static LatticeBase* openImageOrExpr (const String& str,
149 const MaskSpecifier&,
150 const Block<LatticeExprNode>& nodes);
151
152 // Close the image by setting all pointers to 0.
153 void close();
154
155 // Turn the ImageProxy into a LatticeExprNode.
157
158 // Is the image persistent or temporary.
160
161 // Get the name of the image.
162 String name (Bool stripPath=False) const;
163
164 // Get the shape of the image.
166
167 // Get the dimensionality of the image.
168 uInt ndim() const;
169
170 // Get the size of the image (nr of pixels).
171 uInt size() const;
172
173 // Get the data type of the image.
175
176 DataType type() const;
177
178 // Get the image type (PagedImage, HDF5Image, etc.)
180
181 // Get a chunk of data.
183 const IPosition& trc,
184 const IPosition& inc);
185
186 // Get a chunk of the mask.
188 const IPosition& trc,
189 const IPosition& inc);
190
191 // Put a chunk of data.
192 void putData (const ValueHolder&,
193 const IPosition& blc,
194 const IPosition& inc);
195
196 // Put a chunk of the mask.
197 // The mask will be created if not present yet.
198 // That will not be done if the entire mask is True.
200 const IPosition& blc,
201 const IPosition& inc);
202
203 // Does the image have a read or write lock?
204 Bool hasLock (Bool writeLock = False);
205
206 // Try to acquire a read or write lock.
207 // nattempts=0 means wait until acquired. Otherwise every second an
208 // attempt is done.
209 void lock (Bool writeLock=False, Int nattempts=0);
210
211 // Release the lock acquired by lock().
212 void unlock();
213
214 // Get the names of the attribute groups.
216
217 // Create a new attribute group.
218 void createAttrGroup (const String& groupName);
219
220 // Get the names of all attributes in a group.
221 Vector<String> attrNames (const String& groupName) const;
222
223 // Get the number of rows in an attribute group.
224 uInt attrNrows (const String& groupName) const;
225
226 // Get the value of an attribute in a group row.
227 ValueHolder getAttr (const String& groupName,
228 const String& attrName,
229 uInt rownr) const;
230
231 // Get all attributes in a group row.
232 Record getAttrRow (const String& groupName,
233 uInt rownr) const;
234
235 // Get the unit(s) of an attribute in a group.
237 const String& attrName) const;
238
239 // Get the measinfo of an attribute in a group.
241 const String& attrName) const;
242
243 // Put the value, unit, and measinfo of an attribute in a group row.
244 // The attribute or row is added if new.
245 void putAttr (const String& groupName, const String& attrName, uInt rownr,
246 const ValueHolder& value,
247 const Vector<String>& units,
248 const Vector<String>& measInfo);
249
250 // Form a new (virtual) image being a subset of the image.
251 // It uses preserveAxesOrder=False.
253 const IPosition& trc,
254 const IPosition& inc,
255 Bool dropDegenerate=True);
256 // Same with a new function name for backward compatibility with old pyrap.
258 const IPosition& trc,
259 const IPosition& inc,
260 Bool dropDegenerate,
261 Bool preserveAxesOrder);
262
263 // Get the brightness unit.
264 String unit() const;
265
266 // Get the coordinate system.
268
270
271 // Convert a pixel coordinate to world coordinate.
272 // if <src>reverseAxes=True</src> the input and output vector will be
273 // reversed (as needed for pyrap).
275 Bool reverseAxes);
276
277 // Convert a world coordinate to pixel coordinate.
278 // if <src>reverseAxes=True</src> the input and output vector will be
279 // reversed (as needed for pyrap).
281 Bool reverseAxes);
282
283 // Get the image info.
285
287
288 // Get the miscellaneous info.
290
291 // Get the history.
293
294 // Write the image in FITS format.
295 // See class ImageFITSConverter for a description of the arguments.
296 // Currently only a float image can be written to FITS.
297 void toFits (const String& fitsfile, Bool overwrite=True,
298 Bool velocity=True, Bool optical=True, Int bitpix=-32,
299 Double minpix=1, Double maxpix=-1) const;
300
301 // Write the image to an image file with the given name.
302 // An exception is thrown if the name is the name of an already open image.
303 void saveAs (const String& fileName, Bool overwrite=True,
304 Bool hdf5=False,
305 Bool copyMask=True, const String& newMaskName=String(),
306 const IPosition& newTileShape=IPosition()) const;
307
308 // Return the statistics for the given axes.
309 // E.g., if axes 0,1 is given in a 3-dim image, the statistics are
310 // calculated for each plane along the 3rd axis.
311 // MinMaxValues can be given to include or exclude (4th argument) pixels
312 // with values in the given range. If only one value is given, min=-abs(val)
313 // and max=abs(val).
314 // Robust statistics (Median, MedAbsDevMed, and Quartile) can be returned
315 // too.
317 const String& mask,
318 const ValueHolder& minMaxValues,
319 Bool exclude = False,
320 Bool robust = False) const;
321
322 // Regrid the image on the given axes to the given coordinate system.
323 // The output is stored in the given file; it no file name is given a
324 // temporary image is made.
325 // If the output shape is empty, the old shape is used.
326 // <src>replicate=True</src> means replication rather than regridding.
328 const String& outfile = String(),
329 Bool overwriteOutFile = True,
330 const IPosition& outShape = IPosition(),
331 const Record& coordSys = Record(),
332 const String& method = "linear",
333 Int decimate = 10,
334 Bool replicate = False,
335 Bool doRefChange = True,
336 Bool forceRegrid = False);
337
338 // Check and adjust blc, trc, or inc using the shape.
339 // <group>
340 static IPosition adjustBlc (const IPosition& blc, const IPosition& shp);
341 static IPosition adjustTrc (const IPosition& trc, const IPosition& shp);
342 static IPosition adjustInc (const IPosition& inc, const IPosition& shp);
343 // </group>
344
345
346 /*
347
348 ImageProxy rotate(const String& outfile,
349 const IPosition& shape,
350 const Quantity& pa, Record& region,
351 const String& mask,
352 const String& method = "cubic",
353 Int decimate = 0,
354 Bool replicate = False,
355 Bool dropdeg = False,
356 Bool overwrite = False);
357
358
359 Bool setbrightnessunit (const String& unit);
360
361 Bool setcoordsys (const Record& csys);
362
363 Bool sethistory (const String& origin, const Vector<String>& history);
364
365 Bool setmiscinfo (const Record& info);
366
367 ImageProxy subimage(const String& outfile, Record& region,
368 const String& mask,
369 Bool dropdeg = False,
370 Bool overwrite = False,
371 Bool list = True);
372
373 Vector<Double> topixel(Record& value);
374
375 */
376
378 { return itsLattice.operator->(); }
379
380 private:
381 // Form an ImageProxy object from an existing image object.
383
384 // Throw an exception if the object is null.
385 void checkNull() const;
386
387 // Make an image from an array or shape.
388 template<typename T>
390 const IPosition& shape, const Record& coordinates,
391 const String& fileName, Bool asHDF5,
392 const String& maskName,
393 const IPosition& tileShape);
394
395 // Form a concatenated image.
396 // <group>
397 void concatImages (const std::vector<ImageProxy>& images, Int axis);
398 void concatImagesFloat (const std::vector<ImageProxy>& images, Int axis);
399 void concatImagesDouble (const std::vector<ImageProxy>& images, Int axis);
400 void concatImagesComplex (const std::vector<ImageProxy>& images, Int axis);
401 void concatImagesDComplex (const std::vector<ImageProxy>& images, Int axis);
402 // </group>
403
404 // Setup the pointers for the various image data types.
405 void setup();
406
407 // Setup the pointers for the various image data types.
408 // It takes over the lattice pointer.
409 void setup (LatticeBase* lattice);
410
411 // Centre all axes except the Stokes one.
413 const IPosition& shape) const;
414
415 // Put the mask and create it if needed.
416 template<typename T>
418 const ValueHolder& value,
419 const IPosition& blc,
420 const IPosition& inc);
421
422 // Copy the image to an image (PagedImage or HDF5Image) with the given name.
423 // A new tile shape can be given.
424 // If the image is masked, the mask can be copied as well.
425 template <typename T>
426 void saveImage (const String& fileName,
427 Bool hdf5, Bool copyMask,
428 const String& newMaskName,
429 const IPosition& newTileShape,
430 const ImageInterface<T>& image) const;
431
432 // Form a tiled shape from the current shape and a possible new tile shape.
433 TiledShape makeTiledShape (const IPosition& newTileShape,
434 const IPosition& shape,
435 const IPosition& oldTileShape=IPosition()) const;
436
437 // Calculate the statistics.
438 template<typename T>
440 const Vector<Int>& axes,
441 const String& mask,
442 const ValueHolder& minMaxValues,
443 Bool exclude,
444 Bool robust) const;
445
446 // Do the actual regridding.
447 template<typename T>
449 const Vector<Int>& axes,
450 const String& outfile,
451 const IPosition& shape,
452 const Record& coordSys,
453 const String& method,
454 Int decimate,
455 Bool replicate,
456 Bool doRefChange,
457 Bool force);
458
459 // Make a coordinate system from the Record.
460 // The cylindrical fix is applied if needed.
462 const IPosition& shape) const;
463
464
465 //# Data members.
466 //# itsLattice is the real data; the pointers are for type convenience only.
467 std::shared_ptr<LatticeBase> itsLattice;
468 ImageInterface<Float>* itsImageFloat; //# reference, so no delete
469 ImageInterface<Double>* itsImageDouble; //# reference, so no delete
470 ImageInterface<Complex>* itsImageComplex; //# reference, so no delete
471 ImageInterface<DComplex>* itsImageDComplex; //# reference, so no delete
472 const CoordinateSystem* itsCoordSys; //# reference, so no delete
473 ImageAttrHandler* itsAttrHandler; //# reference, so no delete
474 };
475
476} // end namespace casacore
477
478#endif
simple 1-D array
Definition Block.h:198
void makeImage(const Array< T > &array, const Array< Bool > &mask, const IPosition &shape, const Record &coordinates, const String &fileName, Bool asHDF5, const String &maskName, const IPosition &tileShape)
Make an image from an array or shape.
const CoordinateSystem * itsCoordSys
Definition ImageProxy.h:472
static LatticeBase * openImage(const String &name, const String &mask=String(), const std::vector< ImageProxy > &images=std::vector< ImageProxy >())
Open the image (which can also be an expression).
Record coordSys() const
Get the coordinate system.
CoordinateSystem makeCoordinateSystem(const Record &coordinates, const IPosition &shape) const
Make a coordinate system from the Record.
ImageProxy & operator=(const ImageProxy &)
Assignment (reference semantics).
ImageProxy(const String &name, const String &mask, const std::vector< ImageProxy > &images)
Construct from a string that contains an image name or image expression.
void putAttr(const String &groupName, const String &attrName, uInt rownr, const ValueHolder &value, const Vector< String > &units, const Vector< String > &measInfo)
Put the value, unit, and measinfo of an attribute in a group row.
ImageProxy(const ValueHolder &values, const ValueHolder &mask, const Record &coordinates, const String &imageName=String(), Bool overwrite=True, Bool asHDF5=False, const String &maskName=String(), const IPosition &tileShape=IPosition())
Construct from a ValueHolder containing an Array of Float or Complex.
void saveAs(const String &fileName, Bool overwrite=True, Bool hdf5=False, Bool copyMask=True, const String &newMaskName=String(), const IPosition &newTileShape=IPosition()) const
Write the image to an image file with the given name.
void putData(const ValueHolder &, const IPosition &blc, const IPosition &inc)
Put a chunk of data.
ImageInterface< DComplex > * itsImageDComplex
Definition ImageProxy.h:471
const CoordinateSystem & coordSysObject() const
uInt size() const
Get the size of the image (nr of pixels).
static LatticeBase * openImageOrExpr(const String &str, const MaskSpecifier &, const Block< LatticeExprNode > &nodes)
Open an image in the file/table with the given name.
Record statistics(const Vector< Int > &axes, const String &mask, const ValueHolder &minMaxValues, Bool exclude=False, Bool robust=False) const
Return the statistics for the given axes.
void concatImagesFloat(const std::vector< ImageProxy > &images, Int axis)
ImageProxy()
Default constructor is needed for Boost-Python.
ImageProxy(LatticeBase *)
Form an ImageProxy object from an existing image object.
uInt attrNrows(const String &groupName) const
Get the number of rows in an attribute group.
void concatImagesComplex(const std::vector< ImageProxy > &images, Int axis)
ImageProxy subImage2(const IPosition &blc, const IPosition &trc, const IPosition &inc, Bool dropDegenerate, Bool preserveAxesOrder)
Same with a new function name for backward compatibility with old pyrap.
void concatImagesDComplex(const std::vector< ImageProxy > &images, Int axis)
ValueHolder getAttr(const String &groupName, const String &attrName, uInt rownr) const
Get the value of an attribute in a group row.
void lock(Bool writeLock=False, Int nattempts=0)
Try to acquire a read or write lock.
Record miscInfo() const
Get the miscellaneous info.
void centreRefPix(CoordinateSystem &cSys, const IPosition &shape) const
Centre all axes except the Stokes one.
ValueHolder getMask(const IPosition &blc, const IPosition &trc, const IPosition &inc)
Get a chunk of the mask.
ImageInterface< Complex > * itsImageComplex
Definition ImageProxy.h:470
void putMask(const ValueHolder &value, const IPosition &blc, const IPosition &inc)
Put a chunk of the mask.
Bool hasLock(Bool writeLock=False)
Does the image have a read or write lock?
DataType type() const
LatticeExprNode makeNode() const
Turn the ImageProxy into a LatticeExprNode.
IPosition shape() const
Get the shape of the image.
ImageInterface< Float > * itsImageFloat
Definition ImageProxy.h:468
Vector< String > attrNames(const String &groupName) const
Get the names of all attributes in a group.
Record imageInfo() const
Get the image info.
ImageProxy(const IPosition &shape, const ValueHolder &value, const Record &coordinates, const String &imageName=String(), Bool overwrite=True, Bool asHDF5=False, const String &maskName=String(), const IPosition &tileShape=IPosition(), Int dummy=0)
Construct from a shape.
void unlock()
Release the lock acquired by lock().
Bool isPersistent() const
Is the image persistent or temporary.
ImageProxy(const ImageProxy &)
Copy constructor (reference semantics).
void concatImagesDouble(const std::vector< ImageProxy > &images, Int axis)
ImageAttrHandler * itsAttrHandler
Definition ImageProxy.h:473
Vector< String > getAttrUnit(const String &groupName, const String &attrName) const
Get the unit(s) of an attribute in a group.
Vector< Double > toWorld(const Vector< Double > &pixel, Bool reverseAxes)
Convert a pixel coordinate to world coordinate.
void concatImages(const std::vector< ImageProxy > &images, Int axis)
Form a concatenated image.
TiledShape makeTiledShape(const IPosition &newTileShape, const IPosition &shape, const IPosition &oldTileShape=IPosition()) const
Form a tiled shape from the current shape and a possible new tile shape.
Vector< Double > toPixel(const Vector< Double > &world, Bool reverseAxes)
Convert a world coordinate to pixel coordinate.
ImageProxy(const std::shared_ptr< LatticeBase > &)
Construct from an existing image object.
const ImageInfo & imageInfoObject() const
void saveImage(const String &fileName, Bool hdf5, Bool copyMask, const String &newMaskName, const IPosition &newTileShape, const ImageInterface< T > &image) const
Copy the image to an image (PagedImage or HDF5Image) with the given name.
ImageProxy regrid(const Vector< Int > &axes=Vector< Int >(), const String &outfile=String(), Bool overwriteOutFile=True, const IPosition &outShape=IPosition(), const Record &coordSys=Record(), const String &method="linear", Int decimate=10, Bool replicate=False, Bool doRefChange=True, Bool forceRegrid=False)
Regrid the image on the given axes to the given coordinate system.
ImageProxy subImage(const IPosition &blc, const IPosition &trc, const IPosition &inc, Bool dropDegenerate=True)
Form a new (virtual) image being a subset of the image.
static IPosition adjustBlc(const IPosition &blc, const IPosition &shp)
Check and adjust blc, trc, or inc using the shape.
String imageType() const
Get the image type (PagedImage, HDF5Image, etc.)
Vector< String > attrGroupNames() const
Get the names of the attribute groups.
Vector< String > history() const
Get the history.
ImageInterface< Double > * itsImageDouble
Definition ImageProxy.h:469
uInt ndim() const
Get the dimensionality of the image.
ImageProxy(const std::vector< ImageProxy > &images, Int axis, Int dummy1=0, Int dummy2=0)
Construct from the concatenation of the image objects along the axis.
String unit() const
Get the brightness unit.
void checkNull() const
Throw an exception if the object is null.
Vector< String > getAttrMeas(const String &groupName, const String &attrName) const
Get the measinfo of an attribute in a group.
ImageProxy(const Vector< String > &names, Int axis)
Construct from the concatenation of the images along the axis.
String dataType() const
Get the data type of the image.
String name(Bool stripPath=False) const
Get the name of the image.
static IPosition adjustTrc(const IPosition &trc, const IPosition &shp)
void setup()
Setup the pointers for the various image data types.
LatticeBase * getLattice() const
Definition ImageProxy.h:377
void setup(LatticeBase *lattice)
Setup the pointers for the various image data types.
void createAttrGroup(const String &groupName)
Create a new attribute group.
ValueHolder getData(const IPosition &blc, const IPosition &trc, const IPosition &inc)
Get a chunk of data.
static IPosition adjustInc(const IPosition &inc, const IPosition &shp)
void toFits(const String &fitsfile, Bool overwrite=True, Bool velocity=True, Bool optical=True, Int bitpix=-32, Double minpix=1, Double maxpix=-1) const
Write the image in FITS format.
void close()
Close the image by setting all pointers to 0.
void doPutMask(ImageInterface< T > &image, const ValueHolder &value, const IPosition &blc, const IPosition &inc)
Put the mask and create it if needed.
std::shared_ptr< LatticeBase > itsLattice
Definition ImageProxy.h:467
ImageProxy doRegrid(const ImageInterface< T > &image, const Vector< Int > &axes, const String &outfile, const IPosition &shape, const Record &coordSys, const String &method, Int decimate, Bool replicate, Bool doRefChange, Bool force)
Do the actual regridding.
Record makeStatistics(const ImageInterface< T > &image, const Vector< Int > &axes, const String &mask, const ValueHolder &minMaxValues, Bool exclude, Bool robust) const
Calculate the statistics.
Record getAttrRow(const String &groupName, uInt rownr) const
Get all attributes in a group row.
String: the storage and methods of handling collections of characters.
Definition String.h:223
this file contains all the compiler specific defines
Definition mainpage.dox:28
const Bool False
Definition aipstype.h:42
unsigned int uInt
Definition aipstype.h:49
TableExprNode array(const TableExprNode &values, const TableExprNodeSet &shape)
Create an array of the given shape and fill it with the values.
Definition ExprNode.h:1933
LatticeExprNode mask(const LatticeExprNode &expr)
This function returns the mask of the given expression.
int Int
Definition aipstype.h:48
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
LatticeExprNode value(const LatticeExprNode &expr)
This function returns the value of the expression without a mask.
const Bool True
Definition aipstype.h:41
double Double
Definition aipstype.h:53