Changeset 1232 for trunk/src/STFitter.cpp
- Timestamp:
- 09/01/06 13:14:11 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/STFitter.cpp
r1067 r1232 64 64 funcs_.resize(0,True); 65 65 parameters_.resize(); 66 fixedpar_.resize(); 66 67 error_.resize(); 67 68 thefit_.resize(); … … 205 206 if (parameters_.nelements() > 0 && tmppar.nelements() != parameters_.nelements()) 206 207 throw (AipsError("Number of parameters inconsistent with function.")); 207 if (parameters_.nelements() == 0) 208 if (parameters_.nelements() == 0) { 208 209 parameters_.resize(tmppar.nelements()); 209 fixedpar_.resize(tmppar.nelements()); 210 fixedpar_ = False; 210 if (tmppar.nelements() != fixedpar_.nelements()) { 211 fixedpar_.resize(tmppar.nelements()); 212 fixedpar_ = False; 213 } 214 } 211 215 if (dynamic_cast<Gaussian1D<Float>* >(funcs_[0]) != 0) { 212 216 uInt count = 0; … … 224 228 } 225 229 } 230 // reset 231 if (params.size() == 0) { 232 parameters_.resize(); 233 fixedpar_.resize(); 234 } 226 235 return true; 227 236 } … … 229 238 bool Fitter::setFixedParameters(std::vector<bool> fixed) 230 239 { 231 Vector<Bool> tmp(fixed);232 240 if (funcs_.nelements() == 0) 233 241 throw (AipsError("Function not yet set.")); 234 if (fixedpar_.nelements() > 0 && tmp.nelements() != fixedpar_.nelements())242 if (fixedpar_.nelements() > 0 && fixed.size() != fixedpar_.nelements()) 235 243 throw (AipsError("Number of mask elements inconsistent with function.")); 244 if (fixedpar_.nelements() == 0) { 245 fixedpar_.resize(parameters_.nelements()); 246 fixedpar_ = False; 247 } 236 248 if (dynamic_cast<Gaussian1D<Float>* >(funcs_[0]) != 0) { 237 249 uInt count = 0; 238 250 for (uInt j=0; j < funcs_.nelements(); ++j) { 239 251 for (uInt i=0; i < funcs_[j]->nparameters(); ++i) { 240 funcs_[j]->mask(i) = ! tmp[count];241 fixedpar_[count] = !tmp[count];252 funcs_[j]->mask(i) = !fixed[count]; 253 fixedpar_[count] = fixed[count]; 242 254 ++count; 243 255 } … … 245 257 } else if (dynamic_cast<Polynomial<Float>* >(funcs_[0]) != 0) { 246 258 for (uInt i=0; i < funcs_[0]->nparameters(); ++i) { 247 fixedpar_[i] = tmp[i]; 248 funcs_[0]->mask(i) = tmp[i]; 249 } 250 } 251 //fixedpar_ = !tmpmsk; 259 fixedpar_[i] = fixed[i]; 260 funcs_[0]->mask(i) = !fixed[i]; 261 } 262 } 252 263 return true; 253 264 } … … 263 274 Vector<Bool> out(parameters_.nelements()); 264 275 if (fixedpar_.nelements() == 0) { 265 out = False;276 return std::vector<bool>(); 266 277 //throw (AipsError("No parameter mask set.")); 267 278 } else { … … 312 323 residual_ = y_; 313 324 fitter.residual(residual_,x_); 314 315 325 // use fitter.residual(model=True) to get the model 316 326 thefit_.resize(x_.nelements());
Note: See TracChangeset
for help on using the changeset viewer.