Legacy Code
TLimit is a legacy interface: there will be no bug fixes nor new developments. Therefore it is not recommended to use it in new long-term production code. But, depending on the context, using TLimit might still be a valid solution. Consider switching to RooStats.
Algorithm to compute 95% CL limits using the Likelihood ratio semi-bayesian method.
Implemented by C. Delaere from the mclimit code written by Tom Junk [HEP-EX/9902006]. See http://cern.ch/thomasj/searchlimits/ecl.html for more details.
It takes signal, background and data histograms wrapped in a TLimitDataSource as input and runs a set of Monte Carlo experiments in order to compute the limits. If needed, inputs are fluctuated according to systematics. The output is a TConfidenceLevel.
The class TLimitDataSource takes the signal, background and data histograms as well as different systematics sources to form the TLimit input.
The class TConfidenceLevel represents the final result of the TLimit algorithm. It is created just after the time-consuming part and can be stored in a TFile for further processing. It contains light methods to return CLs, CLb and other interesting quantities.
The actual algorithm...
From an input (TLimitDataSource) it produces an output TConfidenceLevel. For this, nmc Monte Carlo experiments are performed. As usual, the larger this number, the longer the compute time, but the better the result.
Supposing that there is a plotfile.root file containing 3 histograms (signal, background and data), you can imagine doing things like:
std::cout <<
" CLs : " << myconfidence->
CLs() << std::endl;
std::cout <<
" CLsb : " << myconfidence->
CLsb() << std::endl;
std::cout <<
" CLb : " << myconfidence->
CLb() << std::endl;
delete myconfidence;
delete mydatasource;
Class to compute 95% CL limits.
Double_t GetExpectedCLs_b(Int_t sigma=0) const
Double_t GetExpectedCLb_b(Int_t sigma=0) const
Get the expected Confidence Level for the background only if there is only background.
Double_t CLsb(bool use_sMC=kFALSE) const
Get the Confidence Level for the signal plus background hypothesis.
Double_t CLb(bool use_sMC=kFALSE) const
Get the Confidence Level for the background only.
Double_t GetExpectedCLsb_b(Int_t sigma=0) const
Get the expected Confidence Level for the signal plus background hypothesis if there is only backgrou...
Double_t CLs(bool use_sMC=kFALSE) const
Get the Confidence Level defined by CLs = CLsb/CLb.
Bool_t cd() override
Change current directory to "this" directory.
TObject * Get(const char *namecycle) override
Return pointer to object identified by namecycle.
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
void Close(Option_t *option="") override
Close a file.
TH1 is the base class of all histogram classes in ROOT.
This class serves as input for the TLimit::ComputeLimit method.
static TConfidenceLevel * ComputeLimit(TLimitDataSource *data, Int_t nmc=50000, bool stat=false, TRandom *generator=nullptr)
More information can still be found on this page
- See also
- https://doi.org/10.1088/0954-3899/28/10/313 and https://cds.cern.ch/record/451614/files/open-2000-205.pdf
- Note
- see note about: "Should I use TRolke, TFeldmanCousins, TLimit?" in the TRolke class description.
Definition at line 19 of file TLimit.h.
|
static TClass * | Class () |
|
static const char * | Class_Name () |
|
static constexpr Version_t | Class_Version () |
|
static TConfidenceLevel * | ComputeLimit (Double_t s, Double_t b, Int_t d, Int_t nmc=50000, bool stat=false, TRandom *generator=nullptr) |
|
static TConfidenceLevel * | ComputeLimit (Double_t s, Double_t b, Int_t d, TVectorD *se, TVectorD *be, TObjArray *, Int_t nmc=50000, bool stat=false, TRandom *generator=nullptr) |
|
static TConfidenceLevel * | ComputeLimit (TH1 *s, TH1 *b, TH1 *d, Int_t nmc=50000, bool stat=false, TRandom *generator=nullptr) |
|
static TConfidenceLevel * | ComputeLimit (TH1 *s, TH1 *b, TH1 *d, TVectorD *se, TVectorD *be, TObjArray *, Int_t nmc=50000, bool stat=false, TRandom *generator=nullptr) |
|
static TConfidenceLevel * | ComputeLimit (TLimitDataSource *data, Int_t nmc=50000, bool stat=false, TRandom *generator=nullptr) |
|
static const char * | DeclFileName () |
|