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 std::unique_ptr<RooArgSet> nullObs{fNullPdf->getObservables(
data)};
42 std::unique_ptr<RooArgSet> altObs{fAltPdf->getObservables(
data)};
51 bool reuse = (fReuseNll || fgAlwaysReuseNll) ;
53 bool created = false ;
55 std::unique_ptr<RooArgSet> allParams{fNullPdf->getParameters(
data)};
57 fNllNull = std::unique_ptr<RooAbsReal>{fNullPdf->createNLL(
data, CloneData(
false), Constrain(*allParams), GlobalObservables(fGlobalObs), ConditionalObservables(fConditionalObs))};
60 if (reuse && !created) {
61 fNllNull->setData(
data,
false) ;
65 std::unique_ptr<RooArgSet> attachedSet{fNllNull->getVariables()};
66 attachedSet->assign(*fNullParameters);
67 attachedSet->assign(nullPOI);
68 double nullNLL = fNllNull->getVal();
80 std::unique_ptr<RooArgSet> allParams{fAltPdf->getParameters(
data)};
82 fNllAlt = std::unique_ptr<RooAbsReal>{fAltPdf->createNLL(
data, CloneData(
false), Constrain(*allParams), GlobalObservables(fGlobalObs), ConditionalObservables(fConditionalObs))};
85 if (reuse && !created) {
86 fNllAlt->setData(
data,
false) ;
89 attachedSet = std::unique_ptr<RooArgSet>{fNllAlt->getVariables()};
90 attachedSet->assign(*fAltParameters);
91 double altNLL = fNllAlt->getVal();
107 if( fDetailedOutputEnabled ) {
108 if( !fDetailedOutput ) {
109 fDetailedOutput = std::make_unique<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 );
118 return nullNLL - altNLL;