58#ifdef ROOFIT_MULTIPROCESS
78class FreezeDisconnectedParametersRAII {
81 : _minimizer{minimizer}, _frozen{fcn.freezeDisconnectedParameters()}
83 if (!_frozen.empty()) {
84 oocoutI(_minimizer, Minimization) <<
"Freezing disconnected parameters: " << _frozen << std::endl;
87 ~FreezeDisconnectedParametersRAII()
89 if (!_frozen.empty()) {
90 oocoutI(_minimizer, Minimization) <<
"Unfreezing disconnected parameters: " << _frozen << std::endl;
100std::vector<std::vector<int>> generateOrthogonalCombinations(
const std::vector<int> &maxValues)
102 std::vector<std::vector<int>> combos;
103 std::vector<int> base(maxValues.size(), 0);
104 combos.push_back(base);
105 for (
size_t i = 0; i < maxValues.size(); ++i) {
106 for (
int v = 1;
v < maxValues[i]; ++
v) {
107 std::vector<int> tmp = base;
109 combos.push_back(tmp);
115void reorderCombinations(std::vector<std::vector<int>> &combos,
const std::vector<int> &max,
116 const std::vector<int> &base)
118 for (
auto &combo : combos) {
119 for (
size_t i = 0; i < combo.size(); ++i) {
120 combo[i] = (combo[i] + base[i]) % max[i];
133std::unique_ptr<ChangeOperModeRAII> setOperModesDirty(
RooAbsReal &function)
135 if (
auto *wrapper =
dynamic_cast<RooFit::Experimental::RooEvaluatorWrapper *
>(&function)) {
159 if (nll_real !=
nullptr) {
162#ifdef ROOFIT_MULTIPROCESS
166 coutI(InputArguments) <<
"Modular likelihood detected and likelihood parallelization requested, "
167 <<
"also setting parallel gradient calculation mode." << std::endl;
176 _fcn = std::make_unique<RooFit::TestStatistics::MinuitFcnGrad>(
179 static_cast<RooFit::TestStatistics::LikelihoodMode>(int(_cfg.enableParallelDescent))},
182 throw std::logic_error(
183 "Parallel minimization requested, but multiprocessing is not supported on this platform");
186 coutW(InputArguments)
187 <<
"Requested modular likelihood without gradient parallelization, some features such as offsetting "
188 <<
"may not work yet. Non-modular likelihoods are more reliable without parallelization." << std::endl;
194 _fcn = std::make_unique<RooMinimizerFcn>(&function,
this);
198 throw std::logic_error(
"In RooMinimizer constructor: Selected likelihood evaluation but a "
199 "non-modular likelihood was given. Please supply ModularL(true) as an "
200 "argument to createNLL for modular likelihoods to use likelihood "
201 "or gradient parallelization.");
203 _fcn = std::make_unique<RooMinimizerFcn>(&function,
this);
211 RooSentinel::activate();
319 std::stringstream ss;
320 ss <<
"In RooMinimizer::setMinimizerType: only Minuit2 is supported when not using classic function mode!";
322 ss <<
"\nPlease set it as your default minimizer via "
323 "ROOT::Math::MinimizerOptions::SetDefaultMinimizer(\"Minuit2\").";
325 throw std::invalid_argument(ss.str());
336 coutE(Minimization) <<
"RooMinimizer: all function calls during minimization gave invalid NLL values!"
353#ifdef ROOFIT_MULTIPROCESS
356 throw std::logic_error(
"ProcessTimer requested, but multiprocessing is not supported on this platform.");
387 return exec(
"migrad",
"MIGRAD");
392 FreezeDisconnectedParametersRAII freeze(
this, *
_fcn);
400 if (algoName ==
"hesse") {
404 }
else if (algoName ==
"minos") {
431 coutW(Minimization) <<
"RooMinimizer::hesse: Error, run Migrad before Hesse!" << std::endl;
436 return exec(
"hesse",
"HESSE");
448 coutW(Minimization) <<
"RooMinimizer::minos: Error, run Migrad before Minos!" << std::endl;
453 return exec(
"minos",
"MINOS");
465 coutW(Minimization) <<
"RooMinimizer::minos: Error, run Migrad before Minos!" << std::endl;
467 }
else if (!minosParamList.
empty()) {
468 FreezeDisconnectedParametersRAII freeze(
this, *
_fcn);
476 std::vector<unsigned int> paramInd;
482 paramInd.push_back(
index);
486 if (!paramInd.empty()) {
514 return exec(
"seek",
"SEEK");
525 return exec(
"simplex",
"SIMPLEX");
536 return exec(
"migradimproved",
"IMPROVE");
573 coutW(Minimization) <<
"RooMinimizer::save: Error, run minimization before!" << std::endl;
577 std::string
name = userName ? std::string{userName} :
_fcn->getFunctionName();
578 std::string title = userTitle ? std::string{userTitle} :
_fcn->getFunctionTitle();
579 auto fitRes = std::make_unique<RooFitResult>(
name.c_str(), title.c_str());
581 fitRes->setConstParList(
_fcn->constParams());
583 fitRes->setNumInvalidNLL(
_fcn->GetNumInvalidNLL());
586 fitRes->setCovQual(
_minimizer->CovMatrixStatus());
587 fitRes->setMinNLL(
_result->fVal -
_fcn->getOffset());
590 fitRes->setInitParList(
_fcn->initFloatParams());
591 fitRes->setFinalParList(
_fcn->floatParams());
596 fitRes->setCovarianceMatrix(*
_extV);
607double covMatrix(std::vector<double>
const &covMat,
unsigned int i,
unsigned int j)
611 return j < i ? covMat[j + i * (i + 1) / 2] : covMat[i + j * (j + 1) / 2];
615double correlation(std::vector<double>
const &covMat,
unsigned int i,
unsigned int j)
619 double tmp = covMatrix(covMat, i, i) * covMatrix(covMat, j, j);
620 return tmp > 0 ? covMatrix(covMat, i, j) / std::sqrt(tmp) : 0;
627 const std::size_t nParams =
_fcn->getNDim();
630 std::vector<double> globalCC =
_minimizer->GlobalCC();
631 globalCC.resize(nParams);
632 for (std::size_t ic = 0; ic < nParams; ic++) {
633 for (std::size_t ii = 0; ii < nParams; ii++) {
634 corrs(ic, ii) = correlation(
_result->fCovMatrix, ic, ii);
635 covs(ic, ii) = covMatrix(
_result->fCovMatrix, ic, ii);
658 double n5,
double n6,
unsigned int npoints)
665 int index1 = params.
index(&var1);
667 coutE(Minimization) <<
"RooMinimizer::contour(" <<
GetName() <<
") ERROR: " << var1.
GetName()
668 <<
" is not a floating parameter of " <<
_fcn->getFunctionName() << std::endl;
672 int index2 = params.
index(&var2);
674 coutE(Minimization) <<
"RooMinimizer::contour(" <<
GetName() <<
") ERROR: " << var2.
GetName()
675 <<
" is not a floating parameter of PDF " <<
_fcn->getFunctionName() << std::endl;
689 coutW(Minimization) <<
"RooMinimizer::contour: Error, run Migrad before contours!" << std::endl;
704 auto operModeRAII = setOperModesDirty(
_function);
705 for (
int ic = 0; ic < 6; ic++) {
712 std::vector<double> xcoor(npoints + 1);
713 std::vector<double> ycoor(npoints + 1);
714 bool ret =
_minimizer->Contour(index1, index2, npoints, xcoor.data(), ycoor.data());
717 coutE(Minimization) <<
"RooMinimizer::contour(" <<
GetName()
718 <<
") ERROR: MINUIT did not return a contour graph for n=" <<
n[ic] << std::endl;
720 xcoor[npoints] = xcoor[0];
721 ycoor[npoints] = ycoor[0];
722 TGraph *graph =
new TGraph(npoints + 1, xcoor.data(), ycoor.data());
724 std::stringstream
name;
725 name <<
"contour_" <<
_fcn->getFunctionName() <<
"_n" <<
n[ic];
749#ifdef ROOFIT_MULTIPROCESS
751 std::vector<std::string> parameter_names;
753 parameter_names.push_back(parameter->GetName());
755 coutI(Minimization) <<
"parameter name: " << parameter_names.back() << std::endl;
760 coutI(Minimization) <<
"Not adding parameters to processtimer because multiprocessing is not enabled." << std::endl;
784 coutI(Minimization) <<
"Command timer: ";
786 coutI(Minimization) <<
"Session timer: ";
808 oocoutE(
nullptr, InputArguments) <<
"RooMinimizer::save: Error, run minimization before!" << std::endl;
812 auto res = std::make_unique<RooFitResult>(
"lastMinuitFit",
"Last MINUIT fit");
821 for (
unsigned int i = 0; i <
_fcn->getNDim(); ++i) {
824 bool isConst(
_result->isParameterFixed(i));
828 double xerr =
_result->error(i);
829 double xval =
_result->fParams[i];
831 std::unique_ptr<RooRealVar> var;
833 if ((xlo < xhi) && !isConst) {
834 var = std::make_unique<RooRealVar>(varName, varName, xval, xlo, xhi);
836 var = std::make_unique<RooRealVar>(varName, varName, xval);
838 var->setConstant(isConst);
848 res->setConstParList(constPars);
849 res->setInitParList(floatPars);
850 res->setFinalParList(floatPars);
853 res->setCovQual(
_minimizer->CovMatrixStatus());
854 res->setStatus(
_result->fStatus);
879 return _fcn->evalCounter();
883 _fcn->zeroEvalCount();
888 return _fcn->getNDim();
893 return _fcn->GetLogFile();
897 return _fcn->GetMaxFCN();
901 return _fcn->getOffset();
911 return std::make_unique<RooAbsReal::EvalErrorContext>(
m);
919 auto operModeRAII = setOperModesDirty(
_function);
924 coutE(Minimization) <<
"RooMinimizer::fitFCN(): FCN function has zero parameters" << std::endl;
933 for (
auto arg :
_fcn->allParams()) {
934 if (arg->isCategory() && !arg->isConstant())
935 floatingCats.
add(*arg);
938 std::vector<RooCategory *> pdfIndices;
939 for (
auto *arg : floatingCats) {
941 pdfIndices.push_back(cat);
944 const size_t nPdfs = pdfIndices.size();
948 for (
auto arg :
_fcn->allParams()) {
949 if (!arg->isCategory() && !arg->isConstant())
950 floatReals.
add(*arg);
954 coutI(Minimization) <<
"[fitFCN] No discrete parameters, performing continuous minimization only" << std::endl;
955 FreezeDisconnectedParametersRAII freeze(
this, *
_fcn);
958 _result = std::make_unique<FitResult>();
967 std::vector<int> maxIndices;
968 maxIndices.reserve(pdfIndices.size());
969 for (
auto *cat : pdfIndices)
970 maxIndices.push_back(cat->size());
972 std::set<std::vector<int>> tried;
973 std::map<std::vector<int>,
double> nllMap;
974 std::vector<int> bestIndices(nPdfs, 0);
975 double bestNLL = 1e30;
977 bool improved =
true;
980 auto combos = generateOrthogonalCombinations(maxIndices);
981 reorderCombinations(combos, maxIndices, bestIndices);
983 for (
const auto &combo : combos) {
984 if (tried.count(combo))
987 for (
size_t i = 0; i < nPdfs; ++i)
988 pdfIndices[i]->setIndex(combo[i]);
991 std::vector<bool> wasConst(nPdfs);
992 for (
size_t i = 0; i < nPdfs; ++i) {
993 wasConst[i] = pdfIndices[i]->isConstant();
994 pdfIndices[i]->setConstant(
true);
996 FreezeDisconnectedParametersRAII freeze(
this, *
_fcn);
999 for (
size_t i = 0; i < nPdfs; ++i)
1000 pdfIndices[i]->setConstant(wasConst[i]);
1003 tried.insert(combo);
1004 nllMap[combo] = val;
1006 if (val < bestNLL) {
1008 bestIndices = combo;
1014 for (
size_t i = 0; i < nPdfs; ++i) {
1015 pdfIndices[i]->setIndex(bestIndices[i]);
1018 FreezeDisconnectedParametersRAII freeze(
this, *
_fcn);
1021 coutI(Minimization) <<
"All NLL Values per Combination:" << std::endl;
1022 for (
const auto &entry : nllMap) {
1023 const auto &combo = entry.first;
1024 double val = entry.second;
1026 std::stringstream ss;
1028 for (
size_t i = 0; i < combo.size(); ++i) {
1030 if (i + 1 < combo.size())
1033 ss <<
"], NLL: " << val;
1035 coutI(Minimization) << ss.str() << std::endl;
1038 std::stringstream ssBest;
1039 ssBest <<
"DP Best Indices: [";
1040 for (
size_t i = 0; i < bestIndices.size(); ++i) {
1041 ssBest << bestIndices[i];
1042 if (i + 1 < bestIndices.size())
1045 ssBest <<
"], NLL = " << bestNLL;
1047 coutI(Minimization) << ssBest.str() << std::endl;
1050 _result = std::make_unique<FitResult>();
1061 auto operModeRAII = setOperModesDirty(
_function);
1065 coutE(Minimization) <<
"RooMinimizer::calculateHessErrors() Error re-initializing the minimizer" << std::endl;
1072 coutE(Minimization) <<
"RooMinimizer::calculateHessErrors() Error when calculating Hessian" << std::endl;
1097 auto operModeRAII = setOperModesDirty(
_function);
1101 coutE(Minimization) <<
"RooMinimizer::calculateHessErrors() Error re-initializing the minimizer" << std::endl;
1106 unsigned int n = (!ipars.empty()) ? ipars.size() :
_fcn->getNDim();
1114 if (iparNewMin > 0) {
1115 coutI(Minimization) <<
"RooMinimizer::calculateMinosErrors() Run again Minos for some parameters because a "
1116 "new Minimum has been found"
1120 for (
int i = 0; i < iparMax; ++i) {
1123 unsigned int index = (!ipars.empty()) ? ipars[i] : i;
1130 _result->fMinosErrors.emplace(
index, std::make_pair(elow, eup));
1134 iparMax = iparNewMin;
1136 }
while (iparNewMin > 0 && iter < 10);
1139 <<
"RooMinimizer::calculateMinosErrors() Minos error calculation failed for all the selected parameters"
1157 std::vector<double>
v;
1158 for (std::size_t i = 0; i <
_fcn->getNDim(); ++i) {
1175 if (canDifferentMinim) {
1176 std::string msg =
"Using now " + newMinimType;
1177 coutI(Minimization) <<
"RooMinimizer::updateMinimizerOptions(): " << msg << std::endl;
1180 std::string msg =
"Cannot change minimizer. Continue using " +
_result->fMinimType;
1181 coutW(Minimization) <<
"RooMinimizer::updateMinimizerOptions() " << msg << std::endl;
1200 for (
unsigned int i = 0; i <
_config.
NPar(); ++i) {
1211 fParams(fconfig.NPar()),
1212 fErrors(fconfig.NPar()),
1213 fMinimType(fconfig.MinimizerType())
1221 if ((
fMinimType.find(
"Fumili") == std::string::npos) && (
fMinimType.find(
"GSLMultiFit") == std::string::npos)) {
1227 for (
unsigned int i = 0; i < fconfig.
NPar(); ++i) {
1244 _result->fStatus = min.Status();
1245 _result->fCovStatus = min.CovMatrixStatus();
1246 _result->fVal = min.MinValue();
1251 const unsigned int npar = min.NDim();
1256 _result->fParams = std::vector<double>(min.X(), min.X() + npar);
1259 _result->fParams.resize(npar);
1260 for (
unsigned int i = 0; i < npar; ++i) {
1266 for (
unsigned int ipar = 0; ipar < npar; ++ipar) {
1268 _result->fFixedParams[ipar] =
true;
1276 if (min.Errors() !=
nullptr) {
1292 const std::size_t npar =
_result->fParams.size();
1296 _result->fVal = min.MinValue();
1298 _result->fStatus = min.Status();
1299 _result->fCovStatus = min.CovMatrixStatus();
1302 std::copy(min.X(), min.X() + npar,
_result->fParams.begin());
1304 if (min.Errors() !=
nullptr) {
1313 const std::size_t npar =
_result->fParams.size();
1315 _result->fErrors.resize(npar);
1316 std::copy(min.Errors(), min.Errors() + npar,
_result->fErrors.begin());
1318 if (
_result->fCovStatus != 0) {
1321 unsigned int r = npar * (npar + 1) / 2;
1324 for (
unsigned int i = 0; i < npar; ++i) {
1325 for (
unsigned int j = 0; j <= i; ++j)
1326 _result->fCovMatrix[
l++] = min.CovMatrix(i, j);
1336 auto itr = fMinosErrors.find(i);
1337 return (itr != fMinosErrors.end()) ? itr->second.first : error(i);
1344 auto itr = fMinosErrors.find(i);
1345 return (itr != fMinosErrors.end()) ? itr->second.second : error(i);
1350 return fFixedParams.find(ipar) != fFixedParams.end();
1355 const size_t nParams = fParams.size();
1357 for (std::size_t ic = 0; ic < nParams; ic++) {
1358 for (std::size_t ii = 0; ii < nParams; ii++) {
1359 covs(ic, ii) = covMatrix(fCovMatrix, ic, ii);
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
Class describing the configuration of the fit, options and parameter settings using the ROOT::Fit::Pa...
const std::vector< unsigned int > & MinosParams() const
return vector of parameter indices for which the Minos Error will be computed
void SetMinimizer(const char *type, const char *algo=nullptr)
set minimizer type and algorithm
void SetMinosErrors(bool on=true)
set Minos errors computation to be performed after fitting
const std::string & MinimizerAlgoType() const
return type of minimizer algorithms
unsigned int NPar() const
number of parameters settings
std::string MinimizerName() const
return Minimizer full name (type / algorithm)
const std::vector< ROOT::Fit::ParameterSettings > & ParamsSettings() const
get the vector of parameter settings (const method)
ROOT::Math::Minimizer * CreateMinimizer()
create a new minimizer according to chosen configuration
const ParameterSettings & ParSettings(unsigned int i) const
get the parameter settings for the i-th parameter (const method)
ROOT::Math::MinimizerOptions & MinimizerOptions()
access to the minimizer control parameter (non const method)
Class, describing value, limits and step size of the parameters Provides functionality also to set/re...
bool IsFixed() const
check if is fixed
void SetValue(double val)
set the value
double LowerLimit() const
return lower limit value
void SetStepSize(double err)
set the step size
double Value() const
return parameter value
double StepSize() const
return step size
double UpperLimit() const
return upper limit value
void SetMaxFunctionCalls(unsigned int maxfcn)
set maximum of function calls
void SetStrategy(int stra)
set the strategy
void SetMaxIterations(unsigned int maxiter)
set maximum iterations (one iteration can have many function calls)
static const std::string & DefaultMinimizerType()
int PrintLevel() const
non-static methods for retrieving options
void SetErrorDef(double err)
set error def
void SetPrintLevel(int level)
set print level
void SetTolerance(double tol)
set the tolerance
Abstract Minimizer class, defining the interface for the various minimizer (like Minuit2,...
Common abstract base class for objects that represent a value and a "shape" in RooFit.
bool isConstant() const
Check if the "Constant" attribute is set.
RooAbsCollection * snapshot(bool deepCopy=true) const
Take a snap shot of current collection contents.
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
Int_t index(const RooAbsArg *arg) const
Returns index of given arg, or -1 if arg is not in the collection.
void assign(const RooAbsCollection &other) const
Sets the value, cache and constant attribute of any argument in our set that also appears in the othe...
virtual bool addOwned(RooAbsArg &var, bool silent=false)
Add an argument and transfer the ownership to the collection.
RooAbsArg * find(const char *name) const
Find object with given name in list.
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.
virtual double defaultErrorLevel() const
static void clearEvalErrorLog()
Clear the stack of evaluation error messages.
RooArgList is a container object that can hold multiple RooAbsArg objects.
RooAbsArg * at(Int_t idx) const
Return object at given index, or nullptr if index is out of range.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Object to represent discrete states.
RooFitResult is a container class to hold the input and output of a PDF fit to a dataset.
void fillCorrMatrix(const std::vector< double > &globalCC, const TMatrixDSym &corrs, const TMatrixDSym &covs)
Function called by RooMinimizer.
static void setDefaultNWorkers(unsigned int N_workers)
static void setTimingAnalysis(bool timingAnalysis)
static void add_metadata(json data)
RooAbsReal that wraps RooAbsL likelihoods for use in RooFit outside of the RooMinimizer context.
Wrapper class around ROOT::Math::Minimizer that provides a seamless interface between the minimizer f...
void setRecoverFromNaNStrength(double strength)
Try to recover from invalid function values.
int getPrintLevel()
Get the MINUIT internal printing level.
void optimizeConst(int flag)
void initMinimizerFirstPart()
Initialize the part of the minimizer that is independent of the function to be minimized.
std::ofstream * logfile()
int simplex()
Execute SIMPLEX.
std::unique_ptr< TMatrixDSym > _extV
void setMinimizerType(std::string const &type)
Choose the minimizer algorithm.
RooFit::OwningPtr< RooFitResult > save(const char *name=nullptr, const char *title=nullptr)
Save and return a RooFitResult snapshot of current minimizer status.
std::vector< std::pair< std::string, int > > _statusHistory
void profileStart()
Start profiling timer.
RooPlot * contour(RooRealVar &var1, RooRealVar &var2, double n1=1.0, double n2=2.0, double n3=0.0, double n4=0.0, double n5=0.0, double n6=0.0, unsigned int npoints=50)
Create and draw a TH2 with the error contours in the parameters var1 and var2.
std::unique_ptr< ROOT::Math::Minimizer > _minimizer
! pointer to used minimizer
bool setLogFile(const char *logf=nullptr)
void initMinimizerFcnDependentPart(double defaultErrorLevel)
Initialize the part of the minimizer that is dependent on the function to be minimized.
void fillCorrMatrix(RooFitResult &fitRes)
double & fcnOffset() const
ROOT::Fit::FitConfig _config
fitter configuration (options and parameter settings)
void profileStop()
Stop profiling timer and report results of last session.
int minos()
Execute MINOS.
bool calculateHessErrors()
int hesse()
Execute HESSE.
bool calculateMinosErrors()
void setErrorLevel(double level)
Set the level for MINUIT error analysis to the given value.
void determineStatus(bool fitterReturnValue)
int migrad()
Execute MIGRAD.
bool update(bool isValid)
bool updateMinimizerOptions(bool canDifferentMinim=true)
void setEps(double eps)
Change MINUIT epsilon.
void setPrintLevel(int newLevel)
Change the MINUIT internal printing level.
void fillResult(bool isValid)
int exec(std::string const &algoName, std::string const &statusName)
int improve()
Execute IMPROVE.
void setOffsetting(bool flag)
Enable internal likelihood offsetting for enhanced numeric precision.
RooMinimizer::Config _cfg
std::unique_ptr< FitResult > _result
! pointer to the object containing the result of the fit
RooFit::OwningPtr< RooFitResult > lastMinuitFit()
void saveStatus(const char *label, int status)
~RooMinimizer() override
Destructor.
int minimize(const char *type, const char *alg=nullptr)
Minimise the function passed in the constructor.
std::unique_ptr< RooAbsReal::EvalErrorContext > makeEvalErrorContext() const
RooMinimizer(RooAbsReal &function, Config const &cfg={})
Construct MINUIT interface to given function.
void setMaxFunctionCalls(int n)
Change maximum number of likelihood function class from MINUIT (RooMinimizer default 500 * #parameter...
void setStrategy(int istrat)
Change MINUIT strategy to istrat.
void setMaxIterations(int n)
Change maximum number of MINUIT iterations (RooMinimizer default 500 * #parameters)
void addParamsToProcessTimer()
Add parameters in metadata field to process timer.
std::unique_ptr< RooAbsMinimizerFcn > _fcn
void applyCovarianceMatrix(TMatrixDSym const &V)
Apply results of given external covariance matrix.
static RooMsgService & instance()
Return reference to singleton instance.
Plot frame and a container for graphics objects within that frame.
void addObject(TObject *obj, Option_t *drawOptions="", bool invisible=false)
Add a generic object to this plot.
Variable that can be changed from the outside.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
A TGraph is an object made of two arrays X and Y with npoints each.
void SetName(const char *name="") override
Set graph name.
TMatrixTBase< Element > & ResizeTo(Int_t nrows, Int_t ncols, Int_t=-1) override
Set size of the matrix to nrows x ncols New dynamic elements are created, the overlapping part of the...
const char * GetName() const override
Returns name of object.
virtual const char * GetName() const
Returns name of object.
void Start(Bool_t reset=kTRUE)
Start the stopwatch.
void Stop()
Stop the stopwatch.
void Print(Option_t *option="") const override
Print the real and cpu time passed between the start and stop events.
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.
bool setAllConstant(const RooAbsCollection &coll, bool constant=true)
set all RooRealVars to constants. return true if at least one changed status
Config argument to RooMinimizer constructor.
bool setInitialCovariance
std::string minimizerType
bool enableParallelGradient
double upperError(unsigned int i) const
std::string fMinimType
string indicating type of minimizer
std::vector< double > fErrors
errors
std::vector< double > fParams
parameter values. Size is total number of parameters
void GetCovarianceMatrix(TMatrixDSym &cov) const
std::map< unsigned int, bool > fFixedParams
list of fixed parameters
bool isParameterFixed(unsigned int ipar) const
double lowerError(unsigned int i) const