@@ -301,6 +301,12 @@ namespace optimizers {
301
301
return grad;
302
302
}
303
303
304
+ const ROOT::Minuit2::MnUserParameterState& NewMinuit::userState () const {
305
+ static const ROOT::Minuit2::MnUserParameterState null_state;
306
+ return m_min == 0 ? null_state : m_min->UserState ();
307
+ }
308
+
309
+
304
310
const ROOT::Minuit2::MinimumError& NewMinuit::minuitError () const {
305
311
static const ROOT::Minuit2::MinimumError null_error (1 );
306
312
return m_min == 0 ? null_error : m_min->Error ();
@@ -331,6 +337,43 @@ namespace optimizers {
331
337
return s;
332
338
}
333
339
340
+ std::vector<std::vector<double > > NewMinuit::userCovariance () const {
341
+ std::vector<std::vector<double > > cov;
342
+ if ( m_min == 0 ) return cov;
343
+ const ROOT::Minuit2::MnUserCovariance& userCov = m_min->UserState ().Covariance ();
344
+
345
+ for (unsigned int x = 0 ; x < userCov.Nrow (); ++x) {
346
+ std::vector<double > vec;
347
+ for (unsigned int y = 0 ; y < userCov.Nrow (); ++y) {
348
+ vec.push_back (userCov (x,y));
349
+ }
350
+ cov.push_back (vec);
351
+ }
352
+ return cov;
353
+ }
354
+
355
+ const std::vector<double >& NewMinuit::userGlobalCC () const {
356
+ static const std::vector<double > null_globalcc;
357
+ return m_min == 0 ? null_globalcc : m_min->UserState ().GlobalCC ().GlobalCC ();
358
+ }
359
+
360
+
361
+ std::vector<std::vector<double > > NewMinuit::userHessian () const {
362
+ std::vector<std::vector<double > > hesse;
363
+ if ( m_min == 0 ) return hesse;
364
+ ROOT::Minuit2::MnUserCovariance mn_hesse (m_min->UserState ().Hessian ());
365
+
366
+ for (unsigned int x = 0 ; x < mn_hesse.Nrow (); ++x) {
367
+ std::vector<double > vec;
368
+ for (unsigned int y = 0 ; y < mn_hesse.Nrow (); ++y) {
369
+ vec.push_back (mn_hesse (x,y));
370
+ }
371
+ hesse.push_back (vec);
372
+ }
373
+ return hesse;
374
+ }
375
+
376
+
334
377
std::vector<std::vector<double > > NewMinuit::minuitInvHessian () const {
335
378
std::vector<std::vector<double > > inv_hesse;
336
379
if ( m_min == 0 ) return inv_hesse;
@@ -343,8 +386,7 @@ namespace optimizers {
343
386
}
344
387
inv_hesse.push_back (vec);
345
388
}
346
-
347
-
389
+ return inv_hesse;
348
390
}
349
391
350
392
std::vector<std::vector<double > > NewMinuit::covarianceMatrix () const {
0 commit comments