56#ifdef ROOFIT_LEGACY_EVAL_BACKEND
61using std::ostream, std::istream, std::list;
79 bool checkVariables) :
81 _actualVars(
"actualVars",
"Variables used by formula expression",this),
85 _value = traceEval(nullptr);
87 _formula = new RooFormula(GetName(), _formExpr, dependents, checkVariables);
88 _formExpr = _formula->formulaString().c_str();
89 _actualVars.add(_formula->actualDependents());
102 bool checkVariables) :
104 _actualVars(
"actualVars",
"Variables used by formula expression",this),
108 _value = traceEval(nullptr);
110 _formula = new RooFormula(GetName(), _formExpr, dependents, checkVariables);
111 _formExpr = _formula->formulaString().c_str();
112 _actualVars.add(_formula->actualDependents());
127 _formula = new RooFormula(*other._formula);
128 _formExpr = _formula->formulaString().c_str();
174 bool error =
getFormula().changeDependents(newServerList,mustReplaceAll,nameChange);
202 os <<
"formula=\"" <<
_formExpr <<
"\" " ;
213 coutE(InputArguments) <<
"RooFormulaVar::readFromStream(" <<
GetName() <<
"): can't read" << std::endl ;
225 std::cout <<
getVal() << std::endl ;
239 auto func =
static_cast<const RooAbsReal*
>(par);
240 list<double>* binb =
nullptr;
242 if (func && (binb = func->binBoundaries(obs,xlo,xhi)) ) {
258 auto func =
dynamic_cast<const RooAbsReal*
>(par);
259 list<double>* hint =
nullptr;
261 if (func && (hint = func->plotSamplingHint(obs,xlo,xhi)) ) {
285#ifdef ROOFIT_LEGACY_EVAL_BACKEND
287 if (
dynamic_cast<RooNLLVar*
>(arg)) {
290 if (
dynamic_cast<RooChi2Var*
>(arg)) {
296 if (nllArg && !chi2Arg) {
297 coutI(Minimization) <<
"RooFormulaVar::defaultErrorLevel(" <<
GetName()
298 <<
") Formula contains a RooNLLVar, using its error level" << std::endl ;
300 }
else if (chi2Arg && !nllArg) {
301 coutI(Minimization) <<
"RooFormulaVar::defaultErrorLevel(" <<
GetName()
302 <<
") Formula contains a RooChi2Var, using its error level" << std::endl ;
304 }
else if (!nllArg && !chi2Arg) {
305 coutI(Minimization) <<
"RooFormulaVar::defaultErrorLevel(" <<
GetName() <<
") WARNING: "
306 <<
"Formula contains neither RooNLLVar nor RooChi2Var server, using default level of 1.0" << std::endl ;
308 coutI(Minimization) <<
"RooFormulaVar::defaultErrorLevel(" <<
GetName() <<
") WARNING: "
309 <<
"Formula contains BOTH RooNLLVar and RooChi2Var server, using default level of 1.0" << std::endl ;
317 return getFormula().getTFormula()->GetUniqueFuncName().Data();
320std::unique_ptr<RooAbsArg>
333 auto newArg = std::unique_ptr<RooAbsArg>{
static_cast<RooAbsArg *
>(
Clone())};
int Int_t
Signed integer 4 bytes (int).
static void indent(ostringstream &buf, int indent_level)
RooFit::OwningPtr< RooArgSet > getObservables(const RooArgSet &set, bool valueOnly=true) const
Given a set of possible observables, return the observables that this PDF depends on.
TObject * Clone(const char *newname=nullptr) const override
Make a clone of an object using the Streamer facility.
RooAbsArg()
Default constructor.
friend class RooAbsCollection
Abstract base class for objects that represent a real value that may appear on the left hand side of ...
double getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
RooAbsReal()
coverity[UNINIT_CTOR] Default constructor
virtual double defaultErrorLevel() const
void printMultiline(std::ostream &os, Int_t contents, bool verbose=false, TString indent="") const override
Structure printing.
bool redirectServersHook(const RooAbsCollection &newServerList, bool mustReplaceAll, bool nameChange, bool isRecursiveStep) override
Function that is called at the end of redirectServers().
RooArgList is a container object that can hold multiple RooAbsArg objects.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
void markAsCompiled(RooAbsArg &arg) const
void compileServers(RooAbsArg &arg, RooArgSet const &normSet)
const char * GetName() const override
Returns name of object.
const char * GetTitle() const override
Returns title of object.