45 using namespace RooFit;
46 using namespace RooStats;
48 void rs401c_FeldmanCousins()
55 RooRealVar x(
"x",
"", 1, 0, 50);
56 RooRealVar mu(
"mu",
"", 2.5, 0, 15);
57 RooConstVar b(
"b",
"", 3.);
58 RooAddition mean(
"mean",
"", RooArgList(mu, b));
59 RooPoisson pois(
"pois",
"", x, mean);
60 RooArgSet parameters(mu);
63 RooDataSet *data = pois.generate(RooArgSet(x), 1);
66 TCanvas *dataCanvas =
new TCanvas(
"dataCanvas");
67 RooPlot *frame = x.frame();
72 RooWorkspace *w =
new RooWorkspace();
73 ModelConfig modelConfig(
"poissonProblem", w);
74 modelConfig.SetPdf(pois);
75 modelConfig.SetParametersOfInterest(parameters);
76 modelConfig.SetObservables(RooArgSet(x));
80 RooStats::FeldmanCousins fc(*data, modelConfig);
82 fc.UseAdaptiveSampling(
true);
83 fc.FluctuateNumDataEntries(
false);
87 PointSetInterval *interval = (PointSetInterval *)fc.GetInterval();
90 TCanvas *intervalCanvas =
new TCanvas(
"intervalCanvas");
92 std::cout <<
"is this point in the interval? " << interval->IsInInterval(parameters) << std::endl;
94 std::cout <<
"interval is [" << interval->LowerLimit(mu) <<
", " << interval->UpperLimit(mu) <<
"]" << endl;
103 RooDataHist *parameterScan = (RooDataHist *)fc.GetPointsToScan();
104 TH1F *hist = (TH1F *)parameterScan->createHistogram(
"mu", 30);
109 for (Int_t i = 0; i < parameterScan->numEntries(); ++i) {
112 tmpPoint = (RooArgSet *)parameterScan->get(i)->clone(
"temp");
114 TMarker *mark =
new TMarker(tmpPoint->getRealValue(
"mu"), 1, 25);
115 if (interval->IsInInterval(*tmpPoint))
116 mark->SetMarkerColor(kBlue);
118 mark->SetMarkerColor(kRed);