TRolke This class computes confidence intervals for the rate of a Poisson in the presence of background and efficiency with a fully frequentist treatment of the uncertainties in the efficiency and background estimate using the profile likelihood method. The signal is always assumed to be Poisson. The method is very similar to the one used in MINUIT (MINOS). Two options are offered to deal with cases where the maximum likelihood estimate (MLE) is not in the physical region. Version "bounded likelihood" is the one used by MINOS if bounds for the physical region are chosen. Versi// on "unbounded likelihood (the default) allows the MLE to be in the unphysical region. It has however better coverage. For more details consult the reference (see below). It allows the following Models: 1: Background - Poisson, Efficiency - Binomial (cl,x,y,z,tau,m) 2: Background - Poisson, Efficiency - Gaussian (cl,xd,y,em,tau,sde) 3: Background - Gaussian, Efficiency - Gaussian (cl,x,bm,em,sd) 4: Background - Poisson, Efficiency - known (cl,x,y,tau,e) 5: Background - Gaussian, Efficiency - known (cl,x,y,z,sdb,e) 6: Background - known, Efficiency - Binomial (cl,x,z,m,b) 7: Background - known, Efficiency - Gaussian (cl,x,em,sde,b) Parameter definition: cl = Confidence level x = number of observed events y = number of background events z = number of simulated signal events em = measurement of the efficiency. bm = background estimate tau = ratio between signal and background region (in case background is observed) ratio between observed and simulated livetime in case background is determined from MC. sd(x) = sigma of the Gaussian e = true efficiency (in case known) b = expected background (in case known) m = number of MC runs mid = ID number of the model ... For a description of the method and its properties: W.Rolke, A. Lopez, J. Conrad and Fred James "Limits and Confidence Intervals in presence of nuisance parameters" http://lanl.arxiv.org/abs/physics/0403059 Nucl.Instrum.Meth.A551:493-503,2005 Should I use TRolke, TFeldmanCousins, TLimit? 1. I guess TRolke makes TFeldmanCousins obsolete? Certainly not. TFeldmanCousins is the fully frequentist construction and should be used in case of no (or negligible uncertainties). It is however not capable of treating uncertainties in nuisance parameters. TRolke is desined for this case and it is shown in the reference above that it has good coverage properties for most cases, ie it might be used where FeldmannCousins can't. 2. What are the advantages of TRolke over TLimit? TRolke is fully frequentist. TLimit treats nuisance parameters Bayesian. For a coverage study of a Bayesian method refer to physics/0408039 (Tegenfeldt & J.C). However, this note studies the coverage of Feldman&Cousins with Bayesian treatment of nuisance parameters. To make a long story short: using the Bayesian method you might introduce a small amount of over-coverage (though I haven't shown it for TLimit). On the other hand, coverage of course is a not so interesting when you consider yourself a Bayesian. Author: Jan Conrad (CERN) see example in tutorial Rolke.C Copyright CERN 2004 Jan.Conrad@cern.ch
TRolke(const TRolke&) | |
TRolke(Double_t CL = 0.9, Option_t* option = "") | |
virtual | ~TRolke() |
void | TObject::AbstractMethod(const char* method) const |
virtual void | TObject::AppendPad(Option_t* option = "") |
virtual void | TObject::Browse(TBrowser* b) |
Double_t | CalculateInterval(Int_t x, Int_t y, Int_t z, Double_t bm, Double_t em, Double_t e, Int_t mid, Double_t sde, Double_t sdb, Double_t tau, Double_t b, Int_t m) |
static TClass* | Class() |
virtual const char* | TObject::ClassName() const |
virtual void | TObject::Clear(Option_t* = "") |
virtual TObject* | TObject::Clone(const char* newname = "") const |
virtual Int_t | TObject::Compare(const TObject* obj) const |
virtual void | TObject::Copy(TObject& object) 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 TObject* | TObject::FindObject(const char* name) const |
virtual TObject* | TObject::FindObject(const TObject* obj) const |
Double_t | GetCL() const |
virtual Option_t* | TObject::GetDrawOption() const |
static Long_t | TObject::GetDtorOnly() |
virtual const char* | TObject::GetIconName() const |
Double_t | GetLowerLimit() const |
virtual const char* | TObject::GetName() const |
virtual char* | TObject::GetObjectInfo(Int_t px, Int_t py) const |
static Bool_t | TObject::GetObjectStat() |
virtual Option_t* | TObject::GetOption() const |
Int_t | GetSwitch() const |
virtual const char* | TObject::GetTitle() const |
virtual UInt_t | TObject::GetUniqueID() const |
Double_t | GetUpperLimit() const |
virtual Bool_t | TObject::HandleTimer(TTimer* timer) |
virtual ULong_t | TObject::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 |
Bool_t | TObject::IsOnHeap() const |
virtual Bool_t | TObject::IsSortable() const |
Bool_t | TObject::IsZombie() const |
virtual void | TObject::ls(Option_t* option = "") const |
void | TObject::MayNotUse(const char* method) const |
virtual Bool_t | TObject::Notify() |
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) |
TRolke& | operator=(const TRolke&) |
virtual void | TObject::Paint(Option_t* option = "") |
virtual void | TObject::Pop() |
virtual void | TObject::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(basic_ostream<char,char_traits<char> >& out, Option_t* option = "") |
void | TObject::SetBit(UInt_t f) |
void | TObject::SetBit(UInt_t f, Bool_t set) |
void | SetCL(Double_t CL) |
virtual void | TObject::SetDrawOption(Option_t* option = "")MENU |
static void | TObject::SetDtorOnly(void* obj) |
static void | TObject::SetObjectStat(Bool_t stat) |
void | SetSwitch(Int_t sw) |
virtual void | TObject::SetUniqueID(UInt_t uid) |
virtual void | ShowMembers(TMemberInspector& insp, char* parent) |
virtual void | Streamer(TBuffer& b) |
void | StreamerNVirtual(TBuffer& 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 |
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 |
enum TObject::EStatusBits { | kCanDelete | |
kMustCleanup | ||
kObjInCanvas | ||
kIsReferenced | ||
kHasUUID | ||
kCannotPick | ||
kNoContextMenu | ||
kInvalidObject | ||
}; | ||
enum TObject::[unnamed] { | kIsOnHeap | |
kNotDeleted | ||
kZombie | ||
kBitMask | ||
kSingleKey | ||
kOverwrite | ||
kWriteDelete | ||
}; |
calculate interval
Calculates the Confidence Interval
Chooses between the different profile likelihood functions to use for the different models. Returns evaluation of the profile likelihood functions.
Calculates the Profile Likelihood for MODEL 1: Poisson background/ Binomial Efficiency what = 1: Maximum likelihood estimate is returned what = 2: Profile Likelihood of Maxmimum Likelihood estimate is returned. what = 3: Profile Likelihood of Test hypothesis is returned otherwise parameters as described in the beginning of the class)
Profile Likelihood function for MODEL 1: Poisson background/ Binomial Efficiency
Void needed to calculate estimates of efficiency and background for model 1
gradient model
Calculates the Profile Likelihood for MODEL 2: Poisson background/ Gauss Efficiency what = 1: Maximum likelihood estimate is returned what = 2: Profile Likelihood of Maxmimum Likelihood estimate is returned. what = 3: Profile Likelihood of Test hypothesis is returned otherwise parameters as described in the beginning of the class)
Profile Likelihood function for MODEL 2: Poisson background/Gauss Efficiency
Calculates the Profile Likelihood for MODEL 3: Gauss background/ Gauss Efficiency what = 1: Maximum likelihood estimate is returned what = 2: Profile Likelihood of Maxmimum Likelihood estimate is returned. what = 3: Profile Likelihood of Test hypothesis is returned otherwise parameters as described in the beginning of the class)
Profile Likelihood function for MODEL 3: Gauss background/Gauss Efficiency
Calculates the Profile Likelihood for MODEL 4: Poiss background/Efficiency known what = 1: Maximum likelihood estimate is returned what = 2: Profile Likelihood of Maxmimum Likelihood estimate is returned. what = 3: Profile Likelihood of Test hypothesis is returned otherwise parameters as described in the beginning of the class)
Profile Likelihood function for MODEL 4: Poiss background/Efficiency known
Calculates the Profile Likelihood for MODEL 5: Gauss background/Efficiency known what = 1: Maximum likelihood estimate is returned what = 2: Profile Likelihood of Maxmimum Likelihood estimate is returned. what = 3: Profile Likelihood of Test hypothesis is returned otherwise parameters as described in the beginning of the class)
Profile Likelihood function for MODEL 5: Gauss background/Efficiency known
Calculates the Profile Likelihood for MODEL 6: Gauss known/Efficiency binomial what = 1: Maximum likelihood estimate is returned what = 2: Profile Likelihood of Maxmimum Likelihood estimate is returned. what = 3: Profile Likelihood of Test hypothesis is returned otherwise parameters as described in the beginning of the class)
Profile Likelihood function for MODEL 6: background known/ Efficiency binomial
Calculates the Profile Likelihood for MODEL 7: background known/Efficiency Gauss what = 1: Maximum likelihood estimate is returned what = 2: Profile Likelihood of Maxmimum Likelihood estimate is returned. what = 3: Profile Likelihood of Test hypothesis is returned otherwise parameters as described in the beginning of the class)
Profile Likelihood function for MODEL 6: background known/ Efficiency binomial
Uses Stirling-Wells formula: ln(N!) ~ N*ln(N) - N + 0.5*ln(2piN) if N exceeds 70, otherwise use the TMath functions