Go to the documentation of this file.00001 #ifndef HiggsAnalysis_CombinedLimit_ProfiledLikelihoodRatioTestStat_h
00002 #define HiggsAnalysis_CombinedLimit_ProfiledLikelihoodRatioTestStat_h
00003
00004 #include <memory>
00005 #include <RooAbsPdf.h>
00006 #include <RooAbsData.h>
00007 #include <RooArgSet.h>
00008 #include <RooStats/TestStatistic.h>
00009
00010 class ProfiledLikelihoodRatioTestStat : public RooStats::TestStatistic {
00011 public:
00012 ProfiledLikelihoodRatioTestStat(RooAbsPdf &pdfNull, RooAbsPdf &pdfAlt, const RooArgSet *nuisances, const RooArgSet & paramsNull = RooArgSet(), const RooArgSet & paramsAlt = RooArgSet()) :
00013 pdfNull_(&pdfNull), pdfAlt_(&pdfAlt),
00014 paramsNull_(pdfNull_->getVariables()),
00015 paramsAlt_(pdfAlt_->getVariables())
00016 {
00017 snapNull_.addClone(paramsNull);
00018 snapAlt_.addClone(paramsAlt);
00019 if (nuisances) nuisances_.addClone(*nuisances);
00020 }
00021
00022 virtual Double_t Evaluate(RooAbsData& data, RooArgSet& nullPOI) ;
00023
00024 virtual const TString GetVarName() const {
00025 return TString::Format("-log(%s/%s)", pdfNull_->GetName(), pdfAlt_->GetName());
00026 }
00027
00028 private:
00029 RooAbsPdf *pdfNull_, *pdfAlt_;
00030 RooArgSet snapNull_, snapAlt_;
00031 RooArgSet nuisances_;
00032 std::auto_ptr<RooArgSet> paramsNull_, paramsAlt_;
00033 };
00034
00035
00036 #endif