Skip to content

Commit 727af7e

Browse files
committed
[RF] Consistent minimizer defaults in RooAbsPdf::fitTo()
Take the default offsetting flag value from the default `MinimizerConfig` struct, where the offsetting flag is correctly initialized to `int doOffset = -1`: https://github.com/root-project/root/blob/master/roofit/roofitcore/src/FitHelpers.cxx#L247 This means to not change any offset setting by default. The problem was that the default was set to zero before, which tells the minimizer to explicitly disable offsetting, even if the likelihood was created with offsetting. This fixes an issue reported on the forum: https://root-forum.cern.ch/t/cannot-use-offset-with-rooabspdf-fitto/64293 Also, make sure that all other default config values are taken from the default options struct for consistency. To be backported to the previous active ROOT releases.
1 parent 477137c commit 727af7e

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

roofit/roofitcore/src/FitHelpers.cxx

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ struct MinimizerConfig {
246246
int maxCalls = -1;
247247
int doOffset = -1;
248248
int parallelize = 0;
249-
bool enableParallelGradient = true;
249+
bool enableParallelGradient = false;
250250
bool enableParallelDescent = false;
251251
bool timingAnalysis = false;
252252
const RooArgSet *minosSet = nullptr;
@@ -420,8 +420,7 @@ std::unique_ptr<RooAbsReal> createNLLNew(RooAbsPdf &pdf, RooAbsData &data, std::
420420

421421
} // namespace
422422

423-
namespace RooFit {
424-
namespace FitHelpers {
423+
namespace RooFit::FitHelpers {
425424

426425
void defineMinimizationOptions(RooCmdConfig &pc)
427426
{
@@ -445,11 +444,11 @@ void defineMinimizationOptions(RooCmdConfig &pc)
445444
pc.defineInt("doSumW2", "SumW2Error", 0, minimizerDefaults.doSumW2);
446445
pc.defineInt("doAsymptoticError", "AsymptoticError", 0, minimizerDefaults.doAsymptotic);
447446
pc.defineInt("maxCalls", "MaxCalls", 0, minimizerDefaults.maxCalls);
448-
pc.defineInt("doOffset", "OffsetLikelihood", 0, 0);
449-
pc.defineInt("parallelize", "Parallelize", 0, 0); // Three parallelize arguments
450-
pc.defineInt("enableParallelGradient", "ParallelGradientOptions", 0, 0);
451-
pc.defineInt("enableParallelDescent", "ParallelDescentOptions", 0, 0);
452-
pc.defineInt("timingAnalysis", "TimingAnalysis", 0, 0);
447+
pc.defineInt("doOffset", "OffsetLikelihood", 0, minimizerDefaults.doOffset);
448+
pc.defineInt("parallelize", "Parallelize", 0, minimizerDefaults.parallelize); // Three parallelize arguments
449+
pc.defineInt("enableParallelGradient", "ParallelGradientOptions", 0, minimizerDefaults.enableParallelGradient);
450+
pc.defineInt("enableParallelDescent", "ParallelDescentOptions", 0, minimizerDefaults.enableParallelDescent);
451+
pc.defineInt("timingAnalysis", "TimingAnalysis", 0, minimizerDefaults.timingAnalysis);
453452
pc.defineString("mintype", "Minimizer", 0, minimizerDefaults.minType.c_str());
454453
pc.defineString("minalg", "Minimizer", 1, minimizerDefaults.minAlg.c_str());
455454
pc.defineSet("minosSet", "Minos", 0, minimizerDefaults.minosSet);
@@ -1115,7 +1114,6 @@ std::unique_ptr<RooFitResult> fitTo(RooAbsReal &real, RooAbsData &data, const Ro
11151114
return RooFit::FitHelpers::minimize(real, *nll, data, pc);
11161115
}
11171116

1118-
} // namespace FitHelpers
1119-
} // namespace RooFit
1117+
} // namespace RooFit::FitHelpers
11201118

11211119
/// \endcond

0 commit comments

Comments
 (0)