Changeset 2262 for branches/parallel/external-alma/atnf/PKSIO/NRODataset.cc
- Timestamp:
- 08/04/11 12:58:21 (13 years ago)
- Location:
- branches/parallel
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/parallel
- Property svn:mergeinfo changed
/trunk merged: 2154,2156,2198-2203,2212,2261
- Property svn:mergeinfo changed
-
branches/parallel/external-alma
- Property svn:mergeinfo changed
/trunk/external-alma merged: 2154,2156,2198,2200-2203,2212,2261
- Property svn:mergeinfo changed
-
branches/parallel/external-alma/atnf/PKSIO/NRODataset.cc
r2031 r2262 83 83 } 84 84 same_ = -1 ; 85 86 // Record for frequency setting 87 frec_ = Record() ; 85 88 } 86 89 … … 602 605 } 603 606 607 double NRODataset::getScanTime( int i ) 608 { 609 double startTime = getStartIntTime( i ) ; 610 double interval = getIPTIM() / 86400.0 ; // [sec]->[day] 611 return startTime+0.5*interval ; 612 } 613 604 614 vector<bool> NRODataset::getIFs() 605 615 { … … 657 667 NRODataRecord *record = getRecord( i ) ; 658 668 string arryt = string( record->ARRYT ) ; 659 //string sbeamno = arryt.substr( 1, arryt.size()-1 ) ;660 //uInt ib = atoi( sbeamno.c_str() ) - 1 ;661 669 uInt ib = getArrayId( arryt ) ; 662 663 int ia = -1 ; 670 string rxname = getRX()[0] ; 671 string key = arryt ; 672 if ( rxname.find("MULT2") != string::npos ) 673 key = "BEARS" ; 674 675 if ( frec_.isDefined( key ) ) { 676 // frequency for the array is already calculated 677 Vector<Double> f = frec_.asArrayDouble( key ) ; 678 Double *f_p = f.data() ; 679 for ( int i = 0 ; i < 3 ; i++ ) 680 v[i] = (double)(f_p[i]) ; 681 return v ; 682 } 683 684 //int ia = -1 ; 664 685 bool isAOS = false ; 665 686 //cout << "NRODataset::getFrequencies() record->ARRYT=" << record->ARRYT << endl ; 666 687 //cout << "NRODataset::getFrequencies() ib = " << ib << endl ; 667 688 668 if ( strncmp( record->ARRYT, "X", 1 ) == 0 ) { 669 // FX 670 if ( strncmp( (record->ARRYT)+1, "1", 1 ) == 0 671 || strncmp( (record->ARRYT)+1, "3", 1 ) ) { 672 // FX1, 3 673 ia = 2 ; 674 } 675 else { 676 // FX2, 4 677 ia = 1 ; 678 } 679 } 680 else if ( strncmp( record->ARRYT, "A", 1 ) == 0 ) 681 ia = 2 ; // AC 682 else if ( strncmp( record->ARRYT, "W", 1 ) == 0 ) { 683 // AOS-W 684 ia = 2 ; 689 if ( arryt[0] == 'W' || arryt[0] == 'U' || arryt[0] == 'H' ) 685 690 isAOS = true ; 686 } 687 else if ( strncmp( record->ARRYT, "U", 1 ) == 0 ) { 688 // AOS-U 689 ia = 2 ; 690 isAOS = true ; 691 } 692 else if ( strncmp( record->ARRYT, "H", 1 ) == 0 ) { 693 // AOS-H 694 isAOS = true ; 695 //cout << record->ARRYT << " " << strlen(record->ARRYT) << endl ; 696 //cout << (record->ARRYT)+1 << endl ; 697 if ( strncmp( (record->ARRYT)+2, " ", 1 ) == 0 ) { 698 // H1-9 699 if ( strncmp( (record->ARRYT)+1, "9", 1 ) == 0 ) { 700 // H9 701 ia = 2 ; 702 } 703 else { 704 // H1-8 705 ia = 1 ; 706 } 707 } 708 else { 709 // H10-16 710 ia = 2 ; 711 } 712 } 713 714 int iu ; 691 692 Bool isUSB ; 715 693 if ( record->FQIF1 > 0 ) 716 i u = 1; // USB694 isUSB = True ; // USB 717 695 else 718 i u = 2; // LSB696 isUSB = False ; // LSB 719 697 720 698 int ivdef = -1 ; 721 //if ( strncmp( (dataset_->getVDEF()).c_str(), "RAD", 3 ) == 0 )722 699 if ( (getVDEF()).compare( 0, 3, "RAD" ) == 0 ) 723 700 ivdef = 0 ; 724 //else if ( strncmp( dataset_->getVDEF(), "OPT", 3 ) == 0 )725 701 else if ( (getVDEF()).compare( 0, 3, "OPT" ) == 0 ) 726 702 ivdef = 1 ; … … 734 710 735 711 int ncal = getNFCAL()[ib] ; 736 vector<double> freqs( ncal ) ;737 712 double cw = 0.0 ; 738 713 vector<double> fqcal = getFQCAL()[ib] ; 739 714 vector<double> chcal = getCHCAL()[ib] ; 740 715 double f0cal = getF0CAL()[ib] ; 716 Vector<Double> freqs( ncal, fq0-f0cal ) ; 717 718 double factor = vel / cvel ; 719 if ( ivdef == 0 ) 720 factor = 1.0 / ( 1.0 - factor ) ; 741 721 for ( int ii = 0 ; ii < ncal ; ii++ ) { 742 freqs[ii] = fqcal[ii] ; 743 freqs[ii] -= getF0CAL()[ib] ; 744 if ( ia == 1 ) { 745 if ( iu == 1 ) { 746 freqs[ii] = fq0 + freqs[ii] ; 747 } 748 else if ( iu == 2 ) { 749 freqs[ii] = fq0 - freqs[ii] ; 750 } 751 } 752 else if ( ia == 2 ) { 753 if ( iu == 1 ) { 754 freqs[ii] = fq0 - freqs[ii] ; 755 } 756 else if ( iu == 2 ) { 757 freqs[ii] = fq0 + freqs[ii] ; 758 } 759 } 760 // if ( ivdef == 0 ) { 761 // double factor = 1.0 / ( 1.0 - vel / cvel ) ; 762 // freqs[ii] = freqs[ii] * factor - record->FQTRK * ( factor - 1.0 ) ; 763 // } 764 // else if ( ivdef == 1 ) { 765 // double factor = vel / cvel ; 766 // freqs[ii] = freqs[ii] * ( 1.0 + factor ) - record->FQTRK * factor ; 767 // } 722 freqs[ii] += fqcal[ii] ; 723 if ( ivdef == 0 ) { 724 freqs[ii] = freqs[ii] * factor + record->FQTRK * ( 1.0 - factor ) ; 725 } 726 else if ( ivdef == 1 ) { 727 freqs[ii] = freqs[ii] * ( 1.0 + factor ) - record->FQTRK * factor ; 728 } 729 730 //ofstream ofs("freqs.txt",ios::out|ios::app) ; 731 //ofs << setprecision(16) ; 732 //ofs << i << " " << record->ARRYT << " " << chcal[ii] << " " << freqs[ii] << " " << record->ISCAN << " " << fqcal[ii] << " " << f0cal << " " << record->FQTRK << " " << vel << endl ; 733 //ofs.close() ; 734 768 735 } 769 736 … … 790 757 } 791 758 else { 792 cw = getBERES()[ib] ; 759 760 cw = ( freqs[1] - freqs[0] ) 761 / ( chcal[1] - chcal[0] ) ; 762 763 if ( isUSB ) { 764 // channel frequency inversion 765 cw *= -1.0 ; 766 Double tmp = freqs[1] ; 767 freqs[1] = freqs[0] ; 768 freqs[0] = tmp ; 769 } 793 770 794 if ( iu == 2 )795 cw *= -1.0 ;796 797 if ( cw == 0.0 ) {798 cw = ( freqs[1] - freqs[0] )799 / ( chcal[1] - chcal[0] ) ;800 // if ( cw < 0.0 )801 // cw = - cw ;802 }803 771 v[0] = chcal[0] - 1 ; // 0-base 804 772 v[1] = freqs[0] ; … … 806 774 } 807 775 808 // conversion from TOPO to LSRK 809 v[1] = toLSR( v[1], getStartIntTime( i ), record_->SCX, record_->SCY ) ; 810 811 if ( refFreq_[ib] != 0.0 ) { 812 v[1] = refFreq_[ib] ; 813 } 814 else { 776 if ( refFreq_[ib] == 0.0 ) 815 777 refFreq_[ib] = v[1] ; 816 } 778 779 // register frequency setting to Record 780 Vector<Double> f( v ) ; 781 frec_.define( key, f ) ; 817 782 818 783 return v ;
Note: See TracChangeset
for help on using the changeset viewer.