#ifndef ROOSTATS_HybridCalculator
#define ROOSTATS_HybridCalculator
#ifndef ROOSTATS_HypoTestCalculator
#include "RooStats/HypoTestCalculator.h"
#endif
#include <vector>
#ifndef ROOSTATS_HypoTestResult
#include "RooStats/HybridResult.h"
#endif
class TH1;
namespace RooStats {
class HybridCalculator : public HypoTestCalculator , public TNamed {
public:
HybridCalculator(const char *name = 0,
const char *title = 0);
HybridCalculator(const char *name,
const char *title,
RooAbsPdf& sb_model,
RooAbsPdf& b_model,
RooArgList& observables,
RooArgSet& nuisance_parameters,
RooAbsPdf& prior_pdf);
HybridCalculator(RooAbsData& data,
RooAbsPdf& sb_model,
RooAbsPdf& b_model,
RooArgSet* nuisance_parameters,
RooAbsPdf* prior_pdf);
HybridCalculator(const char *name,
const char *title,
RooAbsData& data,
RooAbsPdf& sb_model,
RooAbsPdf& b_model,
RooArgSet* nuisance_parameters,
RooAbsPdf* prior_pdf);
private:
HybridCalculator(RooWorkspace & wks,
const char* data,
const char* sb_model,
const char* b_model,
RooArgSet* nuisance_parameters,
const char* prior_pdf);
HybridCalculator(const char *name,
const char *title,
RooWorkspace & wks,
const char* data,
const char* sb_model,
const char* b_model,
RooArgSet* nuisance_parameters,
const char* prior_pdf);
public:
virtual ~HybridCalculator();
virtual HybridResult* GetHypoTest() const;
private:
virtual void SetWorkspace(RooWorkspace& ws);
virtual void SetNullPdf(const char* name) { fBModelName = name; }
virtual void SetAlternatePdf(const char* name ) { fSbModelName = name;}
virtual void SetCommonPdf(const char* name) {fSbModelName = name; }
public:
virtual void SetCommonPdf(RooAbsPdf & pdf) { fSbModel = &pdf; }
virtual void SetNullPdf(RooAbsPdf& pdf) { fBModel = &pdf; }
virtual void SetAlternatePdf(RooAbsPdf& pdf) { fSbModel = &pdf; }
virtual void SetData(const char* name) { fDataName = name; }
virtual void SetData(RooAbsData& data) { fData = &data; }
virtual void SetNullParameters(RooArgSet& ) { }
virtual void SetAlternateParameters(RooArgSet&) {}
void SetNuisancePdf(RooAbsPdf & prior_pdf) {
fPriorPdf = &prior_pdf;
fUsePriorPdf = true;
}
void SetNuisancePdf(const char * name) {
fPriorPdfName = name;
fUsePriorPdf = true;
}
void SetNuisanceParameters(RooArgSet & params) { fParameters = ¶ms; }
void SetNumberOfToys(unsigned int ntoys) { fNToys = ntoys; }
void UseNuisance(bool on = true) { fUsePriorPdf = on; }
void SetTestStatistics(int index);
HybridResult* Calculate(TH1& data, unsigned int nToys, bool usePriors) const;
HybridResult* Calculate(RooTreeData& data, unsigned int nToys, bool usePriors) const;
HybridResult* Calculate(unsigned int nToys, bool usePriors) const;
void PrintMore(const char* options) const;
private:
void RunToys(std::vector<double>& bVals, std::vector<double>& sbVals, unsigned int nToys, bool usePriors) const;
bool DoCheckInputs() const;
bool DoInitializeFromWS();
unsigned int fTestStatisticsIdx;
unsigned int fNToys;
bool fUsePriorPdf;
RooAbsPdf* fSbModel;
RooAbsPdf* fBModel;
mutable RooArgList* fObservables;
RooArgSet* fParameters;
RooAbsPdf* fPriorPdf;
RooAbsData * fData;
RooWorkspace * fWS;
TString fSbModelName;
TString fBModelName;
TString fPriorPdfName;
TString fDataName;
protected:
ClassDef(HybridCalculator,1)
};
}
#endif
Last change: Wed Dec 17 08:53:06 2008
Last generated: 2008-12-17 08:53
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.