bool WMAPSource::initFile( ) { bool bRetVal = true; int iResult = 0; _numFrames = 0; if( !_filename.isNull( ) && !_filename.isEmpty( ) ) { QString str; fitsfile* ffits; int iStatus = 0; iResult = fits_open_file( &ffits, _filename.ascii( ), READONLY, &iStatus ); if( iResult == 0 ) { int iNumHeaderDataUnits; if( fits_get_num_hdus( ffits, &iNumHeaderDataUnits, &iStatus ) == 0 ) { long lNumBaseRows = 0; long lNumRows; int iHDUType; int i; // // determine the number of frames... // for( i=0; i<iNumHeaderDataUnits-1; i++ ) { if( iStatus == 0 ) { fits_get_hdu_type( ffits, &iHDUType, &iStatus ); if( iHDUType == BINARY_TBL || iHDUType == ASCII_TBL ) { iResult = fits_get_num_rows( ffits, &lNumRows, &iStatus ); if( iResult == 0 ) { if( lNumBaseRows == 0 ) { lNumBaseRows = lNumRows; } else if( lNumRows != 1 ) { if( lNumRows < lNumBaseRows ) { lNumBaseRows = lNumRows; } } } } fits_movrel_hdu( ffits, 1, &iHDUType, &iStatus ); } } fits_movabs_hdu( ffits, 1, &iHDUType, &iStatus); field *fld = new field; fld->table = 0; fld->column = 0; fld->entry = 0; fld->entries = 0; fld->numSamplesPerFrame = 1; fld->numFrames = lNumBaseRows; _fields.insert( "INDEX", fld ); _fieldList.append( "INDEX" ); // // add the fields and metadata... // for( i=0; i<iNumHeaderDataUnits-1; i++ ) { if( iStatus == 0 ) { addToMetadata( ffits, iStatus ); // // create the field entries... // fits_get_hdu_type( ffits, &iHDUType, &iStatus ); if( iStatus == 0 ) { if( iHDUType == BINARY_TBL || iHDUType == ASCII_TBL ) { int iNumCols; iResult = fits_get_num_cols( ffits, &iNumCols, &iStatus ); if( iResult == 0 ) { iResult = fits_get_num_rows( ffits, &lNumRows, &iStatus ); if( iResult == 0 ) { if( lNumRows > 1 ) { addToFieldList( ffits, iNumCols, lNumRows, lNumBaseRows, iStatus ); } else if( lNumRows == 1 ) { addToMetadata( ffits, iNumCols, iStatus ); } } } } } fits_movrel_hdu( ffits, 1, &iHDUType, &iStatus); } } } iStatus = 0; updateNumFramesScalar( ); fits_close_file( ffits, &iStatus ); } } return bRetVal; }
bool PLANCKIDEFSource::initFile( ) { bool bRetVal = true; int iResult = 0; _numFrames = 0; if( !_filename.isNull( ) && !_filename.isEmpty( ) ) { QString str; fitsfile* ffits; int iStatus = 0; iResult = fits_open_file( &ffits, _filename.ascii( ), READONLY, &iStatus ); if( iResult == 0 ) { int iNumHeaderDataUnits; if( fits_get_num_hdus( ffits, &iNumHeaderDataUnits, &iStatus ) == 0 ) { long lNumRows; int iHDUType; int i; // // determine the number of frames... // if( iNumHeaderDataUnits > 1 ) { if( fits_movabs_hdu( ffits, 2, &iHDUType, &iStatus ) == 0 ) { if( fits_get_hdu_type( ffits, &iHDUType, &iStatus ) == 0 ) { if( iHDUType == BINARY_TBL ) { iResult = fits_get_num_rows( ffits, &lNumRows, &iStatus ); if( iResult == 0 ) { _numFrames = lNumRows; } } } } } if( _numFrames > 0 ) { fits_movabs_hdu( ffits, 1, &iHDUType, &iStatus ); field *fld = new field; fld->table = 0; fld->column = 0; _fields.insert( "INDEX", fld ); _fieldList.append( "INDEX" ); // // add the fields and metadata... // for( i=0; i<iNumHeaderDataUnits-1; i++ ) { if( iStatus == 0 ) { addToMetadata( ffits, iStatus ); // // the first table never contains data... // if( i > 0 ) { // // create the time entries if necessary... // if( _fields.find( "TIME_ABSOLUTE" ) == 0L && _fields.find( "TIME_RELATIVE" ) == 0L ) { char comment[FLEN_COMMENT]; int iStatusDelta = 0; int iStatusZero = 0; fits_read_key( ffits, TDOUBLE, "DELTA_T", &_dTimeDelta, comment, &iStatusDelta ); fits_read_key( ffits, TDOUBLE, "TIMEZERO", &_dTimeZero, comment, &iStatusZero ); if( iStatusDelta == 0 ) { if( iStatusZero == 0 ) { field *fld = new field; fld->table = 0; fld->column = 0; _fields.insert( "TIME_ABSOLUTE", fld ); _fieldList.append( "TIME_ABSOLUTE" ); } else { field *fld = new field; fld->table = 0; fld->column = 0; _fields.insert( "TIME_RELATIVE", fld ); _fieldList.append( "TIME_RELATIVE" ); } } } // // create the field entries... // fits_get_hdu_type( ffits, &iHDUType, &iStatus ); if( iStatus == 0 ) { if( iHDUType == BINARY_TBL || iHDUType == ASCII_TBL ) { int iNumCols; iResult = fits_get_num_cols( ffits, &iNumCols, &iStatus ); if( iResult == 0 ) { iResult = fits_get_num_rows( ffits, &lNumRows, &iStatus ); if( iResult == 0 ) { addToFieldList( ffits, iNumCols, iStatus ); } } } } } fits_movrel_hdu( ffits, 1, &iHDUType, &iStatus); } } } } iStatus = 0; updateNumFramesScalar( ); fits_close_file( ffits, &iStatus ); } } return bRetVal; }