casacore
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
casacore::AntennaPairFile Class Reference

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
 
AntennaPairFileoperator= (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
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ AntennaPairFile() [1/4]

casacore::AntennaPairFile::AntennaPairFile ( )
defaultnoexcept

Referenced by CreateNew(), and OpenExisting().

◆ AntennaPairFile() [2/4]

casacore::AntennaPairFile::AntennaPairFile ( AntennaPairFile &&  source)
inlinenoexcept

Definition at line 28 of file AntennaPairFile.h.

◆ ~AntennaPairFile()

casacore::AntennaPairFile::~AntennaPairFile ( )
inlinenoexcept

Definition at line 36 of file AntennaPairFile.h.

References Close().

◆ AntennaPairFile() [3/4]

casacore::AntennaPairFile::AntennaPairFile ( const std::string &  filename)
inlineprivate

Create a new file on disk.

Definition at line 104 of file AntennaPairFile.h.

◆ AntennaPairFile() [4/4]

casacore::AntennaPairFile::AntennaPairFile ( const std::string &  filename,
bool   
)
inlineprivate

Open an existing file from disk.

The last parameter is a dummy parameter to distinguish it from the creating constructor.

Definition at line 112 of file AntennaPairFile.h.

References ReadData(), and ReadHeader().

Member Function Documentation

◆ Close()

void casacore::AntennaPairFile::Close ( )
inline

◆ CreateNew()

static AntennaPairFile casacore::AntennaPairFile::CreateNew ( const std::string &  filename)
inlinestatic

Create a new antenna-pair file on disk with the given filename.

Definition at line 51 of file AntennaPairFile.h.

References AntennaPairFile().

◆ Filename()

const std::string & casacore::AntennaPairFile::Filename ( ) const
inline

◆ HasUnsetAntenna()

static bool casacore::AntennaPairFile::HasUnsetAntenna ( const std::array< int32_t, 2 > &  pair)
inlinestaticprivate

Definition at line 118 of file AntennaPairFile.h.

References kUnsetAntenna.

Referenced by WriteAntenna().

◆ NRowsInPattern()

uint64_t casacore::AntennaPairFile::NRowsInPattern ( ) const
inline

The number of rows that form one repeating pattern.

Function is added for testing purposes.

Definition at line 98 of file AntennaPairFile.h.

References rows_in_pattern_.

◆ OpenExisting()

static AntennaPairFile casacore::AntennaPairFile::OpenExisting ( const std::string &  filename)
inlinestatic

Open an already existing antenna-pair file from disk with the given filename.

Definition at line 59 of file AntennaPairFile.h.

References AntennaPairFile().

◆ operator=()

AntennaPairFile & casacore::AntennaPairFile::operator= ( AntennaPairFile &&  rhs)
inline

Definition at line 38 of file AntennaPairFile.h.

References Close(), data_, file_, and rows_in_pattern_.

◆ ReadAntenna()

template<size_t AntennaNumber>
int32_t casacore::AntennaPairFile::ReadAntenna ( uint64_t  row)
inlineprivate

Definition at line 184 of file AntennaPairFile.h.

◆ ReadAntenna1()

int32_t casacore::AntennaPairFile::ReadAntenna1 ( uint64_t  row)
inline

Definition at line 76 of file AntennaPairFile.h.

Referenced by casacore::AntennaPairStManColumn::getInt().

◆ ReadAntenna2()

int32_t casacore::AntennaPairFile::ReadAntenna2 ( uint64_t  row)
inline

Definition at line 78 of file AntennaPairFile.h.

Referenced by casacore::AntennaPairStManColumn::getInt().

◆ ReadData()

void casacore::AntennaPairFile::ReadData ( )
inlineprivate

Definition at line 220 of file AntennaPairFile.h.

Referenced by AntennaPairFile().

◆ ReadHeader()

void casacore::AntennaPairFile::ReadHeader ( )
inlineprivate

Definition at line 202 of file AntennaPairFile.h.

Referenced by AntennaPairFile().

◆ WriteAntenna()

template<size_t AntennaNumber>
void casacore::AntennaPairFile::WriteAntenna ( uint64_t  row,
int32_t  antenna 
)
inlineprivate
Template Parameters
AntennaNumberNumber 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 126 of file AntennaPairFile.h.

References data_, HasUnsetAntenna(), kUnsetAntenna, rows_in_pattern_, WriteData(), and WriteHeader().

◆ WriteAntenna1()

void casacore::AntennaPairFile::WriteAntenna1 ( uint64_t  row,
int32_t  antenna1 
)
inline

Definition at line 63 of file AntennaPairFile.h.

Referenced by casacore::AntennaPairStManColumn::putInt().

◆ WriteAntenna2()

void casacore::AntennaPairFile::WriteAntenna2 ( uint64_t  row,
int32_t  antenna2 
)
inline

Definition at line 67 of file AntennaPairFile.h.

Referenced by casacore::AntennaPairStManColumn::putInt().

◆ WriteData()

void casacore::AntennaPairFile::WriteData ( )
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 227 of file AntennaPairFile.h.

Referenced by Close(), and WriteAntenna().

◆ WriteHeader()

void casacore::AntennaPairFile::WriteHeader ( )
inlineprivate

Definition at line 213 of file AntennaPairFile.h.

Referenced by Close(), and WriteAntenna().

◆ WritePair()

void casacore::AntennaPairFile::WritePair ( uint64_t  row,
int32_t  antenna1,
int32_t  antenna2 
)
inline

Definition at line 71 of file AntennaPairFile.h.

Member Data Documentation

◆ data_

std::vector<std::array<int32_t, 2> > casacore::AntennaPairFile::data_
private

Definition at line 250 of file AntennaPairFile.h.

Referenced by Close(), operator=(), and WriteAntenna().

◆ file_

BufferedColumnarFile casacore::AntennaPairFile::file_
private

Definition at line 245 of file AntennaPairFile.h.

Referenced by Close(), Filename(), and operator=().

◆ kHeaderSize

constexpr size_t casacore::AntennaPairFile::kHeaderSize
staticconstexprprivate

The header: char[8] "AntPair\0" uint64_t rows_per_block.

Definition at line 242 of file AntennaPairFile.h.

◆ kMagicHeaderTag

constexpr const char casacore::AntennaPairFile::kMagicHeaderTag[8]
staticconstexprprivate

Definition at line 243 of file AntennaPairFile.h.

◆ kUnsetAntenna

constexpr int32_t casacore::AntennaPairFile::kUnsetAntenna
staticconstexprprivate

Definition at line 244 of file AntennaPairFile.h.

Referenced by HasUnsetAntenna(), and WriteAntenna().

◆ rows_in_pattern_

uint64_t casacore::AntennaPairFile::rows_in_pattern_
private

This value remains zero until the repeating pattern was found.

Definition at line 249 of file AntennaPairFile.h.

Referenced by Close(), NRowsInPattern(), operator=(), and WriteAntenna().


The documentation for this class was generated from the following file: