24 Bool_t RooStats::SimpleLikelihoodRatioTestStat::fgAlwaysReuseNll = kTRUE ;
28 void RooStats::SimpleLikelihoodRatioTestStat::SetAlwaysReuseNLL(Bool_t flag) { fgAlwaysReuseNll = flag ; }
30 Double_t RooStats::SimpleLikelihoodRatioTestStat::Evaluate(RooAbsData& data, RooArgSet& nullPOI) {
32 if (fFirstEval && ParamsAreEqual()) {
33 oocoutW(fNullParameters,InputArguments)
34 <<
"Same RooArgSet used for null and alternate, so you must explicitly SetNullParameters and SetAlternateParameters or the likelihood ratio will always be 1."
40 fNullPdf = RooStats::MakeUnconstrainedPdf(*fNullPdf, *fNullPdf->getObservables(data));
41 fAltPdf = RooStats::MakeUnconstrainedPdf(*fAltPdf , *fAltPdf->getObservables(data) );
46 RooFit::MsgLevel msglevel = RooMsgService::instance().globalKillBelow();
47 RooMsgService::instance().setGlobalKillBelow(RooFit::FATAL);
49 Bool_t reuse = (fReuseNll || fgAlwaysReuseNll) ;
51 Bool_t created = kFALSE ;
53 RooArgSet* allParams = fNullPdf->getParameters(data);
54 fNllNull = fNullPdf->createNLL(data, RooFit::CloneData(kFALSE),RooFit::Constrain(*allParams),RooFit::GlobalObservables(fGlobalObs),RooFit::ConditionalObservables(fConditionalObs));
58 if (reuse && !created) {
59 fNllNull->setData(data, kFALSE) ;
63 RooArgSet* attachedSet = fNllNull->getVariables();
64 *attachedSet = *fNullParameters;
65 *attachedSet = nullPOI;
66 double nullNLL = fNllNull->getVal();
73 delete fNllNull ; fNllNull = NULL ;
79 RooArgSet* allParams = fAltPdf->getParameters(data);
80 fNllAlt = fAltPdf->createNLL(data, RooFit::CloneData(kFALSE),RooFit::Constrain(*allParams),RooFit::GlobalObservables(fGlobalObs),RooFit::ConditionalObservables(fConditionalObs));
84 if (reuse && !created) {
85 fNllAlt->setData(data, kFALSE) ;
88 attachedSet = fNllAlt->getVariables();
89 *attachedSet = *fAltParameters;
90 double altNLL = fNllAlt->getVal();
100 delete fNllAlt ; fNllAlt = NULL ;
107 if( fDetailedOutputEnabled ) {
108 if( !fDetailedOutput ) {
109 fDetailedOutput =
new RooArgSet( *(
new RooRealVar(
"nullNLL",
"null NLL",0)),
"detailedOut_SLRTS" );
110 fDetailedOutput->add( *(
new RooRealVar(
"altNLL",
"alternate NLL",0)) );
112 fDetailedOutput->setRealValue(
"nullNLL", nullNLL );
113 fDetailedOutput->setRealValue(
"altNLL", altNLL );
121 RooMsgService::instance().setGlobalKillBelow(msglevel);
122 return nullNLL - altNLL;