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();