16#ifndef ROO_WRAPPER_PDF
17#define ROO_WRAPPER_PDF
41 _func(
"inputFunction",
"Function to be converted into a PDF", this, inputFunction),
57 return _func->forceAnalyticalInt(dep);
60 const char* rangeName=
nullptr)
const override {
61 return _func->getAnalyticalIntegralWN(allVars, analVars, normSet, rangeName);
64 const char* rangeName=
nullptr)
const override {
65 return _func->getAnalyticalIntegral(allVars, numVars, rangeName);
68 return _func->analyticalIntegralWN(code, normSet, rangeName);
71 return _func->analyticalIntegral(code, rangeName);
87 return _func.arg().getMaxVal(vars);
90 return _func.arg().maxVal(code);
93 return _func.arg().minTrialSamples(arGenObs);
98 return _func.arg().isBinnedDistribution(obs);
101 return _func.arg().binBoundaries(obs, xlo, xhi);
104 return _func.arg().plotSamplingHint(obs, xlo, xhi);
#define ClassDefOverride(name, id)
Common abstract base class for objects that represent a value and a "shape" in RooFit.
Abstract interface for all probability density functions.
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...
RooArgSet is a container object that can hold multiple RooAbsArg objects.
The RooWrapperPdf is a class that can be used to convert a function into a PDF.
RooWrapperPdf(const char *name, const char *title, RooAbsReal &inputFunction, bool selfNormalized=false)
Construct a new RooWrapperPdf.
RooWrapperPdf(const RooWrapperPdf &other, const char *name=nullptr)
double maxVal(Int_t code) const override
Return maximum value for set of observables identified by code assigned in getMaxVal.
Int_t getMaxVal(const RooArgSet &vars) const override
Get specialised generator. Since the underlying function is not a PDF, this will always return zero.
Int_t getAnalyticalIntegral(RooArgSet &allVars, RooArgSet &numVars, const char *rangeName=nullptr) const override
Interface function getAnalyticalIntergral advertises the analytical integrals that are supported.
Int_t getAnalyticalIntegralWN(RooArgSet &allVars, RooArgSet &analVars, const RooArgSet *normSet, const char *rangeName=nullptr) const override
Variant of getAnalyticalIntegral that is also passed the normalization set that should be applied to ...
bool isBinnedDistribution(const RooArgSet &obs) const override
Tests if the distribution is binned. Unless overridden by derived classes, this always returns false.
std::list< double > * plotSamplingHint(RooAbsRealLValue &obs, double xlo, double xhi) const override
Interface for returning an optional hint for initial sampling points when constructing a curve projec...
bool selfNormalized() const override
Shows if a PDF is self-normalized, which means that no attempt is made to add a normalization term.
TObject * clone(const char *newname) const override
double analyticalIntegral(Int_t code, const char *rangeName=nullptr) const override
Implements the actual analytical integral(s) advertised by getAnalyticalIntegral.
bool forceAnalyticalInt(const RooAbsArg &dep) const override
double analyticalIntegralWN(Int_t code, const RooArgSet *normSet, const char *rangeName) const override
Analytical integral with normalization (see RooAbsReal::analyticalIntegralWN() for further informatio...
double evaluate() const override
Evaluate this PDF / function / constant. Needs to be overridden by all derived classes.
std::list< double > * binBoundaries(RooAbsRealLValue &obs, double xlo, double xhi) const override
Retrieve bin boundaries if this distribution is binned in obs.
Int_t minTrialSamples(const RooArgSet &arGenObs) const override
Mother of all ROOT objects.