LTL  2.0.x
Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
ltl::FitsHeader Class Reference

Representation of a complete FITS header. Holds also header I/O methods. More...

Inherited by ltl::FitsIn, and ltl::FitsOut.

Public Member Functions

 FitsHeader (unsigned char *inmemptr, size_t inmemlen, const bool quiet_please=false, const bool alljunk=false)
 Construct from existing file. More...
 
 FitsHeader (const std::string &filename, const bool quiet_please=false, const bool alljunk=false)
 
 FitsHeader (const FitsHeader &other, const bool quiet_please=false, const bool alljunk=false)
 Construct as copy from other. More...
 
virtual ~FitsHeader ()
 Destruct Object. More...
 
FitsHeaderoperator= (const FitsHeader &other)
 Copy values from other. More...
 
virtual void describeSelf (std::ostream &os)
 Write Mandatories to os. More...
 
std::string adjustKeyword (std::string keyword) const
 Return keyword trimmed (or expanded) to a width of 8 chars. More...
 
int eraseCard (const std::string &keyword) throw (FitsException)
 Erase FITS card keyword. More...
 
off_t getDataOffset () const
 Return the byte offset within the file to the data segment. More...
 
off_t getDataLength () const
 Return the size of the data segment in bytes. More...
 
std::string writeHeader (const bool with_junk=false)
 Return a new valid FITS file format header. More...
 
Adding new Cards
void addCommentCard (const std::string &keyword, const std::string &comment)
 Add a commentary card. More...
 
void addHistory (const std::string &history)
 Add a history of arbitrary length. More...
 
void addComment (const std::string &comment)
 Add a history of arbitrary length. More...
 
void addValueCard (const std::string &keyword, const std::string &value, const std::string comment="", const bool fixed=true)
 Add a string value card. More...
 
void addValueCard (const std::string &keyword, const char *value, const std::string comment="", const bool fixed=true)
 Add a char value card. More...
 
void addValueCard (const std::string &keyword, const bool value, const std::string comment="", const bool fixed=true)
 Add a boolean value card. More...
 
void addValueCard (const std::string &keyword, const int value, const std::string comment="", const bool fixed=true)
 Add an integer value card. More...
 
void addValueCard (const std::string &keyword, const long value, const std::string comment="", const bool fixed=true)
 Add an integer value card. More...
 
void addValueCard (const std::string &keyword, const float value, const std::string comment="", const bool fixed=true)
 Add a floating point value card. More...
 
void addValueCard (const std::string &keyword, const double value, const std::string comment="", const bool fixed=true)
 Add a floating point value card. More...
 
Shortcuts

Get (and set) values of mandatories and array keys via shortcuts.

int getBitpix () const
 Return BITPIX setting. More...
 
int getBytpix () const
 Return bytes per pixel, i.e. abs( bitpix_ ) / 8. More...
 
int getNaxis () const
 Return NAXIS setting. More...
 
int getNaxis (const int i) const
 Return width of i NAXIS. More...
 
double getBscale () const
 Return BSCALE setting. More...
 
double getBzero () const
 Return BZERO setting. More...
 
void setBscale (const double value)
 Set the BSCALE key to value. More...
 
void setBzero (const double value)
 Set the BZERO key to value. More...
 
util::Region getFullRegion () const
 Return a util::Region according to the NAXIS geometry. More...
 
Read Cards

Search the lists for card matching keyword and return requested instance.

std::string getString (const std::string &keyword) const
 Return string value of FITS key keyword. More...
 
bool getBool (const std::string &keyword) const
 Return boolean value of FITS key keyword. More...
 
long getInt (const std::string &keyword) const
 Return integer value of FITS key keyword. More...
 
double getFloat (const std::string &keyword) const
 Return floating point value of FITS key keyword. More...
 
bool isFixed (const std::string &keyword) const
 Indicate if value of FITS key keyword is of fixed type. More...
 
std::string getComment (const std::string &keyword) const
 Return comment of FITS key keyword. More...
 
std::string getComment () const
 Return complete COMMENT. More...
 
std::string getHistory () const
 Return complete HISTORY. More...
 
std::string getValueAsString (const std::string &keyword) const
 Return value of FITS key keyword as a string irrespective of its type. More...
 

Protected Member Functions

 FitsHeader ()
 Empty constructor is protected! More...
 
 FitsHeader (const std::string &filename, const bool quiet_please, const bool alljunk, const off_t startoffset)
 Construct extension from existing file. More...
 
void readHeader (const std::string &filename, const bool alljunk=false, unsigned char *inmemptr=NULL, size_t inmemlen=0) throw (FitsException)
 Read and parse a FITS header from file. More...
 
void parseCommentToCardList (const std::string &keyword, const std::string &comment)
 Parse and add a commentstring to its list. More...
 
void addCommentCard (FitsCard *cardptr) throw (FitsException)
 Add a commentary card to the correct list. More...
 
void addJunkCard (const std::string &native_card)
 Just split 80 char card into keyword + rest and push it on the junk list. More...
 
void addJunkCard (const std::string &keyword, const std::string &comment)
 Add a suitable trimmed junk card. More...
 
void addJunkCard (FitsCard *cardptr)
 Add a preexisting ltl::FitsCard to junk list. More...
 
void addValueCard (FitsCard *cardptr) throw (FitsException)
 Add a value holding card to its proper list. More...
 
void clearCardList (std::list< FitsCard * > &the_list)
 Clear a whole list of cards. More...
 
int eraseCardFromList (const std::string &keyword, std::list< FitsCard * > &the_list)
 Erase first ltl::FitsCard mathcing keyword from the_list. More...
 
int eraseCardsFromJunkList (const std::string &keyword)
 Erase all cards matching keyword from the ltl::FitsHeader::junk_ list. More...
 
FitsCard * findCardInList (const std::string &keyword, const std::list< FitsCard * > &the_list) const
 Return pointer to card matching keyword in the_list. More...
 
FitsCard * getValueCard (const std::string &keyword) const throw (FitsException)
 Return pointer to first card matching keyword on any non commentary list. More...
 
std::string writeCommentsOfList (const std::list< FitsCard * > &the_list) const
 Return string holding new line broken comments of a whole list. More...
 
std::string writeCardsOfList (const std::list< FitsCard * > &the_list) const
 Return string holding FITS formatted cards of a list. More...
 
void copy (const FitsHeader &other)
 Copy header from other. More...
 
void copyCardList (std::list< FitsCard * > &dest_list, const std::list< FitsCard * > &src_list)
 Copy list of ltl::FitsCard. More...
 
void testRegion (const util::Region &testreg) const throw (FitsException)
 Test if region complies with FITS file geometry. More...
 
Parse Record string

The next 4 methods parse a complete 2880 char record into lists of ltl::FitsCards.

std::string::size_type parseRecord (const std::string &record, const bool alljunk=false) throw (FitsException)
 Parse a FITS record and assign the cards to their proper lists. More...
 
std::string::size_type parseMandatory (const std::string &record) throw (FitsException)
 Parse the mandatory keys of record. More...
 
std::string::size_type parseNaxis (const std::string &record, std::string::size_type card_of_record=0)
 Parse cards until Naxis parameter is matched, returns card offset in record. More...
 
void checkNaxis () throw (FitsException)
 Check the Naxis list, ltl::FitsException on error. More...
 
Parse Card String

These 2 functions parse a 80 char line card into an ltl::FitsCard.

FitsCard * parseCard (const std::string &card) const throw (FitsException)
 Parse 80 char line into an ltl::FitsCard object. More...
 
std::string getCardComment (const std::string &teststring) const throw (FitsException)
 Return the comment of a 80 char line card remainder. More...
 

Protected Attributes

bool shutup_
 Boolean indicating if no error messages shall be written to stderr. More...
 
int bitpix_
 Shortcuts to FITS keywords BITPIX, abs(BITPIX)/8 and NAXIS. More...
 
int bytpix_
 
int naxis_
 
intnaxis_array_
 Pointer to array holding shortcuts to NAXIS keywords. More...
 
bool extended_
 Shortcut indicating extension maybe present. More...
 
int pcount_
 Shortcuts for calculating length of extension. More...
 
int gcount_
 
double bscale_
 Shortcuts to FITS keywords BSCALE and BZERO. More...
 
double bzero_
 
off_t data_offset_
 Offset to first element of data segment,. More...
 
off_t data_length_
 Length of data segment in bytes. More...
 

Static Protected Attributes

static const FitsPhysical PH_C
 Structure holding physical FITS sizes. More...
 
static const FitsKnownList KNOWN
 List of all known keywords and their types. More...
 

Card Lists

Lists representing the FITS header structure.

typedef std::list< FitsCard * > MandatoryList
 
typedef MandatoryList::iterator MandatoryIter
 
typedef std::list< FitsCard * > NaxisList
 
typedef NaxisList::iterator NaxisIter
 
typedef std::list< FitsCard * > ExtensionList
 
typedef ExtensionList::iterator ExtensionIter
 
typedef std::list< FitsCard * > ObserveList
 
typedef ObserveList::iterator ObserveIter
 
typedef std::list< FitsCard * > CommentList
 
typedef CommentList::iterator CommentIter
 
typedef std::list< FitsCard * > HistoryList
 
typedef HistoryList::iterator HistoryIter
 
typedef std::list< FitsCard * > BlankList
 
typedef BlankList::iterator BlankIter
 
typedef std::list< FitsCard * > ArrayList
 
typedef ArrayList::iterator ArrayIter
 
typedef std::list< FitsCard * > OtherList
 
typedef OtherList::iterator OtherIter
 
typedef std::list< FitsCard * > JunkList
 
typedef JunkList::iterator JunkIter
 
MandatoryList mandatory_
 List holding all mandatory cards. More...
 
NaxisList naxis_i_
 List holding all NAXIS# cards. More...
 
ExtensionList extension_
 List holding EXTENSION cards. More...
 
ObserveList observe_
 List holding reserved keywords cards which are not on other lists. More...
 
CommentList comment_
 List holding the COMMENT cards. More...
 
HistoryList history_
 List holding the HISTORY cards. More...
 
BlankList blank_
 List holding the blank cards. More...
 
ArrayList array_
 List holding array keywords cards. More...
 
OtherList otherkeys_
 List holding all other cards. More...
 
JunkList junk_
 List holding the cards not complying with FITS standard. More...
 

Detailed Description

Representation of a complete FITS header. Holds also header I/O methods.

Member Typedef Documentation

typedef std::list<FitsCard *> ltl::FitsHeader::MandatoryList
protected
typedef MandatoryList::iterator ltl::FitsHeader::MandatoryIter
protected
typedef std::list<FitsCard *> ltl::FitsHeader::NaxisList
protected
typedef NaxisList::iterator ltl::FitsHeader::NaxisIter
protected
typedef std::list<FitsCard *> ltl::FitsHeader::ExtensionList
protected
typedef ExtensionList::iterator ltl::FitsHeader::ExtensionIter
protected
typedef std::list<FitsCard *> ltl::FitsHeader::ObserveList
protected
typedef ObserveList::iterator ltl::FitsHeader::ObserveIter
protected
typedef std::list<FitsCard *> ltl::FitsHeader::CommentList
protected
typedef CommentList::iterator ltl::FitsHeader::CommentIter
protected
typedef std::list<FitsCard *> ltl::FitsHeader::HistoryList
protected
typedef HistoryList::iterator ltl::FitsHeader::HistoryIter
protected
typedef std::list<FitsCard *> ltl::FitsHeader::BlankList
protected
typedef BlankList::iterator ltl::FitsHeader::BlankIter
protected
typedef std::list<FitsCard *> ltl::FitsHeader::ArrayList
protected
typedef ArrayList::iterator ltl::FitsHeader::ArrayIter
protected
typedef std::list<FitsCard *> ltl::FitsHeader::OtherList
protected
typedef OtherList::iterator ltl::FitsHeader::OtherIter
protected
typedef std::list<FitsCard *> ltl::FitsHeader::JunkList
protected
typedef JunkList::iterator ltl::FitsHeader::JunkIter
protected

Constructor & Destructor Documentation

ltl::FitsHeader::FitsHeader ( unsigned char *  inmemptr,
size_t  inmemlen,
const bool  quiet_please = false,
const bool  alljunk = false 
)

Construct from existing file.

ltl::FitsHeader::FitsHeader ( const std::string &  filename,
const bool  quiet_please = false,
const bool  alljunk = false 
)
ltl::FitsHeader::FitsHeader ( const FitsHeader other,
const bool  quiet_please = false,
const bool  alljunk = false 
)

Construct as copy from other.

virtual ltl::FitsHeader::~FitsHeader ( )
virtual

Destruct Object.

ltl::FitsHeader::FitsHeader ( )
protected

Empty constructor is protected!

ltl::FitsHeader::FitsHeader ( const std::string &  filename,
const bool  quiet_please,
const bool  alljunk,
const off_t  startoffset 
)
protected

Construct extension from existing file.

Member Function Documentation

FitsHeader& ltl::FitsHeader::operator= ( const FitsHeader other)

Copy values from other.

virtual void ltl::FitsHeader::describeSelf ( std::ostream &  os)
virtual

Write Mandatories to os.

Reimplemented in ltl::FitsOut, and ltl::FitsIn.

std::string ltl::FitsHeader::adjustKeyword ( std::string  keyword) const

Return keyword trimmed (or expanded) to a width of 8 chars.

Trailing blanks are significant for FITS keywords. If you want to add missing trailing blanks or simply trim too long keywords you may want to use this method.

void ltl::FitsHeader::addCommentCard ( const std::string &  keyword,
const std::string &  comment 
)

Add a commentary card.

void ltl::FitsHeader::addHistory ( const std::string &  history)

Add a history of arbitrary length.

void ltl::FitsHeader::addComment ( const std::string &  comment)

Add a history of arbitrary length.

void ltl::FitsHeader::addValueCard ( const std::string &  keyword,
const std::string &  value,
const std::string  comment = "",
const bool  fixed = true 
)

Add a string value card.

void ltl::FitsHeader::addValueCard ( const std::string &  keyword,
const char *  value,
const std::string  comment = "",
const bool  fixed = true 
)

Add a char value card.

void ltl::FitsHeader::addValueCard ( const std::string &  keyword,
const bool  value,
const std::string  comment = "",
const bool  fixed = true 
)

Add a boolean value card.

void ltl::FitsHeader::addValueCard ( const std::string &  keyword,
const int  value,
const std::string  comment = "",
const bool  fixed = true 
)

Add an integer value card.

void ltl::FitsHeader::addValueCard ( const std::string &  keyword,
const long  value,
const std::string  comment = "",
const bool  fixed = true 
)

Add an integer value card.

void ltl::FitsHeader::addValueCard ( const std::string &  keyword,
const float  value,
const std::string  comment = "",
const bool  fixed = true 
)

Add a floating point value card.

void ltl::FitsHeader::addValueCard ( const std::string &  keyword,
const double  value,
const std::string  comment = "",
const bool  fixed = true 
)

Add a floating point value card.

int ltl::FitsHeader::eraseCard ( const std::string &  keyword)
throw (FitsException
)

Erase FITS card keyword.

Returns 0 on success, -1 on keyword not found.

Exceptions
ltl::FitsExceptionon forbidden erasures.
off_t ltl::FitsHeader::getDataOffset ( ) const

Return the byte offset within the file to the data segment.

int ltl::FitsHeader::getBitpix ( ) const

Return BITPIX setting.

int ltl::FitsHeader::getBytpix ( ) const

Return bytes per pixel, i.e. abs( bitpix_ ) / 8.

int ltl::FitsHeader::getNaxis ( ) const

Return NAXIS setting.

Referenced by ltl::getFitsMArray(), and ltl::insertFitsMArray().

int ltl::FitsHeader::getNaxis ( const int  i) const

Return width of i NAXIS.

double ltl::FitsHeader::getBscale ( ) const
double ltl::FitsHeader::getBzero ( ) const
void ltl::FitsHeader::setBscale ( const double  value)

Set the BSCALE key to value.

void ltl::FitsHeader::setBzero ( const double  value)

Set the BZERO key to value.

util::Region ltl::FitsHeader::getFullRegion ( ) const

Return a util::Region according to the NAXIS geometry.

Referenced by ltl::FitsIn::getDataArray(), ltl::FitsIn::readRegionArray(), and ltl::FitsOut::writeRegionArray().

off_t ltl::FitsHeader::getDataLength ( ) const

Return the size of the data segment in bytes.

Referenced by ltl::FitsIn::getDataArray(), ltl::FitsIn::readDataArray(), and ltl::FitsOut::writeDataArray().

std::string ltl::FitsHeader::getString ( const std::string &  keyword) const

Return string value of FITS key keyword.

bool ltl::FitsHeader::getBool ( const std::string &  keyword) const

Return boolean value of FITS key keyword.

long ltl::FitsHeader::getInt ( const std::string &  keyword) const

Return integer value of FITS key keyword.

double ltl::FitsHeader::getFloat ( const std::string &  keyword) const

Return floating point value of FITS key keyword.

bool ltl::FitsHeader::isFixed ( const std::string &  keyword) const

Indicate if value of FITS key keyword is of fixed type.

std::string ltl::FitsHeader::getComment ( const std::string &  keyword) const

Return comment of FITS key keyword.

std::string ltl::FitsHeader::getComment ( ) const

Return complete COMMENT.

std::string ltl::FitsHeader::getHistory ( ) const

Return complete HISTORY.

std::string ltl::FitsHeader::getValueAsString ( const std::string &  keyword) const

Return value of FITS key keyword as a string irrespective of its type.

std::string ltl::FitsHeader::writeHeader ( const bool  with_junk = false)

Return a new valid FITS file format header.

void ltl::FitsHeader::readHeader ( const std::string &  filename,
const bool  alljunk = false,
unsigned char *  inmemptr = NULL,
size_t  inmemlen = 0 
)
throw (FitsException
)
protected

Read and parse a FITS header from file.

std::string::size_type ltl::FitsHeader::parseRecord ( const std::string &  record,
const bool  alljunk = false 
)
throw (FitsException
)
protected

Parse a FITS record and assign the cards to their proper lists.

Returns the length of the record or 0 if "END" was found.

Exceptions
ltl::FitsExceptionon error.
std::string::size_type ltl::FitsHeader::parseMandatory ( const std::string &  record)
throw (FitsException
)
protected

Parse the mandatory keys of record.

Return offset to next non-mandatory card within record.

Exceptions
ltl::FitsExceptionon error.
std::string::size_type ltl::FitsHeader::parseNaxis ( const std::string &  record,
std::string::size_type  card_of_record = 0 
)
protected

Parse cards until Naxis parameter is matched, returns card offset in record.

void ltl::FitsHeader::checkNaxis ( )
throw (FitsException
)
protected

Check the Naxis list, ltl::FitsException on error.

FitsCard* ltl::FitsHeader::parseCard ( const std::string &  card) const
throw (FitsException
)
protected

Parse 80 char line into an ltl::FitsCard object.

std::string ltl::FitsHeader::getCardComment ( const std::string &  teststring) const
throw (FitsException
)
protected

Return the comment of a 80 char line card remainder.

void ltl::FitsHeader::parseCommentToCardList ( const std::string &  keyword,
const std::string &  comment 
)
protected

Parse and add a commentstring to its list.

Can be long, will be broken into lines)

void ltl::FitsHeader::addCommentCard ( FitsCard *  cardptr)
throw (FitsException
)
protected

Add a commentary card to the correct list.

void ltl::FitsHeader::addJunkCard ( const std::string &  native_card)
protected

Just split 80 char card into keyword + rest and push it on the junk list.

void ltl::FitsHeader::addJunkCard ( const std::string &  keyword,
const std::string &  comment 
)
protected

Add a suitable trimmed junk card.

void ltl::FitsHeader::addJunkCard ( FitsCard *  cardptr)
protected

Add a preexisting ltl::FitsCard to junk list.

void ltl::FitsHeader::addValueCard ( FitsCard *  cardptr)
throw (FitsException
)
protected

Add a value holding card to its proper list.

If the card has a bad syntax it's put on the ltl::FitsHeader::junk_ list.

Exceptions
ltl::FitsExceptionon error.
void ltl::FitsHeader::clearCardList ( std::list< FitsCard * > &  the_list)
protected

Clear a whole list of cards.

int ltl::FitsHeader::eraseCardFromList ( const std::string &  keyword,
std::list< FitsCard * > &  the_list 
)
protected

Erase first ltl::FitsCard mathcing keyword from the_list.

Return -1 if keyword not found, otherwise 0.

int ltl::FitsHeader::eraseCardsFromJunkList ( const std::string &  keyword)
protected

Erase all cards matching keyword from the ltl::FitsHeader::junk_ list.

Return the number of erased cards.

FitsCard * ltl::FitsHeader::findCardInList ( const std::string &  keyword,
const std::list< FitsCard * > &  the_list 
) const
protected

Return pointer to card matching keyword in the_list.

Return NULL if no card is found.

Referenced by ltl::FitsBinTableIn::readColumn().

FitsCard * ltl::FitsHeader::getValueCard ( const std::string &  keyword) const
throw (FitsException
)
protected

Return pointer to first card matching keyword on any non commentary list.

Exceptions
ltl::FitsExceptionon error, i.e. no matching card found.
std::string ltl::FitsHeader::writeCommentsOfList ( const std::list< FitsCard * > &  the_list) const
protected

Return string holding new line broken comments of a whole list.

std::string ltl::FitsHeader::writeCardsOfList ( const std::list< FitsCard * > &  the_list) const
protected

Return string holding FITS formatted cards of a list.

void ltl::FitsHeader::copy ( const FitsHeader other)
protected

Copy header from other.

void ltl::FitsHeader::copyCardList ( std::list< FitsCard * > &  dest_list,
const std::list< FitsCard * > &  src_list 
)
protected

Copy list of ltl::FitsCard.

void ltl::FitsHeader::testRegion ( const util::Region testreg) const
throw (FitsException
)
protected

Test if region complies with FITS file geometry.

Member Data Documentation

bool ltl::FitsHeader::shutup_
protected

Boolean indicating if no error messages shall be written to stderr.

int ltl::FitsHeader::bitpix_
protected
int ltl::FitsHeader::bytpix_
protected
int ltl::FitsHeader::naxis_
protected
int* ltl::FitsHeader::naxis_array_
protected

Pointer to array holding shortcuts to NAXIS keywords.

Referenced by ltl::FitsBinTableIn::readColumn(), and ltl::FitsBinTableIn::readPColumn().

bool ltl::FitsHeader::extended_
protected

Shortcut indicating extension maybe present.

int ltl::FitsHeader::pcount_
protected

Shortcuts for calculating length of extension.

int ltl::FitsHeader::gcount_
protected
double ltl::FitsHeader::bscale_
protected

Shortcuts to FITS keywords BSCALE and BZERO.

Referenced by ltl::FitsIn::getNextPixel().

double ltl::FitsHeader::bzero_
protected
off_t ltl::FitsHeader::data_offset_
protected

Offset to first element of data segment,.

off_t ltl::FitsHeader::data_length_
protected

Length of data segment in bytes.

const FitsPhysical ltl::FitsHeader::PH_C
staticprotected

Structure holding physical FITS sizes.

const FitsKnownList ltl::FitsHeader::KNOWN
staticprotected

List of all known keywords and their types.

MandatoryList ltl::FitsHeader::mandatory_
protected

List holding all mandatory cards.

NaxisList ltl::FitsHeader::naxis_i_
protected

List holding all NAXIS# cards.

ExtensionList ltl::FitsHeader::extension_
protected

List holding EXTENSION cards.

Referenced by ltl::FitsBinTableIn::readColumn().

ltl::FitsHeader::ObserveList ltl::FitsHeader::observe_
protected

List holding reserved keywords cards which are not on other lists.

These are AUTHOR, BLOCKED, DATE, DATE-OBS, DATExxxx, EQUINOX, EPOCH, INSTRUME, OBJECT, OBSERVER, ORIGIN, REFERENC and TELESCOP. EPOCH will be copied to EQUINOX if EQUINOX not present.

CommentList ltl::FitsHeader::comment_
protected

List holding the COMMENT cards.

HistoryList ltl::FitsHeader::history_
protected

List holding the HISTORY cards.

BlankList ltl::FitsHeader::blank_
protected

List holding the blank cards.

ltl::FitsHeader::ArrayList ltl::FitsHeader::array_
protected

List holding array keywords cards.

These are BSCALE, BZERO, BUNIT, BLANK, CTYPEn, CRPIXn, CRVALn, CRDELTn, CROTAn, DATAMIN and DATAMAX.

OtherList ltl::FitsHeader::otherkeys_
protected

List holding all other cards.

JunkList ltl::FitsHeader::junk_
protected

List holding the cards not complying with FITS standard.