casa
$Rev:20696$
|
An helper class for deciding on tile shapes in MeasurementSets. More...
#include <MSTileLayout.h>
Public Types | |
enum | ObsType { Standard, FastMosaic } |
Static Public Member Functions | |
static IPosition | tileShape (const IPosition &dataShape, Int observationType=Standard, Int nIfr=0, Int nInt=1) |
Suggest tile shape based on the data shape, the observing mode, the number of interferometers and the number of integrations per pointing. | |
static IPosition | tileShape (const IPosition &dataShape, Int observationType, const String &array) |
same as above, but pick standard nIfr (number of interferometers) for named array and default nInt. |
An helper class for deciding on tile shapes in MeasurementSets.
Public interface
MSTileLayout stands for the MeasurementSet tile layout chooser
MSTileLayout is a class to determine an appropriate tile shape choice for the MeasurementSet DATA columns, based on the shape of the DATA, the observing mode and the number of interferometers
// The following code returns the tile shape given the DATA shape, // the observing type and the array name. IPosition dataShape(2,4,1024); // 4 polarizations, 1024 channels IPosition tileShape = MSTileLayout::tileShape(dataShape, MSTileLayout::FastMosaic, "ATCA"); cout << "tileShape = "<< tileShape << endl; // Output is: tileShape = (4,11,15)
This class is intended to replace bits of code scattered throughout various fillers and collect all tiling decisions in one place.
Definition at line 82 of file MSTileLayout.h.
Definition at line 85 of file MSTileLayout.h.
static IPosition casa::MSTileLayout::tileShape | ( | const IPosition & | dataShape, |
Int | observationType = Standard , |
||
Int | nIfr = 0 , |
||
Int | nInt = 1 |
||
) | [static] |
Suggest tile shape based on the data shape, the observing mode, the number of interferometers and the number of integrations per pointing.
First argument should be a 2-dimensional IPosition with the data matrix shape. The second argument is one of the enums above specifying the type of observation. The third argument is an estimate of the number of interferometers present throughout most of the data. The last argument is an estimate of the number of integrations per pointing.
The last three arguments only need to be specified if the observing mode is non Standard. Basically the choice is between large tiles for efficient I/O and small tiles when a common access pattern (field_id order) would result in very inefficient caching. The latter occurs for large tiles if the field_id changes rapidly AND there are many fields AND the data matrix is small (e.g., continuum mosaic of a large area with only one or two integrations per pointing). Note that accessing fast mosaic data with large tiles in field_id order can be 10-100 times slower than sequential access.
static IPosition casa::MSTileLayout::tileShape | ( | const IPosition & | dataShape, |
Int | observationType, | ||
const String & | array | ||
) | [static] |
same as above, but pick standard nIfr (number of interferometers) for named array and default nInt.