|
casacore
|
This class is able to store the combination of ANTENNA1 and ANTENNA2 columns in a compressed manner. More...
#include <AntennaPairFile.h>
Public Member Functions | |
| AntennaPairFile () noexcept=default | |
| AntennaPairFile (AntennaPairFile &&source) noexcept | |
| ~AntennaPairFile () noexcept | |
| AntennaPairFile & | operator= (AntennaPairFile &&rhs) |
| void | WriteAntenna1 (uint64_t row, int32_t antenna1) |
| void | WriteAntenna2 (uint64_t row, int32_t antenna2) |
| void | WritePair (uint64_t row, int32_t antenna1, int32_t antenna2) |
| int32_t | ReadAntenna1 (uint64_t row) |
| int32_t | ReadAntenna2 (uint64_t row) |
| void | Close () |
| const std::string & | Filename () const |
| uint64_t | NRowsInPattern () const |
| The number of rows that form one repeating pattern. | |
Static Public Member Functions | |
| static AntennaPairFile | CreateNew (const std::string &filename) |
| Create a new antenna-pair file on disk with the given filename. | |
| static AntennaPairFile | OpenExisting (const std::string &filename) |
| Open an already existing antenna-pair file from disk with the given filename. | |
Private Member Functions | |
| AntennaPairFile (const std::string &filename) | |
| Create a new file on disk. | |
| AntennaPairFile (const std::string &filename, bool) | |
| Open an existing file from disk. | |
| template<size_t AntennaNumber> | |
| void | WriteAntenna (uint64_t row, int32_t antenna) |
| template<size_t AntennaNumber> | |
| int32_t | ReadAntenna (uint64_t row) |
| void | ReadHeader () |
| void | WriteHeader () |
| void | ReadData () |
| void | WriteData () |
Static Private Member Functions | |
| static bool | HasUnsetAntenna (const std::array< int32_t, 2 > &pair) |
Private Attributes | |
| BufferedColumnarFile | file_ |
| uint64_t | rows_in_pattern_ |
| This value remains zero until the repeating pattern was found. | |
| std::vector< std::array< int32_t, 2 > > | data_ |
Static Private Attributes | |
| static constexpr size_t | kHeaderSize |
| The header: char[8] "AntPair\0" uint64_t rows_per_block. | |
| static constexpr const char | kMagicHeaderTag [8] |
| static constexpr int32_t | kUnsetAntenna |
This class is able to store the combination of ANTENNA1 and ANTENNA2 columns in a compressed manner.
It does this by assuming that the pair of antenna indices are repeated, i.e. every timestep in the measurement set follows the same sequence of baselines. By only writing the repeated sequence once, the storage required is reduce to that of only one timestep.
The class checks to see if the writing satisfies the required constraints, and if they do not an exception is thrown.
Definition at line 24 of file AntennaPairFile.h.
|
defaultnoexcept |
Referenced by AntennaPairFile(), CreateNew(), OpenExisting(), and operator=().
|
inlinenoexcept |
Definition at line 28 of file AntennaPairFile.h.
References AntennaPairFile(), data_, file_, casacore::move(), and rows_in_pattern_.
|
inlinenoexcept |
Definition at line 36 of file AntennaPairFile.h.
References Close().
|
inlineprivate |
Create a new file on disk.
Definition at line 100 of file AntennaPairFile.h.
References CreateNew(), file_, and kHeaderSize.
|
inlineprivate |
Open an existing file from disk.
The last parameter is a dummy parameter to distinguish it from the creating constructor.
Definition at line 107 of file AntennaPairFile.h.
References file_, kHeaderSize, OpenExisting(), ReadData(), and ReadHeader().
|
inline |
Definition at line 76 of file AntennaPairFile.h.
References data_, file_, rows_in_pattern_, WriteData(), and WriteHeader().
Referenced by operator=(), and ~AntennaPairFile().
|
inlinestatic |
Create a new antenna-pair file on disk with the given filename.
Definition at line 51 of file AntennaPairFile.h.
References AntennaPairFile().
Referenced by AntennaPairFile().
|
inline |
Definition at line 88 of file AntennaPairFile.h.
References file_.
|
inlinestaticprivate |
Definition at line 113 of file AntennaPairFile.h.
References kUnsetAntenna.
Referenced by WriteAntenna().
|
inline |
The number of rows that form one repeating pattern.
Function is added for testing purposes.
Definition at line 94 of file AntennaPairFile.h.
References rows_in_pattern_.
|
inlinestatic |
Open an already existing antenna-pair file from disk with the given filename.
Definition at line 59 of file AntennaPairFile.h.
References AntennaPairFile().
Referenced by AntennaPairFile().
|
inline |
Definition at line 38 of file AntennaPairFile.h.
References AntennaPairFile(), Close(), data_, file_, and rows_in_pattern_.
|
inlineprivate |
Definition at line 175 of file AntennaPairFile.h.
References data_, kUnsetAntenna, and rows_in_pattern_.
Referenced by ReadAntenna1(), and ReadAntenna2().
|
inline |
Definition at line 72 of file AntennaPairFile.h.
References ReadAntenna().
|
inline |
Definition at line 74 of file AntennaPairFile.h.
References ReadAntenna().
|
inlineprivate |
Definition at line 210 of file AntennaPairFile.h.
Referenced by AntennaPairFile().
|
inlineprivate |
Definition at line 192 of file AntennaPairFile.h.
References file_, kHeaderSize, kMagicHeaderTag, and rows_in_pattern_.
Referenced by AntennaPairFile().
|
inlineprivate |
| AntennaNumber | Number of the antenna inside the pair: zero or one. |
This row is the same as the first row, so this row is the first row of the next repeated pattern, and we have discovered the size of the pattern.
This is a rewrite of an already written value
Definition at line 121 of file AntennaPairFile.h.
References data_, HasUnsetAntenna(), kUnsetAntenna, rows_in_pattern_, WriteData(), and WriteHeader().
Referenced by WriteAntenna1(), WriteAntenna2(), and WritePair().
|
inline |
Definition at line 63 of file AntennaPairFile.h.
References WriteAntenna().
|
inline |
Definition at line 65 of file AntennaPairFile.h.
References WriteAntenna().
|
inlineprivate |
Note that rows_in_pattern_ might still be zero if the pattern has not been finished. This would happen if MS is partially written, reopened and written further. This is rather unlikely to happen, but it is easy to support.
Definition at line 217 of file AntennaPairFile.h.
Referenced by Close(), and WriteAntenna().
|
inlineprivate |
Definition at line 203 of file AntennaPairFile.h.
References file_, kHeaderSize, kMagicHeaderTag, and rows_in_pattern_.
Referenced by Close(), and WriteAntenna().
|
inline |
Definition at line 67 of file AntennaPairFile.h.
References WriteAntenna().
|
private |
Definition at line 240 of file AntennaPairFile.h.
Referenced by AntennaPairFile(), Close(), operator=(), ReadAntenna(), ReadData(), WriteAntenna(), and WriteData().
|
private |
Definition at line 235 of file AntennaPairFile.h.
Referenced by AntennaPairFile(), AntennaPairFile(), AntennaPairFile(), Close(), Filename(), operator=(), ReadData(), ReadHeader(), WriteData(), and WriteHeader().
|
staticconstexprprivate |
The header: char[8] "AntPair\0" uint64_t rows_per_block.
Definition at line 232 of file AntennaPairFile.h.
Referenced by AntennaPairFile(), AntennaPairFile(), ReadHeader(), and WriteHeader().
|
staticconstexprprivate |
Definition at line 233 of file AntennaPairFile.h.
Referenced by ReadHeader(), and WriteHeader().
|
staticconstexprprivate |
Definition at line 234 of file AntennaPairFile.h.
Referenced by HasUnsetAntenna(), ReadAntenna(), and WriteAntenna().
|
private |
This value remains zero until the repeating pattern was found.
Definition at line 239 of file AntennaPairFile.h.
Referenced by AntennaPairFile(), Close(), NRowsInPattern(), operator=(), ReadAntenna(), ReadHeader(), WriteAntenna(), and WriteHeader().