CrystalBall拟合(Roofit)
using namespace RooFit; 启用roofit
void roofitwithcrystalball() 注意文件名
{
RooRealVar x("x", "x", -20, 20);
RooRealVar mean("mean", "mean", 5, -0.1, 0.1);
RooRealVar sigma("sigma", "sigma", 2, 1.5, 2.5);
RooRealVar alpha("alpha", "alpha", 1, 0.9, 1.1);
RooRealVar nin("nin", "nin", 3, 2.5, 3.5); 定义5个变量
RooCrystalBall f1("f1", "f1",x, alpha, nin, sigma, mean); 函数形式
RooPlot * p1 = x.frame(Title("oringinal"));
RooPlot * p2 = x.frame(Title("Fitted"));
RooPlot * p3 = x.frame(Title("oringinal scatter")); 定义3个框架
RooDataSet * data1 = f1.generate(x, 10000); 产生数据
f1.plotOn(p1);
data1->plotOn(p2);
f1.plotOn(p2);
f1.fitTo(*data1); 拟合数据导入进行对比
data1->plotOn(p3);
mean.Print();
sigma.Print();
alpha.Print();
nin.Print(); 输出参数
TCanvas * c1 = new TCanvas("c1","c1");
c1->Divide(1,3);
c1->cd(1);
p1->Draw();
c1->cd(2);
p2->Draw();
c1->cd(3);
p3->Draw();
}