16 #ifndef ROO_FORMULA_VAR
17 #define ROO_FORMULA_VAR
29 class RooFormulaVar :
public RooAbsReal {
33 RooFormulaVar(
const char *name,
const char *title,
const char* formula,
const RooArgList& dependents,
bool checkVariables =
true);
34 RooFormulaVar(
const char *name,
const char *title,
const RooArgList& dependents,
bool checkVariables =
true);
35 RooFormulaVar(
const RooFormulaVar& other,
const char* name=0);
36 virtual TObject* clone(
const char* newname)
const {
return new RooFormulaVar(*
this,newname); }
38 inline Bool_t ok()
const {
return formula().ok() ; }
40 inline RooAbsArg* getParameter(
const char* name)
const {
42 return _actualVars.find(name) ;
44 inline RooAbsArg* getParameter(Int_t index)
const {
46 return _actualVars.at(index) ;
50 virtual Bool_t readFromStream(std::istream& is, Bool_t compact, Bool_t verbose=kFALSE) ;
51 virtual void writeToStream(std::ostream& os, Bool_t compact)
const ;
54 virtual void printMultiline(std::ostream& os, Int_t contents, Bool_t verbose=kFALSE, TString indent=
"")
const ;
55 void printMetaArgs(std::ostream& os)
const ;
58 void dumpFormula() { formula().dump() ; }
60 virtual Double_t defaultErrorLevel()
const ;
62 virtual std::list<Double_t>* binBoundaries(RooAbsRealLValue& , Double_t , Double_t )
const ;
63 virtual std::list<Double_t>* plotSamplingHint(RooAbsRealLValue& , Double_t , Double_t )
const ;
66 virtual Double_t evaluate()
const ;
70 virtual Bool_t redirectServersHook(
const RooAbsCollection& newServerList, Bool_t mustReplaceAll, Bool_t nameChange, Bool_t isRecursive) ;
72 virtual Bool_t isValidReal(Double_t , Bool_t )
const {
return true;}
75 RooFormula& formula()
const;
77 RooListProxy _actualVars ;
78 std::unique_ptr<RooFormula> _formula{
nullptr};
79 mutable RooArgSet* _nset{
nullptr};
82 ClassDef(RooFormulaVar,1)