17#ifndef ROO_ABS_MINIMIZER_FCN
18#define ROO_ABS_MINIMIZER_FCN
39 RooAbsMinimizerFcn(RooArgList paramList, RooMinimizer *context);
40 virtual ~RooAbsMinimizerFcn() =
default;
42 virtual void initMinimizer(ROOT::Math::Minimizer &, RooMinimizer *context) = 0;
45 bool synchronizeParameterSettings(std::vector<ROOT::Fit::ParameterSettings> ¶meters,
bool optConst);
50 virtual bool Synchronize(std::vector<ROOT::Fit::ParameterSettings> ¶meters);
52 RooArgList
const &allParams()
const {
return _allParams; }
53 RooArgList floatParams()
const;
54 RooArgList constParams()
const;
55 RooArgList initFloatParams()
const;
56 Int_t GetNumInvalidNLL()
const {
return _numBadNLL; }
58 double &GetMaxFCN() {
return _maxFCN; }
59 Int_t evalCounter()
const {
return _evalCounter; }
60 void zeroEvalCount() { _evalCounter = 0; }
62 double &getOffset()
const {
return _funcOffset; }
68 virtual std::string getFunctionName()
const = 0;
70 virtual std::string getFunctionTitle()
const = 0;
75 bool SetLogFile(
const char *inLogfile);
76 std::ofstream *GetLogFile() {
return _logfile; }
78 unsigned int getNDim()
const {
return _floatableParamIndices.size(); }
80 void setOptimizeConst(
Int_t flag);
82 bool SetPdfParamVal(
int index,
double value)
const;
85 virtual void setOffsetting(
bool flag) = 0;
87 RooMinimizer::Config
const &cfg()
const {
return _context->_cfg; }
89 inline RooRealVar &floatableParam(std::size_t i)
const
91 return static_cast<RooRealVar &
>(_allParams[_floatableParamIndices[i]]);
94 virtual RooArgSet freezeDisconnectedParameters()
const {
return {}; }
97 void optimizeConstantTerms(
bool constStatChange,
bool constValChange);
102 void printEvalErrors()
const;
104 double applyEvalErrorHandling(
double fvalue)
const;
105 void finishDoEval()
const;
107 inline static bool canBeFloating(RooAbsArg
const &arg) {
return dynamic_cast<RooRealVar
const *
>(&arg); }
110 inline static bool treatAsConstant(RooAbsArg
const &arg) {
return arg.
isConstant() || !canBeFloating(arg); }
113 RooMinimizer *_context =
nullptr;
117 mutable double _maxFCN = -std::numeric_limits<double>::infinity();
118 mutable double _funcOffset{0.};
119 mutable int _numBadNLL = 0;
120 mutable int _evalCounter{0};
126 bool _optConst =
false;
128 RooArgList _allParams;
129 RooArgList _allParamsInit;
131 std::vector<std::size_t> _floatableParamIndices;
133 std::ofstream *_logfile =
nullptr;
int Int_t
Signed integer 4 bytes (int).
TMatrixTSym< Double_t > TMatrixDSym
bool isConstant() const
Check if the "Constant" attribute is set.