/***********************************************************************//** * @brief Load livetime cube from FITS file * * @param[in] table FITS table. ***************************************************************************/ void GLATLtCubeMap::read(const GFitsTable& table) { // Clear object clear(); // Load skymap m_map.read(table); // Set costheta binning scheme std::string scheme = gammalib::strip_whitespace(gammalib::toupper(table.string("THETABIN"))); m_sqrt_bin = (scheme == "SQRT(1-COSTHETA)"); // Read attributes m_num_ctheta = table.integer("NBRBINS"); m_num_phi = table.integer("PHIBINS"); m_min_ctheta = table.real("COSMIN"); // Return return; }
/***********************************************************************//** * @brief Read Pulse Height Analyzer spectrum * * @param[in] table FITS table. * * @exception GException::invalid_value * Mismatch between PHA file and energy boundaries. * * Reads the Pulse Height Analyzer spectrum from a FITS table. The channel * values are expected in the `COUNTS` column of the table. All other * columns are ignored. * * See * https://heasarc.gsfc.nasa.gov/docs/heasarc/ofwg/docs/spectra/ogip_92_007/node5.html * for details about the Pulse Height Analyzer spectrum format. ***************************************************************************/ void GPha::read(const GFitsTable& table) { // Clear spectrum clear(); // Get data column const GFitsTableCol* col_data = table["COUNTS"]; // Extract number of channels in FITS file int length = col_data->length(); // Check whether column length is consistent with energy boundaries if (m_ebounds.size() > 0) { if (m_ebounds.size() != length) { std::string msg = "Mismatch between the "+gammalib::str(length)+ " channels in the PHA file and the "+ gammalib::str(m_ebounds.size())+" energy " "boundaries. Please correct either the energy " "boundaris or the PHA file."; throw GException::invalid_value(G_READ, msg); } } // Initialize spectrum m_counts.assign(length, 0.0); // Copy data for (int i = 0; i < length; ++i) { m_counts[i] = col_data->real(i); } // Read keywords m_exposure = (table.has_card("EXPOSURE")) ? table.real("EXPOSURE") : 0.0; // Return return; }