LikelihoodInterval is a concrete implementation of the RooStats::ConfInterval interface. It implements a connected N-dimensional intervals based on the contour of a likelihood ratio. The boundary of the inteval is equivalent to a MINUIT/MINOS contour about the maximum likelihood estimator [1]. The interval does not need to be an ellipse (eg. it is not the HESSE error matrix). The level used to make the contour is the same as that used in MINOS, eg. it uses Wilks' theorem, which states that under certain regularity conditions the function -2* log (profile likelihood ratio) is asymptotically distributed as a chi^2 with N-dof, where N is the number of parameters of interest.
Note, a boundary on the parameter space (eg. s>= 0) or a degeneracy (eg. mass of signal if Nsig = 0) can lead to violations of the conditions necessary for Wilks' theorem to be true.
Also note, one can use any RooAbsReal as the function that will be used in the contour; however, the level of the contour is based on Wilks' theorem as stated above.
References
1 F. James., Minuit.Long writeup D506, CERN, 1998.
virtual | ~LikelihoodInterval() |
void | TObject::AbstractMethod(const char* method) const |
virtual void | TObject::AppendPad(Option_t* option = "") |
virtual void | TObject::Browse(TBrowser* b) |
virtual Bool_t | CheckParameters(const RooArgSet&) const |
static TClass* | Class() |
virtual const char* | TObject::ClassName() const |
virtual void | TNamed::Clear(Option_t* option = "") |
virtual TObject* | TNamed::Clone(const char* newname = "") const |
virtual Int_t | TNamed::Compare(const TObject* obj) const |
virtual Double_t | ConfidenceLevel() const |
virtual void | TNamed::Copy(TObject& named) const |
virtual void | TObject::Delete(Option_t* option = "")MENU |
virtual Int_t | TObject::DistancetoPrimitive(Int_t px, Int_t py) |
virtual void | TObject::Draw(Option_t* option = "") |
virtual void | TObject::DrawClass() constMENU |
virtual TObject* | TObject::DrawClone(Option_t* option = "") constMENU |
virtual void | TObject::Dump() constMENU |
virtual void | TObject::Error(const char* method, const char* msgfmt) const |
virtual void | TObject::Execute(const char* method, const char* params, Int_t* error = 0) |
virtual void | TObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0) |
virtual void | TObject::ExecuteEvent(Int_t event, Int_t px, Int_t py) |
virtual void | TObject::Fatal(const char* method, const char* msgfmt) const |
virtual void | TNamed::FillBuffer(char*& buffer) |
Bool_t | FindLimits(const RooRealVar& param, double& lower, double& upper) |
virtual TObject* | TObject::FindObject(const char* name) const |
virtual TObject* | TObject::FindObject(const TObject* obj) const |
const RooArgSet* | GetBestFitParameters() const |
Int_t | GetContourPoints(const RooRealVar& paramX, const RooRealVar& paramY, Double_t* x, Double_t* y, Int_t npoints = 30) |
virtual Option_t* | TObject::GetDrawOption() const |
static Long_t | TObject::GetDtorOnly() |
virtual const char* | TObject::GetIconName() const |
RooAbsReal* | GetLikelihoodRatio() |
virtual const char* | TNamed::GetName() const |
virtual char* | TObject::GetObjectInfo(Int_t px, Int_t py) const |
static Bool_t | TObject::GetObjectStat() |
virtual Option_t* | TObject::GetOption() const |
virtual RooArgSet* | GetParameters() const |
virtual const char* | TNamed::GetTitle() const |
virtual UInt_t | TObject::GetUniqueID() const |
virtual Bool_t | TObject::HandleTimer(TTimer* timer) |
virtual ULong_t | TNamed::Hash() const |
virtual void | TObject::Info(const char* method, const char* msgfmt) const |
virtual Bool_t | TObject::InheritsFrom(const char* classname) const |
virtual Bool_t | TObject::InheritsFrom(const TClass* cl) const |
virtual void | TObject::Inspect() constMENU |
void | TObject::InvertBit(UInt_t f) |
virtual TClass* | IsA() const |
virtual Bool_t | TObject::IsEqual(const TObject* obj) const |
virtual Bool_t | TObject::IsFolder() const |
virtual Bool_t | IsInInterval(const RooArgSet&) const |
Bool_t | TObject::IsOnHeap() const |
virtual Bool_t | TNamed::IsSortable() const |
Bool_t | TObject::IsZombie() const |
RooStats::LikelihoodInterval | LikelihoodInterval(const char* name = 0) |
RooStats::LikelihoodInterval | LikelihoodInterval(const RooStats::LikelihoodInterval&) |
RooStats::LikelihoodInterval | LikelihoodInterval(const char* name, RooAbsReal*, const RooArgSet*, RooArgSet* = 0) |
Double_t | LowerLimit(const RooRealVar& param) |
Double_t | LowerLimit(const RooRealVar& param, bool& status) |
virtual void | TNamed::ls(Option_t* option = "") const |
void | TObject::MayNotUse(const char* method) const |
virtual Bool_t | TObject::Notify() |
void | TObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const |
static void | TObject::operator delete(void* ptr) |
static void | TObject::operator delete(void* ptr, void* vp) |
static void | TObject::operator delete[](void* ptr) |
static void | TObject::operator delete[](void* ptr, void* vp) |
void* | TObject::operator new(size_t sz) |
void* | TObject::operator new(size_t sz, void* vp) |
void* | TObject::operator new[](size_t sz) |
void* | TObject::operator new[](size_t sz, void* vp) |
RooStats::LikelihoodInterval& | operator=(const RooStats::LikelihoodInterval&) |
virtual void | TObject::Paint(Option_t* option = "") |
virtual void | TObject::Pop() |
virtual void | TNamed::Print(Option_t* option = "") const |
virtual Int_t | TObject::Read(const char* name) |
virtual void | TObject::RecursiveRemove(TObject* obj) |
void | TObject::ResetBit(UInt_t f) |
virtual void | TObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU |
virtual void | TObject::SavePrimitive(ostream& out, Option_t* option = "") |
void | TObject::SetBit(UInt_t f) |
void | TObject::SetBit(UInt_t f, Bool_t set) |
virtual void | SetConfidenceLevel(Double_t cl) |
virtual void | TObject::SetDrawOption(Option_t* option = "")MENU |
static void | TObject::SetDtorOnly(void* obj) |
virtual void | TNamed::SetName(const char* name)MENU |
virtual void | TNamed::SetNameTitle(const char* name, const char* title) |
static void | TObject::SetObjectStat(Bool_t stat) |
virtual void | TNamed::SetTitle(const char* title = "")MENU |
virtual void | TObject::SetUniqueID(UInt_t uid) |
virtual void | ShowMembers(TMemberInspector&) |
virtual Int_t | TNamed::Sizeof() const |
virtual void | Streamer(TBuffer&) |
void | StreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b) |
virtual void | TObject::SysError(const char* method, const char* msgfmt) const |
Bool_t | TObject::TestBit(UInt_t f) const |
Int_t | TObject::TestBits(UInt_t f) const |
Double_t | UpperLimit(const RooRealVar& param) |
Double_t | UpperLimit(const RooRealVar& param, bool& status) |
virtual void | TObject::UseCurrentStyle() |
virtual void | TObject::Warning(const char* method, const char* msgfmt) const |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const |
bool | CreateMinimizer() |
virtual void | TObject::DoError(int level, const char* location, const char* fmt, va_list va) const |
void | TObject::MakeZombie() |
void | ResetLimits() |
enum TObject::EStatusBits { | kCanDelete | |
kMustCleanup | ||
kObjInCanvas | ||
kIsReferenced | ||
kHasUUID | ||
kCannotPick | ||
kNoContextMenu | ||
kInvalidObject | ||
}; | ||
enum TObject::[unnamed] { | kIsOnHeap | |
kNotDeleted | ||
kZombie | ||
kBitMask | ||
kSingleKey | ||
kOverwrite | ||
kWriteDelete | ||
}; |
TString | TNamed::fName | object identifier |
TString | TNamed::fTitle | object title |
RooArgSet* | fBestFitParams | snapshot of the model parameters with best fit value (managed internally) |
Double_t | fConfidenceLevel | Requested confidence level (eg. 0.95 for 95% CL) |
auto_ptr<RooFunctor> | fFunctor | ! transient pointer to functor class used by the minimizer |
RooAbsReal* | fLikelihoodRatio | likelihood ratio function used to make contours (managed internally) |
map<std::string,double> | fLowerLimits | map with cached lower bound values |
auto_ptr<ROOT::Math::IMultiGenFunction> | fMinFunc | ! transient pointer to the minimization function |
auto_ptr<ROOT::Math::Minimizer> | fMinimizer | ! transient pointer to minimizer class used to find limits and contour |
RooArgSet | fParameters | parameters of interest for this interval |
map<std::string,double> | fUpperLimits | map with cached upper bound values |
Alternate constructor taking a pointer to the profile likelihood ratio, parameter of interest and optionally a snaphot of best parameter of interest for interval
This is the main method to satisfy the RooStats::ConfInterval interface. It returns true if the parameter point is in the interval.
reset map with cached limits - called every time the test size or CL has been changed
internal function to create minimizer object needed to find contours or interval limits (running MINOS). Minimizer must be Minuit or Minuit2
Method to find both lower and upper limits using MINOS If cached values exist (limits have been already found) return them in that case check first if limit has been computed otherwise compute limit using MINOS in case of failure lower and upper will mantain previous value (will not be modified)
use Minuit to find the contour of the likelihood function at the desired CL
set the confidence level for the interval (e.g 0.682 for a 1-sigma interval)
{fConfidenceLevel = cl; ResetLimits(); }
return the lower bound of the interval on a given parameter
{ bool ok; return LowerLimit(param,ok); }
return the upper bound of the interval on a given parameter
{ bool ok; return UpperLimit(param,ok); }
return the profile log-likelihood ratio function
{return fLikelihoodRatio;}
return a pointer to a snapshot with best fit parameter of interest
{ return fBestFitParams; }