CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
SimplerLikelihoodRatioTestStatExt.h
Go to the documentation of this file.
1 #ifndef HiggsAnalysis_CombinedLimit_SimplerLikelihoodRatioTestStatExt_h
2 #define HiggsAnalysis_CombinedLimit_SimplerLikelihoodRatioTestStatExt_h
3 
25 #include <memory>
26 #include <stdexcept>
27 #include <RooAbsPdf.h>
28 #include <RooAbsData.h>
29 #include <RooSimultaneous.h>
30 #include <RooArgSet.h>
31 #include <RooStats/TestStatistic.h>
32 
33 
34 class SimplerLikelihoodRatioTestStatOpt : public RooStats::TestStatistic {
35  public:
41  SimplerLikelihoodRatioTestStatOpt(const RooArgSet &obs, RooAbsPdf &pdfNull, RooAbsPdf &pdfAlt, const RooArgSet & paramsNull = RooArgSet(), const RooArgSet & paramsAlt = RooArgSet(), bool factorize=true) ;
42 
44 
45  virtual Double_t Evaluate(RooAbsData& data, RooArgSet& nullPOI) ;
46 
47  virtual const TString GetVarName() const {
48  return TString::Format("-log(%s/%s)", pdfNull_->GetName(), pdfAlt_->GetName());
49  }
50  private:
52  const RooArgSet *obs_;
54  RooAbsPdf *pdfNull_, *pdfAlt_;
58  RooArgList pdfDepObs_;
60  RooArgSet snapNull_, snapAlt_;
62  std::auto_ptr<RooArgSet> paramsNull_, paramsAlt_;
64  std::auto_ptr<RooAbsPdf> pdfNullOwned_, pdfAltOwned_;
66  RooSimultaneous *simPdfNull_, *simPdfAlt_;
68  std::vector<RooAbsPdf *> simPdfComponentsNull_, simPdfComponentsAlt_;
69 
70  double evalSimNLL(RooAbsData &data, RooSimultaneous *pdf, std::vector<RooAbsPdf *> &components);
71  double evalSimpleNLL(RooAbsData &data, RooAbsPdf *pdf);
72  void unrollSimPdf(RooSimultaneous *pdf, std::vector<RooAbsPdf *> &out);
73 
74 }; //
75 
76 // ===== This below is identical to the RooStats::SimpleLikelihoodRatioTestStat also in implementation
77 // I've made a copy here just to be able to put some debug hooks inside.
78 #if 0
79 class SimplerLikelihoodRatioTestStatExt : public RooStats::TestStatistic {
80  public:
81  SimplerLikelihoodRatioTestStatExt(const RooArgSet &obs, RooAbsPdf &pdfNull, RooAbsPdf &pdfAlt, const RooArgSet & paramsNull = RooArgSet(), const RooArgSet & paramsAlt = RooArgSet()) ;
82 
83  virtual ~SimplerLikelihoodRatioTestStatExt() ;
84 
85  virtual Double_t Evaluate(RooAbsData& data, RooArgSet& nullPOI) ;
86 
87  virtual const TString GetVarName() const {
88  return TString::Format("-log(%s/%s)", pdfNull_->GetName(), pdfAlt_->GetName());
89  }
90 
91  private:
92  RooAbsPdf *pdfNull_, *pdfAlt_;
93  RooArgSet snapNull_, snapAlt_;
94  std::auto_ptr<RooArgSet> paramsNull_, paramsAlt_;
95  std::auto_ptr<RooAbsPdf> pdfNullOwned_, pdfAltOwned_;
96 }; // TestSimpleStatistics
97 #endif
98 
99 #endif
RooArgList pdfDepObs_
nodes which depend directly on observables, on which one has to do redirectServers ...
double evalSimNLL(RooAbsData &data, RooSimultaneous *pdf, std::vector< RooAbsPdf * > &components)
std::vector< RooAbsPdf * > simPdfComponentsNull_
components of the sim pdfs after factorization, for each bin in sim. category. can contain nulls ...
std::auto_ptr< RooAbsPdf > pdfNullOwned_
owned copy of the pdfs after factorizing
RooAbsPdf * pdfNull_
pdfs (cloned, and with constraints factorized away)
RooArgSet snapNull_
snapshots of parameters for the two pdfs
RooSimultaneous * simPdfNull_
pdfNull, pdfAlt cast to sympdf (may be null) after factorization
const RooArgSet * obs_
observables (global argset)
RooArgSet pdfCompNull_
snapshot with all branch nodes of the pdfs before factorization
virtual Double_t Evaluate(RooAbsData &data, RooArgSet &nullPOI)
SimplerLikelihoodRatioTestStatOpt(const RooArgSet &obs, RooAbsPdf &pdfNull, RooAbsPdf &pdfAlt, const RooArgSet &paramsNull=RooArgSet(), const RooArgSet &paramsAlt=RooArgSet(), bool factorize=true)
tuple out
Definition: dbtoconf.py:99
std::auto_ptr< RooArgSet > paramsNull_
parameter sets to apply snapshots to
double evalSimpleNLL(RooAbsData &data, RooAbsPdf *pdf)
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
void unrollSimPdf(RooSimultaneous *pdf, std::vector< RooAbsPdf * > &out)