gaus擬合(Roofit)
using namespace RooFit;????????? 使用roofit
void roofitgaus()???????????????? 主函數(shù),腳本名也是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已經(jīng)有定義的函數(shù)。3個(gè)參數(shù)用變量代替。
RooPlot* p1 = x.frame(Title("p1"));????? ?
RooPlot* p2 = x.frame(Title("p2"));??????? 定義2個(gè)框架
RooDataSet* data = f.generate(x, 10000);??? 用上面定義的gauss生成數(shù)據(jù)
f.plotOn(p1);???????????? 將f圖像導(dǎo)入p1
data->plotOn(p2);????????? 將生成的數(shù)據(jù)導(dǎo)入p2
f.plotOn(p2);
f.fitTo(*data);???????? 將f圖像也導(dǎo)入p2,原始圖與數(shù)據(jù)擬合
mean.Print();
sigma.Print();??????????? 打印變量
TCanvas* c = new TCanvas("c", "c");??? 生成畫(huà)布
c->Divide(1,2);????????????? 將畫(huà)布分為2個(gè)
c->cd(1);
p1->Draw();???????????????????? ?
c->cd(2);
p2->Draw();?????????? 分別進(jìn)入2個(gè)畫(huà)布并輸出圖像
}