52 oocoutW(
_context, Minimization) <<
"RooAbsMinimizerFcn::RooAbsMinimizerFcn: removing parameter "
53 << param->
GetName() <<
" from list because it is not of type RooRealVar"
71bool RooAbsMinimizerFcn::synchronizeParameterSettings(std::vector<ROOT::Fit::ParameterSettings> ¶meters,
76 for (std::size_t i = 0; i <
_allParams.size(); ++i) {
79 ss <<
"RooMinimzer: the parameter named " <<
_allParams[i].GetName()
80 <<
" is not constant anymore, but it was constant at the time where the RooMinimizer was constructed."
81 " This is illegal. The other way around is supported: you can always change the constant flag of "
82 "parameters that were floating at the time the minimizer was instantiated.";
83 oocxcoutF(
nullptr, LinkStateMgmt) <<
ss.str() << std::endl;
84 throw std::runtime_error(
ss.str());
88 std::vector<ROOT::Fit::ParameterSettings>
oldParameters = parameters;
101 double pmin = par.hasMin() ? par.getMin() : 0.0;
102 double pmax = par.hasMax() ? par.getMax() : 0.0;
105 double pstep = par.getError();
108 if (par.hasMin() && par.hasMax()) {
114 }
else if (par.getVal() -
pmin < 2 *
pstep) {
128 <<
"RooAbsMinimizerFcn::synchronize: WARNING: no initial error estimate available for " << par.GetName()
129 <<
": using " <<
pstep << std::endl;
133 if (par.hasMin() && par.hasMax()) {
134 parameters.emplace_back(par.GetName(), par.getVal(),
pstep,
pmin,
pmax);
136 parameters.emplace_back(par.GetName(), par.getVal(),
pstep);
138 parameters.back().SetLowerLimit(
pmin);
139 }
else if (par.hasMax()) {
140 parameters.back().SetUpperLimit(
pmax);
144 par.isConstant() ? parameters.back().Fix() : parameters.back().Release();
151 auto const &
newParam = parameters[i];
162bool RooAbsMinimizerFcn::Synchronize(std::vector<ROOT::Fit::ParameterSettings> ¶meters)
164 return synchronizeParameterSettings(parameters,
_optConst);
168void RooAbsMinimizerFcn::BackProp()
186 if (eplus > 0 ||
eminus < 0) {
188 param.setAsymError(
eminus, eplus);
191 param.removeAsymError();
199bool RooAbsMinimizerFcn::SetLogFile(
const char *
inLogfile)
202 oocoutI(
_context, Minimization) <<
"RooAbsMinimizerFcn::setLogFile: closing previous log file" << std::endl;
221void RooAbsMinimizerFcn::ApplyCovarianceMatrix(
TMatrixDSym &V)
223 for (
unsigned int i = 0; i <
getNDim(); i++) {
229bool RooAbsMinimizerFcn::SetPdfParamVal(
int index,
double value)
const
233 if (par.getVal() !=
value) {
235 std::cout << par.GetName() <<
"=" <<
value <<
", ";
247void RooAbsMinimizerFcn::printEvalErrors()
const
249 if (cfg().printEvalErrors < 0)
252 std::ostringstream
msg;
253 if (cfg().doEEWall) {
254 msg <<
"RooAbsMinimizerFcn: Minimized function has error status." << std::endl
255 <<
"Returning maximum FCN so far (" <<
_maxFCN
256 <<
") to force MIGRAD to back out of this region. Error log follows.\n";
258 msg <<
"RooAbsMinimizerFcn: Minimized function has error status but is ignored.\n";
261 msg <<
"Parameter values: ";
262 for (std::size_t i = 0; i <
getNDim(); ++i) {
264 msg <<
"\t" << var.GetName() <<
"=" << var.getVal();
278double RooAbsMinimizerFcn::applyEvalErrorHandling(
double fvalue)
const
285 if (cfg().doEEWall) {
302void RooAbsMinimizerFcn::finishDoEval()
const
307void RooAbsMinimizerFcn::setOptimizeConst(
int flag)
309 auto ctx =
_context->makeEvalErrorContext();
312 if (
_context->getPrintLevel() > -1) {
313 oocoutI(
_context, Minimization) <<
"RooAbsMinimizerFcn::setOptimizeConst: deactivating const optimization"
319 if (
_context->getPrintLevel() > -1) {
320 oocoutI(
_context, Minimization) <<
"RooAbsMinimizerFcn::setOptimizeConst: activating const optimization"
326 if (
_context->getPrintLevel() > -1) {
327 oocoutI(
_context, Minimization) <<
"RooAbsMinimizerFcn::setOptimizeConst: const optimization already active"
331 if (
_context->getPrintLevel() > -1) {
332 oocoutI(
_context, Minimization) <<
"RooAbsMinimizerFcn::setOptimizeConst: const optimization wasn't active"
340 auto ctx =
_context->makeEvalErrorContext();
345 <<
"RooAbsMinimizerFcn::optimizeConstantTerms: set of constant parameters changed, rerunning const optimizer"
350 <<
"RooAbsMinimizerFcn::optimizeConstantTerms: constant parameter values changed, rerunning const optimizer"
356RooArgList RooAbsMinimizerFcn::floatParams()
const
366RooArgList RooAbsMinimizerFcn::constParams()
const
376RooArgList RooAbsMinimizerFcn::initFloatParams()
const
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
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 value
Common abstract base class for objects that represent a value and a "shape" in RooFit.
const char * GetName() const override
Returns name of object.
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
static Int_t numEvalErrors()
Return the number of logged evaluation errors since the last clearing.
static void printEvalErrors(std::ostream &os=std::cout, Int_t maxPerNode=10000000)
Print all outstanding logged evaluation error on the given ostream.
static void clearEvalErrorLog()
Clear the stack of evaluation error messages.
RooArgList 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...
static float unpackNaN(double val)
If val is NaN and a this NaN has been tagged as containing a payload, unpack the float from the manti...