6 #ifndef IFW_DIT_FITS_HPP_
7 #define IFW_DIT_FITS_HPP_
12 #include <CCfits/CCfits.h>
13 #include <CCfits/FITS.h>
14 #include <CCfits/PHDU.h>
16 #include "ctd/defines/defines.hpp"
18 #include "dit/did/Did.hpp"
41 const int cfitsio_status);
70 const std::string& filename,
73 const std::list<int32_t>& naxes,
74 std::string& target_filename,
75 const bool remove_if_exists =
false,
76 const uint16_t nb_of_hdr_blocks = 1);
86 const std::string& filename,
87 std::string& target_filename,
88 CCfits::RWmode mode = CCfits::Read);
97 bool KeyInHdu(CCfits::FITS& fits_handle,
99 const std::string& key);
106 void MoveToHdu(CCfits::FITS& fits_handle,
107 const int16_t hdu_nb);
125 const std::string& key,
126 const int16_t hdu_nb,
128 std::string& target_key,
143 template <
class TYPE>
void AddKey(CCfits::FITS& fits_handle,
145 const std::string& key,
147 const int16_t hdu_nb) {
152 if ((
typeid(TYPE) ==
typeid(
double)) || (
typeid(TYPE) ==
typeid(
float))) {
154 throw rad::Exception(
"Use dit::fits::AddDoubleKey() for floating point "
155 "type keyword cards");
159 std::string target_key;
163 PrepForAddingKey(fits_handle, dictionary, key, hdu_nb, did_record, target_key, key_in_hdu,
164 cfitsio_type, format_spec);
168 fits_handle.pHDU().addKey(target_key, value, did_record.
GetComment());
170 fits_handle.extension(hdu_nb).addKey(target_key, value, did_record.
GetComment());
172 }
catch (CCfits::FitsException& ex) {
174 key.c_str(), ex.message().c_str()));
189 const std::string& key,
191 const uint16_t hdu_nb);
213 void Verify(
const std::string& filename,
214 std::string& target_filename,
224 void Verify(
const std::string& filename,
225 std::string& target_filename,
238 std::string& target_filename,
239 std::string& hdr_buf,
249 std::string& hdr_buf,
255 #endif // IFW_DIT_FITS_HPP_
double value
Definition: easylogging++.h:814
void OpenFitsFile(CCfits::FITS **fits_handle, const std::string &filename, std::string &target_filename, CCfits::RWmode mode)
Open an existing FITS file.
Definition: fits.cpp:334
void PrepForAddingKey(CCfits::FITS &fits_handle, const dit::did::Did &dictionary, const std::string &key, const int16_t hdu_nb, dit::did::Record &did_record, std::string &target_key, bool &key_in_hdu, CfitsioType &cfitsio_type, dit::did::FormatSpecifier &format_specifier)
Used to prepare for adding a keyword card in a FITS file (mostly internal usage). ...
Definition: fits.cpp:245
const std::string & GetComment() const
Get the comment defined.
Definition: Record.cpp:339
void AddDoubleKey(CCfits::FITS &fits_handle, const dit::did::Did &dictionary, const std::string &key, const double value, const uint16_t hdu_nb)
Add a double type key in an existing FITS file.
Definition: fits.cpp:193
DataType
Data types numeric representations.
Definition: defines.hpp:33
bool KeyInHdu(CCfits::FITS &fits_handle, const int16_t hdu_nb, const std::string &key)
Check if a given key is contained in the referenced HDU (primary HDU = 1).
Definition: fits.cpp:155
void Verify(const std::string &filename, std::string &target_filename, dit::fits::FitsReport &report)
Function to carry out a verification check on a FITS file.
Definition: fits.cpp:74
CfitsioType DidToCfitsioType(ctd::defines::DataType did_type)
Convert an ELT ICS data type to the corresponding cfitsio data type.
Definition: fits.cpp:16
std::string GenerateKey(const std::string &key, const std::string &hierarch_prefix)
Generates an ESO hierarchical keyword.
Definition: fits.cpp:60
const std::string FITS_KEY_ESO_HIERARCH
Definition: fits.hpp:26
~FitsReport()
Definition: fits.hpp:198
FitsReport()
Definition: fits.hpp:197
void CreateFile(CCfits::FITS **fits_handle, const std::string &filename, const dit::did::Did &dictionary, const int32_t bitpix, const std::list< int32_t > &naxes, std::string &target_filename, const bool remove_if_exists, const uint16_t nb_of_hdr_blocks)
Create a new FITS file.
Definition: fits.cpp:93
#define RAD_LOG_DEBUG1()
Definition: Logger.hpp:291
void HandleCfitsioError(const std::string &operation, const int cfitsio_status)
Throw an exception, extracting the relevant info from cfitsio, if status != 0.
Definition: fits.cpp:35
Data Interface Dictionary keyword record class.
Definition: Record.hpp:96
Definition: Exceptions.hpp:44
int32_t CfitsioType
Definition: fits.hpp:24
void AddKey(CCfits::FITS &fits_handle, const dit::did::Did &dictionary, const std::string &key, const TYPE &value, const int16_t hdu_nb)
Template function to add a keyword card in an existing FITS file.
Definition: fits.hpp:143
std::string Print(const char *format,...)
Create formatted string, return formatted string (C formatting convention).
Definition: defines.cpp:71
#define RAD_LOG_TRACE()
Definition: Logger.hpp:319
const int16_t ALL_HEADERS
Definition: fits.hpp:27
Class to handle information for one FITS file check run.
Definition: fits.hpp:195
void MoveToHdu(CCfits::FITS &fits_handle, const int16_t hdu_nb)
Move to the given HDU.
Definition: fits.cpp:141
Data Interface Dictionary class.
Definition: Did.hpp:25
void ExtractHeaders(CCfits::FITS &fits_handle, std::string &hdr_buf, const int16_t hdr_ref)
Extract the keyword cards in one or more HDU's in an ASCII format (newline terminated).
Definition: fits.cpp:273
optional string name
Definition: topics.proto:50