Changeset 2289 for trunk/src/FillerBase.cpp
- Timestamp:
- 09/08/11 19:35:40 (13 years ago)
- Location:
- trunk/src
- Files:
-
- 2 edited
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/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");
Note: See TracChangeset
for help on using the changeset viewer.