From 9967dd894baf96c7752b9c838a40c3ee56e140c6 Mon Sep 17 00:00:00 2001 From: nick <n.c.k.wardle@googlemail.com> Date: Wed, 30 Jul 2014 23:15:03 +0200 Subject: [PATCH 1/2] Add one final fit to fix Methods which need RooFitResult when using discrete parameters --- src/CascadeMinimizer.cc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/CascadeMinimizer.cc b/src/CascadeMinimizer.cc index 3cc522606daee..6551e79977142 100644 --- a/src/CascadeMinimizer.cc +++ b/src/CascadeMinimizer.cc @@ -155,16 +155,18 @@ are freely floating. We should cut them down to find which ones are bool ret=true; std::vector<std::vector<bool>> contIndex; // start from simplest scan, this is the full scan if runShortCombinations is off - bool discretesHaveChanged = multipleMinimize(reallyCleanParameters,ret,minimumNLL,verbose,cascade,0,contIndex); + //bool discretesHaveChanged = + //multipleMinimize(reallyCleanParameters,ret,minimumNLL,verbose,cascade,0,contIndex); if (simnll) simnll->clearZeroPoint(); utils::setAllConstant(frozen,false); - if (discretesHaveChanged) { - minimizer_.reset(new RooMinimizerOpt(nll_)); - improve(verbose, cascade); - } + //if (discretesHaveChanged) { + // Run one last fully floating fit to maintain RooFitResult + minimizer_.reset(new RooMinimizerOpt(nll_)); + improve(verbose, cascade); + //} minimumNLL = nll_.getVal(); return ret; } From 1aa844518005b2f6955e8c4f0b9c4a8974ea72ad Mon Sep 17 00:00:00 2001 From: nick <n.c.k.wardle@googlemail.com> Date: Wed, 30 Jul 2014 23:19:46 +0200 Subject: [PATCH 2/2] Add back loop over discrete parameters --- src/CascadeMinimizer.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CascadeMinimizer.cc b/src/CascadeMinimizer.cc index 6551e79977142..05e8c71ef12b1 100644 --- a/src/CascadeMinimizer.cc +++ b/src/CascadeMinimizer.cc @@ -156,7 +156,7 @@ are freely floating. We should cut them down to find which ones are std::vector<std::vector<bool>> contIndex; // start from simplest scan, this is the full scan if runShortCombinations is off //bool discretesHaveChanged = - //multipleMinimize(reallyCleanParameters,ret,minimumNLL,verbose,cascade,0,contIndex); + multipleMinimize(reallyCleanParameters,ret,minimumNLL,verbose,cascade,0,contIndex); if (simnll) simnll->clearZeroPoint();