void test() { auto datafile="test_data.txt"; double calfact = 0.8; int nbxbins = 20032; double caloffset = 27765996.8; auto xlow = caloffset-0.5*calfact; auto xup = caloffset+(nbxbins-0.5)*calfact; int cycles = 1000; double roilow = 27776120.0000; auto roimax = 27776510.0000; for (int i = 0; i < 4; ++i) { TH2D th2("th2","th2",nbxbins, xlow, xup, cycles, 0, cycles); th2.SetBinContent(13112,1,1); th2.GetXaxis()->SetRangeUser(roilow,roimax); auto th1 = th2.ProjectionX("th1"); RooWorkspace w("w"); std::stringstream s; s << "Gaussian:gauss(t[" << roilow << "," << roimax << "],mean[" << th1->GetMean() << "," << roilow << "," << roimax << "],sigma[" << th1->GetStdDev() << "," << 5 << "," << 120 << "])"; w.factory(s.str().c_str()); RooRealVar *t = w.var("t"); auto mean = w.var("mean"); auto sigma = w.var("sigma"); auto pdf = w.pdf("gauss"); w.defineSet("nuisParams","sigma"); TObjArray tobj; TF1 f1("f1","gaus(0)",roilow,roimax); th2.FitSlicesX(&f1,0,-1,0,"QNR",&tobj); RooDataHist data("data","data", RooArgList(*t), RooFit::Import(*th1)); auto res = pdf->fitTo(data,RooFit::Save(true)); RooStats::ModelConfig mc("ModelConfig", &w); mc.SetPdf(*pdf); mc.SetParametersOfInterest(RooArgSet(*mean)); mc.SetObservables(RooArgSet(*t)); mc.SetNuisanceParameters(*w.set("nuisParams")); RooStats::ProfileLikelihoodCalculator plCalc(data,mc); plCalc.SetConfidenceLevel(0.68); auto pll_interval = plCalc.GetInterval(); TCanvas c("c","Profile Likelyhood", 200, 10, 700, 500); c.cd(1); RooStats::LikelihoodIntervalPlot plot(pll_interval); plot.Draw("TF1"); } }