27 using namespace RooFit ;
30 void rf204a_extrangefit_RooAddPdf()
38 RooRealVar x(
"x",
"x",0,11) ;
41 RooRealVar mean(
"mean",
"mean of gaussians",5) ;
42 RooRealVar sigma1(
"sigma1",
"width of gaussians",0.5) ;
43 RooRealVar sigma2(
"sigma2",
"width of gaussians",1) ;
45 RooGaussian sig1(
"sig1",
"Signal component 1",x,mean,sigma1) ;
46 RooGaussian sig2(
"sig2",
"Signal component 2",x,mean,sigma2) ;
49 RooRealVar a0(
"a0",
"a0",0.5,0.,1.) ;
50 RooRealVar a1(
"a1",
"a1",0.2,0.,1.) ;
51 RooChebychev bkg(
"bkg",
"Background",x,RooArgSet(a0,a1)) ;
54 RooRealVar sig1frac(
"sig1frac",
"fraction of component 1 in signal",0.8,0.,1.) ;
55 RooAddPdf sig(
"sig",
"Signal",RooArgList(sig1,sig2),sig1frac) ;
63 x.setRange(
"signalRange",4,6) ;
66 RooRealVar nsig(
"nsig",
"number of signal events in signalRange",500,0.,10000) ;
67 RooRealVar nbkg(
"nbkg",
"number of background events in signalRange",500,0,10000) ;
71 RooAddPdf model(
"model",
"(g1+g2)+a", RooArgList(bkg,sig), RooArgList(nbkg,nsig)) ;
78 RooDataSet *data = model.generate(x,1000) ;
82 auto canv =
new TCanvas(
"Canvas",
"Canvas", 1500, 600);
96 RooAddPdf model1(model);
97 RooFitResult* r = model1.fitTo(*data,Save()) ;
100 RooPlot * frame = x.frame(Title(
"Full range fitted"));
102 model1.plotOn(frame, VisualizeError(*r));
103 model1.plotOn(frame);
104 model1.paramOn(frame);
112 x.setRange(
"left", 0., 4.);
113 x.setRange(
"right", 6., 10.);
115 RooAddPdf model2(model);
116 RooFitResult* r2 = model2.fitTo(*data,
122 RooPlot * frame2 = x.frame(Title(
"Fit in left/right sideband"));
123 data->plotOn(frame2);
124 model2.plotOn(frame2, VisualizeError(*r2));
125 model2.plotOn(frame2);
126 model2.paramOn(frame2);
136 x.setRange(
"leftToMiddle", 0., 5.);
138 RooAddPdf model3(model);
139 RooFitResult* r3 = model3.fitTo(*data,
140 Range(
"leftToMiddle"),
145 RooPlot * frame3 = x.frame(Title(
"Fit from left to middle"));
146 data->plotOn(frame3);
147 model3.plotOn(frame3, VisualizeError(*r3));
148 model3.plotOn(frame3);
149 model3.paramOn(frame3);