casacore
RebinLattice.h
Go to the documentation of this file.
1//# RebinLattice.h: rebin a masked lattices
2//# Copyright (C) 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 receied 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//# $Id$
27
28#ifndef LATTICES_REBINLATTICE_H
29#define LATTICES_REBINLATTICE_H
30
31
32//# Includes
33#include <casacore/casa/aips.h>
34#include <casacore/casa/Arrays/Array.h>
35#include <casacore/casa/Arrays/Slicer.h>
36#include <casacore/lattices/Lattices/MaskedLattice.h>
37
38namespace casacore { //# NAMESPACE CASACORE - BEGIN
39
40//# Forward Declarations
41
42class IPosition;
43
44
45// <summary>
46// Rebin a masked lattice.
47// </summary>
48
49// <use visibility=local>
50
51// <reviewed reviewer="" date="" tests="tRebinLattice.cc">
52// </reviewed>
53
54// <prerequisite>
55// <li> <linkto class="MaskedLattice">MaskedLattice</linkto>
56// </prerequisite>
57
58// <synopsis>
59// This class enables you to rebin (data are averaged over bin) a MaskedLattice by
60// a given factor per axis
61// </synopsis>
62
63// <example>
64// <srcblock>
65// IPosition shape(2, 10, 20);
66// TiledShape tShape(shape);
67// TempLattice<Float> latIn(tShape);
68// IPosition factors(2, 2, 5);
69// RebinLattice<Float> rl(latIn, factors);
70// cerr << "Binned data = " << rl.get() << endl;
71// </srcblock>
72// </example>
73
74// <motivation>
75// </motivation>
76
77
78template<class T>
79class RebinLattice : public MaskedLattice<T>
80{
81public:
82
83 // Default constructor (Object is unuseable)
85
86 // Constructor. The bins don't have to fit integrally. Whatever
87 // is left over at the end is treated as a full bin.
88 RebinLattice(const MaskedLattice<T>& lattice, const IPosition& bin);
89
90 // Copy constructor (reference semantics)
92
93 // Destructor.
94 virtual ~RebinLattice();
95
96 // Assignment (reference semantics)
98
99 // Make a copy of the object (reference semantics).
100 virtual MaskedLattice<T>* cloneML() const;
101
102 // Is the lattice masked?
103 // It is if its parent lattice is masked.
104 virtual Bool isMasked() const;
105
106 // Is the lattice paged to disk?
107 virtual Bool isPaged() const;
108
109 // The lattice is not writable.
110 virtual Bool isWritable() const;
111
112 // Handle locking of the lattice which is delegated to its parent.
113 // <br>It is strongly recommended to use class
114 // <linkto class=LatticeLocker>LatticeLocker</linkto> to
115 // handle lattice locking. It also contains a more detailed
116 // explanation of the locking process.
117 // <group>
118 virtual Bool lock (FileLocker::LockType, uInt nattempts);
119 virtual void unlock();
121 // </group>
122
123 // Resynchronize the Lattice object with the lattice file.
124 // This function is only useful if no read-locking is used, ie.
125 // if the table lock option is UserNoReadLocking or AutoNoReadLocking.
126 // In that cases the table system does not acquire a read-lock, thus
127 // does not synchronize itself automatically.
128 virtual void resync();
129
130 // Flush the data.
131 virtual void flush();
132
133 // Close the Lattice temporarily (if it is paged to disk).
134 // It'll be reopened automatically when needed or when
135 // <src>reopen</src> is called explicitly.
136 virtual void tempClose();
137
138 // If needed, reopen a temporarily closed Lattice.
139 virtual void reopen();
140
141 // Get a pointer the region/mask object.
142 // It returns 0.
143 virtual const LatticeRegion* getRegionPtr() const;
144
145 // Returns the shape of the lattice.
146 virtual IPosition shape() const;
147
148 // Return the name of the parent lattice.
149 virtual String name (Bool stripPath=False) const;
150
151 // This function returns the recommended maximum number of pixels to
152 // include in the cursor of an iterator.
153 virtual uInt advisedMaxPixels() const;
154
155 // Check class internals - used for debugging. Should always return True
156 virtual Bool ok() const;
157
158 // Do the actual getting of an array of values.
159 // Slicers with non-unit stride are not yet supported
160 virtual Bool doGetSlice (Array<T>& buffer, const Slicer& section);
161
162 // Do the actual putting of an array of values.
163 // The lattice is not writable.
164 virtual void doPutSlice (const Array<T>& sourceBuffer,
165 const IPosition& where,
166 const IPosition& stride);
167
168 // Get a section of the mask.
169 // Slicers with non-unit stride are not yet supported
170 virtual Bool doGetMaskSlice (Array<Bool>& buffer, const Slicer& section);
171
172 // Static function needed by LEL. Applies binning factors
173 // to shape to give the shape of the output lattice. Will
174 // give the same result as function 'shape'
175 static IPosition rebinShape (const IPosition& shapeLatticeIn,
176 const IPosition& bin);
177
178private:
179 Slicer findOriginalSlicer (const Slicer& section) const;
180 void getDataAndMask (const Slicer& section);
181 void bin(const Array<T>& dataIn);
182 void bin(const Array<T>& dataIn, const Array<Bool>& maskIn);
183//
187// Cache
191};
192
193
194
195} //# NAMESPACE CASACORE - END
196
197#ifndef CASACORE_NO_AUTO_TEMPLATES
198#include <casacore/lattices/Lattices/RebinLattice.tcc>
199#endif //# CASACORE_NO_AUTO_TEMPLATES
200#endif
LockType
Define the possible lock types.
Definition: FileLocker.h:95
virtual ~RebinLattice()
Destructor.
virtual Bool isWritable() const
The lattice is not writable.
virtual void resync()
Resynchronize the Lattice object with the lattice file.
virtual void reopen()
If needed, reopen a temporarily closed Lattice.
virtual Bool isMasked() const
Is the lattice masked? It is if its parent lattice is masked.
RebinLattice(const RebinLattice< T > &other)
Copy constructor (reference semantics)
virtual Bool hasLock(FileLocker::LockType) const
virtual MaskedLattice< T > * cloneML() const
Make a copy of the object (reference semantics).
virtual void tempClose()
Close the Lattice temporarily (if it is paged to disk).
virtual Bool isPaged() const
Is the lattice paged to disk?
virtual String name(Bool stripPath=False) const
Return the name of the parent lattice.
virtual Bool lock(FileLocker::LockType, uInt nattempts)
Handle locking of the lattice which is delegated to its parent.
virtual void unlock()
virtual void flush()
Flush the data.
void bin(const Array< T > &dataIn, const Array< Bool > &maskIn)
void bin(const Array< T > &dataIn)
virtual const LatticeRegion * getRegionPtr() const
Get a pointer the region/mask object.
virtual void doPutSlice(const Array< T > &sourceBuffer, const IPosition &where, const IPosition &stride)
Do the actual putting of an array of values.
void getDataAndMask(const Slicer &section)
RebinLattice()
Default constructor (Object is unuseable)
Array< Bool > itsMask
Definition: RebinLattice.h:189
Slicer findOriginalSlicer(const Slicer &section) const
static IPosition rebinShape(const IPosition &shapeLatticeIn, const IPosition &bin)
Static function needed by LEL.
virtual IPosition shape() const
Returns the shape of the lattice.
virtual Bool doGetMaskSlice(Array< Bool > &buffer, const Slicer &section)
Get a section of the mask.
Array< T > itsData
Cache.
Definition: RebinLattice.h:188
virtual Bool doGetSlice(Array< T > &buffer, const Slicer &section)
Do the actual getting of an array of values.
virtual uInt advisedMaxPixels() const
This function returns the recommended maximum number of pixels to include in the cursor of an iterato...
RebinLattice< T > & operator=(const RebinLattice< T > &other)
Assignment (reference semantics)
MaskedLattice< T > * itsLatticePtr
Definition: RebinLattice.h:184
RebinLattice(const MaskedLattice< T > &lattice, const IPosition &bin)
Constructor.
virtual Bool ok() const
Check class internals - used for debugging.
String: the storage and methods of handling collections of characters.
Definition: String.h:225
this file contains all the compiler specific defines
Definition: mainpage.dox:28
const Bool False
Definition: aipstype.h:44
unsigned int uInt
Definition: aipstype.h:51
bool Bool
Define the standard types used by Casacore.
Definition: aipstype.h:42