- Timestamp:
- 06/24/14 19:59:46 (10 years ago)
- Location:
- trunk/src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/STMath.cpp
r2950 r2952 618 618 float val, 619 619 const std::string& mode, 620 bool tsys ) 620 bool tsys, 621 bool skip_flaggedrow ) 621 622 { 622 623 CountedPtr< Scantable > out = getScantable(in, false); … … 624 625 ArrayColumn<Float> specCol(tab,"SPECTRA"); 625 626 ArrayColumn<Float> tsysCol(tab,"TSYS"); 627 ScalarColumn<uInt> flagrowCol(tab, "FLAGROW"); 626 628 if (mode=="DIV") val = 1.0/val ; 627 629 else if (mode=="SUB") val *= -1.0 ; … … 629 631 Vector<Float> spec; 630 632 Vector<Float> ts; 633 uInt flagrow; 631 634 specCol.get(i, spec); 632 635 tsysCol.get(i, ts); 636 flagrowCol.get(i, flagrow); 637 if (skip_flaggedrow && (flagrow > 0)) continue; 633 638 if (mode == "MUL" || mode == "DIV") { 634 639 //if (mode == "DIV") val = 1.0/val; … … 656 661 const std::string& mode, 657 662 const std::string& opmode, 658 bool tsys ) 663 bool tsys, 664 bool skip_flaggedrow ) 659 665 { 660 666 CountedPtr< Scantable > out ; 661 667 if ( opmode == "channel" ) { 662 out = arrayOperateChannel( in, val, mode, tsys ) ;668 out = arrayOperateChannel( in, val, mode, tsys, skip_flaggedrow ) ; 663 669 } 664 670 else if ( opmode == "row" ) { 665 out = arrayOperateRow( in, val, mode, tsys ) ;671 out = arrayOperateRow( in, val, mode, tsys, skip_flaggedrow ) ; 666 672 } 667 673 else { … … 674 680 const std::vector<float> val, 675 681 const std::string& mode, 676 bool tsys ) 682 bool tsys, 683 bool skip_flaggedrow ) 677 684 { 678 685 if ( val.size() == 1 ){ … … 721 728 ArrayColumn<Float> specCol(tab,"SPECTRA"); 722 729 ArrayColumn<Float> tsysCol(tab,"TSYS"); 730 ScalarColumn<uInt> flagrowCol(tab, "FLAGROW"); 723 731 if (mode == "DIV") fact = (float)1.0 / fact; 724 732 else if (mode == "SUB") fact *= (float)-1.0 ; … … 726 734 Vector<Float> spec; 727 735 Vector<Float> ts; 736 uInt flagrow; 728 737 specCol.get(i, spec); 729 738 tsysCol.get(i, ts); 739 flagrowCol.get(i, flagrow); 740 if (skip_flaggedrow && (flagrow > 0)) continue; 730 741 if (mode == "MUL" || mode == "DIV") { 731 742 //if (mode == "DIV") fact = (float)1.0 / fact; … … 752 763 const std::vector<float> val, 753 764 const std::string& mode, 754 bool tsys ) 765 bool tsys, 766 bool skip_flaggedrow ) 755 767 { 756 768 if ( val.size() == 1 ) { … … 788 800 ArrayColumn<Float> specCol(tab,"SPECTRA"); 789 801 ArrayColumn<Float> tsysCol(tab,"TSYS"); 802 ScalarColumn<uInt> flagrowCol(tab, "FLAGROW"); 790 803 if (mode == "DIV") fact = (float)1.0 / fact; 791 804 if (mode == "SUB") fact *= (float)-1.0 ; … … 793 806 Vector<Float> spec; 794 807 Vector<Float> ts; 808 uInt flagrow; 795 809 specCol.get(i, spec); 796 810 tsysCol.get(i, ts); 811 flagrowCol.get(i, flagrow); 812 if (skip_flaggedrow && (flagrow > 0)) continue; 797 813 if (mode == "MUL" || mode == "DIV") { 798 814 spec *= fact[i]; -
trunk/src/STMath.h
r2919 r2952 15 15 #include <map> 16 16 #include <string> 17 #include <iostream> 17 18 18 19 #include <casa/aips.h> … … 117 118 casa::CountedPtr<Scantable> 118 119 unaryOperate( const casa::CountedPtr<Scantable>& in, float val, 119 const std::string& mode, bool tsys=false ); 120 const std::string& mode, bool tsys=false, 121 bool skip_flaggedrow=false ); 120 122 121 123 // array operation … … 125 127 const std::string& mode, 126 128 const std::string& opmode="channel", 127 bool tsys=false ); 129 bool tsys=false, 130 bool skip_flaggedrow=false ); 128 131 129 132 // channel operation … … 131 134 arrayOperateChannel( const casa::CountedPtr<Scantable>& in, 132 135 const std::vector<float> val, 133 const std::string& mode, bool tsys=false ); 136 const std::string& mode, bool tsys=false, 137 bool skip_flaggedrow=false ); 134 138 135 139 // row operation … … 137 141 arrayOperateRow( const casa::CountedPtr<Scantable>& in, 138 142 const std::vector<float> val, 139 const std::string& mode, bool tsys=false ); 143 const std::string& mode, bool tsys=false, 144 bool skip_flaggedrow=false ); 140 145 141 146 // 2d array operation -
trunk/src/STMathWrapper.h
r2900 r2952 70 70 ScantableWrapper 71 71 unaryOperate( const ScantableWrapper& in, float val, 72 const std::string& mode, bool tsys=false ) 73 { return ScantableWrapper(STMath::unaryOperate(in.getCP(), val, mode, tsys)); } 72 const std::string& mode, bool tsys=false, 73 bool skip_flaggedrow=false ) 74 { return ScantableWrapper(STMath::unaryOperate(in.getCP(), val, mode, tsys, skip_flaggedrow)); } 74 75 75 76 ScantableWrapper arrayOperate( const ScantableWrapper& in, 76 77 const std::vector<float> val, 77 78 const std::string& mode, 78 bool tsys=false ) 79 { return ScantableWrapper(STMath::arrayOperateChannel(in.getCP(), val, mode, tsys)); } 79 bool tsys=false, 80 bool skip_flaggedrow=false ) 81 { return ScantableWrapper(STMath::arrayOperateChannel(in.getCP(), val, mode, tsys, skip_flaggedrow)); } 80 82 81 83 ScantableWrapper array2dOperate( const ScantableWrapper& in,
Note:
See TracChangeset
for help on using the changeset viewer.