/usr/include/casacore/lattices/LRegions/FITSMask.h is in casacore-dev 2.2.0-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 | //# FITSMask.h: A Lattice that can be used for temporary storage
//# Copyright (C) 1997,1998,1999,2000,2001,2002
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library 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 Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//# Internet email: aips2-request@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
//#
//#
//# $Id$
#ifndef LATTICES_FITSMASK_H
#define LATTICES_FITSMASK_H
//# Includes
#include <casacore/casa/aips.h>
#include <casacore/casa/Arrays/Array.h>
#include <casacore/lattices/Lattices/Lattice.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
//# Forward Declarations
class TiledFileAccess;
// <summary>
// Provides an on-the-fly mask for FITS images
// </summary>
// <use visibility=export>
// <reviewed reviewer="" date="" tests="" demos="">
// </reviewed>
// <prerequisite>
// <li> <linkto class="Lattice">Lattice</linkto>
// <li> <linkto class="FITSImage">FITSImage</linkto>
// </prerequisite>
// <etymology>
// This class provides a pixel mask for the FITSImage class.
// </etymology>
// <synopsis>
// Masked values are indicated in FITS images via magic
// value blanking. This class provides an on-the-fly mask.
// The doGetSlice function reads the data values and returns
// an Array<Bool> which is True (good) or False (bad - blanked)
//
// Because FITSMask inherits from Lattice<Bool> it can be
// used as the private pixel mask data member for FITSImage
// returned by the MaskedLattice::pixelMask() functions
//
// The FITSMask object is constructed from a TiledFileAccess
// object. This must be the same one that the FITSImage
// object constructs internally. It is shared by both
// FITSImage and FITSMask.
//
// </synopsis>
//
// <example>
// <srcblock>
// </srcblock>
// </example>
// <motivation>
// FITSImage provides native access to FITS image files
// and needede an efficient way to handle the pixel mask
// other than iterating all the way through the image
// first to set a mask.
// </motivation>
//# <todo asof="yyyy/mm/dd">
//# <li> add this feature
//# <li> fix this bug
//# <li> start discussion of this possible extension
//# </todo>
class FITSMask : public Lattice<Bool>
{
public:
// Constructor (for 32 bit floating point). The pointer is not cloned,
// just copied.
FITSMask (TiledFileAccess* tiledFileAccess);
// Constructor (for 8 bit integers). The pointer is not cloned, just copied
// The scale, offset, magic blanking values must come from
// the FITS header ('bscale', 'bzero', 'blank')
FITSMask (TiledFileAccess* tiledFileAccess, Float scale, Float offset,
uChar magic, Bool hasBlanks);
// Constructor (for 16 bit integers). The pointer is not cloned, just copied
// The scale, offset, magic blanking values must come from
// the FITS header ('bscale', 'bzero', 'blank')
FITSMask (TiledFileAccess* tiledFileAccess, Float scale, Float offset,
Short magic, Bool hasBlanks);
// Constructor (for 32 bit integers). The pointer is not cloned, just copied
// The scale, offset, magic blanking values must come from
// the FITS header ('bscale', 'bzero', 'blank')
FITSMask (TiledFileAccess* tiledFileAccess, Float scale, Float offset,
Int magic, Bool hasBlanks);
// Copy constructor (reference semantics). The TiledFileAccess pointer
// is just copied.
FITSMask (const FITSMask& other) ;
// Destructor
virtual ~FITSMask();
// The assignment operator with reference semantics.
// The TiledFileAccess pointer is just copied.
FITSMask& operator= (const FITSMask& other);
// Make a copy of the object (reference semantics).
virtual Lattice<Bool>* clone() const;
// Is the FITSMask writable? Returns False. Although it is not hard
// to implement writing of the mask, data values would be lost
// because of magic blanking.
virtual Bool isWritable() const;
// Return the shape of the Lattice including all degenerate
// axes (ie. axes with a length of one)
IPosition shape() const;
// Do the actual getting of an array of values.
virtual Bool doGetSlice (Array<Bool>& buffer, const Slicer& section);
// Do the actual getting of an array of values. Throws an exception.
virtual void doPutSlice (const Array<Bool>& sourceBuffer,
const IPosition& where,
const IPosition& stride);
// Set the switch for also filtering 0.0 (besides NaNs).
virtual void setFilterZero (Bool filterZero);
private:
// Mask out ONLY NaN's
void filterNaN (Bool* pMask, const float* pData, uInt nelems);
// Mask out NaN's and values 0.0
void filterZeroNaN (Bool* pMask, const Float* pData, uInt nelems);
//
TiledFileAccess* itsTiledFilePtr;
Array<Float> itsBuffer;
Float itsScale, itsOffset;
Short itsUCharMagic;
Short itsShortMagic;
Int itsLongMagic;
Bool itsHasIntBlanks;
Bool itsFilterZero;
};
} //# NAMESPACE CASACORE - END
#endif
|