Index: trunk/external-alma/atnf/PKSIO/ASTEDataset.cc
===================================================================
--- trunk/external-alma/atnf/PKSIO/ASTEDataset.cc	(revision 2781)
+++ trunk/external-alma/atnf/PKSIO/ASTEDataset.cc	(revision 2782)
@@ -41,106 +41,34 @@
 ASTEDataset::ASTEDataset( string name )
   : NRODataset( name ) 
-{
-  LogIO os( LogOrigin( "ASTEDataset", "ASTEDataset()", WHERE ) ) ;
-
-  // check endian
-  open() ;
-  fseek( fp_, 144, SEEK_SET ) ;
-  int tmp ;
-  if( fread( &tmp, 1, sizeof(int), fp_ ) != sizeof(int) ) {
-    os << LogIO::SEVERE << "Error while checking endian of the file. " << LogIO::POST ;
-    return ;
-  }
-  if ( ( 0 < tmp ) && ( tmp <= ASTE_ARYMAX ) ) {
-    same_ = true ;
-    os << LogIO::NORMAL << "same endian " << LogIO::POST ;
-  }
-  else {
-    same_ = false ;
-    os << LogIO::NORMAL << "different endian " << LogIO::POST ;
-  }
-  fseek( fp_, 0, SEEK_SET ) ;
- 
-  // memory allocation
-  initialize() ;
-}
+{}
 
 // destructor 
 ASTEDataset::~ASTEDataset() 
-{
-}
+{}
 
 // data initialization
 void ASTEDataset::initialize()
 {
-  RX.resize( ASTE_ARYMAX ) ;
-  HPBW.resize( ASTE_ARYMAX ) ;
-  EFFA.resize( ASTE_ARYMAX ) ;
-  EFFB.resize( ASTE_ARYMAX ) ;
-  EFFL.resize( ASTE_ARYMAX ) ;
-  EFSS.resize( ASTE_ARYMAX ) ;
-  GAIN.resize( ASTE_ARYMAX ) ;
-  HORN.resize( ASTE_ARYMAX ) ;
-  POLTP.resize( ASTE_ARYMAX ) ;
-  POLDR.resize( ASTE_ARYMAX ) ;
-  POLAN.resize( ASTE_ARYMAX ) ;
-  DFRQ.resize( ASTE_ARYMAX ) ;
-  SIDBD.resize( ASTE_ARYMAX ) ;
-  REFN.resize( ASTE_ARYMAX ) ;
-  IPINT.resize( ASTE_ARYMAX ) ;
-  MULTN.resize( ASTE_ARYMAX ) ;
-  MLTSCF.resize( ASTE_ARYMAX ) ;
-  LAGWIND.resize( ASTE_ARYMAX ) ;
-  BEBW.resize( ASTE_ARYMAX ) ;
-  BERES.resize( ASTE_ARYMAX ) ;
-  CHWID.resize( ASTE_ARYMAX ) ;
-  ARRY.resize( ASTE_ARYMAX ) ;
-  NFCAL.resize( ASTE_ARYMAX ) ;
-  F0CAL.resize( ASTE_ARYMAX ) ;
-  FQCAL.resize( ASTE_ARYMAX ) ;
-  CHCAL.resize( ASTE_ARYMAX ) ;
-  CWCAL.resize( ASTE_ARYMAX ) ;
-  DSBFC.resize( ASTE_ARYMAX ) ;
-
-  for ( int i = 0 ; i < ASTE_ARYMAX ; i++ ) {
-    FQCAL[i].resize( 10 ) ;
-    CHCAL[i].resize( 10 ) ;
-    CWCAL[i].resize( 10 ) ;
-  }
-
-  datasize_ += sizeof( char ) * ASTE_ARYMAX * 16 // RX
-    + sizeof( double ) * ASTE_ARYMAX * 6         // HPBW, EFFA, EFFB, EFFL, EFSS GAIN
-    + sizeof( char ) * ASTE_ARYMAX * 4           // HORN
-    + sizeof( char ) * ASTE_ARYMAX * 4           // POLTP
-    + sizeof( double ) * ASTE_ARYMAX * 3         // POLDR, POLAN, DFRQ
-    + sizeof( char ) * ASTE_ARYMAX * 4           // SIDBID
-    + sizeof( int ) * ASTE_ARYMAX * 3            // REFN, IPINT, MULTN
-    + sizeof( double ) * ASTE_ARYMAX             // MLTSCF
-    + sizeof( char ) * ASTE_ARYMAX * 8           // LAGWIND
-    + sizeof( double ) * ASTE_ARYMAX * 3         // BEBW, BERES, CHWID
-    + sizeof( int ) * ASTE_ARYMAX * 2            // ARRY, NFCAL
-    + sizeof( double ) * ASTE_ARYMAX             // F0CAL
-    + sizeof( double ) * ASTE_ARYMAX * 10 * 3    // FQCAL, CHCAL, CWCAL
+  int arymax = arrayMax() ;
+
+  // it must be called
+  NRODataset::initialize() ;
+
+  // additional initialization
+  datasize_ += sizeof( char ) * arymax * 16 // RX
+    + sizeof( double ) * arymax * 6         // HPBW, EFFA, EFFB, EFFL, EFSS GAIN
+    + sizeof( char ) * arymax * 4           // HORN
+    + sizeof( char ) * arymax * 4           // POLTP
+    + sizeof( double ) * arymax * 3         // POLDR, POLAN, DFRQ
+    + sizeof( char ) * arymax * 4           // SIDBID
+    + sizeof( int ) * arymax * 3            // REFN, IPINT, MULTN
+    + sizeof( double ) * arymax             // MLTSCF
+    + sizeof( char ) * arymax * 8           // LAGWIND
+    + sizeof( double ) * arymax * 3         // BEBW, BERES, CHWID
+    + sizeof( int ) * arymax * 2            // ARRY, NFCAL
+    + sizeof( double ) * arymax             // F0CAL
+    + sizeof( double ) * arymax * 10 * 3    // FQCAL, CHCAL, CWCAL
     + sizeof( char ) * 116                       // CDMY1
-    + sizeof( double ) * ASTE_ARYMAX ;           // DSBFC
-
-  refFreq_.resize( ASTE_ARYMAX, 0.0 ) ;
-}
-
-// fill data header
-int ASTEDataset::fillHeader() 
-{
-  LogIO os( LogOrigin( "ASTEDataset", "fillHeader()", WHERE ) ) ;
-
-  // open file
-  if ( open() ) {
-    os << LogIO::SEVERE << "Error opening file " << filename_ << "." << LogIO::EXCEPTION ;
-    return -1 ;
-  }
-
-  // fill
-  int status = fillHeader( same_ ) ;
-
-  return status ;
+    + sizeof( double ) * arymax ;           // DSBFC
 }
 
@@ -148,4 +76,6 @@
 {
   LogIO os( LogOrigin( "ASTEDataset", "fillHeader()", WHERE ) ) ;
+
+  int arymax = arrayMax();
 
   string str4( 4, ' ' ) ;
@@ -521,5 +451,5 @@
   //cout << "PA = " << PA << endl ;
   //
-  for ( int i = 0 ; i < ASTE_ARYMAX ; i++ ) {
+  for ( int i = 0 ; i < arymax ; i++ ) {
     strcpy( c18, str18.c_str() ) ;
     if ( readHeader( c18, 16 ) == -1 ) {
@@ -531,7 +461,7 @@
   }
   // DEBUG
-//   nro_debug_output( "RX", ASTE_ARYMAX, RX ) ;
-  // 
-  for ( int i = 0 ; i < ASTE_ARYMAX ; i++ ) {
+//   nro_debug_output( "RX", arymax, RX ) ;
+  // 
+  for ( int i = 0 ; i < arymax ; i++ ) {
     if ( readHeader( HPBW[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data HPBW[" << i << "]." << LogIO::POST ;
@@ -540,7 +470,7 @@
   }
   // DEBUG
-//   nro_debug_output( "HPBW", ASTE_ARYMAX, HPBW ) ;
-  // 
-  for ( int i = 0 ; i < ASTE_ARYMAX ; i++ ) {
+//   nro_debug_output( "HPBW", arymax, HPBW ) ;
+  // 
+  for ( int i = 0 ; i < arymax ; i++ ) {
     if ( readHeader( EFFA[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data EFFA[" << i << "]." << LogIO::POST ;
@@ -549,7 +479,7 @@
   }
   // DEBUG
-//   nro_debug_output( "EFFA", ASTE_ARYMAX, EFFA ) ;
-  // 
-  for ( int i = 0 ; i < ASTE_ARYMAX ; i++ ) {
+//   nro_debug_output( "EFFA", arymax, EFFA ) ;
+  // 
+  for ( int i = 0 ; i < arymax ; i++ ) {
     if ( readHeader( EFFB[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data EFFB[" << i << "]." << LogIO::POST ;
@@ -558,7 +488,7 @@
   }
   // DEBUG
-//   nro_debug_output( "EFFB", ASTE_ARYMAX, EFFB ) ;
-  // 
-  for ( int i = 0 ; i < ASTE_ARYMAX ; i++ ) {
+//   nro_debug_output( "EFFB", arymax, EFFB ) ;
+  // 
+  for ( int i = 0 ; i < arymax ; i++ ) {
     if ( readHeader( EFFL[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data EFFL[" << i << "]." << LogIO::POST ;
@@ -567,7 +497,7 @@
   }
   // DEBUG
-//   nro_debug_output( "EFFL", ASTE_ARYMAX, EFFL ) ;
-  // 
-  for ( int i = 0 ; i < ASTE_ARYMAX ; i++ ) {
+//   nro_debug_output( "EFFL", arymax, EFFL ) ;
+  // 
+  for ( int i = 0 ; i < arymax ; i++ ) {
     if ( readHeader( EFSS[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data EFSS[" << i << "]." << LogIO::POST ;
@@ -576,7 +506,7 @@
   }
   // DEBUG
-//   nro_debug_output( "EFSS", ASTE_ARYMAX, EFSS ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "EFSS", arymax, EFSS ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     if ( readHeader( GAIN[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data GAIN[" << i << "]." << LogIO::POST ;
@@ -585,7 +515,7 @@
   }
   // DEBUG
-//   nro_debug_output( "GAIN", ASTE_ARYMAX, GAIN ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "GAIN", arymax, GAIN ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     strcpy( c4, str4.c_str() ) ;
     if ( readHeader( c4, 4 ) == -1 ) {
@@ -596,7 +526,7 @@
   }
   // DEBUG
-//   nro_debug_output( "HORN", ASTE_ARYMAX, HORN ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "HORN", arymax, HORN ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     strcpy( c4, str4.c_str() ) ;
     if ( readHeader( c4, 4 ) == -1 ) {
@@ -607,7 +537,7 @@
   }
   // DEBUG
-//   nro_debug_output( "POLTP", ASTE_ARYMAX, POLTP ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "POLTP", arymax, POLTP ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     if ( readHeader( POLDR[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data POLDR[" << i << "]." << LogIO::POST ;
@@ -616,7 +546,7 @@
   }
   // DEBUG
-//   nro_debug_output( "POLDR", ASTE_ARYMAX, POLDR ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "POLDR", arymax, POLDR ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     if ( readHeader( POLAN[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data POLAN[" << i << "]." << LogIO::POST ;
@@ -625,7 +555,7 @@
   }
   // DEBUG
-//   nro_debug_output( "POLAN", ASTE_ARYMAX, POLAN ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "POLAN", arymax, POLAN ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     if ( readHeader( DFRQ[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data DFRQ[" << i << "]." << LogIO::POST ;
@@ -634,7 +564,7 @@
   }
   // DEBUG
-//   nro_debug_output( "DFRQ", ASTE_ARYMAX, DFRQ ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "DFRQ", arymax, DFRQ ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     strcpy( c4, str4.c_str() ) ;
     if ( readHeader( c4, 4 ) == -1 ) {
@@ -645,7 +575,7 @@
   }
   // DEBUG
-//   nro_debug_output( "SIDBD", ASTE_ARYMAX, SIDBD ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "SIDBD", arymax, SIDBD ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     if ( readHeader( REFN[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data REFN[" << i << "]." << LogIO::POST ;
@@ -654,7 +584,7 @@
   }
   // DEBUG
-//   nro_debug_output( "REFN", ASTE_ARYMAX, REFN ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "REFN", arymax, REFN ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     if ( readHeader( IPINT[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data IPINT[" << i << "]." << LogIO::POST ;
@@ -663,7 +593,7 @@
   }
   // DEBUG
-//   nro_debug_output( "IPINT", ASTE_ARYMAX, IPINT ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "IPINT", arymax, IPINT ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     if ( readHeader( MULTN[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data MULTN[" << i << "]." << LogIO::POST ;
@@ -672,7 +602,7 @@
   }
   // DEBUG
-//   nro_debug_output( "MULTN", ASTE_ARYMAX, MULTN ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "MULTN", arymax, MULTN ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     if ( readHeader( MLTSCF[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data MLTSCF[" << i << "]." << LogIO::POST ;
@@ -681,7 +611,7 @@
   }
   // DEBUG
-//   nro_debug_output( "MLTSCF", ASTE_ARYMAX, MLTSCF ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "MLTSCF", arymax, MLTSCF ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     strcpy( c8, str8.c_str() ) ;
     if ( readHeader( c8, 8 ) == -1 ) {
@@ -692,7 +622,7 @@
   }
   // DEBUG
-//   nro_debug_output( "LAGWIND", ASTE_ARYMAX, LAGWIND ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "LAGWIND", arymax, LAGWIND ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     if ( readHeader( BEBW[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data BEBW[" << i << "]." << LogIO::POST ;
@@ -701,7 +631,7 @@
   }
   // DEBUG
-//   nro_debug_output( "BEBW", ASTE_ARYMAX, BEBW ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "BEBW", arymax, BEBW ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     if ( readHeader( BERES[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data BERES[" << i << "]." << LogIO::POST ;
@@ -710,7 +640,7 @@
   }
   // DEBUG
-//   nro_debug_output( "BERES", ASTE_ARYMAX, BERES ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "BERES", arymax, BERES ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     if ( readHeader( CHWID[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data CHWID[" << i << "]." << LogIO::POST ;
@@ -719,7 +649,7 @@
   }
   // DEBUG
-//   nro_debug_output( "CHWID", ASTE_ARYMAX, CHWID ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "CHWID", arymax, CHWID ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     if ( readHeader( ARRY[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data ARRY[" << i << "]." << LogIO::POST ;
@@ -728,7 +658,7 @@
   }
   // DEBUG
-//   nro_debug_output( "ARRY", ASTE_ARYMAX, ARRY ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "ARRY", arymax, ARRY ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     if ( readHeader( NFCAL[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data NFCAL[" << i << "]." << LogIO::POST ;
@@ -737,7 +667,7 @@
   }
   // DEBUG
-//   nro_debug_output( "NFCAL", ASTE_ARYMAX, NFCAL ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "NFCAL", arymax, NFCAL ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     if ( readHeader( F0CAL[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data F0CAL[" << i << "]." << LogIO::POST ;
@@ -746,7 +676,7 @@
   }
   // DEBUG
-//   nro_debug_output( "F0CAL", ASTE_ARYMAX, F0CAL ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "F0CAL", arymax, F0CAL ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     for ( int j = 0 ; j < 10 ; j++ ) {
       if ( readHeader( FQCAL[i][j], sameEndian ) == -1 ) {
@@ -757,7 +687,7 @@
   }
   // DEBUG
-//   nro_debug_output( "FQCAL", ASTE_ARYMAX, 10,  FQCAL ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "FQCAL", arymax, 10,  FQCAL ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     for ( int j = 0 ; j < 10 ; j++ ) {
       if ( readHeader( CHCAL[i][j], sameEndian ) == -1 ) {
@@ -768,7 +698,7 @@
   }
   // DEBUG
-//   nro_debug_output( "CHCAL", ASTE_ARYMAX, 10, CHCAL ) ;
-  // 
-  for ( int i= 0 ; i < ASTE_ARYMAX ; i++) {
+//   nro_debug_output( "CHCAL", arymax, 10, CHCAL ) ;
+  // 
+  for ( int i= 0 ; i < arymax ; i++) {
     for ( int j = 0 ; j < 10 ; j++ ) {
       if ( readHeader( CWCAL[i][j], sameEndian ) == -1 ) {
@@ -779,5 +709,5 @@
   }
   // DEBUG
-//   nro_debug_output( "CWCAL", ASTE_ARYMAX, 10, CWCAL ) ;
+//   nro_debug_output( "CWCAL", arymax, 10, CWCAL ) ;
   // 
   if ( readHeader( SCNLEN, sameEndian ) == -1 ) {
@@ -821,5 +751,5 @@
   //cout << "CDMY1 = " << CDMY1 << endl ;
   //
-  for ( int i = 0 ; i < ASTE_ARYMAX ; i++ ) {
+  for ( int i = 0 ; i < arymax ; i++ ) {
     if ( readHeader( DSBFC[i], sameEndian ) == -1 ) {
       os << LogIO::WARN << "Error while reading data DSBFC[" << i << "]." << LogIO::POST ;
@@ -828,18 +758,6 @@
   }
   // DEBUG
-//   nro_debug_output( "DSBFC", ASTE_ARYMAX, DSBFC ) ;
-  // 
-
-  //scanNum_ = NSCAN + 1 ; // includes ZERO scan
-  scanLen_ = SCNLEN ;
-  dataLen_ = scanLen_ - SCAN_HEADER_SIZE ;
-  scanNum_ = getScanNum();
-  rowNum_ = scanNum_ * ARYNM ;
-  chmax_ = (int) ( dataLen_ * 8 / IBIT ) ;
-  record_->LDATA = new char[dataLen_] ;
-
-  initArray();
-
-  show() ;
+//   nro_debug_output( "DSBFC", arymax, DSBFC ) ;
+  // 
 
   return 0 ;
