11 #ifndef ROOSTATS_MaxLikelihoodEstimateTestStat
12 #define ROOSTATS_MaxLikelihoodEstimateTestStat
39 class MaxLikelihoodEstimateTestStat:
public TestStatistic {
44 MaxLikelihoodEstimateTestStat() :
45 fPdf(NULL),fParameter(NULL), fUpperLimit(true)
51 fMinimizer=::ROOT::Math::MinimizerOptions::DefaultMinimizerType().c_str();
52 fStrategy=::ROOT::Math::MinimizerOptions::DefaultStrategy();
53 fPrintLevel=::ROOT::Math::MinimizerOptions::DefaultPrintLevel();
57 MaxLikelihoodEstimateTestStat(RooAbsPdf& pdf, RooRealVar& parameter) :
58 fPdf(&pdf),fParameter(¶meter), fUpperLimit(true)
63 fMinimizer=::ROOT::Math::MinimizerOptions::DefaultMinimizerType().c_str();
64 fStrategy=::ROOT::Math::MinimizerOptions::DefaultStrategy();
65 fPrintLevel=::ROOT::Math::MinimizerOptions::DefaultPrintLevel();
70 virtual Double_t Evaluate(RooAbsData& data, RooArgSet& ) {
73 RooFit::MsgLevel msglevel = RooMsgService::instance().globalKillBelow();
74 RooMsgService::instance().setGlobalKillBelow(RooFit::FATAL);
85 RooArgSet* allParams = fPdf->getParameters(data);
86 RooStats::RemoveConstantParameters(allParams);
89 RooAbsReal* nll = fPdf->createNLL(data, RooFit::CloneData(kFALSE),RooFit::Constrain(*allParams),RooFit::ConditionalObservables(fConditionalObs));
104 RooMinimizer minim(*nll);
105 minim.setStrategy(fStrategy);
107 minim.setPrintLevel(fPrintLevel-1);
110 for (
int tries = 0, maxtries = 4; tries <= maxtries; ++tries) {
112 status = minim.minimize(fMinimizer,
"Minimize");
117 printf(
" ----> Doing a re-scan first\n");
118 minim.minimize(fMinimizer,
"Scan");
121 printf(
" ----> trying with strategy = 1\n");
122 minim.setStrategy(1);
129 RooMsgService::instance().setGlobalKillBelow(msglevel);
132 if (status != 0)
return -1;
133 return fParameter->getVal();
138 virtual const TString GetVarName()
const {
139 TString varName = Form(
"Maximum Likelihood Estimate of %s",fParameter->GetName());
144 virtual void PValueIsRightTail(
bool isright) { fUpperLimit = isright; }
145 virtual bool PValueIsRightTail(
void)
const {
return fUpperLimit; }
149 virtual void SetConditionalObservables(
const RooArgSet& set) {fConditionalObs.removeAll(); fConditionalObs.add(set);}
154 RooRealVar *fParameter;
155 RooArgSet fConditionalObs;
164 ClassDef(MaxLikelihoodEstimateTestStat,2)