void testUniformBatch() { using namespace RooFit; RooRealVar x("x", "", 0, 1); RooRealVar y("y", "", 0, 1); RooArgSet obs(x,y); RooUniform testUni("testUni", "", obs); RooRealVar mux("mux", "", 0, -1, 1); RooRealVar sigmax("sigmax", "", 0.3, 0.01, 10); RooGaussian testGaussx("testGaussx", "", x, mux, sigmax); RooRealVar muy("muy", "", 0, -1, 1); RooRealVar sigmay("sigmay", "", 0.3, 0.01, 10); RooGaussian testGaussy("testGaussy", "", y, muy, sigmay); RooProdPdf testGauss("testGauss", "", RooArgSet(testGaussx, testGaussy)); RooRealVar fraction("fraction", "", 0.5, 0, 1); RooAddPdf testAdd("testAdd", "", RooArgList(testUni, testGauss), fraction); auto data = testAdd.generate(obs, Name("testData"), NumEvents(1000)); auto runContext = data->store()->getBatches(0, 1000); // assert failure if they are enabled, possible segfault otherwise auto pdfVals = testAdd.getValues(runContext, data->get()); // assert failure if they are enabled, possible segfault otherwise testAdd.fitTo(*data, Optimize(false), BatchMode(true), Save(true))->Print("V"); // ok testAdd.fitTo(*data, Optimize(true), BatchMode(true), Save(true))->Print("V"); // bad workaround auto nll = testAdd.createNLL(*data); nll->constOptimizeTestStatistic(RooAbsArg::Activate,false); auto& optData = static_cast(nll)->data(); auto& optPdf = (RooAbsPdf&)static_cast(nll)->function(); auto optRunContext = optData.store()->getBatches(0, 1000); // also ok optPdf.getValues(optRunContext, optData.get()); }