22 using namespace RooFit;
24 void rf705_linearmorph()
30 RooRealVar x(
"x",
"x", -20, 20);
33 RooRealVar g1mean(
"g1mean",
"g1mean", -10);
34 RooGaussian g1(
"g1",
"g1", x, g1mean, RooConst(2));
37 RooPolynomial g2(
"g2",
"g2", x, RooArgSet(RooConst(-0.03), RooConst(-0.001)));
43 RooRealVar alpha(
"alpha",
"alpha", 0, 1.0);
46 x.setBins(1000,
"cache");
47 alpha.setBins(50,
"cache");
51 RooIntegralMorph lmorph(
"lmorph",
"lmorph", g1, g2, x, alpha);
57 RooPlot *frame1 = x.frame();
63 lmorph.plotOn(frame1, LineColor(kRed));
65 lmorph.plotOn(frame1, LineColor(kRed));
67 lmorph.plotOn(frame1, LineColor(kRed));
69 lmorph.plotOn(frame1, LineColor(kRed));
71 lmorph.plotOn(frame1, LineColor(kRed));
73 lmorph.plotOn(frame1, LineColor(kRed));
75 lmorph.plotOn(frame1, LineColor(kRed));
77 lmorph.plotOn(frame1, LineColor(kRed));
83 TH1 *hh = lmorph.createHistogram(
"hh", x, Binning(40), YVar(alpha, Binning(40)));
84 hh->SetLineColor(kBlue);
91 RooDataSet *data = lmorph.generate(x, 1000);
94 lmorph.setCacheAlpha(kTRUE);
95 lmorph.fitTo(*data, Verbose(kTRUE));
98 RooPlot *frame2 = x.frame(Bins(100));
100 lmorph.plotOn(frame2);
106 RooPlot *frame3 = alpha.frame(Bins(100), Range(0.1, 0.9));
109 RooNLLVar nll(
"nll",
"nll", lmorph, *data);
110 nll.plotOn(frame3, ShiftToZero());
112 lmorph.setCacheAlpha(kFALSE);
114 TCanvas *c =
new TCanvas(
"rf705_linearmorph",
"rf705_linearmorph", 800, 800);
117 gPad->SetLeftMargin(0.15);
118 frame1->GetYaxis()->SetTitleOffset(1.6);
121 gPad->SetLeftMargin(0.20);
122 hh->GetZaxis()->SetTitleOffset(2.5);
125 gPad->SetLeftMargin(0.15);
126 frame3->GetYaxis()->SetTitleOffset(1.4);
129 gPad->SetLeftMargin(0.15);
130 frame2->GetYaxis()->SetTitleOffset(1.4);