Make the intersection of 2 or more regions. More...
#include <LCRegionMulti.h>
Public Member Functions | |
LCRegionMulti () | |
LCRegionMulti (const LCRegion ®ion1, const LCRegion ®ion2) | |
Construct from 2 regions. | |
LCRegionMulti (Bool takeOver, const LCRegion *region1, const LCRegion *region2=0, const LCRegion *region3=0, const LCRegion *region4=0, const LCRegion *region5=0, const LCRegion *region6=0, const LCRegion *region7=0, const LCRegion *region8=0, const LCRegion *region9=0, const LCRegion *region10=0) | |
Construct from multiple regions. | |
LCRegionMulti (Bool takeOver, const PtrBlock< const LCRegion * > ®ions) | |
Construct from multiple regions given as a Block. | |
LCRegionMulti (const LCRegionMulti &other) | |
Copy constructor (copy semantics). | |
virtual | ~LCRegionMulti () |
LCRegionMulti & | operator= (const LCRegionMulti &other) |
Assignment (copy semantics). | |
virtual Bool | operator== (const LCRegion &other) const |
Comparison. | |
virtual Bool | hasMask () const |
Does the region have a mask? | |
Protected Member Functions | |
TableRecord | makeRecord (const String &tableName) const |
Store the contributing regions in a record. | |
void | multiTranslate (PtrBlock< const LCRegion * > &, const Vector< Float > &translateVector, const IPosition &newLatticeShape) const |
Translate all regions. | |
void | fillHasMask () |
Determine if all regions have mask (used by LCIntersection). | |
Bool | findAreas (IPosition &bufStart, IPosition &bufEnd, IPosition ®Start, IPosition ®End, const Slicer §ion, uInt regNr) const |
Find which area of the section and region are needed. | |
const PtrBlock< const LCRegion * > & | regions () const |
Get the contributing regions. | |
LCRegionMulti (const LCRegion *region, const IPosition &latticeShape) | |
Construct from lattice shape and region pointer, which is taken over. | |
virtual Bool | doGetSlice (Array< Bool > &buffer, const Slicer §ion) |
Do the actual getting of an array of values. | |
virtual void | multiGetSlice (Array< Bool > &buffer, const Slicer §ion)=0 |
Get the values from the class derived from Multi. | |
virtual IPosition | doNiceCursorShape (uInt maxPixels) const |
Get the best cursor shape. | |
Static Protected Member Functions | |
static void | unmakeRecord (PtrBlock< const LCRegion * > &, const TableRecord &, const String &tableName) |
Retrieve the contributing objects from the record. | |
Private Member Functions | |
void | init (Bool takeOver) |
Check if the regions are correct. | |
Private Attributes | |
Int | itsHasMask |
PtrBlock< const LCRegion * > | itsRegions |
Make the intersection of 2 or more regions.
Public interface
The LCRegionMulti class is a specialization of class LCRegion . It makes it possible to extend a LCRegion along straight lines to other dimensions. E.g. a circle in the xy-plane can be extended to a cylinder in the xyz-space. includes the intersection border. It can only be used for a lattice of any dimensionality as long as the dimensionality of the (hyper-)intersection matches the dimensionality of the lattice.
The center of the intersection must be inside the lattice
Definition at line 76 of file LCRegionMulti.h.
casacore::LCRegionMulti::LCRegionMulti | ( | ) |
Construct from 2 regions.
casacore::LCRegionMulti::LCRegionMulti | ( | Bool | takeOver, | |
const LCRegion * | region1, | |||
const LCRegion * | region2 = 0 , |
|||
const LCRegion * | region3 = 0 , |
|||
const LCRegion * | region4 = 0 , |
|||
const LCRegion * | region5 = 0 , |
|||
const LCRegion * | region6 = 0 , |
|||
const LCRegion * | region7 = 0 , |
|||
const LCRegion * | region8 = 0 , |
|||
const LCRegion * | region9 = 0 , |
|||
const LCRegion * | region10 = 0 | |||
) |
Construct from multiple regions.
casacore::LCRegionMulti::LCRegionMulti | ( | Bool | takeOver, | |
const PtrBlock< const LCRegion * > & | regions | |||
) |
Construct from multiple regions given as a Block.
When takeOver
is True, the destructor will delete the given regions. Otherwise a copy of the regions is made.
casacore::LCRegionMulti::LCRegionMulti | ( | const LCRegionMulti & | other | ) |
Copy constructor (copy semantics).
virtual casacore::LCRegionMulti::~LCRegionMulti | ( | ) | [virtual] |
casacore::LCRegionMulti::LCRegionMulti | ( | const LCRegion * | region, | |
const IPosition & | latticeShape | |||
) | [protected] |
Construct from lattice shape and region pointer, which is taken over.
Primarily meant for LCExtension.
virtual Bool casacore::LCRegionMulti::doGetSlice | ( | Array< Bool > & | buffer, | |
const Slicer & | section | |||
) | [protected, virtual] |
Do the actual getting of an array of values.
Implements casacore::Lattice< Bool >.
virtual IPosition casacore::LCRegionMulti::doNiceCursorShape | ( | uInt | maxPixels | ) | const [protected, virtual] |
Get the best cursor shape.
Reimplemented from casacore::LatticeBase.
Reimplemented in casacore::LCConcatenation, casacore::LCExtension, and casacore::LCStretch.
void casacore::LCRegionMulti::fillHasMask | ( | ) | [protected] |
Determine if all regions have mask (used by LCIntersection).
Bool casacore::LCRegionMulti::findAreas | ( | IPosition & | bufStart, | |
IPosition & | bufEnd, | |||
IPosition & | regStart, | |||
IPosition & | regEnd, | |||
const Slicer & | section, | |||
uInt | regNr | |||
) | const [protected] |
Find which area of the section and region are needed.
False is returned if no part of the region is included in the section.
virtual Bool casacore::LCRegionMulti::hasMask | ( | ) | const [virtual] |
Does the region have a mask?
Implements casacore::LCRegion.
void casacore::LCRegionMulti::init | ( | Bool | takeOver | ) | [private] |
Check if the regions are correct.
If needed, make a copy of the region objects.
TableRecord casacore::LCRegionMulti::makeRecord | ( | const String & | tableName | ) | const [protected] |
Store the contributing regions in a record.
virtual void casacore::LCRegionMulti::multiGetSlice | ( | Array< Bool > & | buffer, | |
const Slicer & | section | |||
) | [protected, pure virtual] |
Get the values from the class derived from Multi.
It is called when there is a mask. Note that it is not sure whether the buffer has the correct size.
Implemented in casacore::LCComplement, casacore::LCConcatenation, casacore::LCDifference, casacore::LCExtension, casacore::LCIntersection, casacore::LCStretch, and casacore::LCUnion.
void casacore::LCRegionMulti::multiTranslate | ( | PtrBlock< const LCRegion * > & | , | |
const Vector< Float > & | translateVector, | |||
const IPosition & | newLatticeShape | |||
) | const [protected] |
Translate all regions.
LCRegionMulti& casacore::LCRegionMulti::operator= | ( | const LCRegionMulti & | other | ) |
Assignment (copy semantics).
Reimplemented from casacore::LCRegion.
Reimplemented in casacore::LCComplement, casacore::LCConcatenation, casacore::LCDifference, casacore::LCExtension, casacore::LCIntersection, casacore::LCStretch, and casacore::LCUnion.
Comparison.
Reimplemented in casacore::LCComplement, casacore::LCConcatenation, casacore::LCDifference, casacore::LCExtension, casacore::LCIntersection, casacore::LCStretch, and casacore::LCUnion.
Get the contributing regions.
Definition at line 171 of file LCRegionMulti.h.
References itsRegions.
Referenced by casacore::LCStretch::region(), and casacore::LCExtension::region().
static void casacore::LCRegionMulti::unmakeRecord | ( | PtrBlock< const LCRegion * > & | , | |
const TableRecord & | , | |||
const String & | tableName | |||
) | [static, protected] |
Retrieve the contributing objects from the record.
Int casacore::LCRegionMulti::itsHasMask [private] |
Definition at line 166 of file LCRegionMulti.h.
PtrBlock<const LCRegion*> casacore::LCRegionMulti::itsRegions [private] |
Definition at line 167 of file LCRegionMulti.h.
Referenced by regions().