Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RooFormulaVar.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * File: $Id: RooFormulaVar.h,v 1.29 2007/08/09 19:55:47 wouter Exp $
5 * Authors: *
6 * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
7 * DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
8 * *
9 * Copyright (c) 2000-2005, Regents of the University of California *
10 * and Stanford University. All rights reserved. *
11 * *
12 * Redistribution and use in source and binary forms, *
13 * with or without modification, are permitted according to the terms *
14 * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
15 *****************************************************************************/
16#ifndef ROO_FORMULA_VAR
17#define ROO_FORMULA_VAR
18
19#include "RooAbsReal.h"
20#include "RooArgList.h"
21#include "RooListProxy.h"
22#include "RooTrace.h"
23
24#include <memory>
25#include <list>
26
27class RooArgSet ;
28class RooFormula ;
29
30class RooFormulaVar : public RooAbsReal {
31public:
32 // Constructors, assignment etc
34 ~RooFormulaVar() override;
35 RooFormulaVar(const char *name, const char *title, const char* formula, const RooArgList& dependents, bool checkVariables = true);
36 RooFormulaVar(const char *name, const char *title, const RooArgList& dependents, bool checkVariables = true);
37 RooFormulaVar(const RooFormulaVar& other, const char* name=nullptr);
38 TObject* clone(const char* newname) const override { return new RooFormulaVar(*this,newname); }
39
40 bool ok() const;
41 const char* expression() const { return _formExpr.Data(); }
42 const RooArgList& dependents() const { return _actualVars; }
43
44 /// Return pointer to parameter with given name.
45 inline RooAbsArg* getParameter(const char* name) const {
46 return _actualVars.find(name) ;
47 }
48 /// Return pointer to parameter at given index.
50 return _actualVars.at(index) ;
51 }
52 /// Return the number of parameters.
53 inline size_t nParameters() const {
54 return _actualVars.size();
55 }
56
57 // I/O streaming interface (machine readable)
58 bool readFromStream(std::istream& is, bool compact, bool verbose=false) override ;
59 void writeToStream(std::ostream& os, bool compact) const override ;
60
61 // Printing interface (human readable)
62 void printMultiline(std::ostream& os, Int_t contents, bool verbose=false, TString indent= "") const override ;
63 void printMetaArgs(std::ostream& os) const override ;
64
65 // Debugging
66 /// Dump the formula to stdout.
67 void dumpFormula();
68
69 double defaultErrorLevel() const override ;
70
71 std::list<double>* binBoundaries(RooAbsRealLValue& /*obs*/, double /*xlo*/, double /*xhi*/) const override ;
72 std::list<double>* plotSamplingHint(RooAbsRealLValue& /*obs*/, double /*xlo*/, double /*xhi*/) const override ;
73
74 // Function evaluation
75 double evaluate() const override ;
76 void doEval(RooFit::EvalContext &ctx) const override;
77 void translate(RooFit::Detail::CodeSquashContext &ctx) const override;
78
79 protected:
80 // Post-processing of server redirection
81 bool redirectServersHook(const RooAbsCollection& newServerList, bool mustReplaceAll, bool nameChange, bool isRecursive) override ;
82
83 bool isValidReal(double /*value*/, bool /*printError*/) const override {return true;}
84
85 private:
86 RooFormula& getFormula() const;
87
88 RooListProxy _actualVars ; ///< Actual parameters used by formula engine
89 mutable RooFormula *_formula = nullptr; ///<! Formula engine
90 mutable RooArgSet* _nset{nullptr}; ///<! Normalization set to be passed along to contents
91 TString _formExpr ; ///< Formula expression string
92
93 ClassDefOverride(RooFormulaVar,1) // Real-valued function of other RooAbsArgs calculated by a TFormula expression
94};
95
96#endif
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
static void indent(ostringstream &buf, int indent_level)
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
char name[80]
Definition TGX11.cxx:110
Common abstract base class for objects that represent a value and a "shape" in RooFit.
Definition RooAbsArg.h:77
Abstract container object that can hold multiple RooAbsArg objects.
Storage_t::size_type size() const
RooAbsArg * find(const char *name) const
Find object with given name in list.
Abstract base class for objects that represent a real value that may appear on the left hand side of ...
Abstract base class for objects that represent a real value and implements functionality common to al...
Definition RooAbsReal.h:59
RooArgList is a container object that can hold multiple RooAbsArg objects.
Definition RooArgList.h:22
RooAbsArg * at(Int_t idx) const
Return object at given index, or nullptr if index is out of range.
Definition RooArgList.h:110
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition RooArgSet.h:55
A class to maintain the context for squashing of RooFit models into code.
A RooFormulaVar is a generic implementation of a real-valued object, which takes a RooArgList of serv...
RooAbsArg * getParameter(Int_t index) const
Return pointer to parameter at given index.
~RooFormulaVar() override
RooAbsArg * getParameter(const char *name) const
Return pointer to parameter with given name.
RooListProxy _actualVars
Actual parameters used by formula engine.
const char * expression() const
RooFormula & getFormula() const
Return reference to internal RooFormula object.
RooFormula * _formula
! Formula engine
void doEval(RooFit::EvalContext &ctx) const override
Base function for computing multiple values of a RooAbsReal.
void dumpFormula()
Dump the formula to stdout.
void translate(RooFit::Detail::CodeSquashContext &ctx) const override
This function defines a translation for each RooAbsReal based object that can be used to express the ...
double defaultErrorLevel() const override
Return the default error level for MINUIT error analysis If the formula contains one or more RooNLLVa...
bool redirectServersHook(const RooAbsCollection &newServerList, bool mustReplaceAll, bool nameChange, bool isRecursive) override
Propagate server change information to embedded RooFormula object.
bool ok() const
const RooArgList & dependents() const
std::list< double > * binBoundaries(RooAbsRealLValue &, double, double) const override
Forward the plot sampling hint from the p.d.f. that defines the observable obs.
bool readFromStream(std::istream &is, bool compact, bool verbose=false) override
Read object contents from given stream.
TString _formExpr
Formula expression string.
void printMultiline(std::ostream &os, Int_t contents, bool verbose=false, TString indent="") const override
Print info about this object to the specified stream.
double evaluate() const override
Calculate current value of object from internal formula.
size_t nParameters() const
Return the number of parameters.
void writeToStream(std::ostream &os, bool compact) const override
Write object contents to given stream.
void printMetaArgs(std::ostream &os) const override
Add formula expression as meta argument in printing interface.
TObject * clone(const char *newname) const override
RooArgSet * _nset
! Normalization set to be passed along to contents
std::list< double > * plotSamplingHint(RooAbsRealLValue &, double, double) const override
Forward the plot sampling hint from the p.d.f. that defines the observable obs.
bool isValidReal(double, bool) const override
Interface function to check if given value is a valid value for this object. Returns true unless over...
Internally uses ROOT's TFormula to compute user-defined expressions of RooAbsArgs.
Definition RooFormula.h:27
Mother of all ROOT objects.
Definition TObject.h:41
Basic string class.
Definition TString.h:139
const char * Data() const
Definition TString.h:376