Go to the documentation of this file.
28 #ifndef CASA_MARRAYLOGICAL_H
29 #define CASA_MARRAYLOGICAL_H
32 #include <casacore/casa/aips.h>
33 #include <casacore/tables/TaQL/MArrayMathBase.h>
34 #include <casacore/casa/Arrays/ArrayLogical.h>
35 #include <casacore/casa/Arrays/ArrayPartMath.h>
36 #include <casacore/casa/BasicMath/Functors.h>
96 template<
typename T,
typename RES=
size_t>
102 template<
typename T,
typename RES=
size_t>
108 template<
typename T>
class MAllFunc :
public MArrayFunctorBase<T,Bool> {
113 template<
typename T>
class MAnyFunc :
public MArrayFunctorBase<T,Bool> {
301 template <
typename T>
307 return compareAllMasked (left.
array().begin(), left.
array().end(),
309 right.
mask().
begin(), std::equal_to<T>());
311 return compareAllMasked (left.
array().begin(), left.
array().end(),
316 return compareAllMasked (left.
array().begin(), left.
array().end(),
322 template <
typename T>
326 compareAllRightMasked (
array.array().begin(),
array.array().end(),
327 value,
array.mask().begin(), std::equal_to<T>())
330 template <
typename T>
338 template <
typename T>
344 return compareAnyMasked (left.
array().begin(), left.
array().end(),
346 right.
mask().
begin(), std::equal_to<T>());
348 return compareAnyMasked (left.
array().begin(), left.
array().end(),
353 return compareAnyMasked (left.
array().begin(), left.
array().end(),
359 template <
typename T>
363 compareAnyRightMasked (
array.array().begin(),
array.array().end(),
364 value,
array.mask().begin(), std::equal_to<T>())
367 template <
typename T>
386 countNEMasked<T>(a.
array().cbegin(), a.
array().cend(),
388 countNEMasked<T>(a.
array().begin(), a.
array().end(),
400 countMasked<T>(a.
array().cbegin(), a.
array().cend(),
402 countMasked<T>(a.
array().begin(), a.
array().end(),
450 partialArrayMath (res, a, collapseAxes,
MAllFunc<T>());
466 partialArrayMath (res, a, collapseAxes,
MAnyFunc<T>());
MArray< Bool > partialAnys(const MArray< T > &a, const IPosition &collapseAxes)
Get partial any.
MaskedArray< T > boxedArrayMath(const MaskedArray< T > &array, const IPosition &boxSize, const FuncType &funcObj)
Apply the given ArrayMath reduction function objects to each box in the array.
MArray< uInt > partialNTrue(const MArray< T > &a, const IPosition &collapseAxes)
Get partial ntrues.
A Vector of integers, for indexing into Array<T> objects.
MArray< Bool > operator!=(const MArray< T > &left, const MArray< T > &right)
bool operator!=(const casacore_allocator< T, ALIGNMENT > &, const casacore_allocator< T, ALIGNMENT > &)
MArray< Bool > operator>=(const MArray< T > &left, const MArray< T > &right)
Bool anyEQ(const TableVector< T > &l, const TableVector< T > &r)
TableExprNode isFinite(const TableExprNode &node)
Function to test if a scalar or array is finite.
Bool anyTrue(const MArray< Bool > &array)
Is any unmasked element true?
LatticeExprNode nfalse(const LatticeExprNode &expr)
RES operator()(const MArray< T > &arr) const
MArray< uInt > slidingNFalse(const MArray< T > &a, const IPosition &halfBoxSize, Bool fillEdge=True)
Get sliding nfalses.
LatticeExprNode operator>=(const LatticeExprNode &left, const LatticeExprNode &right)
MArray< Bool > isInf(const MArray< T > &arr)
Test which elements are infinite.
MArray< uInt > boxedNTrue(const MArray< T > &a, const IPosition &boxSize)
Get boxed ntrues.
Bool allEQ(const MArray< T > &left, const MArray< T > &right)
Are all unmasked elements equal? The result is True if there are no unmasked elements.
LatticeExprNode operator<(const LatticeExprNode &left, const LatticeExprNode &right)
MArray< Bool > operator<=(const MArray< T > &left, const MArray< T > &right)
RES operator()(const MArray< T > &arr) const
TableExprNode isInf(const TableExprNode &node)
MArray< uInt > partialNFalse(const MArray< T > &a, const IPosition &collapseAxes)
Get partial nfalses.
Bool hasMask() const
Is there a mask?
MArray< uInt > slidingNTrue(const MArray< T > &a, const IPosition &halfBoxSize, Bool fillEdge=True)
Get sliding ntrues.
bool operator==(const casacore_allocator< T, ALIGNMENT > &, const casacore_allocator< T, ALIGNMENT > &)
MArray< Bool > operator&&(const MArray< T > &left, const MArray< T > &right)
MArray< Bool > near(const MArray< T > &left, const MArray< T > &right, Double tol)
Compare with a given relative or absolute tolerance.
MArray< Bool > nearAbs(const MArray< T > &left, const T &right, Double tol)
LatticeExprNode value(const LatticeExprNode &expr)
This function returns the value of the expression without a mask.
iterator begin()
Get the begin iterator object for any array.
MArray< Bool > slidingAlls(const MArray< T > &a, const IPosition &halfBoxSize, Bool fillEdge=True)
Get sliding all.
Bool operator()(const MArray< T > &arr) const
Bool isNull() const
Is the array null?
MArray< Bool > nearAbs(const MArray< T > &left, const MArray< T > &right, Double tol)
LatticeExprNode operator&&(const LatticeExprNode &left, const LatticeExprNode &right)
Logical binary operators.
contiter cbegin()
Get the begin iterator object for a contiguous array.
MArray< Bool > operator||(const MArray< T > &left, const MArray< T > &right)
Array< Bool > combineMask(const MArrayBase &other) const
Combine this and the other mask.
LatticeExprNode operator||(const LatticeExprNode &left, const LatticeExprNode &right)
MArray< Bool > boxedAnys(const MArray< T > &a, const IPosition &boxSize)
Get boxed any.
Bool near(const GaussianBeam &left, const GaussianBeam &other, const Double relWidthTol, const Quantity &absPaTol)
Bool anyEQ(const MArray< T > &left, const MArray< T > &right)
Is any unmasked element equal? The result is False if there are no unmasked elements.
MArray< Bool > isFinite(const MArray< T > &arr)
Test which elements have a finite value.
size_t nfalse(const MArray< T > &a)
Count the number of unmasked elements that are False.
MArray< uInt > boxedNFalse(const MArray< T > &a, const IPosition &boxSize)
Get boxed nfalses.
Bool anyEQ(const T &value, const MArray< T > &array)
Bool allEQ(const MArray< T > &array, const T &value)
LatticeExprNode operator!(const LatticeExprNode &expr)
this file contains all the compiler specific defines
TableExprNode array(const TableExprNode &values, const TableExprNodeSet &shape)
Create an array of the given shape and fill it with the values.
const Array< T > & array() const
Get access to the array.
LatticeExprNode ntrue(const LatticeExprNode &expr)
MArray< Bool > operator==(const MArray< T > &left, const MArray< T > &right)
Define comparison functions between 2 MArray objects and between MArray object and scalar.
MArray< Bool > operator<(const MArray< T > &left, const MArray< T > &right)
MArray< Bool > isNaN(const MArray< T > &arr)
Test which elements are NaN.
MArray< Bool > nearAbs(const T &left, const MArray< T > &right, Double tol)
Bool allTrue(const MArray< Bool > &array)
Are all unmasked elements true?
Bool allEQ(const T &value, const MArray< T > &array)
MArray< Bool > boxedAlls(const MArray< T > &a, const IPosition &boxSize)
Get boxed all.
LatticeExprNode isNaN(const LatticeExprNode &expr)
Test if a value is a NaN.
MArray< Bool > operator!(const MArray< T > &a)
The logical NOT of an MArray object (normally Bool type).
MArray< Bool > slidingAnys(const MArray< T > &a, const IPosition &halfBoxSize, Bool fillEdge=True)
Get sliding any.
Bool isNull() const
Does the node contain no actual node?
LatticeExprNode operator<=(const LatticeExprNode &left, const LatticeExprNode &right)
const Array< Bool > & mask() const
Get the mask.
MArray< Bool > near(const T &left, const MArray< T > &right, Double tol)
bool Bool
Define the standard types used by Casacore.
Bool operator()(const MArray< T > &arr) const
Bool contiguousStorage() const
Are the array data contiguous? If they are not contiguous, getStorage (see below) needs to make a cop...
size_t ntrue(const MArray< T > &a)
Count the number of unmasked elements that are True.
MArray< Bool > near(const MArray< T > &left, const T &right, Double tol)
Logical operations for MArray objects.
LatticeExprNode operator>(const LatticeExprNode &left, const LatticeExprNode &right)
MArray< Bool > partialAlls(const MArray< T > &a, const IPosition &collapseAxes)
Get partial all.
Class to handle an Array with an optional mask.
Define functors to perform a reduction function on an MArray object.
Bool anyEQ(const MArray< T > &array, const T &value)
MArray< Bool > operator>(const MArray< T > &left, const MArray< T > &right)
Array< T > slidingArrayMath(const MaskedArray< T > &array, const IPosition &halfBoxSize, const FuncType &funcObj, Bool fillEdge=True)
Apply for each element in the array the given ArrayMath reduction function object to the box around t...
TableExprNode nearAbs(const TableExprNode &left, const TableExprNode &right)