- Timestamp:
- 09/08/11 19:35:40 (13 years ago)
- Location:
- trunk/src
- Files:
-
- 14 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/src
- Property svn:mergeinfo changed
/branches/parallel/src (added) merged: 2205,2240,2247,2262-2263,2267,2274,2281-2285,2287-2288
- Property svn:mergeinfo changed
-
trunk/src/CMakeLists.txt
r1974 r2289 22 22 set( ASAP_SRCS 23 23 ${SRCDIR}/MathUtils.cpp 24 ${SRCDIR}/TableTraverse.cpp 24 25 ${SRCDIR}/RowAccumulator.cpp 25 26 ${SRCDIR}/Logger.cpp -
trunk/src/FillerBase.cpp
r2242 r2289 28 28 RecordFieldPtr<Int> fitIdCol( row_.record(), "FIT_ID" ) ; 29 29 *fitIdCol = -1 ; 30 31 mEntry_.resize( 0 ) ; 32 mIdx_.resize( 0 ) ; 33 fEntry_.resize( 0 ) ; 34 fIdx_.resize( 0 ) ; 35 wEntry_.resize( 0 ) ; 36 wIdx_.resize( 0 ) ; 30 37 } 31 38 … … 82 89 { 83 90 /// @todo this has to change when nchan isn't global anymore 84 uInt id= table_->frequencies().addEntry(refpix, refval, incr); 91 uInt nEntry = fEntry_.size() ; 92 Int idx = -1 ; 93 Vector<Double> entry( 3 ) ; 94 entry[0] = refpix ; 95 entry[1] = refval ; 96 entry[2] = incr ; 97 for ( uInt i = 0 ; i < nEntry ; i++ ) { 98 if ( allEQ( entry, fEntry_[i] ) ) { 99 idx = i ; 100 break ; 101 } 102 } 103 uInt id ; 104 if ( idx != -1 ) 105 id = fIdx_[idx] ; 106 else { 107 id= table_->frequencies().addEntry(refpix, refval, incr); 108 RecordFieldPtr<uInt> mfreqidCol(row_.record(), "FREQ_ID"); 109 fEntry_.push_back( entry ) ; 110 fIdx_.push_back( id ) ; 111 } 85 112 RecordFieldPtr<uInt> mfreqidCol(row_.record(), "FREQ_ID"); 86 113 *mfreqidCol = id; … … 91 118 void FillerBase::setMolecule(const Vector<Double>& restfreq) 92 119 { 93 Vector<String> tmp; 94 uInt id = table_->molecules().addEntry(restfreq, tmp, tmp); 120 uInt nEntry = mEntry_.size() ; 121 Int idx = -1 ; 122 for ( uInt i = 0 ; i < nEntry ; i++ ) { 123 if ( restfreq.conform( mEntry_[i] ) ) { 124 if ( allEQ( restfreq, mEntry_[i] ) ) { 125 idx = i ; 126 break ; 127 } 128 } 129 } 130 uInt id ; 131 if ( idx != -1 ) 132 id = mIdx_[idx] ; 133 else { 134 Vector<String> tmp ; 135 id = table_->molecules().addEntry(restfreq,tmp,tmp) ; 136 mEntry_.push_back( restfreq ) ; 137 mIdx_.push_back( id ) ; 138 } 95 139 RecordFieldPtr<uInt> molidCol(row_.record(), "MOLECULE_ID"); 96 140 *molidCol = id; … … 129 173 Float windspeed, Float windaz) 130 174 { 131 uInt id = table_->weather().addEntry(temperature, pressure, 132 humidity, windspeed, windaz); 133 RecordFieldPtr<uInt> mweatheridCol(row_.record(), "WEATHER_ID"); 134 *mweatheridCol = id; 175 uInt nEntry = wEntry_.size() ; 176 Int idx = -1 ; 177 Vector<Float> entry( 5 ) ; 178 entry[0] = temperature ; 179 entry[1] = pressure ; 180 entry[2] = humidity ; 181 entry[3] = windspeed ; 182 entry[4] = windaz ; 183 for ( uInt i = 0 ; i < nEntry ; i++ ) { 184 if ( allEQ( entry, wEntry_[i] ) ) { 185 idx = i ; 186 break ; 187 } 188 } 189 uInt id ; 190 if ( idx != -1 ) 191 id = wIdx_[idx] ; 192 else { 193 id = table_->weather().addEntry(temperature, pressure, 194 humidity, windspeed, windaz); 195 wEntry_.push_back( entry ) ; 196 wIdx_.push_back( id ) ; 197 } 198 RecordFieldPtr<uInt> mweatheridCol(row_.record(), "WEATHER_ID"); 199 *mweatheridCol = id; 135 200 } 136 201 … … 187 252 Float windaz) 188 253 { 254 uInt nEntry = wEntry_.size() ; 255 Int idx = -1 ; 256 Vector<Float> entry( 5 ) ; 257 entry[0] = temperature ; 258 entry[1] = pressure ; 259 entry[2] = humidity ; 260 entry[3] = windspeed ; 261 entry[4] = windaz ; 262 for ( uInt i = 0 ; i < nEntry ; i++ ) { 263 if ( allEQ( entry, wEntry_[i] ) ) { 264 idx = i ; 265 break ; 266 } 267 } 189 268 uInt id ; 190 Table tab = table_->weather().table() ; 191 Table subt = tab( tab.col("TEMPERATURE") == temperature \ 192 && tab.col("PRESSURE") == pressure \ 193 && tab.col("HUMIDITY") == humidity \ 194 && tab.col("WINDSPEED") == windspeed \ 195 && tab.col("WINDAZ") == windaz, 1 ) ; 196 Int nrow = tab.nrow() ; 197 Int nrowSel = subt.nrow() ; 198 if ( nrowSel == 0 ) { 199 tab.addRow( 1, True ) ; 200 TableRow row( tab ) ; 201 TableRecord &rec = row.record() ; 202 RecordFieldPtr<casa::uInt> rfpi ; 203 rfpi.attachToRecord( rec, "ID" ) ; 204 *rfpi = (uInt)nrow ; 205 RecordFieldPtr<casa::Float> rfp ; 206 rfp.attachToRecord( rec, "TEMPERATURE" ) ; 207 *rfp = temperature ; 208 rfp.attachToRecord( rec, "PRESSURE" ) ; 209 *rfp = pressure ; 210 rfp.attachToRecord( rec, "HUMIDITY" ) ; 211 *rfp = humidity ; 212 rfp.attachToRecord( rec, "WINDSPEED" ) ; 213 *rfp = windspeed ; 214 rfp.attachToRecord( rec, "WINDAZ" ) ; 215 *rfp = windaz ; 216 row.put( nrow, rec ) ; 217 id = (uInt)nrow ; 218 } 219 else { 220 ROTableColumn tc( subt, "ID" ) ; 221 id = tc.asuInt( 0 ) ; 269 if ( idx != -1 ) 270 id = wIdx_[idx] ; 271 else { 272 Table tab = table_->weather().table() ; 273 Table subt = tab( tab.col("TEMPERATURE") == temperature \ 274 && tab.col("PRESSURE") == pressure \ 275 && tab.col("HUMIDITY") == humidity \ 276 && tab.col("WINDSPEED") == windspeed \ 277 && tab.col("WINDAZ") == windaz, 1 ) ; 278 Int nrow = tab.nrow() ; 279 Int nrowSel = subt.nrow() ; 280 if ( nrowSel == 0 ) { 281 tab.addRow( 1, True ) ; 282 TableRow row( tab ) ; 283 TableRecord &rec = row.record() ; 284 RecordFieldPtr<casa::uInt> rfpi ; 285 rfpi.attachToRecord( rec, "ID" ) ; 286 *rfpi = (uInt)nrow ; 287 RecordFieldPtr<casa::Float> rfp ; 288 rfp.attachToRecord( rec, "TEMPERATURE" ) ; 289 *rfp = temperature ; 290 rfp.attachToRecord( rec, "PRESSURE" ) ; 291 *rfp = pressure ; 292 rfp.attachToRecord( rec, "HUMIDITY" ) ; 293 *rfp = humidity ; 294 rfp.attachToRecord( rec, "WINDSPEED" ) ; 295 *rfp = windspeed ; 296 rfp.attachToRecord( rec, "WINDAZ" ) ; 297 *rfp = windaz ; 298 row.put( nrow, rec ) ; 299 id = (uInt)nrow ; 300 } 301 else { 302 ROTableColumn tc( subt, "ID" ) ; 303 id = tc.asuInt( 0 ) ; 304 } 305 wEntry_.push_back( entry ) ; 306 wIdx_.push_back( id ) ; 222 307 } 223 308 RecordFieldPtr<uInt> mweatheridCol(row_.record(), "WEATHER_ID"); -
trunk/src/FillerBase.h
r2209 r2289 27 27 // STL 28 28 #include <string> 29 #include <vector> 29 30 // AIPS++ 30 31 #include <casa/aips.h> … … 103 104 casa::String referenceRx_; 104 105 casa::TableRow row_; 106 107 std::vector< casa::Vector<casa::Double> > mEntry_ ; 108 std::vector<casa::uInt> mIdx_ ; 109 std::vector< casa::Vector<casa::Double> > fEntry_ ; 110 std::vector<casa::uInt> fIdx_ ; 111 std::vector< casa::Vector<casa::Float> > wEntry_ ; 112 std::vector<casa::uInt> wIdx_ ; 105 113 }; 106 114 -
trunk/src/FillerWrapper.h
r1904 r2289 45 45 throw(AipsError("File does not exist")); 46 46 } 47 filler_ = new PKSFiller(stable_); 48 if (filler_->open(filename, rec)) { 49 // if (filler_->open(filename)) { 50 attached_ = true; 51 return; 47 int fileType = dataType( filename ) ; 48 if ( fileType == 0 ) { 49 filler_ = new PKSFiller(stable_); 50 if (filler_->open(filename, rec)) { 51 attached_ = true; 52 return; 53 } 52 54 } 53 filler_ = new NROFiller(stable_); 54 if (filler_->open(filename, rec)) { 55 // if (filler_->open(filename)) { 56 attached_ = true; 57 return; 55 else if ( fileType == 1 ) { 56 filler_ = new NROFiller(stable_); 57 if (filler_->open(filename, rec)) { 58 attached_ = true; 59 return; 60 } 58 61 } 59 62 filler_ = 0; … … 81 84 private: 82 85 86 int dataType( const std::string &filename ) { 87 int ret = -1 ; 88 int pks = 0 ; 89 int nro = 1 ; 90 casa::File file( filename ) ; 91 if ( file.isDirectory() ) 92 ret = pks ; 93 else if ( file.isReadable() ) { 94 FILE *f = fopen( filename.c_str(), "r") ; 95 char buf[8] ; 96 fread( buf, 6, 1, f ) ; 97 fclose( f ) ; 98 buf[7]='\0' ; 99 // NRO data has two types: 100 // 1) specific binary data for OTF observation 101 // 2) (pseudo-)FITS data that doesn't have primary HDU 102 // So, one can distinguish NRO and non-NRO data by examining 103 // first keyword name. 104 if ( casa::String( buf ) == "SIMPLE" ) { 105 ret = pks ; 106 } 107 else { 108 ret = nro ; 109 } 110 } 111 return ret ; 112 } 113 83 114 FillerWrapper(); 84 115 FillerWrapper(const FillerWrapper&); -
trunk/src/MSFiller.cpp
r2260 r2289 1418 1418 // assume that cols is sorted by TIME 1419 1419 Bool doInterp = False ; 1420 //uInt nrow = tcol.nrow() ;1421 1420 uInt nrow = dcol.nrow() ; 1422 1421 if ( nrow == 0 ) -
trunk/src/MSFiller.h
r2258 r2289 130 130 casa::Int &nrow, 131 131 casa::Vector<casa::Int> &corrtype ) ; 132 132 133 133 // initialize header 134 134 void initHeader( STHeader &header ) ; -
trunk/src/NROFiller.cpp
r2272 r2289 100 100 String srcname ; 101 101 String fieldname ; 102 Array<Float> spectra ;103 Array<uChar> flagtra ;104 Array<Float> tsys ;105 Array<Double> direction ;102 Vector<Float> spectra ; 103 Vector<uChar> flagtra ; 104 Vector<Float> tsys ; 105 Vector<Double> direction ; 106 106 Float azimuth ; 107 107 Float elevation ; 108 Float parangle ;108 Float parangle = 0.0 ; 109 109 Float opacity ; 110 110 uInt tcalid ; … … 117 117 Float winddir ; 118 118 Double srcvel ; 119 Array<Double> propermotion;119 Vector<Double> propermotion( 2, 0.0 ) ; 120 120 Vector<Double> srcdir ; 121 Array<Double> scanrate;121 Vector<Double> scanrate( 2, 0.0 ) ; 122 122 Int rowCount = 0 ; 123 123 … … 126 126 Vector<Float> defaultTcal( 1, 1.0 ) ; 127 127 String tcalTime = MVTime( header.utc ).string( MVTime::YMD ) ; 128 129 // TCAL subtable rows 130 setTcal( tcalTime, defaultTcal ) ; 131 132 // FOCUS subtable rows 133 setFocus( parangle ) ; 134 128 135 for ( Int irow = 0 ; irow < (Int)nRow ; irow++ ) { 129 136 // check scan intent … … 195 202 setMolecule( restfreq ) ; 196 203 197 // FOCUS subtable row198 setFocus( parangle ) ;199 200 204 // WEATHER subtable row 201 205 float p = 7.5 * temperature / ( 273.3 + temperature ) ; … … 204 208 winddir *= C::degree ; // deg->rad 205 209 humidity /= sh ; // P_H2O->relative humidity 206 setWeather( temperature, pressure, humidity, windvel, winddir ) ; 207 208 // TCAL subtable row 209 // use default since NRO input is calibrated data 210 setTcal( tcalTime, defaultTcal ) ; 211 210 setWeather2( temperature, pressure, humidity, windvel, winddir ) ; 212 211 213 212 // set row attributes 214 213 // SPECTRA, FLAGTRA, and TSYS 215 Vector<Float> spectrum( spectra ); 216 Vector<uChar> flags( flagtra ) ; 217 Vector<Float> Tsys( tsys ) ; 218 setSpectrum( spectrum, flags, Tsys ) ; 214 setSpectrum( spectra, flagtra, tsys ) ; 219 215 220 216 // SCANNO, CYCLENO, IFNO, POLNO, and BEAMNO 221 //uInt ifno = table_->frequencies().addEntry( (Double)fqs[0], (Double)fqs[1], (Double)fqs[2] ) ;222 217 setIndex( scanno, cycleno, ifno, polno, beamno ) ; 223 218 … … 226 221 227 222 // DIRECTION 228 Vector<Double> dir( direction ) ; 229 setDirection(dir, azimuth, elevation ) ; 223 setDirection( direction, azimuth, elevation ) ; 230 224 231 225 // TIME and INTERVAL … … 233 227 234 228 // SRCNAME, SRCTYPE, FIELDNAME, SRCDIRECTION, SRCPROPERMOTION, and SRCVELOCITY 235 Vector<Double> propermot( propermotion ) ; 236 setSource( srcname, srcType, fieldname, srcdir, propermot, srcvel ) ; 229 setSource( srcname, srcType, fieldname, srcdir, propermotion, srcvel ) ; 237 230 238 231 // SCANRATE 239 Vector<Double> srate( scanrate ) ; 240 setScanRate( srate ) ; 232 setScanRate( scanrate ) ; 241 233 242 234 // OPACITY -
trunk/src/SConscript
- Property svn:mergeinfo changed
/branches/parallel/src/SConscript (added) merged: 2240,2247,2262
- Property svn:mergeinfo changed
-
trunk/src/STFiller.cpp
r2201 r2289 645 645 String srcname ; 646 646 String fieldname ; 647 Array<Float> spectra ;648 Array<uChar> flagtra ;649 Array<Float> tsys ;650 Array<Double> direction ;647 Vector<Float> spectra ; 648 Vector<uChar> flagtra ; 649 Vector<Float> tsys ; 650 Vector<Double> direction ; 651 651 Float azimuth ; 652 652 Float elevation ; … … 662 662 Float winddir ; 663 663 Double srcvel ; 664 Array<Double> propermotion;664 Vector<Double> propermotion( 2, 0.0 ) ; 665 665 Vector<Double> srcdir ; 666 Array<Double> scanrate;666 Vector<Double> scanrate( 2, 0.0 ) ; 667 667 for ( i = 0 ; i < imax ; i++ ) { 668 668 string scanType = nreader_->getScanType( i ) ; -
trunk/src/STFocus.h
r1586 r2289 65 65 casa::ScalarColumn<casa::Float> rotationCol_, axisCol_, 66 66 tanCol_,handCol_, parangleCol_, 67 mountCol_,userCol_, xyphCol_,xyphoffCol_ ,;67 mountCol_,userCol_, xyphCol_,xyphoffCol_; 68 68 }; 69 69 -
trunk/src/STMath.cpp
r2278 r2289 979 979 const CountedPtr< Scantable >& caloff, Float tcal ) 980 980 { 981 if ( ! calon->conformant(*caloff) ) {981 if ( ! calon->conformant(*caloff) ) { 982 982 throw(AipsError("'CAL on' and 'CAL off' scantables are not conformant.")); 983 983 } … … 987 987 const Table& tcon = calon->table(); 988 988 Vector<Float> tcalout; 989 Vector<Float> tcalout2; //debug 989 990 std::map<uInt,uInt> tcalIdToRecNoMap; 991 const Table& calOffTcalTable = caloff->tcal().table(); 992 { 993 ROScalarColumn<uInt> calOffTcalTable_IDcol(calOffTcalTable, "ID"); 994 const Vector<uInt> tcalIds(calOffTcalTable_IDcol.getColumn()); 995 size_t tcalIdsEnd = tcalIds.nelements(); 996 for (uInt i = 0; i < tcalIdsEnd; i++) { 997 tcalIdToRecNoMap[tcalIds[i]] = i; 998 } 999 } 1000 ROArrayColumn<Float> calOffTcalTable_TCALcol(calOffTcalTable, "TCAL"); 990 1001 991 1002 if ( tout.nrow() != tcon.nrow() ) { … … 1058 1069 **/ 1059 1070 // get tcal if input tcal <= 0 1060 String tcalt;1061 1071 Float tcalUsed; 1062 1072 tcalUsed = tcal; 1063 1073 if ( tcal <= 0.0 ) { 1064 caloff->tcal().getEntry(tcalt, tcalout, tcalId); 1074 uInt tcalRecNo = tcalIdToRecNoMap[tcalId]; 1075 calOffTcalTable_TCALcol.get(tcalRecNo, tcalout); 1065 1076 // if (polno<=3) { 1066 1077 // tcalUsed = tcalout[polno]; … … 2418 2429 out->appendToHistoryTable((*it)->history()); 2419 2430 const Table& tab = (*it)->table(); 2431 2432 Block<String> cols(3); 2433 cols[0] = String("FREQ_ID"); 2434 cols[1] = String("MOLECULE_ID"); 2435 cols[2] = String("FOCUS_ID"); 2436 2420 2437 TableIterator scanit(tab, "SCANNO"); 2421 2438 while (!scanit.pastEnd()) { 2422 TableIterator freqit(scanit.table(), "FREQ_ID"); 2423 while ( !freqit.pastEnd() ) { 2424 Table thetab = freqit.table(); 2439 ScalarColumn<uInt> thescannocol(scanit.table(),"SCANNO"); 2440 Vector<uInt> thescannos(thescannocol.nrow(),newscanno); 2441 thescannocol.putColumn(thescannos); 2442 TableIterator subit(scanit.table(), cols); 2443 while ( !subit.pastEnd() ) { 2425 2444 uInt nrow = tout.nrow(); 2445 Table thetab = subit.table(); 2446 ROTableRow row(thetab); 2447 Vector<uInt> thecolvals(thetab.nrow()); 2448 ScalarColumn<uInt> thefreqidcol(thetab,"FREQ_ID"); 2449 ScalarColumn<uInt> themolidcol(thetab, "MOLECULE_ID"); 2450 ScalarColumn<uInt> thefocusidcol(thetab,"FOCUS_ID"); 2451 // The selected subset of table should have 2452 // the equal FREQ_ID, MOLECULE_ID, and FOCUS_ID values. 2453 const TableRecord& rec = row.get(0); 2454 // Set the proper FREQ_ID 2455 Double rv,rp,inc; 2456 (*it)->frequencies().getEntry(rp, rv, inc, rec.asuInt("FREQ_ID")); 2457 uInt id; 2458 id = out->frequencies().addEntry(rp, rv, inc); 2459 thecolvals = id; 2460 thefreqidcol.putColumn(thecolvals); 2461 // Set the proper MOLECULE_ID 2462 Vector<String> name,fname;Vector<Double> rf; 2463 (*it)->molecules().getEntry(rf, name, fname, rec.asuInt("MOLECULE_ID")); 2464 id = out->molecules().addEntry(rf, name, fname); 2465 thecolvals = id; 2466 themolidcol.putColumn(thecolvals); 2467 // Set the proper FOCUS_ID 2468 Float fpa,frot,fax,ftan,fhand,fmount,fuser, fxy, fxyp; 2469 (*it)->focus().getEntry(fpa, fax, ftan, frot, fhand, fmount,fuser, 2470 fxy, fxyp, rec.asuInt("FOCUS_ID")); 2471 id = out->focus().addEntry(fpa, fax, ftan, frot, fhand, fmount,fuser, 2472 fxy, fxyp); 2473 thecolvals = id; 2474 thefocusidcol.putColumn(thecolvals); 2475 2426 2476 tout.addRow(thetab.nrow()); 2427 2477 TableCopy::copyRows(tout, thetab, nrow, 0, thetab.nrow()); 2428 ROTableRow row(thetab); 2429 for ( uInt i=0; i<thetab.nrow(); ++i) { 2430 uInt k = nrow+i; 2431 scannocol.put(k, newscanno); 2432 const TableRecord& rec = row.get(i); 2433 Double rv,rp,inc; 2434 (*it)->frequencies().getEntry(rp, rv, inc, rec.asuInt("FREQ_ID")); 2435 uInt id; 2436 id = out->frequencies().addEntry(rp, rv, inc); 2437 freqidcol.put(k,id); 2438 //String name,fname;Double rf; 2439 Vector<String> name,fname;Vector<Double> rf; 2440 (*it)->molecules().getEntry(rf, name, fname, rec.asuInt("MOLECULE_ID")); 2441 id = out->molecules().addEntry(rf, name, fname); 2442 molidcol.put(k, id); 2443 Float fpa,frot,fax,ftan,fhand,fmount,fuser, fxy, fxyp; 2444 (*it)->focus().getEntry(fpa, fax, ftan, frot, fhand, 2445 fmount,fuser, fxy, fxyp, 2446 rec.asuInt("FOCUS_ID")); 2447 id = out->focus().addEntry(fpa, fax, ftan, frot, fhand, 2448 fmount,fuser, fxy, fxyp); 2449 focusidcol.put(k, id); 2450 } 2451 ++freqit; 2478 2479 ++subit; 2452 2480 } 2453 2481 ++newscanno; -
trunk/src/STTcal.cpp
r1391 r2289 120 120 void STTcal::getEntry( String& time, Vector<Float>& tcal, uInt id ) 121 121 { 122 Table t = table_(table_.col("ID") == Int(id) 122 Table t = table_(table_.col("ID") == Int(id),1); 123 123 if (t.nrow() == 0 ) { 124 124 throw(AipsError("STTcal::getEntry - id out of range")); -
trunk/src/Templates.cpp
r1819 r2289 81 81 82 82 //template void convertArray<Bool, uChar>(Array<Bool> &, Array<uChar> const &); 83 template void c onvertArray<uChar, Bool>(Array<uChar> &, Array<Bool> const &);83 template void casa::convertArray<uChar, Bool>(Array<uChar> &, Array<Bool> const &); 84 84 85 template Array<Float>& operator/=<Float>(Array<Float>&, MaskedArray<Float> const&);86 template MaskedArray<Float> const& operator*=<Float>(MaskedArray<Float> const&, Float const&);87 template MaskedArray<Float> const& operator*=<Float>(MaskedArray<Float> const&, Array<Float> const&);88 template MaskedArray<Float> const& operator/=<Float>(MaskedArray<Float> const&, Float const&);89 template MaskedArray<Float> operator+<Float>(MaskedArray<Float> const&, MaskedArray<Float> const&);90 template MaskedArray<Float> operator-<Float>(MaskedArray<Float> const&, MaskedArray<Float> const&);91 template MaskedArray<Float> operator-<Float>(MaskedArray<Float> const&, Array<Float> const&);85 template Array<Float>& casa::operator/=<Float>(Array<Float>&, MaskedArray<Float> const&); 86 template MaskedArray<Float> const& casa::operator*=<Float>(MaskedArray<Float> const&, Float const&); 87 template MaskedArray<Float> const& casa::operator*=<Float>(MaskedArray<Float> const&, Array<Float> const&); 88 template MaskedArray<Float> const& casa::operator/=<Float>(MaskedArray<Float> const&, Float const&); 89 template MaskedArray<Float> casa::operator+<Float>(MaskedArray<Float> const&, MaskedArray<Float> const&); 90 template MaskedArray<Float> casa::operator-<Float>(MaskedArray<Float> const&, MaskedArray<Float> const&); 91 template MaskedArray<Float> casa::operator-<Float>(MaskedArray<Float> const&, Array<Float> const&); 92 92 93 template MaskedArray<Float> operator/<Float>(MaskedArray<Float> const&, MaskedArray<Float> const&);93 template MaskedArray<Float> casa::operator/<Float>(MaskedArray<Float> const&, MaskedArray<Float> const&); 94 94 95 template MaskedArray<Float> operator*<Float>(MaskedArray<Float> const&, MaskedArray<Float> const&);96 template MaskedArray<Float> operator*<Float>(MaskedArray<Float> const&, Array<Float> const&);97 template MaskedArray<Float> operator*<Float>(Array<Float> const&, MaskedArray<Float> const&);98 template MaskedArray<Float> operator*<Float>(Float const&, MaskedArray<Float> const&);99 template Float stddev<Float>(MaskedArray<Float> const&);100 template Float median<Float>(MaskedArray<Float> const&, Bool, Bool);101 template Float sumsquares<Float>(MaskedArray<Float> const&);102 template Float avdev<Float>(MaskedArray<Float> const&);95 template MaskedArray<Float> casa::operator*<Float>(MaskedArray<Float> const&, MaskedArray<Float> const&); 96 template MaskedArray<Float> casa::operator*<Float>(MaskedArray<Float> const&, Array<Float> const&); 97 template MaskedArray<Float> casa::operator*<Float>(Array<Float> const&, MaskedArray<Float> const&); 98 template MaskedArray<Float> casa::operator*<Float>(Float const&, MaskedArray<Float> const&); 99 template Float casa::stddev<Float>(MaskedArray<Float> const&); 100 template Float casa::median<Float>(MaskedArray<Float> const&, Bool, Bool); 101 template Float casa::sumsquares<Float>(MaskedArray<Float> const&); 102 template Float casa::avdev<Float>(MaskedArray<Float> const&); 103 103 104 104 template void LatticeUtilities::bin(MaskedArray<float>&, MaskedArray<float> const&, uInt, uInt);
Note:
See TracChangeset
for help on using the changeset viewer.