Few basic questions from RooStat beginner

Dear RooStat experts,
I’d like to use RootStat for my physics search at CMS, thus I have started looking into.
Now I have few basic question about rs102_hypotestwithshapes.C example,
root.cern.ch/root/html/tutorials … pes.C.html
which looks a good starting point to me:

  • Why on the produced plots with null- and signal-hypothesis fit data points, which are
    identical for both fits, have different errors (looks to be Poison for Null-hypothesis
    and Gaussian for signal fit)?
  • How can I get significance for the signal+bkg fit in this example?
  • Why getting significance for the hypothesis in DoHypothesisTest() is separated from
    fit in MakePlots()? How one can be sure that fit results from MakePlots are identical
    to ones used for calculating significance in DoHypothesisTest?

In my case both backgrounds and signal are non-trivial functions constructed using
calibration data, and I would rather not convert them into histograms.
What is a good example of fitting unbinned data to signal and backgrounds described
as external functions?

Many thanks,
-Fedor

Dear Fedor,

I’d like to use RootStat for my physics search at CMS, thus I have started looking into.
Now I have few basic question about rs102_hypotestwithshapes.C example,
root.cern.ch/root/html/tutorials … pes.C.html
which looks a good starting point to me:

  • Why on the produced plots with null- and signal-hypothesis fit data points, which are
    identical for both fits, have different errors (looks to be Poison for Null-hypothesis
    and Gaussian for signal fit)?

This is because different Error projections were made for the 2 plots using the option “DataError(RooAbsData::SumW2)”. I did not design this tutorial so I don’t know what was the reason for that. Maybe you should wait for Kyle’s answers.

  • How can I get significance for the signal+bkg fit in this example?

That’s performed in the macro:
// We get a HypoTestResult out of the calculator, and we can query it.
HypoTestResult* htr = plc.GetHypoTest();
cout << “-------------------------------------------------” << endl;
cout << "The p-value for the null is " << htr->NullPValue() << endl;
cout << "Corresponding to a signifcance of " << htr->Significance() << endl;
cout << “-------------------------------------------------\n\n” << endl;

  • Why getting significance for the hypothesis in DoHypothesisTest() is separated from
    fit in MakePlots()? How one can be sure that fit results from MakePlots are identical
    to ones used for calculating significance in DoHypothesisTest?

Good question! Personally I think it would be safer if ProfileLikelihoodPlot would handle the proper plotting by itself.

In my case both backgrounds and signal are non-trivial functions constructed using
calibration data, and I would rather not convert them into histograms.
What is a good example of fitting unbinned data to signal and backgrounds described
as external functions?

You can see the RooFit manual and tutorials:
ftp://root.cern.ch/root/doc/RooFit_User … .91-33.pdf
root.cern.ch/root/html/tutorials … index.html

I think this one covers your needs:
root.cern.ch/root/html/tutorials … pdf.C.html

Regards,

– Gregory