Logo ROOT   6.14/05
Reference Guide
List of all members | Public Member Functions | Static Public Member Functions | Static Protected Member Functions | Static Private Attributes | List of all members
TLimit Class Reference

Algorithm to compute 95% C.L.

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:

TFile* infile=new TFile("plotfile.root","READ");
infile->cd();
TH1* sh=(TH1*)infile->Get("signal");
TH1* bh=(TH1*)infile->Get("background");
TH1* dh=(TH1*)infile->Get("data");
TLimitDataSource* mydatasource = new TLimitDataSource(sh,bh,dh);
TConfidenceLevel *myconfidence = TLimit::ComputeLimit(mydatasource,50000);
std::cout << " CLs : " << myconfidence->CLs() << std::endl;
std::cout << " CLsb : " << myconfidence->CLsb() << std::endl;
std::cout << " CLb : " << myconfidence->CLb() << std::endl;
std::cout << "< CLs > : " << myconfidence->GetExpectedCLs_b() << std::endl;
std::cout << "< CLsb > : " << myconfidence->GetExpectedCLsb_b() << std::endl;
std::cout << "< CLb > : " << myconfidence->GetExpectedCLb_b() << std::endl;
delete myconfidence;
delete mydatasource;
infile->Close();

More information can still be found on this page

Definition at line 18 of file TLimit.h.

Public Member Functions

 TLimit ()
 
virtual ~TLimit ()
 

Static Public Member Functions

static TConfidenceLevelComputeLimit (TLimitDataSource *data, Int_t nmc=50000, bool stat=false, TRandom *generator=0)
 
static TConfidenceLevelComputeLimit (Double_t s, Double_t b, Int_t d, Int_t nmc=50000, bool stat=false, TRandom *generator=0)
 
static TConfidenceLevelComputeLimit (Double_t s, Double_t b, Int_t d, TVectorD *se, TVectorD *be, TObjArray *, Int_t nmc=50000, bool stat=false, TRandom *generator=0)
 
static TConfidenceLevelComputeLimit (TH1 *s, TH1 *b, TH1 *d, Int_t nmc=50000, bool stat=false, TRandom *generator=0)
 
static TConfidenceLevelComputeLimit (TH1 *s, TH1 *b, TH1 *d, TVectorD *se, TVectorD *be, TObjArray *, Int_t nmc=50000, bool stat=false, TRandom *generator=0)
 

Static Protected Member Functions

static bool Fluctuate (TLimitDataSource *input, TLimitDataSource *output, bool init, TRandom *, bool stat=false)
 
static Double_t LogLikelihood (Double_t s, Double_t b, Double_t b2, Double_t d)
 

Static Private Attributes

static TOrdCollectionfgSystNames = new TOrdCollection()
 
static TArrayDfgTable = new TArrayD(0)
 

#include <TLimit.h>

Constructor & Destructor Documentation

◆ TLimit()

TLimit::TLimit ( )
inline

Definition at line 24 of file TLimit.h.

◆ ~TLimit()

virtual TLimit::~TLimit ( )
inlinevirtual

Definition at line 25 of file TLimit.h.

Member Function Documentation

◆ ComputeLimit() [1/5]

TConfidenceLevel * TLimit::ComputeLimit ( TLimitDataSource data,
Int_t  nmc = 50000,
bool  stat = false,
TRandom generator = 0 
)
static

Definition at line 103 of file TLimit.cxx.

◆ ComputeLimit() [2/5]

TConfidenceLevel * TLimit::ComputeLimit ( Double_t  s,
Double_t  b,
Int_t  d,
Int_t  nmc = 50000,
bool  stat = false,
TRandom generator = 0 
)
static

Definition at line 362 of file TLimit.cxx.

◆ ComputeLimit() [3/5]

TConfidenceLevel * TLimit::ComputeLimit ( Double_t  s,
Double_t  b,
Int_t  d,
TVectorD se,
TVectorD be,
TObjArray l,
Int_t  nmc = 50000,
bool  stat = false,
TRandom generator = 0 
)
static

Definition at line 384 of file TLimit.cxx.

◆ ComputeLimit() [4/5]

TConfidenceLevel * TLimit::ComputeLimit ( TH1 s,
TH1 b,
TH1 d,
Int_t  nmc = 50000,
bool  stat = false,
TRandom generator = 0 
)
static

Definition at line 337 of file TLimit.cxx.

◆ ComputeLimit() [5/5]

TConfidenceLevel * TLimit::ComputeLimit ( TH1 s,
TH1 b,
TH1 d,
TVectorD se,
TVectorD be,
TObjArray l,
Int_t  nmc = 50000,
bool  stat = false,
TRandom generator = 0 
)
static

Definition at line 349 of file TLimit.cxx.

◆ Fluctuate()

bool TLimit::Fluctuate ( TLimitDataSource input,
TLimitDataSource output,
bool  init,
TRandom generator,
bool  stat = false 
)
staticprotected

Definition at line 228 of file TLimit.cxx.

◆ LogLikelihood()

Double_t TLimit::LogLikelihood ( Double_t  s,
Double_t  b,
Double_t  b2,
Double_t  d 
)
staticprotected

Definition at line 407 of file TLimit.cxx.

Member Data Documentation

◆ fgSystNames

TOrdCollection * TLimit::fgSystNames = new TOrdCollection()
staticprivate

Definition at line 50 of file TLimit.h.

◆ fgTable

TArrayD * TLimit::fgTable = new TArrayD(0)
staticprivate

Definition at line 49 of file TLimit.h.

Libraries for TLimit:
[legend]

The documentation for this class was generated from the following files: