gaus拟合(Roofit)
using namespace RooFit; 使用roofit
void roofitgaus() 主函数,脚本名也是roofitguas.C
{
RooRealVar x("x", "x", -10, 10); 定义变量x, parameters:name,title,minvalue,maxvalue
RooRealVar mean("mean", "mean", 1, -10, 10); 定义变量mean,同上par3是value
RooRealVar sigma("sigma", "sigma", 1, 0.1, 10); 同上
RooGaussian f("f", "f", x, mean, sigma); RooGaussian,rootfit已经有定义的函数。3个参数用变量代替。
RooPlot* p1 = x.frame(Title("p1"));
RooPlot* p2 = x.frame(Title("p2")); 定义2个框架
RooDataSet* data = f.generate(x, 10000); 用上面定义的gauss生成数据
f.plotOn(p1); 将f图像导入p1
data->plotOn(p2); 将生成的数据导入p2
f.plotOn(p2);
f.fitTo(*data); 将f图像也导入p2,原始图与数据拟合
mean.Print();
sigma.Print(); 打印变量
TCanvas* c = new TCanvas("c", "c"); 生成画布
c->Divide(1,2); 将画布分为2个
c->cd(1);
p1->Draw();
c->cd(2);
p2->Draw(); 分别进入2个画布并输出图像
}