Changeset 2782 for trunk/external-alma/atnf/PKSIO/NROOTFDataset.cc
- Timestamp:
- 03/07/13 18:45:58 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/external-alma/atnf/PKSIO/NROOTFDataset.cc
r2781 r2782 41 41 NROOTFDataset::NROOTFDataset( string name ) 42 42 : 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 {} 72 44 73 45 // destructor 74 46 NROOTFDataset::~NROOTFDataset() 75 { 76 } 47 {} 77 48 78 49 // data initialization 79 50 void NROOTFDataset::initialize() 80 51 { 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 109 72 110 73 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 } 149 76 } 150 77 … … 152 79 { 153 80 LogIO os( LogOrigin( "NROOTFDataset", "fillHeader()", WHERE ) ) ; 81 82 int arymax = arrayMax() ; 154 83 155 84 string str4( 4, ' ' ) ; … … 527 456 //cout << "PA = " << PA << endl ; 528 457 // 529 for ( int i = 0 ; i < NRO_ARYMAX; i++ ) {458 for ( int i = 0 ; i < arymax ; i++ ) { 530 459 strcpy( c18, str18.c_str() ) ; 531 460 if ( readHeader( c18, 16 ) == -1 ) { … … 537 466 } 538 467 // 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++ ) { 542 471 if ( readHeader( HPBW[i], sameEndian ) == -1 ) { 543 472 os << LogIO::WARN << "Error while reading data HPBW[" << i << "]." << LogIO::POST ; … … 546 475 } 547 476 // 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++ ) { 551 480 if ( readHeader( EFFA[i], sameEndian ) == -1 ) { 552 481 os << LogIO::WARN << "Error while reading data EFFA[" << i << "]." << LogIO::POST ; … … 555 484 } 556 485 // 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++ ) { 560 489 if ( readHeader( EFFB[i], sameEndian ) == -1 ) { 561 490 os << LogIO::WARN << "Error while reading data EFFB[" << i << "]." << LogIO::POST ; … … 564 493 } 565 494 // 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++ ) { 569 498 if ( readHeader( EFFL[i], sameEndian ) == -1 ) { 570 499 os << LogIO::WARN << "Error while reading data EFFL[" << i << "]." << LogIO::POST ; … … 573 502 } 574 503 // 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++ ) { 578 507 if ( readHeader( EFSS[i], sameEndian ) == -1 ) { 579 508 os << LogIO::WARN << "Error while reading data EFSS[" << i << "]." << LogIO::POST ; … … 582 511 } 583 512 // 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++) { 587 516 if ( readHeader( GAIN[i], sameEndian ) == -1 ) { 588 517 os << LogIO::WARN << "Error while reading data GAIN[" << i << "]." << LogIO::POST ; … … 591 520 } 592 521 // 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++) { 596 525 strcpy( c4, str4.c_str() ) ; 597 526 if ( readHeader( c4, 4 ) == -1 ) { … … 602 531 } 603 532 // 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++) { 607 536 strcpy( c4, str4.c_str() ) ; 608 537 if ( readHeader( c4, 4 ) == -1 ) { … … 613 542 } 614 543 // 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++) { 618 547 if ( readHeader( POLDR[i], sameEndian ) == -1 ) { 619 548 os << LogIO::WARN << "Error while reading data POLDR[" << i << "]." << LogIO::POST ; … … 622 551 } 623 552 // 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++) { 627 556 if ( readHeader( POLAN[i], sameEndian ) == -1 ) { 628 557 os << LogIO::WARN << "Error while reading data POLAN[" << i << "]." << LogIO::POST ; … … 631 560 } 632 561 // 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++) { 636 565 if ( readHeader( DFRQ[i], sameEndian ) == -1 ) { 637 566 os << LogIO::WARN << "Error while reading data DFRQ[" << i << "]." << LogIO::POST ; … … 640 569 } 641 570 // 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++) { 645 574 strcpy( c4, str4.c_str() ) ; 646 575 if ( readHeader( c4, 4 ) == -1 ) { … … 651 580 } 652 581 // 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++) { 656 585 if ( readHeader( REFN[i], sameEndian ) == -1 ) { 657 586 os << LogIO::WARN << "Error while reading data REFN[" << i << "]." << LogIO::POST ; … … 660 589 } 661 590 // 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++) { 665 594 if ( readHeader( IPINT[i], sameEndian ) == -1 ) { 666 595 os << LogIO::WARN << "Error while reading data IPINT[" << i << "]." << LogIO::POST ; … … 669 598 } 670 599 // 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++) { 674 603 if ( readHeader( MULTN[i], sameEndian ) == -1 ) { 675 604 os << LogIO::WARN << "Error while reading data MULTN[" << i << "]." << LogIO::POST ; … … 678 607 } 679 608 // 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++) { 683 612 if ( readHeader( MLTSCF[i], sameEndian ) == -1 ) { 684 613 os << LogIO::WARN << "Error while reading data MLTSCF[" << i << "]." << LogIO::POST ; … … 687 616 } 688 617 // 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++) { 692 621 strcpy( c8, str8.c_str() ) ; 693 622 if ( readHeader( c8, 8 ) == -1 ) { … … 698 627 } 699 628 // 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++) { 703 632 if ( readHeader( BEBW[i], sameEndian ) == -1 ) { 704 633 os << LogIO::WARN << "Error while reading data BEBW[" << i << "]." << LogIO::POST ; … … 707 636 } 708 637 // 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++) { 712 641 if ( readHeader( BERES[i], sameEndian ) == -1 ) { 713 642 os << LogIO::WARN << "Error while reading data BERES[" << i << "]." << LogIO::POST ; … … 716 645 } 717 646 // 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++) { 721 650 if ( readHeader( CHWID[i], sameEndian ) == -1 ) { 722 651 os << LogIO::WARN << "Error while reading data CHWID[" << i << "]." << LogIO::POST ; … … 725 654 } 726 655 // 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++) { 730 659 if ( readHeader( ARRY[i], sameEndian ) == -1 ) { 731 660 os << LogIO::WARN << "Error while reading data ARRY[" << i << "]." << LogIO::POST ; … … 734 663 } 735 664 // 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++) { 739 668 if ( readHeader( NFCAL[i], sameEndian ) == -1 ) { 740 669 os << LogIO::WARN << "Error while reading data NFCAL[" << i << "]." << LogIO::POST ; … … 743 672 } 744 673 // 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++) { 748 677 if ( readHeader( F0CAL[i], sameEndian ) == -1 ) { 749 678 os << LogIO::WARN << "Error while reading data F0CAL[" << i << "]." << LogIO::POST ; … … 752 681 } 753 682 // 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++) { 757 686 for ( int j = 0 ; j < 10 ; j++ ) { 758 687 if ( readHeader( FQCAL[i][j], sameEndian ) == -1 ) { … … 763 692 } 764 693 // DEBUG 765 // nro_debug_output( "FQCAL", NRO_ARYMAX, 10, FQCAL ) ;694 // nro_debug_output( "FQCAL", arymax, 10, FQCAL ) ; 766 695 // 767 for ( int i = 0 ; i < NRO_ARYMAX; i++) {696 for ( int i = 0 ; i < arymax ; i++) { 768 697 for ( int j = 0 ; j < 10 ; j++ ) { 769 698 if ( readHeader( CHCAL[i][j], sameEndian ) == -1 ) { … … 774 703 } 775 704 // DEBUG 776 // nro_debug_output( "CHCAL", NRO_ARYMAX, 10, CHCAL ) ;705 // nro_debug_output( "CHCAL", arymax, 10, CHCAL ) ; 777 706 // 778 for ( int i = 0 ; i < NRO_ARYMAX; i++) {707 for ( int i = 0 ; i < arymax ; i++) { 779 708 for ( int j = 0 ; j < 10 ; j++ ) { 780 709 if ( readHeader( CWCAL[i][j], sameEndian ) == -1 ) { … … 785 714 } 786 715 // DEBUG 787 // nro_debug_output( "CWCAL", NRO_ARYMAX, 10, CWCAL ) ;716 // nro_debug_output( "CWCAL", arymax, 10, CWCAL ) ; 788 717 // 789 718 if ( readHeader( SCNLEN, sameEndian ) == -1 ) { … … 828 757 // 829 758 830 //scanNum_ = NSCAN + 1 ; // includes ZERO scan831 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 842 759 return 0 ; 843 760 }
Note: See TracChangeset
for help on using the changeset viewer.