Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/external-alma/atnf/PKSIO/NROFITSDataset.cc

    r2203 r2442  
    620620  }
    621621  // DEBUG
    622 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    623 //     if ( i == 0 ) {
    624 //       cout << "RX      " ;
    625 //     }
    626 //     else if ( ( i % 5 ) == 0 ) {
    627 //       cout << endl << "        " ;
    628 //     }
    629 //     cout << "\'" << RX[i] << "\' " ;
    630 //   }
    631 //   cout << endl ;
     622//   nro_debug_output( "RX", ARYNM, RX ) ;
    632623  //
    633624  if ( readColumn( HPBW, "HPBW", sameEndian ) != 0 ) {
     
    636627  }
    637628  // DEBUG
    638 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    639 //     if ( i == 0 ) {
    640 //       //cout << "HPBW    " ;
    641 //     }
    642 //     else if ( ( i % 5 ) == 0 ) {
    643 //       //cout << endl << "        " ;
    644 //     }
    645 //     //cout << HPBW[i] << " " ;
    646 //   }
    647 //   //cout << endl ;
     629//   nro_debug_output( "HPBW", ARYNM, HPBW ) ;
    648630  //
    649631  if ( readColumn( EFFA, "EFFA", sameEndian ) != 0 ) {
     
    652634  }
    653635  // DEBUG
    654 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    655 //     if ( i == 0 ) {
    656 //       //cout << "EFFA    " ;
    657 //     }
    658 //     else if ( ( i % 5 ) == 0 ) {
    659 //       //cout << endl << "        " ;
    660 //     }
    661 //     //cout << EFFA[i] << " " ;
    662 //   }
    663 //   //cout << endl ;
     636//   nro_debug_output( "EFFA", ARYNM, EFFA ) ;
    664637  //
    665638  if ( readColumn( EFFB, "EFFB", sameEndian ) != 0 ) {
     
    668641  }
    669642  // DEBUG
    670 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    671 //     if ( i == 0 ) {
    672 //       //cout << "EFFB    " ;
    673 //     }
    674 //     else if ( ( i % 5 ) == 0 ) {
    675 //       //cout << endl << "        " ;
    676 //     }
    677 //     //cout << EFFB[i] << " " ;
    678 //   }
    679 //   //cout << endl ;
     643//   nro_debug_output( "EFFB", ARYNM, EFFB ) ;
    680644  //
    681645  if ( readColumn( EFFL, "EFFL", sameEndian ) != 0 ) {
     
    684648  }
    685649  // DEBUG
    686 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    687 //     if ( i == 0 ) {
    688 //       //cout << "EFFL    " ;
    689 //     }
    690 //     else if ( ( i % 5 ) == 0 ) {
    691 //       //cout << endl << "        " ;
    692 //     }
    693 //     //cout << EFFL[i] << " " ;
    694 //   }
    695 //   //cout << endl ;
     650//   nro_debug_output( "EFFL", ARYNM, EFFL ) ;
    696651  //
    697652  if ( readColumn( EFSS, "EFSS", sameEndian ) != 0 ) {
     
    700655  }
    701656  // DEBUG
    702 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    703 //     if ( i == 0 ) {
    704 //       //cout << "EFSS    " ;
    705 //     }
    706 //     else if ( ( i % 5 ) == 0 ) {
    707 //       //cout << endl << "        " ;
    708 //     }
    709 //     //cout << EFSS[i] << " " ;
    710 //   }
    711 //   //cout << endl ;
     657//   nro_debug_output( "EFSS", ARYNM, EFSS ) ;
    712658  //
    713659  if ( readColumn( GAIN, "GAIN", sameEndian ) != 0 ) {
     
    716662  }
    717663  // DEBUG
    718 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    719 //     if ( i == 0 ) {
    720 //       //cout << "GAIN    " ;
    721 //     }
    722 //     else if ( ( i % 5 ) == 0 ) {
    723 //       //cout << endl << "        " ;
    724 //     }
    725 //     //cout << GAIN[i] << " " ;
    726 //   }
    727 //   //cout << endl ;
     664//   nro_debug_output( "GAIN", ARYNM, GAIN ) ;
    728665  //
    729666  if ( readColumn( HORN, "HORN" ) != 0 ) {
     
    732669  }
    733670  // DEBUG
    734 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    735 //     if ( i == 0 ) {
    736 //       //cout << "HORN    " ;
    737 //     }
    738 //     else if ( ( i % 5 ) == 0 ) {
    739 //       //cout << endl << "        " ;
    740 //     }
    741 //     //cout << "\'" << HORN[i] << "\' " ;
    742 //   }
    743 //   //cout << endl ;
     671//   nro_debug_output( "HORN", ARYNM, HORN ) ;
    744672  //
    745673  if ( readColumn( POLTP, "POLTP" ) != 0 ) {
     
    748676  }
    749677  // DEBUG
    750 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    751 //     if ( i == 0 ) {
    752 //       //cout << "POLTP   " ;
    753 //     }
    754 //     else if ( ( i % 5 ) == 0 ) {
    755 //       //cout << endl << "        " ;
    756 //     }
    757 //     //cout << "\'" << POLTP[i] << "\' " ;
    758 //   }
    759 //   //cout << endl ;
     678//   nro_debug_output( "POLTP", ARYNM, POLTP ) ;
    760679  //
    761680  vector<int> ipoldr( ARYNM, 0 ) ;
     
    767686    POLDR[i] = (double)ipoldr[i] ;
    768687  // DEBUG
    769 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    770 //     if ( i == 0 ) {
    771 //       //cout << "POLDR   " ;
    772 //     }
    773 //     else if ( ( i % 5 ) == 0 ) {
    774 //       //cout << endl << "        " ;
    775 //     }
    776 //     //cout << POLDR[i] << " " ;
    777 //   }
    778 //   //cout << endl ;
     688//   nro_debug_output( "POLDR", ARYNM, POLDR ) ;
    779689  //
    780690  if ( readColumn( POLAN, "POLAN", sameEndian ) != 0 ) {
     
    783693  }
    784694  // DEBUG
    785 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    786 //     if ( i == 0 ) {
    787 //       //cout << "POLAN   " ;
    788 //     }
    789 //     else if ( ( i % 5 ) == 0 ) {
    790 //       //cout << endl << "        " ;
    791 //     }
    792 //     //cout << POLAN[i] << " " ;
    793 //   }
    794 //   //cout << endl ;
     695//   nro_debug_output( "POLAN", ARYNM, POLAN ) ;
    795696  //
    796697  if ( readColumn( DFRQ, "DFRQ", sameEndian ) != 0 ) {
     
    799700  }
    800701  // DEBUG
    801 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    802 //     if ( i == 0 ) {
    803 //       //cout << "DFRQ    " ;
    804 //     }
    805 //     else if ( ( i % 5 ) == 0 ) {
    806 //       //cout << endl << "        " ;
    807 //     }
    808 //     //cout << DFRQ[i] << " " ;
    809 //   }
    810 //   //cout << endl ;
     702//   nro_debug_output( "DFRQ", ARYNM, DFRQ ) ;
    811703  //
    812704  if ( readColumn( SIDBD, "SIDBD" ) != 0 ) {
     
    815707  }
    816708  // DEBUG
    817 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    818 //     if ( i == 0 ) {
    819 //       //cout << "SIDBD   " ;
    820 //     }
    821 //     else if ( ( i % 5 ) == 0 ) {
    822 //       //cout << endl << "        " ;
    823 //     }
    824 //     //cout << "\'" << SIDBD[i] << "\' " ;
    825 //   }
    826 //   //cout << endl ;
     709//   nro_debug_output( "SIDBD", ARYNM, SIDBD ) ;
    827710  //
    828711  if ( readColumn( REFN, "REFN", sameEndian ) != 0 ) {
     
    831714  }
    832715  // DEBUG
    833 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    834 //     if ( i == 0 ) {
    835 //       //cout << "REFN    " ;
    836 //     }
    837 //     else if ( ( i % 5 ) == 0 ) {
    838 //       //cout << endl << "        " ;
    839 //     }
    840 //     //cout << REFN[i] << " " ;
    841 //   }
    842 //   //cout << endl ;
     716//   nro_debug_output( "REFN", ARYNM, REFN ) ;
    843717  //
    844718  if ( readColumn( IPINT, "IPINT", sameEndian ) != 0 ) {
     
    847721  }
    848722  // DEBUG
    849 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    850 //     if ( i == 0 ) {
    851 //       //cout << "IPINT   " ;
    852 //     }
    853 //     else if ( ( i % 5 ) == 0 ) {
    854 //       //cout << endl << "        " ;
    855 //     }
    856 //     //cout << IPINT[i] << " " ;
    857 //   }
    858 //   //cout << endl ;
     723//   nro_debug_output( "IPINT", ARYNM, IPINT ) ;
    859724  //
    860725  if ( readColumn( MULTN, "MULTN", sameEndian ) != 0 ) {
     
    863728  }
    864729  // DEBUG
    865 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    866 //     if ( i == 0 ) {
    867 //       //cout << "MULTN   " ;
    868 //     }
    869 //     else if ( ( i % 5 ) == 0 ) {
    870 //       //cout << endl << "        " ;
    871 //     }
    872 //     //cout << MULTN[i] << " " ;
    873 //   }
    874 //   //cout << endl ;
     730//   nro_debug_output( "MULTN", ARYNM, MULTN ) ;
    875731  //
    876732  if ( readColumn( MLTSCF, "MLTSCF", sameEndian ) != 0 ) {
     
    879735  }
    880736  // DEBUG
    881 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    882 //     if ( i == 0 ) {
    883 //       //cout << "MLTSCF  " ;
    884 //     }
    885 //     else if ( ( i % 5 ) == 0 ) {
    886 //       //cout << endl << "        " ;
    887 //     }
    888 //     //cout << MLTSCF[i] << " " ;
    889 //   }
    890 //   //cout << endl ;
     737//   nro_debug_output( "MLTSCF", ARYNM, MLTSCF ) ;
    891738  //
    892739  if ( readColumn( LAGWIND, "LAGWIN" ) != 0 ) {
     
    895742  }
    896743  // DEBUG
    897 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    898 //     if ( i == 0 ) {
    899 //       //cout << "LAGWIND " ;
    900 //     }
    901 //     else if ( ( i % 5 ) == 0 ) {
    902 //       //cout << endl << "        " ;
    903 //     }
    904 //     //cout << "\'" << LAGWIND[i] << "\' " ;
    905 //   }
    906 //   //cout << endl ;
     744//   nro_debug_output( "LAGWIND", ARYNM, LAGWIND ) ;
    907745  //
    908746  if ( readColumn( BEBW, "BEBW", sameEndian ) != 0 ) {
     
    911749  }
    912750  // DEBUG
    913 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    914 //     if ( i == 0 ) {
    915 //       //cout << "BEBW    " ;
    916 //     }
    917 //     else if ( ( i % 5 ) == 0 ) {
    918 //       //cout << endl << "        " ;
    919 //     }
    920 //     //cout << BEBW[i] << " " ;
    921 //   } 
    922 //   //cout << endl ;
     751//   nro_debug_output( "BEBW", ARYNM, BEBW ) ;
    923752  //
    924753  if ( readColumn( BERES, "BERES", sameEndian ) != 0 ) {
     
    927756  }
    928757  // DEBUG
    929 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    930 //     if ( i == 0 ) {
    931 //       //cout << "BERES   " ;
    932 //     }
    933 //     else if ( ( i % 5 ) == 0 ) {
    934 //       //cout << endl << "        " ;
    935 //     }
    936 //     //cout << BERES[i] << " " ;
    937 //   }
    938 //   //cout << endl ;
     758//   nro_debug_output( "BERES", ARYNM, BERES ) ;
    939759  //
    940760  if ( readColumn( CHWID, "CHWID", sameEndian ) != 0 ) {
     
    942762    return -1 ;
    943763  }
    944     // DEBUG
    945 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    946 //     if ( i == 0 ) {
    947 //       //cout << "CHWID   " ;
    948 //     }
    949 //     else if ( ( i % 5 ) == 0 ) {
    950 //       //cout << endl << "        " ;
    951 //     }
    952 //     //cout << CHWID[i] << " " ;
    953 //   }
    954 //   //cout << endl ;
     764  // DEBUG
     765//   nro_debug_output( "CHWID", ARYNM, CHWID ) ;
    955766  //
    956767  if ( readARRY() != 0 ) {
     
    959770  }
    960771  // DEBUG
    961 //   for ( int i = 0 ; i < NRO_FITS_ARYMAX ; i++ ) {
    962 //     if ( i == 0 ) {
    963 //       //cout << "ARRY    " ;
    964 //     }
    965 //     else if ( ( i % 20 ) == 0 ) {
    966 //       //cout << endl << "        " ;
    967 //     }
    968 //     //cout << ARRY[i] << " " ;
    969 //   }
    970 //   //cout << endl ;
     772//   nro_debug_output( "ARRY", NRO_FITS_ARYMAX, ARRY ) ;
    971773  //
    972774  if ( readColumn( NFCAL, "NFCAL", sameEndian ) != 0 ) {
     
    974776    return -1 ;
    975777  }
    976     // DEBUG
    977 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    978 //     if ( i == 0 ) {
    979 //       //cout << "NFCAL   " ;
    980 //     }
    981 //     else if ( ( i % 5 ) == 0 ) {
    982 //       //cout << endl << "        " ;
    983 //     }
    984 //     //cout << NFCAL[i] << " " ;
    985 //   }
    986 //   //cout << endl ;
     778  // DEBUG
     779//   nro_debug_output( "NFCAL", ARYNM, NFCAL ) ;
    987780  //
    988781  if ( readColumn( F0CAL, "F0CAL", sameEndian ) != 0 ) {
     
    990783    return -1 ;
    991784  }
    992     // DEBUG
    993 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    994 //     if ( i == 0 ) {
    995 //       //cout << "F0CAL   " ;
    996 //     }
    997 //     else if ( ( i % 5 ) == 0 ) {
    998 //       //cout << endl << "        " ;
    999 //     }
    1000 //     //cout << F0CAL[i] << " " ;
    1001 //   }
    1002 //   //cout << endl ;
     785  // DEBUG
     786//   nro_debug_output( "F0CAL", ARYNM, F0CAL ) ;
    1003787  //
    1004788  for ( int i= 0 ; i < 10 ; i++) {
     
    1013797  }
    1014798  // DEBUG
    1015 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    1016 //     for ( int j = 0 ; j < 10 ; j++ ) {
    1017 //       if ( j == 0 ) {
    1018 //         if ( i < 10 )
    1019 //           //cout << "FQCAL0" << i << " " ;
    1020 //         else
    1021 //           //cout << "FQCAL" << i << " " ;
    1022 //       }
    1023 //       else if ( ( j % 5 ) == 0 ) {
    1024 //         //cout << endl << "        " ;
    1025 //       }
    1026 //       //cout << FQCAL[i][j] << " " ;
    1027 //     }
    1028 //     //cout << endl ;
    1029 //   }
     799//   nro_debug_output( "FQCAL", ARYNM, 10, FQCAL ) ;
    1030800  //
    1031801  for ( int i= 0 ; i < 10 ; i++) {
     
    1040810  }
    1041811  // DEBUG
    1042 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    1043 //     for ( int j = 0 ; j < 10 ; j++ ) {
    1044 //       if ( j == 0 ) {
    1045 //         if ( i < 10 )
    1046 //           //cout << "CHCAL0" << i << " " ;
    1047 //         else
    1048 //           //cout << "CHCAL" << i << " " ;
    1049 //       }
    1050 //       else if ( ( j % 5 ) == 0 ) {
    1051 //         //cout << endl << "        " ;
    1052 //       }
    1053 //      //cout << CHCAL[i][j] << " " ;
    1054 //    }
    1055 //    //cout << endl ;
    1056 //   }
     812//   nro_debug_output( "CHCAL", ARYNM, 10, CHCAL ) ;
    1057813  //
    1058814  for ( int i= 0 ; i < 10 ; i++) {
     
    1067823  }
    1068824  // DEBUG
    1069 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    1070 //     for ( int j = 0 ; j < 10 ; j++ ) {
    1071 //       if ( j == 0 ) {
    1072 //         if ( i < 10 )
    1073 //           //cout << "CWCAL0" << i << " " ;
    1074 //         else
    1075 //           //cout << "CWCAL" << i << " " ;
    1076 //       }
    1077 //       else if ( ( j % 5 ) == 0 ) {
    1078 //         //cout << endl << "        " ;
    1079 //       }
    1080 //       //cout << CWCAL[i][j] << " " ;
    1081 //     }
    1082 //     //cout << endl ;
    1083 //   }
     825//   nro_debug_output( "CWCAL", ARYNM, 10, CWCAL ) ;
    1084826  //
    1085827  if ( readHeader( SCNLEN, "NAXIS1", sameEndian ) != 0 ) {
     
    1117859  }
    1118860  // DEBUG
    1119 //   for ( int i = 0 ; i < ARYNM ; i++ ) {
    1120 //     if ( i == 0 ) {
    1121 //       //cout << "DSBFC   " ;
    1122 //     }
    1123 //     else if ( ( i % 5 ) == 0 ) {
    1124 //       //cout << endl << "        " ;
    1125 //     }
    1126 //     //cout << DSBFC[i] << " " ;
    1127 //   }
    1128 //   //cout << endl ;
     861//   nro_debug_output( "DSBFC", ARYNM, DSBFC ) ;
    1129862  //
    1130863
     
    21971930}
    21981931
    2199 int NROFITSDataset::readTable( char *v, char *name )
    2200 {
    2201   //
    2202   // Read 'name' attribute defined as char from the 0-th row
    2203   // of the FITS Scan Record
    2204   //
    2205   int status = readTable( v, name, (int)strlen( v ), 0 ) ;
    2206 
    2207   return status ;
    2208 }
    2209 
    22101932int NROFITSDataset::readTable( char *v, char *name, int clen, int idx )
    22111933{
     
    22141936  // of the FITS Scan Record
    22151937  //
    2216   int status = 0 ;
    2217 
    2218   // skip header
    2219   fseek( fp_, FITS_HEADER_SIZE, SEEK_SET ) ;
    2220 
    2221   // find offset
    2222   int offset = getOffset( name ) ;
    2223   if ( offset == -1 ) {
    2224     //cerr << "Error, " << name << " is not found in the name list." << endl ;
    2225     return -1 ;
    2226   }
    2227   offset += idx * scanLen_ ;
    2228   //cout << "offset for " << name << " is " << offset << " bytes." << endl ;
    2229   fseek( fp_, offset, SEEK_CUR ) ;
     1938  int status = movePointer( name, idx ) ;
     1939  if ( status < 0 )
     1940    return status ;
    22301941
    22311942  // get length of char
     
    22541965}
    22551966
    2256 int NROFITSDataset::readTable( int &v, char *name, int b )
    2257 {
    2258   //
    2259   // Read 'name' attribute defined as int from the 0-th row
    2260   // of the FITS Scan Record
    2261   //
    2262   int status = readTable( v, name, b, 0 ) ;
    2263 
    2264   return status ;
    2265 }
    2266 
    22671967int NROFITSDataset::readTable( int &v, char *name, int b, int idx )
    22681968{
     
    22711971  // of the FITS Scan Record
    22721972  //
    2273   int status = 0 ;
    2274   // skip header
    2275   fseek( fp_, FITS_HEADER_SIZE, SEEK_SET ) ;
    2276 
    2277   // find offset
    2278   int offset = getOffset( name ) ;
    2279   if ( offset == -1 ) {
    2280     //cerr << "Error, " << name << " is not found in the name list." << endl ;
    2281     return -1 ;
    2282   }
    2283   offset += idx * scanLen_ ;
    2284   //cout << "offset for " << name << " is " << offset << " bytes." << endl ;
    2285   fseek( fp_, offset, SEEK_CUR ) ;
     1973  int status = movePointer( name, idx ) ;
     1974  if ( status < 0 )
     1975    return status ;
    22861976
    22871977  // read data
     
    22931983}
    22941984
    2295 int NROFITSDataset::readTable( float &v, char *name, int b )
    2296 {
    2297   //
    2298   // Read 'name' attribute defined as float from the 0-th row
    2299   // of the FITS Scan Record
    2300   //
    2301   int status = readTable( v, name, b, 0 ) ;
    2302 
    2303   return status ;
    2304 }
    2305 
    23061985int NROFITSDataset::readTable( float &v, char *name, int b, int idx )
    23071986{
     
    23101989  // of the FITS Scan Record
    23111990  //
    2312   int status = 0 ;
    2313 
    2314   // skip header
    2315   fseek( fp_, FITS_HEADER_SIZE, SEEK_SET ) ;
    2316 
    2317   // find offset
    2318   int offset = getOffset( name ) ;
    2319   if ( offset == -1 ) {
    2320     //cerr << "Error, " << name << " is not found in the name list." << endl ;
    2321     return -1 ;
    2322   }
    2323   offset += idx * scanLen_ ;
    2324   //cout << "offset for " << name << " is " << offset << " bytes." << endl ;
    2325   fseek( fp_, offset, SEEK_CUR ) ;
     1991  int status = movePointer( name, idx ) ;
     1992  if ( status < 0 )
     1993    return status ;
    23261994
    23271995  // read data
     
    23332001}
    23342002
    2335 int NROFITSDataset::readTable( double &v, char *name, int b )
    2336 {
    2337   //
    2338   // Read 'name' attribute defined as double from the 0-th row
    2339   // of the FITS Scan Record
    2340   //
    2341   int status = readTable( v, name, b, 0 ) ;
    2342 
    2343   return status ;
    2344 }
    2345 
    23462003int NROFITSDataset::readTable( double &v, char *name, int b, int idx )
    23472004{
     
    23502007  // of the FITS Scan Record
    23512008  //
    2352   int status = 0 ;
    2353 
    2354   // skip header
    2355   fseek( fp_, FITS_HEADER_SIZE, SEEK_SET ) ;
    2356 
    2357   // find offset
    2358   int offset = getOffset( name ) ;
    2359   if ( offset == -1 ) {
    2360     //cerr << "Error, " << name << " is not found in the name list." << endl ;
    2361     return -1 ;
    2362   }
    2363   offset += idx * scanLen_ ;
    2364   //cout << "offset for " << name << " is " << offset << " bytes." << endl ;
    2365   fseek( fp_, offset, SEEK_CUR ) ;
     2009  int status = movePointer( name, idx ) ;
     2010  if ( status < 0 )
     2011    return status ;
    23662012
    23672013  // read data
     
    23782024  // Read 'name' attribute defined as char array from the FITS Scan Record
    23792025  //
    2380   int status = 0 ;
    2381  
    2382   // skip header
    2383   fseek( fp_, FITS_HEADER_SIZE, SEEK_SET ) ;
    2384 
    2385   // find offset
    2386   int offset = getOffset( name ) ;
    2387   if ( offset == -1 ) {
    2388     //cerr << "Error, " << name << " is not found in the name list." << endl ;
    2389     return -1 ;
    2390   }
    2391   offset += idx * scanLen_ ;
    2392   //cout << "offset for " << name << " is " << offset << " bytes." << endl ;
    2393   fseek( fp_, offset, SEEK_CUR ) ;
     2026  int status = movePointer( name, idx ) ;
     2027  if ( status < 0 )
     2028    return status ;
    23942029
    23952030  // get length of char
     
    24262061  // Read 'name' attribute defined as int array from the FITS Scan Record
    24272062  //
    2428   int status = 0 ;
    2429  
    2430   // skip header
    2431   fseek( fp_, FITS_HEADER_SIZE, SEEK_SET ) ;
    2432 
    2433   // find offset
    2434   int offset = getOffset( name ) ;
    2435   if ( offset == -1 ) {
    2436     //cerr << "Error, " << name << " is not found in the name list." << endl ;
    2437     return -1 ;
    2438   }
    2439   offset += idx * scanLen_ ;
    2440   //cout << "offset for " << name << " is " << offset << " bytes." << endl ;
    2441   fseek( fp_, offset, SEEK_CUR ) ;
     2063  int status = movePointer( name, idx ) ;
     2064  if ( status < 0 )
     2065    return status ;
    24422066
    24432067  for ( unsigned int i = 0 ; i < v.size() ; i++ ) {
     
    24562080  // Read 'name' attribute defined as float array from the FITS Scan Record
    24572081  //
    2458   int status = 0 ;
    2459  
    2460   // skip header
    2461   fseek( fp_, FITS_HEADER_SIZE, SEEK_SET ) ;
    2462 
    2463   // find offset
    2464   int offset = getOffset( name ) ;
    2465   if ( offset == -1 ) {
    2466     //cerr << "Error, " << name << " is not found in the name list." << endl ;
    2467     return -1 ;
    2468   }
    2469   offset += idx * scanLen_ ;
    2470   //cout << "offset for " << name << " is " << offset << " bytes." << endl ;
    2471   fseek( fp_, offset, SEEK_CUR ) ;
     2082  int status = movePointer( name, idx ) ;
     2083  if ( status < 0 )
     2084    return status ;
    24722085
    24732086  for ( unsigned int i = 0 ; i < v.size() ; i++ ) {
     
    24862099  // Read 'name' attribute defined as double array from the FITS Scan Record
    24872100  //
    2488   int status = 0 ;
    2489  
    2490   // skip header
    2491   fseek( fp_, FITS_HEADER_SIZE, SEEK_SET ) ;
    2492 
    2493   // find offset
    2494   int offset = getOffset( name ) ;
    2495   if ( offset == -1 ) {
    2496     //cerr << "Error, " << name << " is not found in the name list." << endl ;
    2497     return -1 ;
    2498   }
    2499   offset += idx * scanLen_ ;
    2500   //cout << "offset for " << name << " is " << offset << " bytes." << endl ;
    2501   fseek( fp_, offset, SEEK_CUR ) ;
     2101  int status = movePointer( name, idx ) ;
     2102  if ( status < 0 )
     2103    return status ;
    25022104
    25032105  for ( unsigned int i = 0 ; i < v.size() ; i++ ) {
     
    25112113}
    25122114
    2513 int NROFITSDataset::readColumn( vector<string> &v, char *name )
    2514 {
    2515   //
    2516   // Read 0-th column of ARRYTP-dependent 'name' attributes
    2517   // defined as char array from the FITS Scan Record
    2518   //
    2519   int status = readColumn( v, name, 0 ) ;
    2520 
    2521   return status ;
    2522 }
    2523 
    25242115int NROFITSDataset::readColumn( vector<string> &v, char *name, int idx )
    25252116{
     
    25282119  // defined as char array from the FITS Scan Record
    25292120  //
    2530   int status = 0 ;
    2531 
    2532   // skip header
    2533   fseek( fp_, FITS_HEADER_SIZE, SEEK_SET ) ;
    2534 
    2535   // find offset
    2536   int offset = getOffset( name ) ;
    2537   if ( offset == -1 ) {
    2538     //cerr << "Error, " << name << " is not found in the name list." << endl ;
    2539     return -1 ;
    2540   }
    2541   //cout << "offset for " << name << " is " << offset << " bytes." << endl ;
    2542   fseek( fp_, offset, SEEK_CUR ) ;
     2121  int status = movePointer( name ) ;
     2122  if ( status < 0 )
     2123    return status ;
    25432124
    25442125  // get length of char
     
    25552136
    25562137  for ( unsigned int i = 0 ; i < v.size() ; i++ ) {
    2557     offset = scanLen_ * arrayid_[i] + xsize * idx ;
     2138    int offset = scanLen_ * arrayid_[i] + xsize * idx ;
    25582139    fseek( fp_, offset, SEEK_CUR ) ;
    25592140//     int clen = (int)strlen( v[i] ) ;
     
    25772158}
    25782159
    2579 int NROFITSDataset::readColumn( vector<int> &v, char *name, int b )
    2580 {
    2581   //
    2582   // Read 0-th column of ARRYTP-dependent 'name' attributes
    2583   // defined as int array from the FITS Scan Record
    2584   //
    2585   int status = readColumn( v, name, b, 0 ) ;
    2586 
    2587   return status ;
    2588 }
    2589 
    25902160int NROFITSDataset::readColumn( vector<int> &v, char *name, int b, int idx )
    25912161{
     
    25942164  // defined as int array from the FITS Scan Record
    25952165  //
    2596   int status = 0 ;
    2597 
    2598   // skip header
    2599   fseek( fp_, FITS_HEADER_SIZE, SEEK_SET ) ;
    2600 
    2601   // find offset
    2602   int offset = getOffset( name ) ;
    2603   if ( offset == -1 ) {
    2604     //cerr << "Error, " << name << " is not found in the name list." << endl ;
    2605     return -1 ;
    2606   }
    2607   //cout << "offset for " << name << " is " << offset << " bytes." << endl ;
    2608   fseek( fp_, offset, SEEK_CUR ) ;
     2166  int status = movePointer( name ) ;
     2167  if ( status < 0 )
     2168    return status ;
    26092169
    26102170  for ( unsigned int i = 0 ; i < v.size() ; i++ ) {
    2611     offset = scanLen_ * arrayid_[i] + sizeof(int) * idx ;
     2171    int offset = scanLen_ * arrayid_[i] + sizeof(int) * idx ;
    26122172    fseek( fp_, offset, SEEK_CUR ) ;
    26132173    fread( &v[i], 1, sizeof(int), fp_ ) ;
     
    26212181}
    26222182
    2623 int NROFITSDataset::readColumn( vector<float> &v, char *name, int b )
    2624 {
    2625   //
    2626   // Read 0-th column of ARRYTP-dependent 'name' attributes
    2627   // defined as float array from the FITS Scan Record
    2628   //
    2629   int status = readColumn( v, name, b, 0 ) ;
    2630 
    2631   return status ;
    2632 }
    2633 
    26342183int NROFITSDataset::readColumn( vector<float> &v, char *name, int b, int idx )
    26352184{
     
    26382187  // defined as float array from the FITS Scan Record
    26392188  //
    2640   int status = 0 ;
    2641 
    2642   // skip header
    2643   fseek( fp_, FITS_HEADER_SIZE, SEEK_SET ) ;
    2644 
    2645   // find offset
    2646   int offset = getOffset( name ) ;
    2647   if ( offset == -1 ) {
    2648     //cerr << "Error, " << name << " is not found in the name list." << endl ;
    2649     return -1 ;
    2650   }
    2651   //cout << "offset for " << name << " is " << offset << " bytes." << endl ;
    2652   fseek( fp_, offset, SEEK_CUR ) ;
     2189  int status = movePointer( name ) ;
     2190  if ( status < 0 )
     2191    return status ;
    26532192
    26542193  for ( unsigned int i = 0 ; i < v.size() ; i++ ) {
    2655     offset = scanLen_ * arrayid_[i] + sizeof(float) * idx ;
     2194    int offset = scanLen_ * arrayid_[i] + sizeof(float) * idx ;
    26562195    fseek( fp_, offset, SEEK_CUR ) ;
    26572196    fread( &v[i], 1, sizeof(float), fp_ ) ;
     
    26652204}
    26662205
    2667 int NROFITSDataset::readColumn( vector<double> &v, char *name, int b )
    2668 {
    2669   //
    2670   // Read 0-th column of ARRYTP-dependent 'name' attributes
    2671   // defined as double array from the FITS Scan Record
    2672   //
    2673   int status = readColumn( v, name, b, 0 ) ;
    2674 
    2675   return status ;
    2676 }
    2677 
    26782206int NROFITSDataset::readColumn( vector<double> &v, char *name, int b, int idx )
    26792207{
     
    26822210  // defined as double array from the FITS Scan Record
    26832211  //
    2684   int status = 0 ;
    2685 
    2686   // skip header
    2687   fseek( fp_, FITS_HEADER_SIZE, SEEK_SET ) ;
    2688 
    2689   // find offset
    2690   int offset = getOffset( name ) ;
    2691   if ( offset == -1 ) {
    2692     //cerr << "Error, " << name << " is not found in the name list." << endl ;
    2693     return -1 ;
    2694   }
    2695   //cout << "offset for " << name << " is " << offset << " bytes." << endl ;
    2696   fseek( fp_, offset, SEEK_CUR ) ;
     2212  int status = movePointer( name ) ;
     2213  if ( status < 0 )
     2214    return status ;
    26972215
    26982216  for ( unsigned int i = 0 ; i < v.size() ; i++ ) {
    2699     offset = scanLen_ * arrayid_[i] + sizeof(double) * idx ;
     2217    int offset = scanLen_ * arrayid_[i] + sizeof(double) * idx ;
    27002218    fseek( fp_, offset, SEEK_CUR ) ;
    27012219    fread( &v[i], 1, sizeof(double), fp_ ) ;
     
    27422260}
    27432261
     2262uInt NROFITSDataset::getPolNo( int irow )
     2263{
     2264  char rx[9] ;
     2265  readTable( rx, "RX", 8, irow ) ;
     2266  rx[8] = '\0' ;
     2267  //cout << rx << endl ;
     2268  return polNoFromRX( rx ) ;
     2269}
     2270
     2271int NROFITSDataset::movePointer( char *name, int idx )
     2272{
     2273  // find offset
     2274  int offset = getOffset( name ) ;
     2275  if ( offset == -1 ) {
     2276    //cerr << "Error, " << name << " is not found in the name list." << endl ;
     2277    return -1 ;
     2278  }
     2279
     2280  offset += idx * scanLen_ ;
     2281
     2282  //cout << "offset for " << name << " is " << offset << " bytes." << endl ;
     2283  fseek( fp_, FITS_HEADER_SIZE+offset, SEEK_SET ) ;
     2284
     2285  return 0 ;
     2286}
     2287
    27442288// double NROFITSDataset::toLSR( double v, double t, double x, double y )
    27452289// {
Note: See TracChangeset for help on using the changeset viewer.