ROOT » ROOFIT » ROOSTATS » RooStats::HybridCalculatorOriginal

class RooStats::HybridCalculatorOriginal: public RooStats::HypoTestCalculator, public TNamed


HybridCalculatorOriginal class: this class is a fresh rewrite in RooStats of
	RooStatsCms/LimitCalculator developped by D. Piparo and G. Schott
Authors: D. Piparo, G. Schott - Universitaet Karlsruhe

The class is born from the need to have an implementation of the CLs
method that could take advantage from the RooFit Package.
The basic idea is the following:
- Instantiate an object specifying a signal+background model, a background model and a dataset.
- Perform toy MC experiments to know the distributions of -2lnQ
- Calculate the CLsb and CLs values as "integrals" of these distributions.

The class allows the user to input models as RooAbsPdf ( TH1 object could be used
by using the RooHistPdf class)
The pdfs must be "extended": for more information please refer to
http://roofit.sourceforge.net). The dataset can be entered as a
RooAbsData objects.

Unlike the TLimit Class a complete MC generation is performed at each step
and not a simple Poisson fluctuation of the contents of the bins.
Another innovation is the treatment of the nuisance parameters. The user
can input in the constructor nuisance parameters.
To include the information that we have about the nuisance parameters a prior
PDF (RooAbsPdf) should be specified

Different test statistic can be used (likelihood ratio, number of events or
profile likelihood ratio. The default is the likelihood ratio.
See the method SetTestStatistic.

The number of toys to be generated is controlled by SetNumberOfToys(n).

The result of the calculations is returned as a HybridResult object pointer.

see also the following interesting references:
- Alex Read, "Presentation of search results: the CLs technique",
  Journal of Physics G: Nucl. Part. Phys. 28 2693-2704 (2002).
  see http://www.iop.org/EJ/abstract/0954-3899/28/10/313/

- Alex Read, "Modified Frequentist Analysis of Search Results (The CLs Method)" CERN 2000-005 (30 May 2000)

- V. Bartsch, G.Quast, "Expected signal observability at future experiments" CMS NOTE 2005/004

- http://root.cern.ch/root/html/src/TLimit.html

Function Members (Methods)

public:
virtual~HybridCalculatorOriginal()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
RooStats::HybridResult*Calculate(unsigned int nToys, bool usePriors) const
RooStats::HybridResult*Calculate(TH1& data, unsigned int nToys, bool usePriors) const
RooStats::HybridResult*Calculate(RooAbsData& data, unsigned int nToys, bool usePriors) const
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTNamed::Copy(TObject& named) 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 voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual RooStats::HybridResult*GetHypoTest() const
virtual const char*TObject::GetIconName() const
virtual const char*TNamed::GetName() const
unsigned intGetNumberOfToys() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual const char*TNamed::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
RooStats::HybridCalculatorOriginalHybridCalculatorOriginal(const char* name = 0)
RooStats::HybridCalculatorOriginalHybridCalculatorOriginal(const RooStats::HybridCalculatorOriginal&)
RooStats::HybridCalculatorOriginalHybridCalculatorOriginal(RooAbsData& data, const RooStats::ModelConfig& sb_model, const RooStats::ModelConfig& b_model, bool GenerateBinned = false, int testStatistics = 1, int ntoys = 1000)
RooStats::HybridCalculatorOriginalHybridCalculatorOriginal(RooAbsPdf& sb_model, RooAbsPdf& b_model, RooArgList& observables, const RooArgSet* nuisance_parameters = 0, RooAbsPdf* prior_pdf = 0, bool GenerateBinned = false, int testStatistics = 1, int ntoys = 1000)
RooStats::HybridCalculatorOriginalHybridCalculatorOriginal(RooAbsData& data, RooAbsPdf& sb_model, RooAbsPdf& b_model, const RooArgSet* nuisance_parameters = 0, RooAbsPdf* prior_pdf = 0, bool GenerateBinned = false, int testStatistics = 1, int ntoys = 1000)
RooStats::HypoTestCalculatorRooStats::HypoTestCalculator::HypoTestCalculator()
RooStats::HypoTestCalculatorRooStats::HypoTestCalculator::HypoTestCalculator(const RooStats::HypoTestCalculator&)
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_tTNamed::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
voidTObject::operator delete(void* ptr)
voidTObject::operator delete(void* ptr, void* vp)
voidTObject::operator delete[](void* ptr)
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)
RooStats::HybridCalculatorOriginal&operator=(const RooStats::HybridCalculatorOriginal&)
virtual voidTObject::Paint(Option_t* option = "")
voidPatchSetExtended(bool on = true)
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
voidPrintMore(const char* options) 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(ostream& out, Option_t* option = "")
virtual voidSetAlternateModel(const RooStats::ModelConfig&)
virtual voidSetAlternateParameters(const RooArgSet&)
virtual voidSetAlternatePdf(RooAbsPdf& pdf)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidRooStats::HypoTestCalculator::SetCommonModel(const RooStats::ModelConfig& model)
virtual voidSetCommonPdf(RooAbsPdf& pdf)
virtual voidSetData(RooAbsData& data)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetGenerateBinned(bool on = true)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
voidSetNuisanceParameters(const RooArgSet& params)
voidSetNuisancePdf(RooAbsPdf& prior_pdf)
virtual voidSetNullModel(const RooStats::ModelConfig&)
virtual voidSetNullParameters(const RooArgSet&)
virtual voidSetNullPdf(RooAbsPdf& pdf)
voidSetNumberOfToys(unsigned int ntoys)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetTestStatistic(int index)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector& insp) const
virtual Int_tTNamed::Sizeof() const
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_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()
voidUseNuisance(bool on = true)
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
voidTObject::MakeZombie()
private:
boolDoCheckInputs() const
voidRunToys(vector<double>& bVals, vector<double>& sbVals, unsigned int nToys, bool usePriors) const

Data Members

public:
static TObject::(anonymous)TObject::kBitMask
static TObject::EStatusBitsTObject::kCanDelete
static TObject::EStatusBitsTObject::kCannotPick
static TObject::EStatusBitsTObject::kHasUUID
static TObject::EStatusBitsTObject::kInvalidObject
static TObject::(anonymous)TObject::kIsOnHeap
static TObject::EStatusBitsTObject::kIsReferenced
static TObject::EStatusBitsTObject::kMustCleanup
static TObject::EStatusBitsTObject::kNoContextMenu
static TObject::(anonymous)TObject::kNotDeleted
static TObject::EStatusBitsTObject::kObjInCanvas
static TObject::(anonymous)TObject::kOverwrite
static TObject::(anonymous)TObject::kSingleKey
static TObject::(anonymous)TObject::kWriteDelete
static TObject::(anonymous)TObject::kZombie
protected:
TStringTNamed::fNameobject identifier
TStringTNamed::fTitleobject title
private:
RooAbsPdf*fBModelThe pdf of the background model
RooAbsData*fDatapointer to the data sets
boolfGenerateBinnedFlag to control binned generation
unsigned intfNToysnumber of Toys MC
const RooArgSet*fNuisanceParametersCollection of the nuisance parameters in the model
RooArgList*fObservablesCollection of the observables of the model
RooAbsPdf*fPriorPdfPrior PDF of the nuisance parameters
RooAbsPdf*fSbModelThe pdf of the signal+background model
unsigned intfTestStatisticsIdxIndex of the test statistics to use
boolfTmpDoExtended
boolfUsePriorPdfuse a prior for nuisance parameters

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

HybridCalculatorOriginal(const char* name = 0)
 constructor with name and title
 set default parameters
HybridCalculatorOriginal(RooAbsPdf& sb_model, RooAbsPdf& b_model, RooArgList& observables, const RooArgSet* nuisance_parameters = 0, RooAbsPdf* prior_pdf = 0, bool GenerateBinned = false, int testStatistics = 1, int ntoys = 1000)
 HybridCalculatorOriginal constructor without specifying a data set
 the user need to specify the models in the S+B case and B-only case,
 the list of observables of the model(s) (for MC-generation), the list of parameters
 that are marginalised and the prior distribution of those parameters
HybridCalculatorOriginal(RooAbsData& data, RooAbsPdf& sb_model, RooAbsPdf& b_model, const RooArgSet* nuisance_parameters = 0, RooAbsPdf* prior_pdf = 0, bool GenerateBinned = false, int testStatistics = 1, int ntoys = 1000)
 HybridCalculatorOriginal constructor for performing hypotesis test
 the user need to specify the data set, the models in the S+B case and B-only case.
 In case of treatment of nuisance parameter, the user need to specify the
 the list of parameters  that are marginalised and the prior distribution of those parameters
HybridCalculatorOriginal(RooAbsData& data, const RooStats::ModelConfig& sb_model, const RooStats::ModelConfig& b_model, bool GenerateBinned = false, int testStatistics = 1, int ntoys = 1000)
 Constructor with a ModelConfig object representing the signal + background model and
 another model config representig the background only model
 a Prior pdf for the nuiscane parameter of the signal and background can be specified in
 the s+b model or the b model. If it is specified in the s+b model, the one of the s+b model will be used
~HybridCalculatorOriginal()
void SetNullModel(const RooStats::ModelConfig& )
 Set the model describing the null hypothesis
void SetAlternateModel(const RooStats::ModelConfig& )
 Set the model describing the alternate hypothesis
void SetTestStatistic(int index)
 set the desired test statistics:
 index=1 : likelihood ratio: 2 * log( L_sb / L_b )  (DEFAULT)
 index=2 : number of generated events
 index=3 : profiled likelihood ratio
 if the index is different to any of those values, the default is used
HybridResult* Calculate(TH1& data, unsigned int nToys, bool usePriors) const
 first compute the test statistics for data and then prepare and run the toy-MC experiments
HybridResult* Calculate(RooAbsData& data, unsigned int nToys, bool usePriors) const
 first compute the test statistics for data and then prepare and run the toy-MC experiments
HybridResult* Calculate(unsigned int nToys, bool usePriors) const
void RunToys(vector<double>& bVals, vector<double>& sbVals, unsigned int nToys, bool usePriors) const
 do the actual run-MC processing
void PrintMore(const char* options) const
 Print out some information about the input models
HybridResult* GetHypoTest() const
 perform the hypothesis test and return result of hypothesis test
bool DoCheckInputs() const
explicit HybridCalculatorOriginal(const char* name = 0)
 Dummy Constructor with only name
void SetCommonPdf(RooAbsPdf& pdf)
 Set a common PDF for both the null and alternate
{ fSbModel = &pdf; }
void SetNullPdf(RooAbsPdf& pdf)
 Set the PDF for the null (only B)
{ fBModel = &pdf; }
void SetAlternatePdf(RooAbsPdf& pdf)
 Set the PDF for the alternate hypothesis ( i.e. S+B)
{ fSbModel = &pdf; }
void SetData(RooAbsData& data)
 Set the DataSet
{ fData = &data; }
void SetNullParameters(const RooArgSet& )
 set parameter values for the null if using a common PDF
{ }
void SetAlternateParameters(const RooArgSet& )
 set parameter values for the alternate if using a common PDF
{}
void SetNuisancePdf(RooAbsPdf& prior_pdf)
 additional methods specific for HybridCalculator
 set a  prior pdf for the nuisance parameters
void SetNuisanceParameters(const RooArgSet& params)
 set the nuisance parameters to be marginalized
{ fNuisanceParameters = &params; }
void SetNumberOfToys(unsigned int ntoys)
 set number of toy MC (Default is 1000)
{ fNToys = ntoys; }
unsigned int GetNumberOfToys() const
 return number of toys used
{ return fNToys; }
void UseNuisance(bool on = true)
 control use of the pdf for the nuisance parameter and marginalize them
{ fUsePriorPdf = on; }
void SetGenerateBinned(bool on = true)
 control to use bin data generation
{ fGenerateBinned = on; }
void PatchSetExtended(bool on = true)
{ fTmpDoExtended = on; std::cout << "extended patch set to " << on << std::endl; }