Skip to content

Commit bd3826f

Browse files
committed
[RF] Don't sum testSumW2Error with different minimizers
There is no particular reason anymore to run this test with both Minuit 1 and Minuit 2, and it's a bit awkward that this is the only RooFit test that hardcodes the iteration over different minimizers.
1 parent ab052c4 commit bd3826f

File tree

1 file changed

+19
-40
lines changed

1 file changed

+19
-40
lines changed

roofit/roofitcore/test/testSumW2Error.cxx

Lines changed: 19 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -49,55 +49,38 @@ TEST(SumW2Error, BatchMode)
4949

5050
using namespace RooFit;
5151

52-
auto fit = [&](RooAbsData &data, bool sumw2, EvalBackend evalBackend, std::string const &minimizer,
53-
int printLevel = -1) {
52+
auto fit = [&](RooAbsData &data, bool sumw2, EvalBackend evalBackend, int printLevel = -1) {
5453
params.assign(initialParams);
5554

56-
return std::unique_ptr<RooFitResult>{model.fitTo(data, Save(), SumW2Error(sumw2), Strategy(1), evalBackend,
57-
Minimizer(minimizer.c_str()), PrintLevel(printLevel))};
55+
return std::unique_ptr<RooFitResult>{
56+
model.fitTo(data, Save(), SumW2Error(sumw2), Strategy(1), evalBackend, PrintLevel(printLevel))};
5857
};
5958

6059
auto scalar = EvalBackend::Legacy();
6160
auto batchMode = EvalBackend::Cpu();
6261

6362
// Compare batch mode vs. scalar mode for non-SumW2 fits on UNWEIGHTED datasets
64-
EXPECT_TRUE(fit(*dataSet, 0, scalar, "Minuit")->isIdentical(*fit(*dataSet, 0, batchMode, "Minuit")))
65-
<< " different results for Minuit fit to RooDataSet without SumW2Error correction.";
66-
EXPECT_TRUE(fit(*dataHist, 0, scalar, "Minuit")->isIdentical(*fit(*dataHist, 0, batchMode, "Minuit")))
67-
<< " different results for Minuit fit to RooDataHist without SumW2Error correction.";
68-
EXPECT_TRUE(fit(*dataSet, 0, scalar, "Minuit2")->isIdentical(*fit(*dataSet, 0, batchMode, "Minuit2")))
69-
<< " different results for Minuit2 fit to RooDataSet without SumW2Error correction.";
70-
EXPECT_TRUE(fit(*dataHist, 0, scalar, "Minuit2")->isIdentical(*fit(*dataHist, 0, batchMode, "Minuit2")))
71-
<< " different results for Minuit2 fit to RooDataHist without SumW2Error correction.";
63+
EXPECT_TRUE(fit(*dataSet, 0, scalar)->isIdentical(*fit(*dataSet, 0, batchMode)))
64+
<< " different results for fit to RooDataSet without SumW2Error correction.";
65+
EXPECT_TRUE(fit(*dataHist, 0, scalar)->isIdentical(*fit(*dataHist, 0, batchMode)))
66+
<< " different results for fit to RooDataHist without SumW2Error correction.";
7267

7368
// We can't compare the covariance matrix in these next cases, because it is
7469
// externally provided. Still, it's okay because the parameter values and
7570
// errors are compared, where the errors are inferred from the external
7671
// covariance matrix.
7772

7873
// Compare batch mode vs. scalar mode for SumW2 fits on UNWEIGHTED datasets
79-
EXPECT_TRUE(fit(*dataSet, 1, scalar, "Minuit")->isIdenticalNoCov(*fit(*dataSet, 1, batchMode, "Minuit")))
80-
<< " different results for Minuit fit to RooDataSet with SumW2Error correction.";
81-
EXPECT_TRUE(fit(*dataHist, 1, scalar, "Minuit")->isIdenticalNoCov(*fit(*dataHist, 1, batchMode, "Minuit")))
82-
<< " different results for Minuit fit to RooDataHist with SumW2Error correction.";
83-
EXPECT_TRUE(fit(*dataSet, 1, scalar, "Minuit2")->isIdenticalNoCov(*fit(*dataSet, 1, batchMode, "Minuit2")))
84-
<< " different results for Minuit2 fit to RooDataSet with SumW2Error correction.";
85-
EXPECT_TRUE(fit(*dataHist, 1, scalar, "Minuit2")->isIdenticalNoCov(*fit(*dataHist, 1, batchMode, "Minuit2")))
86-
<< " different results for Minuit2 fit to RooDataHist with SumW2Error correction.";
74+
EXPECT_TRUE(fit(*dataSet, 1, scalar)->isIdenticalNoCov(*fit(*dataSet, 1, batchMode)))
75+
<< " different results for fit to RooDataSet with SumW2Error correction.";
76+
EXPECT_TRUE(fit(*dataHist, 1, scalar)->isIdenticalNoCov(*fit(*dataHist, 1, batchMode)))
77+
<< " different results for fit to RooDataHist with SumW2Error correction.";
8778

8879
// Compare batch mode vs. scalar mode for SumW2 fits on WEIGHTED datasets
89-
EXPECT_TRUE(
90-
fit(dataSetWeighted, 1, scalar, "Minuit")->isIdenticalNoCov(*fit(dataSetWeighted, 1, batchMode, "Minuit")))
91-
<< " different results for Minuit fit to weighted RooDataSet with SumW2Error correction.";
92-
EXPECT_TRUE(
93-
fit(*dataHistWeighted, 1, scalar, "Minuit")->isIdenticalNoCov(*fit(*dataHistWeighted, 1, batchMode, "Minuit")))
94-
<< " different results for Minuit fit to weighted RooDataHist with SumW2Error correction.";
95-
EXPECT_TRUE(
96-
fit(dataSetWeighted, 1, scalar, "Minuit2")->isIdenticalNoCov(*fit(dataSetWeighted, 1, batchMode, "Minuit2")))
97-
<< " different results for Minuit2 fit to weighted RooDataSet with SumW2Error correction.";
98-
EXPECT_TRUE(
99-
fit(*dataHistWeighted, 1, scalar, "Minuit2")->isIdenticalNoCov(*fit(*dataHistWeighted, 1, batchMode, "Minuit2")))
100-
<< " different results for Minuit2 fit to weighted RooDataHist with SumW2Error correction.";
80+
EXPECT_TRUE(fit(dataSetWeighted, 1, scalar)->isIdenticalNoCov(*fit(dataSetWeighted, 1, batchMode)))
81+
<< " different results for fit to weighted RooDataSet with SumW2Error correction.";
82+
EXPECT_TRUE(fit(*dataHistWeighted, 1, scalar)->isIdenticalNoCov(*fit(*dataHistWeighted, 1, batchMode)))
83+
<< " different results for fit to weighted RooDataHist with SumW2Error correction.";
10184
}
10285

10386
TEST(SumW2Error, ExtendedFit)
@@ -128,11 +111,8 @@ TEST(SumW2Error, ExtendedFit)
128111
auto *wFunc = ws.factory("w[1.5]");
129112

130113
auto *w = dataNoWeights->addColumn(*wFunc);
131-
RooDataSet data{dataNoWeights->GetName(),
132-
dataNoWeights->GetTitle(),
133-
*dataNoWeights->get(),
134-
RooFit::Import(*dataNoWeights),
135-
RooFit::WeightVar(w->GetName())};
114+
RooDataSet data{dataNoWeights->GetName(), dataNoWeights->GetTitle(), *dataNoWeights->get(),
115+
RooFit::Import(*dataNoWeights), RooFit::WeightVar(w->GetName())};
136116
RooDataHist datahist{"datahist", "datahist", *data.get(), data};
137117

138118
RooArgSet params;
@@ -143,9 +123,8 @@ TEST(SumW2Error, ExtendedFit)
143123

144124
auto doFit = [&](RooFit::EvalBackend evalBackend, bool sumW2Error, const char *range) {
145125
params.assign(initialParams);
146-
return std::unique_ptr<RooFitResult>{shp->fitTo(datahist, Extended(), Range(range), Save(),
147-
SumW2Error(sumW2Error), Strategy(1), PrintLevel(-1), evalBackend,
148-
Minimizer("Minuit2", "migrad"))};
126+
return std::unique_ptr<RooFitResult>{shp->fitTo(
127+
datahist, Extended(), Range(range), Save(), SumW2Error(sumW2Error), Strategy(1), PrintLevel(-1), evalBackend)};
149128
};
150129

151130
// compare batch mode and scalar mode fit results for full range

0 commit comments

Comments
 (0)