| 32 |
|
|
| 33 |
GSLNLSMinimizer::GSLNLSMinimizer( int /* ROOT::Math::EGSLNLSMinimizerType type */ ) : |
GSLNLSMinimizer::GSLNLSMinimizer( int /* ROOT::Math::EGSLNLSMinimizerType type */ ) : |
| 34 |
fDim(0), |
fDim(0), |
| 35 |
fObjFunc(0) |
fObjFunc(0), |
| 36 |
|
fCovMatrix(0) |
| 37 |
{ |
{ |
| 38 |
// Constructor implementation : create GSLMultiFit wrapper object |
// Constructor implementation : create GSLMultiFit wrapper object |
| 39 |
fGSLMultiFit = new GSLMultiFit( /*type */ ); |
fGSLMultiFit = new GSLMultiFit( /*type */ ); |
| 191 |
if (x == 0) return false; |
if (x == 0) return false; |
| 192 |
std::copy(x, x +fDim, fValues.begin() ); |
std::copy(x, x +fDim, fValues.begin() ); |
| 193 |
fMinVal = (*fObjFunc)(x); |
fMinVal = (*fObjFunc)(x); |
| 194 |
|
fStatus = status; |
| 195 |
|
|
| 196 |
|
fErrors.resize(fDim); |
| 197 |
|
|
| 198 |
if (minFound) { |
if (minFound) { |
| 199 |
if (debugLevel >=1 ) { |
if (debugLevel >=1 ) { |
| 206 |
for (unsigned int i = 0; i < fDim; ++i) |
for (unsigned int i = 0; i < fDim; ++i) |
| 207 |
std::cout << fNames[i] << "\t = " << fValues[i] << std::endl; |
std::cout << fNames[i] << "\t = " << fValues[i] << std::endl; |
| 208 |
} |
} |
| 209 |
|
// get errors from cov matrix |
| 210 |
|
fCovMatrix = fGSLMultiFit->CovarMatrix(); |
| 211 |
|
for (unsigned int i = 0; i < fDim; ++i) |
| 212 |
|
fErrors[i] = std::sqrt(fCovMatrix[i*fDim + i]); |
| 213 |
|
|
| 214 |
return true; |
return true; |
| 215 |
} |
} |
| 216 |
else { |
else { |
| 230 |
} |
} |
| 231 |
|
|
| 232 |
|
|
| 233 |
|
double GSLNLSMinimizer::CovMatrix(unsigned int i , unsigned int j ) const { |
| 234 |
|
if (!fCovMatrix) return 0; |
| 235 |
|
if (i > fDim || j > fDim) return 0; |
| 236 |
|
return fCovMatrix[i*fDim + j]; |
| 237 |
|
} |
| 238 |
|
|
| 239 |
} // end namespace Math |
} // end namespace Math |
| 240 |
|
|
| 241 |
} // end namespace ROOT |
} // end namespace ROOT |