95 assert(model.GetPdf() );
121 if (!data || !pdf )
return nullptr;
124 std::unique_ptr<RooArgSet> constrainedParams{pdf->
getParameters(*data)};
125 if (!constrainedParams)
return nullptr;
138 oocoutP(
nullptr,
Minimization) <<
"ProfileLikelihoodCalcultor::DoGLobalFit - find MLE " << std::endl;
147 oocoutW(
nullptr,
Minimization) <<
"ProfileLikelihoodCalcultor::DoGlobalFit - Global fit failed - status = " <<
fFitResult->status() << std::endl;
159 const char * minimType =
"";
176 <<
" / " << minimAlgo <<
" with strategy " << strategy << std::endl;
179 for (
int tries = 1, maxtries = 4; tries <= maxtries; ++tries) {
180 status = minim.
minimize(minimType,minimAlgo);
181 if (status%1000 == 0) {
183 }
else if (tries < maxtries) {
187 if (strategy == 0 ) {
196 minimType =
"Minuit";
197 minimAlgo =
"migradimproved";
214 if (!data || !pdf ||
fPOI.empty())
return nullptr;
216 std::unique_ptr<RooArgSet> constrainedParams{pdf->
getParameters(*data)};
228 if (!nll)
return nullptr;
234 std::unique_ptr<RooAbsReal> profile{nll->createProfile(
fPOI)};
235 profile->addOwnedComponents(std::move(nll)) ;
240 for (std::size_t i = 0; i < fitParams.
size(); ++i) {
262 for (
auto const *arg :
fPOI){
291 if (!data || !pdf)
return nullptr;
303 if (!nll)
return nullptr;
309 std::unique_ptr<RooArgSet> constrainedParams{pdf->
getParameters(*data)};
317 std::vector<double> oldValues(poiList.
size() );
318 for (
unsigned int i = 0; i < oldValues.size(); ++i) {
319 RooRealVar * mytarget =
static_cast<RooRealVar*
>(constrainedParams->find(poiList[i].GetName()));
321 oldValues[i] = mytarget->
getVal();
332 RooArgSet nuisParams(*constrainedParams);
338 bool existVarParams =
false;
340 if ( !myarg->isConstant() ) {
341 existVarParams =
true;
346 double nLLatCondMLE = nLLatMLE;
347 if (existVarParams) {
348 oocoutP(
nullptr,
Minimization) <<
"ProfileLikelihoodCalcultor::GetHypoTest - do conditional fit " << std::endl;
354 nLLatCondMLE = fit2->minNll();
355 fit2->printStream(
oocoutI(
nullptr,
Minimization), fit2->defaultPrintContents(
nullptr), fit2->defaultPrintStyle(
nullptr) );
357 if (fit2->status() != 0)
358 oocoutW(
nullptr,
Minimization) <<
"ProfileLikelihoodCalcultor::GetHypotest - Conditional fit failed - status = " << fit2->status() << std::endl;
364 nLLatCondMLE = nll->getVal();
370 double deltaNLL = std::max( nLLatCondMLE-nLLatMLE, 0.);
374 int ndf = poiList.
size();
379 if (ndf == 1) pvalue = 0.5 * pvalue;
385 for (
unsigned int i = 0; i < oldValues.size(); ++i) {
386 RooRealVar * mytarget =
static_cast<RooRealVar*
>(constrainedParams->find(poiList[i].GetName()));
388 mytarget->
setVal(oldValues[i] );
ROOT::RRangeCast< T, false, Range_t > static_range_cast(Range_t &&coll)
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
static int DefaultPrintLevel()
static double DefaultTolerance()
static const std::string & DefaultMinimizerAlgo()
static int DefaultStrategy()
Common abstract base class for objects that represent a value and a "shape" in RooFit.
RooFit::OwningPtr< RooArgSet > getParameters(const RooAbsData *data, bool stripDisconnected=true) const
Create a list of leaf nodes in the arg tree starting with ourself as top node that don't match any of...
Storage_t::size_type size() const
virtual RooAbsArg * addClone(const RooAbsArg &var, bool silent=false)
Add a clone of the specified argument to list.
RooAbsArg * find(const char *name) const
Find object with given name in list.
Abstract base class for binned and unbinned datasets.
Abstract interface for all probability density functions.
RooFit::OwningPtr< RooAbsReal > createNLL(RooAbsData &data, CmdArgs_t const &... cmdArgs)
Construct representation of -log(L) of PDF with given dataset.
void setConstant(bool value=true)
Abstract base class for objects that represent a real value and implements functionality common to al...
double getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
RooArgList is a container object that can hold multiple RooAbsArg objects.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Wrapper class around ROOT::Math::Minimizer that provides a seamless interface between the minimizer f...
void optimizeConst(int flag)
RooFit::OwningPtr< RooFitResult > save(const char *name=nullptr, const char *title=nullptr)
Save and return a RooFitResult snapshot of current minimizer status.
void setEvalErrorWall(bool flag)
void setEps(double eps)
Change MINUIT epsilon.
void setPrintLevel(int newLevel)
Change the MINUIT internal printing level.
std::string const & minimizerType() const
int minimize(const char *type, const char *alg=nullptr)
Minimise the function passed in the constructor.
void setStrategy(int istrat)
Change MINUIT strategy to istrat.
Variable that can be changed from the outside.
void setVal(double value) override
Set value of variable to 'value'.
void setError(double value)
CombinedCalculator()=default
RooArgSet fNullParams
RooArgSet specifying null parameters for hypothesis test.
RooArgSet fPOI
RooArgSet specifying parameters of interest for interval.
RooAbsData * GetData() const
RooArgSet fGlobalObs
RooArgSet specifying the global observables.
RooAbsPdf * GetPdf() const
double fSize
size of the test (eg. specified rate of Type I error)
RooArgSet fConditionalObs
RooArgSet specifying the conditional observables.
HypoTestResult is a base class for results from hypothesis tests.
LikelihoodInterval is a concrete implementation of the RooStats::ConfInterval interface.
void SetConfidenceLevel(double cl) override
set the confidence level for the interval (e.g 0.682 for a 1-sigma interval)
< A class that holds configuration information for a model using a workspace as a store
std::unique_ptr< RooFitResult > fFitResult
static RooFit::OwningPtr< RooFitResult > DoMinimizeNLL(RooAbsReal *nll)
minimize likelihood
HypoTestResult * GetHypoTest() const override
Return the hypothesis test result obtained from the likelihood ratio of the maximum likelihood value ...
RooFit::OwningPtr< RooAbsReal > DoGlobalFit() const
perform a global fit
bool fGlobalFitDone
flag to control if a global fit has been done
~ProfileLikelihoodCalculator() override
destructor cannot delete prod pdf because it will delete all the composing pdf's if (fOwnPdf) delete ...
void DoReset() const
clear internal fit result
LikelihoodInterval * GetInterval() const override
Return a likelihood interval.
ProfileLikelihoodCalculator()
Default constructor (needed for I/O).
const char * GetName() const override
Returns name of object.
RooCmdArg Offset(std::string const &mode)
RooCmdArg Constrain(const RooArgSet ¶ms)
RooCmdArg GlobalObservables(Args_t &&... argsOrArgSet)
RooCmdArg CloneData(bool flag)
RooCmdArg ConditionalObservables(Args_t &&... argsOrArgSet)
Create a RooCmdArg to declare conditional observables.
double chisquared_cdf_c(double x, double r, double x0=0)
Complement of the cumulative distribution function of the distribution with degrees of freedom (upp...
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
T * OwningPtr
An alias for raw pointers for indicating that the return type of a RooFit function is an owning point...
OwningPtr< T > makeOwningPtr(std::unique_ptr< T > &&ptr)
Internal helper to turn a std::unique_ptr<T> into an OwningPtr.
Namespace for the RooStats classes.
void RemoveConstantParameters(RooArgSet *set)
std::string const & NLLOffsetMode()
Test what offsetting mode RooStats should use by default.
RooStatsConfig & GetGlobalRooStatsConfig()
Retrieve the config object which can be used to set flags for things like offsetting the likelihood o...