Ignore:
Timestamp:
03/07/13 18:45:58 (11 years ago)
Author:
Takeshi Nakazato
Message:

New Development: No

JIRA Issue: No

Ready for Test: Yes

Interface Changes: No

What Interface Changed: Please list interface changes

Test Programs: List test programs

Put in Release Notes: Yes/No?

Module(s): Module Names change impacts.

Description: Describe your changes here...

Refactoring NRO filler.


File:
1 edited

Legend:

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

    r2781 r2782  
    4141NROOTFDataset::NROOTFDataset( string name )
    4242  : NRODataset( name )
    43 {
    44   LogIO os( LogOrigin( "NROOTFDataset", "NROOTFDataset()", WHERE ) ) ;
    45 
    46   // check endian
    47   open() ;
    48   fseek( fp_, 144, SEEK_SET ) ;
    49   int tmp ;
    50   if( fread( &tmp, 1, sizeof(int), fp_ ) != sizeof(int) ) {
    51     os << LogIO::SEVERE << "Error while checking endian of the file. " << LogIO::EXCEPTION ;
    52     return ;
    53   }
    54   if ( ( 0 < tmp ) && ( tmp <= NRO_ARYMAX ) ) {
    55     same_ = 1 ;
    56     os << LogIO::NORMAL << "same endian " << LogIO::POST ;
    57   }
    58   else {
    59     same_ = 0 ;
    60     os << LogIO::NORMAL << "different endian " << LogIO::POST ;
    61   }
    62   fseek( fp_, 0, SEEK_SET ) ;
    63  
    64   // memory allocation
    65   initialize() ;
    66 
    67   // data initialization
    68   for ( int i = 0 ; i < NRO_ARYMAX ; i++ ) {
    69     DSBFC[i] = 1.0 ;
    70   }
    71 }
     43{}
    7244
    7345// destructor
    7446NROOTFDataset::~NROOTFDataset()
    75 {
    76 }
     47{}
    7748
    7849// data initialization
    7950void NROOTFDataset::initialize()
    8051{
    81   RX.resize( NRO_ARYMAX ) ;
    82   HPBW.resize( NRO_ARYMAX ) ;
    83   EFFA.resize( NRO_ARYMAX ) ;
    84   EFFB.resize( NRO_ARYMAX ) ;
    85   EFFL.resize( NRO_ARYMAX ) ;
    86   EFSS.resize( NRO_ARYMAX ) ;
    87   GAIN.resize( NRO_ARYMAX ) ;
    88   HORN.resize( NRO_ARYMAX ) ;
    89   POLTP.resize( NRO_ARYMAX ) ;
    90   POLDR.resize( NRO_ARYMAX ) ;
    91   POLAN.resize( NRO_ARYMAX ) ;
    92   DFRQ.resize( NRO_ARYMAX ) ;
    93   SIDBD.resize( NRO_ARYMAX ) ;
    94   REFN.resize( NRO_ARYMAX ) ;
    95   IPINT.resize( NRO_ARYMAX ) ;
    96   MULTN.resize( NRO_ARYMAX ) ;
    97   MLTSCF.resize( NRO_ARYMAX ) ;
    98   LAGWIND.resize( NRO_ARYMAX ) ;
    99   BEBW.resize( NRO_ARYMAX ) ;
    100   BERES.resize( NRO_ARYMAX ) ;
    101   CHWID.resize( NRO_ARYMAX ) ;
    102   ARRY.resize( NRO_ARYMAX ) ;
    103   NFCAL.resize( NRO_ARYMAX ) ;
    104   F0CAL.resize( NRO_ARYMAX ) ;
    105   FQCAL.resize( NRO_ARYMAX ) ;
    106   CHCAL.resize( NRO_ARYMAX ) ;
    107   CWCAL.resize( NRO_ARYMAX ) ;
    108   DSBFC.resize( NRO_ARYMAX ) ;
     52  int arymax = arrayMax() ;
     53
     54  // it must be called
     55  NRODataset::initialize() ;
     56 
     57  // additional initialization
     58  datasize_ += sizeof( char ) * arymax * 16 // RX
     59    + sizeof( double ) * arymax * 6         // HPBW, EFFA, EFFB, EFFL, EFSS GAIN
     60    + sizeof( char ) * arymax * 4           // HORN
     61    + sizeof( char ) * arymax * 4           // POLTP
     62    + sizeof( double ) * arymax * 3         // POLDR, POLAN, DFRQ
     63    + sizeof( char ) * arymax * 4           // SIDBID
     64    + sizeof( int ) * arymax * 3            // REFN, IPINT, MULTN
     65    + sizeof( double ) * arymax             // MLTSCF
     66    + sizeof( char ) * arymax * 8           // LAGWIND
     67    + sizeof( double ) * arymax * 3         // BEBW, BERES, CHWID
     68    + sizeof( int ) * arymax * 2            // ARRY, NFCAL
     69    + sizeof( double ) * arymax             // F0CAL
     70    + sizeof( double ) * arymax * 10 * 3    // FQCAL, CHCAL, CWCAL
     71    + sizeof( char ) * 180 ;                    // CDMY1
    10972
    11073  for ( int i = 0 ; i < NRO_ARYMAX ; i++ ) {
    111     FQCAL[i].resize( 10 ) ;
    112     CHCAL[i].resize( 10 ) ;
    113     CWCAL[i].resize( 10 ) ;
    114   }
    115 
    116   datasize_ += sizeof( char ) * NRO_ARYMAX * 16 // RX
    117     + sizeof( double ) * NRO_ARYMAX * 6         // HPBW, EFFA, EFFB, EFFL, EFSS GAIN
    118     + sizeof( char ) * NRO_ARYMAX * 4           // HORN
    119     + sizeof( char ) * NRO_ARYMAX * 4           // POLTP
    120     + sizeof( double ) * NRO_ARYMAX * 3         // POLDR, POLAN, DFRQ
    121     + sizeof( char ) * NRO_ARYMAX * 4           // SIDBID
    122     + sizeof( int ) * NRO_ARYMAX * 3            // REFN, IPINT, MULTN
    123     + sizeof( double ) * NRO_ARYMAX             // MLTSCF
    124     + sizeof( char ) * NRO_ARYMAX * 8           // LAGWIND
    125     + sizeof( double ) * NRO_ARYMAX * 3         // BEBW, BERES, CHWID
    126     + sizeof( int ) * NRO_ARYMAX * 2            // ARRY, NFCAL
    127     + sizeof( double ) * NRO_ARYMAX             // F0CAL
    128     + sizeof( double ) * NRO_ARYMAX * 10 * 3    // FQCAL, CHCAL, CWCAL
    129     + sizeof( char ) * 180 ;                    // CDMY1
    130 
    131   refFreq_.resize( NRO_ARYMAX, 0.0 ) ;
    132 }
    133 
    134 // fill data header
    135 int NROOTFDataset::fillHeader()
    136 {
    137   LogIO os( LogOrigin( "NROOTFDataset", "fillHeader()", WHERE ) ) ;
    138 
    139   // open file
    140   if ( open() ) {
    141     os << LogIO::SEVERE << "Error opening file " << filename_ << "." << LogIO::EXCEPTION ;
    142     return -1 ;
    143   }
    144 
    145   // fill
    146   int status = fillHeader( same_ ) ;
    147 
    148   return status ;
     74    DSBFC[i] = 1.0 ;
     75  }
    14976}
    15077
     
    15279{
    15380  LogIO os( LogOrigin( "NROOTFDataset", "fillHeader()", WHERE ) ) ;
     81
     82  int arymax = arrayMax() ;
    15483
    15584  string str4( 4, ' ' ) ;
     
    527456  //cout << "PA = " << PA << endl ;
    528457  //
    529   for ( int i = 0 ; i < NRO_ARYMAX ; i++ ) {
     458  for ( int i = 0 ; i < arymax ; i++ ) {
    530459    strcpy( c18, str18.c_str() ) ;
    531460    if ( readHeader( c18, 16 ) == -1 ) {
     
    537466  }
    538467  // DEBUG
    539 //   nro_debug_output( "RX", NRO_ARYMAX, RX ) ;
    540   //
    541   for ( int i = 0 ; i < NRO_ARYMAX ; i++ ) {
     468//   nro_debug_output( "RX", arymax, RX ) ;
     469  //
     470  for ( int i = 0 ; i < arymax ; i++ ) {
    542471    if ( readHeader( HPBW[i], sameEndian ) == -1 ) {
    543472      os << LogIO::WARN << "Error while reading data HPBW[" << i << "]." << LogIO::POST ;
     
    546475  }
    547476  // DEBUG
    548 //   nro_debug_output( "HPBW", NRO_ARYMAX, HPBW ) ;
    549   //
    550   for ( int i = 0 ; i < NRO_ARYMAX ; i++ ) {
     477//   nro_debug_output( "HPBW", arymax, HPBW ) ;
     478  //
     479  for ( int i = 0 ; i < arymax ; i++ ) {
    551480    if ( readHeader( EFFA[i], sameEndian ) == -1 ) {
    552481      os << LogIO::WARN << "Error while reading data EFFA[" << i << "]." << LogIO::POST ;
     
    555484  }
    556485  // DEBUG
    557 //   nro_debug_output( "EFFA", NRO_ARYMAX, EFFA ) ;
    558   //
    559   for ( int i = 0 ; i < NRO_ARYMAX ; i++ ) {
     486//   nro_debug_output( "EFFA", arymax, EFFA ) ;
     487  //
     488  for ( int i = 0 ; i < arymax ; i++ ) {
    560489    if ( readHeader( EFFB[i], sameEndian ) == -1 ) {
    561490      os << LogIO::WARN << "Error while reading data EFFB[" << i << "]." << LogIO::POST ;
     
    564493  }
    565494  // DEBUG
    566 //   nro_debug_output( "EFFB", NRO_ARYMAX, EFFB ) ;
    567   //
    568   for ( int i = 0 ; i < NRO_ARYMAX ; i++ ) {
     495//   nro_debug_output( "EFFB", arymax, EFFB ) ;
     496  //
     497  for ( int i = 0 ; i < arymax ; i++ ) {
    569498    if ( readHeader( EFFL[i], sameEndian ) == -1 ) {
    570499      os << LogIO::WARN << "Error while reading data EFFL[" << i << "]." << LogIO::POST ;
     
    573502  }
    574503  // DEBUG
    575 //   nro_debug_output( "EFFL", NRO_ARYMAX, EFFL ) ;
    576   //
    577   for ( int i = 0 ; i < NRO_ARYMAX ; i++ ) {
     504//   nro_debug_output( "EFFL", arymax, EFFL ) ;
     505  //
     506  for ( int i = 0 ; i < arymax ; i++ ) {
    578507    if ( readHeader( EFSS[i], sameEndian ) == -1 ) {
    579508      os << LogIO::WARN << "Error while reading data EFSS[" << i << "]." << LogIO::POST ;
     
    582511  }
    583512  // DEBUG
    584 //   nro_debug_output( "EFSS", NRO_ARYMAX, EFSS ) ;
    585   //
    586   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     513//   nro_debug_output( "EFSS", arymax, EFSS ) ;
     514  //
     515  for ( int i = 0 ; i < arymax ; i++) {
    587516    if ( readHeader( GAIN[i], sameEndian ) == -1 ) {
    588517      os << LogIO::WARN << "Error while reading data GAIN[" << i << "]." << LogIO::POST ;
     
    591520  }
    592521  // DEBUG
    593 //   nro_debug_output( "GAIN", NRO_ARYMAX, GAIN ) ;
    594   //
    595   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     522//   nro_debug_output( "GAIN", arymax, GAIN ) ;
     523  //
     524  for ( int i = 0 ; i < arymax ; i++) {
    596525    strcpy( c4, str4.c_str() ) ;
    597526    if ( readHeader( c4, 4 ) == -1 ) {
     
    602531  }
    603532  // DEBUG
    604 //   nro_debug_output( "HORN", NRO_ARYMAX, HORN ) ;
    605   //
    606   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     533//   nro_debug_output( "HORN", arymax, HORN ) ;
     534  //
     535  for ( int i = 0 ; i < arymax ; i++) {
    607536    strcpy( c4, str4.c_str() ) ;
    608537    if ( readHeader( c4, 4 ) == -1 ) {
     
    613542  }
    614543  // DEBUG
    615 //   nro_debug_output( "POLTP", NRO_ARYMAX, POLTP ) ;
    616   //
    617   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     544//   nro_debug_output( "POLTP", arymax, POLTP ) ;
     545  //
     546  for ( int i = 0 ; i < arymax ; i++) {
    618547    if ( readHeader( POLDR[i], sameEndian ) == -1 ) {
    619548      os << LogIO::WARN << "Error while reading data POLDR[" << i << "]." << LogIO::POST ;
     
    622551  }
    623552  // DEBUG
    624 //   nro_debug_output( "POLDR", NRO_ARYMAX, POLDR ) ;
    625   //
    626   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     553//   nro_debug_output( "POLDR", arymax, POLDR ) ;
     554  //
     555  for ( int i = 0 ; i < arymax ; i++) {
    627556    if ( readHeader( POLAN[i], sameEndian ) == -1 ) {
    628557      os << LogIO::WARN << "Error while reading data POLAN[" << i << "]." << LogIO::POST ;
     
    631560  }
    632561  // DEBUG
    633 //   nro_debug_output( "POLAN", NRO_ARYMAX, POLAN ) ;
    634   //
    635   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     562//   nro_debug_output( "POLAN", arymax, POLAN ) ;
     563  //
     564  for ( int i = 0 ; i < arymax ; i++) {
    636565    if ( readHeader( DFRQ[i], sameEndian ) == -1 ) {
    637566      os << LogIO::WARN << "Error while reading data DFRQ[" << i << "]." << LogIO::POST ;
     
    640569  }
    641570  // DEBUG
    642 //   nro_debug_output( "DFRQ", NRO_ARYMAX, DFRQ ) ;
    643   //
    644   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     571//   nro_debug_output( "DFRQ", arymax, DFRQ ) ;
     572  //
     573  for ( int i = 0 ; i < arymax ; i++) {
    645574    strcpy( c4, str4.c_str() ) ;
    646575    if ( readHeader( c4, 4 ) == -1 ) {
     
    651580  }
    652581  // DEBUG
    653 //   nro_debug_output( "SIDBD", NRO_ARYMAX, SIDBD ) ;
    654   //
    655   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     582//   nro_debug_output( "SIDBD", arymax, SIDBD ) ;
     583  //
     584  for ( int i = 0 ; i < arymax ; i++) {
    656585    if ( readHeader( REFN[i], sameEndian ) == -1 ) {
    657586      os << LogIO::WARN << "Error while reading data REFN[" << i << "]." << LogIO::POST ;
     
    660589  }
    661590  // DEBUG
    662 //   nro_debug_output( "REFN", NRO_ARYMAX, REFN ) ;
    663   //
    664   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     591//   nro_debug_output( "REFN", arymax, REFN ) ;
     592  //
     593  for ( int i = 0 ; i < arymax ; i++) {
    665594    if ( readHeader( IPINT[i], sameEndian ) == -1 ) {
    666595      os << LogIO::WARN << "Error while reading data IPINT[" << i << "]." << LogIO::POST ;
     
    669598  }
    670599  // DEBUG
    671 //   nro_debug_output( "IPINT", NRO_ARYMAX, IPINT ) ;
    672   //
    673   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     600//   nro_debug_output( "IPINT", arymax, IPINT ) ;
     601  //
     602  for ( int i = 0 ; i < arymax ; i++) {
    674603    if ( readHeader( MULTN[i], sameEndian ) == -1 ) {
    675604      os << LogIO::WARN << "Error while reading data MULTN[" << i << "]." << LogIO::POST ;
     
    678607  }
    679608  // DEBUG
    680 //   nro_debug_output( "MULTN", NRO_ARYMAX, MULTN ) ;
    681   //
    682   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     609//   nro_debug_output( "MULTN", arymax, MULTN ) ;
     610  //
     611  for ( int i = 0 ; i < arymax ; i++) {
    683612    if ( readHeader( MLTSCF[i], sameEndian ) == -1 ) {
    684613      os << LogIO::WARN << "Error while reading data MLTSCF[" << i << "]." << LogIO::POST ;
     
    687616  }
    688617  // DEBUG
    689 //   nro_debug_output( "MLTSCF", NRO_ARYMAX, MLTSCF ) ;
    690   //
    691   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     618//   nro_debug_output( "MLTSCF", arymax, MLTSCF ) ;
     619  //
     620  for ( int i = 0 ; i < arymax ; i++) {
    692621    strcpy( c8, str8.c_str() ) ;
    693622    if ( readHeader( c8, 8 ) == -1 ) {
     
    698627  }
    699628  // DEBUG
    700 //   nro_debug_output( "LAGWIND", NRO_ARYMAX, LAGWIND ) ;
    701   //
    702   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     629//   nro_debug_output( "LAGWIND", arymax, LAGWIND ) ;
     630  //
     631  for ( int i = 0 ; i < arymax ; i++) {
    703632    if ( readHeader( BEBW[i], sameEndian ) == -1 ) {
    704633      os << LogIO::WARN << "Error while reading data BEBW[" << i << "]." << LogIO::POST ;
     
    707636  }
    708637  // DEBUG
    709 //   nro_debug_output( "BEBW", NRO_ARYMAX, BEBW ) ;
    710   //
    711   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     638//   nro_debug_output( "BEBW", arymax, BEBW ) ;
     639  //
     640  for ( int i = 0 ; i < arymax ; i++) {
    712641    if ( readHeader( BERES[i], sameEndian ) == -1 ) {
    713642      os << LogIO::WARN << "Error while reading data BERES[" << i << "]." << LogIO::POST ;
     
    716645  }
    717646  // DEBUG
    718 //   nro_debug_output( "BERES", NRO_ARYMAX, BERES ) ;
    719   //
    720   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     647//   nro_debug_output( "BERES", arymax, BERES ) ;
     648  //
     649  for ( int i = 0 ; i < arymax ; i++) {
    721650    if ( readHeader( CHWID[i], sameEndian ) == -1 ) {
    722651      os << LogIO::WARN << "Error while reading data CHWID[" << i << "]." << LogIO::POST ;
     
    725654  }
    726655  // DEBUG
    727 //   nro_debug_output( "CHWID", NRO_ARYMAX, CHWID ) ;
    728   //
    729   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     656//   nro_debug_output( "CHWID", arymax, CHWID ) ;
     657  //
     658  for ( int i = 0 ; i < arymax ; i++) {
    730659    if ( readHeader( ARRY[i], sameEndian ) == -1 ) {
    731660      os << LogIO::WARN << "Error while reading data ARRY[" << i << "]." << LogIO::POST ;
     
    734663  }
    735664  // DEBUG
    736 //   nro_debug_output( "ARRY", NRO_ARYMAX, ARRY ) ;
    737   //
    738   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     665//   nro_debug_output( "ARRY", arymax, ARRY ) ;
     666  //
     667  for ( int i = 0 ; i < arymax ; i++) {
    739668    if ( readHeader( NFCAL[i], sameEndian ) == -1 ) {
    740669      os << LogIO::WARN << "Error while reading data NFCAL[" << i << "]." << LogIO::POST ;
     
    743672  }
    744673  // DEBUG
    745 //   nro_debug_output( "NFCAL", NRO_ARYMAX, NFCAL ) ;
    746   //
    747   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     674//   nro_debug_output( "NFCAL", arymax, NFCAL ) ;
     675  //
     676  for ( int i = 0 ; i < arymax ; i++) {
    748677    if ( readHeader( F0CAL[i], sameEndian ) == -1 ) {
    749678      os << LogIO::WARN << "Error while reading data F0CAL[" << i << "]." << LogIO::POST ;
     
    752681  }
    753682  // DEBUG
    754 //   nro_debug_output( "F0CAL", NRO_ARYMAX, F0CAL ) ;
    755   //
    756   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     683//   nro_debug_output( "F0CAL", arymax, F0CAL ) ;
     684  //
     685  for ( int i = 0 ; i < arymax ; i++) {
    757686    for ( int j = 0 ; j < 10 ; j++ ) {
    758687      if ( readHeader( FQCAL[i][j], sameEndian ) == -1 ) {
     
    763692  }
    764693  // DEBUG
    765 //   nro_debug_output( "FQCAL", NRO_ARYMAX, 10, FQCAL ) ;
     694//   nro_debug_output( "FQCAL", arymax, 10, FQCAL ) ;
    766695  // 
    767   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     696  for ( int i = 0 ; i < arymax ; i++) {
    768697    for ( int j = 0 ; j < 10 ; j++ ) {
    769698      if ( readHeader( CHCAL[i][j], sameEndian ) == -1 ) {
     
    774703  }
    775704  // DEBUG
    776 //   nro_debug_output( "CHCAL", NRO_ARYMAX, 10, CHCAL ) ;
     705//   nro_debug_output( "CHCAL", arymax, 10, CHCAL ) ;
    777706  // 
    778   for ( int i = 0 ; i < NRO_ARYMAX ; i++) {
     707  for ( int i = 0 ; i < arymax ; i++) {
    779708    for ( int j = 0 ; j < 10 ; j++ ) {
    780709      if ( readHeader( CWCAL[i][j], sameEndian ) == -1 ) {
     
    785714  }
    786715  // DEBUG
    787 //   nro_debug_output( "CWCAL", NRO_ARYMAX, 10, CWCAL ) ;
     716//   nro_debug_output( "CWCAL", arymax, 10, CWCAL ) ;
    788717  // 
    789718  if ( readHeader( SCNLEN, sameEndian ) == -1 ) {
     
    828757  //
    829758
    830   //scanNum_ = NSCAN + 1 ; // includes ZERO scan
    831   scanLen_ = SCNLEN ;
    832   dataLen_ = scanLen_ - SCAN_HEADER_SIZE ;
    833   scanNum_ = getScanNum();
    834   rowNum_ = scanNum_ * ARYNM ;
    835   chmax_ = (int) ( dataLen_ * 8 / IBIT ) ;
    836   record_->LDATA = new char[dataLen_] ;
    837 
    838   initArray();
    839 
    840   show() ;
    841 
    842759  return 0 ;
    843760}
Note: See TracChangeset for help on using the changeset viewer.