class TRolke: public TObject


  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


Function Members (Methods)

public:
TRolke(const TRolke&)
TRolke(Double_t CL = 0.9, Option_t* option = "")
virtual~TRolke()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
Double_tCalculateInterval(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 voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::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_tGetCL() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
Double_tGetLowerLimit() const
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Int_tGetSwitch() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
Double_tGetUpperLimit() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::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 voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetCL(Double_t CL)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetSwitch(Int_t sw)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector& insp, char* parent)
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
Double_tEvalLikeMod1(Double_t mu, Int_t x, Int_t y, Int_t z, Double_t e, Double_t tau, Double_t b, Int_t m, Int_t what)
Double_tEvalLikeMod2(Double_t mu, Int_t x, Int_t y, Double_t em, Double_t e, Double_t sde, Double_t tau, Double_t b, Int_t what)
Double_tEvalLikeMod3(Double_t mu, Int_t x, Double_t bm, Double_t em, Double_t e, Double_t sde, Double_t sdb, Double_t b, Int_t what)
Double_tEvalLikeMod4(Double_t mu, Int_t x, Int_t y, Double_t tau, Double_t b, Int_t what)
Double_tEvalLikeMod5(Double_t mu, Int_t x, Double_t bm, Double_t sdb, Double_t b, Int_t what)
Double_tEvalLikeMod6(Double_t mu, Int_t x, Int_t z, Double_t e, Double_t b, Int_t m, Int_t what)
Double_tEvalLikeMod7(Double_t mu, Int_t x, Double_t em, Double_t e, Double_t sde, Double_t b, Int_t what)
static Double_tEvalMonomial(Double_t x, const Int_t* coef, Int_t N)
static Double_tEvalPolynomial(Double_t x, const Int_t* coef, Int_t N)
Double_tInterval(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)
Double_tLikeGradMod1(Double_t e, Double_t mu, Int_t x, Int_t y, Int_t z, Double_t tau, Int_t m)
Double_tLikelihood(Double_t mu, 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, Int_t what)
Double_tLikeMod1(Double_t mu, Double_t b, Double_t e, Int_t x, Int_t y, Int_t z, Double_t tau, Int_t m)
Double_tLikeMod2(Double_t mu, Double_t b, Double_t e, Int_t x, Int_t y, Double_t em, Double_t tau, Double_t v)
Double_tLikeMod3(Double_t mu, Double_t b, Double_t e, Int_t x, Double_t bm, Double_t em, Double_t u, Double_t v)
Double_tLikeMod4(Double_t mu, Double_t b, Int_t x, Int_t y, Double_t tau)
Double_tLikeMod5(Double_t mu, Double_t b, Int_t x, Double_t bm, Double_t u)
Double_tLikeMod6(Double_t mu, Double_t b, Double_t e, Int_t x, Int_t z, Int_t m)
Double_tLikeMod7(Double_t mu, Double_t b, Double_t e, Int_t x, Double_t em, Double_t v)
Double_tLogFactorial(Int_t n)
voidTObject::MakeZombie()
voidProfLikeMod1(Double_t mu, Double_t& b, Double_t& e, Int_t x, Int_t y, Int_t z, Double_t tau, Int_t m)

Data Members

public:
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
Double_tfCLconfidence level as a fraction [e.g. 90% = 0.9]
Double_tfLowerLimitthe calculated lower limit
Int_tfSwitch0: for unbounded likelihood
Double_tfUpperLimitthe calculated upper limit

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

TRolke(Double_t CL = 0.9, Option_t* option = "")
constructor
~TRolke()
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)
calculate interval
Double_t Interval(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)
 Calculates the Confidence Interval
Double_t Likelihood(Double_t mu, 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, Int_t what)
 Chooses between the different profile likelihood functions to use for the
 different models.
 Returns evaluation of the profile likelihood functions.
Double_t EvalLikeMod1(Double_t mu, Int_t x, Int_t y, Int_t z, Double_t e, Double_t tau, Double_t b, Int_t m, Int_t what)
 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)
Double_t LikeMod1(Double_t mu, Double_t b, Double_t e, Int_t x, Int_t y, Int_t z, Double_t tau, Int_t m)
 Profile Likelihood function for MODEL 1:
 Poisson background/ Binomial Efficiency
void ProfLikeMod1(Double_t mu, Double_t& b, Double_t& e, Int_t x, Int_t y, Int_t z, Double_t tau, Int_t m)
 Void needed to calculate estimates of efficiency and background for model 1
Double_t LikeGradMod1(Double_t e, Double_t mu, Int_t x, Int_t y, Int_t z, Double_t tau, Int_t m)
gradient model
Double_t EvalLikeMod2(Double_t mu, Int_t x, Int_t y, Double_t em, Double_t e, Double_t sde, Double_t tau, Double_t b, Int_t what)
 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)
Double_t LikeMod2(Double_t mu, Double_t b, Double_t e, Int_t x, Int_t y, Double_t em, Double_t tau, Double_t v)
 Profile Likelihood function for MODEL 2:
 Poisson background/Gauss Efficiency
Double_t EvalLikeMod3(Double_t mu, Int_t x, Double_t bm, Double_t em, Double_t e, Double_t sde, Double_t sdb, Double_t b, Int_t what)
 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)
Double_t LikeMod3(Double_t mu, Double_t b, Double_t e, Int_t x, Double_t bm, Double_t em, Double_t u, Double_t v)
 Profile Likelihood function for MODEL 3:
 Gauss background/Gauss Efficiency
Double_t EvalLikeMod4(Double_t mu, Int_t x, Int_t y, Double_t tau, Double_t b, Int_t what)
 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)
Double_t LikeMod4(Double_t mu, Double_t b, Int_t x, Int_t y, Double_t tau)
 Profile Likelihood function for MODEL 4:
 Poiss background/Efficiency known
Double_t EvalLikeMod5(Double_t mu, Int_t x, Double_t bm, Double_t sdb, Double_t b, Int_t what)
 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)
Double_t LikeMod5(Double_t mu, Double_t b, Int_t x, Double_t bm, Double_t u)
 Profile Likelihood function for MODEL 5:
 Gauss background/Efficiency known
Double_t EvalLikeMod6(Double_t mu, Int_t x, Int_t z, Double_t e, Double_t b, Int_t m, Int_t what)
 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)
Double_t LikeMod6(Double_t mu, Double_t b, Double_t e, Int_t x, Int_t z, Int_t m)
 Profile Likelihood function for MODEL 6:
 background known/ Efficiency binomial
Double_t EvalLikeMod7(Double_t mu, Int_t x, Double_t em, Double_t e, Double_t sde, Double_t b, Int_t what)
 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)
Double_t LikeMod7(Double_t mu, Double_t b, Double_t e, Int_t x, Double_t em, Double_t v)
 Profile Likelihood function for MODEL 6:
 background known/ Efficiency binomial
Double_t EvalPolynomial(Double_t x, const Int_t* coef, Int_t N)
 evaluate polynomial
Double_t EvalMonomial(Double_t x, const Int_t* coef, Int_t N)
 evaluate mononomial
Double_t LogFactorial(Int_t n)
 Uses Stirling-Wells formula: ln(N!) ~ N*ln(N) - N + 0.5*ln(2piN)
 if N exceeds 70, otherwise use the TMath functions
TRolke(Double_t CL = 0.9, Option_t* option = "")
Double_t GetUpperLimit(void)
{ return fUpperLimit;}
Double_t GetLowerLimit(void)
{ return fLowerLimit;}
Int_t GetSwitch(void)
{ return fSwitch;}
void SetSwitch(Int_t sw)
{ fSwitch = sw; }
Double_t GetCL(void)
{ return fCL;}
void SetCL(Double_t CL)
{ fCL = CL; }

Author: Jan Conrad 9/2/2004
Last change: root/physics:$Id: TRolke.h 20882 2007-11-19 11:31:26Z rdm $
Last generated: 2008-06-25 08:52
Copyright (C) 1995-2004, Rene Brun and Fons Rademakers. *

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.