Open a FITS file with columns containing variable-length arrays.
ABOUT THE DATA: To illustrate such a case we use a Redistribution Matrix File (RMF) conform with the HEASARC OGIP specifications OGIP definition https://heasarc.gsfc.nasa.gov/docs/heasarc/ofwg/docs/spectra/ogip_92_007/ogip_92_007.html RMF defintion https://heasarc.gsfc.nasa.gov/docs/heasarc/caldb/docs/memos/cal_gen_92_002/cal_gen_92_002.html#tth_sEc3.1
Variable-length arrays are used to return the non-null row elements of a sparse matrix containing the probability of detecting a photon of a given energy at a given detector channel.
The test data file, rmf.fits, is taken from the test data of the sherpa X-ray analysis tools https://cxc.harvard.edu/sherpa/ the original file is available under the repository https://github.com/sherpa/sherpa-test-data
void FITS_tutorial8()
{
int rownum = 214;
printf(
"reading in row %d, column %s \n", rownum+1, colname1.
Data());
printf(
"(%f, %f) \n", arr1->
At(0), arr1->
At(1));
printf(
"reading in row %d, column %s \n", rownum+1, colname2.
Data());
printf(
"(%f, %f) \n", arr2->
At(0), arr2->
At(1));
printf(
"reading in row %d, column %s \n", rownum+1, colname3.
Data());
printf(
"(%e, %e, %e, %e, %e, ...) \n", arr3->
At(0), arr3->
At(1), arr3->
At(2), arr3->
At(3), arr3->
At(4));
}
Array of doubles (64 bits per element).
Double_t At(Int_t i) const
FITS file interface class.
TArrayD * GetTabVarLengthVectorCell(Int_t rownum, Int_t colnum)
Get the variable-length array contained in a cell given by (row>=0, column name)
const char * Data() const
reading in row 215, column F_CHAN
(1.000000, 68.000000)
reading in row 215, column N_CHAN
(66.000000, 130.000000)
reading in row 215, column MATRIX
(5.842518e-06, 7.290097e-06, 8.188037e-06, 9.157882e-06, 1.018355e-05, ...)
- Author
- Cosimo Nigro
Definition in file FITS_tutorial8.C.