22 using namespace RooFit;
24 void rf604_constraints()
31 RooRealVar x(
"x",
"x", -10, 10);
33 RooRealVar m(
"m",
"m", 0, -10, 10);
34 RooRealVar s(
"s",
"s", 2, 0.1, 10);
35 RooGaussian gauss(
"gauss",
"gauss(x,m,s)", x, m, s);
38 RooPolynomial poly(
"poly",
"poly(x)", x);
41 RooRealVar f(
"f",
"f", 0.5, 0., 1.);
42 RooAddPdf model(
"model",
"model", RooArgSet(gauss, poly), f);
45 RooDataSet *d = model.generate(x, 50);
51 RooGaussian fconstraint(
"fconstraint",
"fconstraint", f, RooConst(0.8), RooConst(0.2));
60 RooProdPdf modelc(
"modelc",
"model with constraint", RooArgSet(model, fconstraint));
63 RooFitResult *r1 = model.fitTo(*d, Save());
66 RooFitResult *r2 = modelc.fitTo(*d, Constrain(f), Save());
72 RooGaussian fconstext(
"fconstext",
"fconstext", f, RooConst(0.2), RooConst(0.1));
75 RooFitResult *r3 = model.fitTo(*d, ExternalConstraints(fconstext), Save());
78 cout <<
"fit result without constraint (data generated at f=0.5)" << endl;
80 cout <<
"fit result with internal constraint (data generated at f=0.5, constraint is f=0.8+/-0.2)" << endl;
82 cout <<
"fit result with (another) external constraint (data generated at f=0.5, constraint is f=0.2+/-0.1)" << endl;