16 #ifndef ROO_WRAPPER_PDF
17 #define ROO_WRAPPER_PDF
23 class RooWrapperPdf final :
public RooAbsPdf {
32 RooWrapperPdf(
const char *name,
const char *title, RooAbsReal& inputFunction) :
33 RooAbsPdf(name, title),
34 _func(
"inputFunction",
"Function to be converted into a PDF", this, inputFunction) { }
35 virtual ~RooWrapperPdf() {};
37 RooWrapperPdf(
const RooWrapperPdf& other,
const char* name = 0) :
38 RooAbsPdf(other, name),
39 _func(
"inputFunction", this, other._func) { }
41 virtual TObject* clone(
const char* newname)
const override {
42 return new RooWrapperPdf(*
this, newname);
46 Bool_t forceAnalyticalInt(
const RooAbsArg& dep)
const override {
47 return _func.arg().forceAnalyticalInt(dep);
49 Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& analVars,
const RooArgSet* normSet,
50 const char* rangeName=0)
const override {
51 return _func.arg().getAnalyticalIntegralWN(allVars, analVars, normSet, rangeName);
53 Int_t getAnalyticalIntegral(RooArgSet& allVars, RooArgSet& numVars,
54 const char* rangeName=0)
const override {
55 return _func.arg().getAnalyticalIntegral(allVars, numVars, rangeName);
57 double analyticalIntegralWN(Int_t code,
const RooArgSet* normSet,
const char* rangeName)
const override {
58 return _func.arg().analyticalIntegralWN(code, normSet, rangeName);
60 double analyticalIntegral(Int_t code,
const char* rangeName=0)
const override {
61 return _func.arg().analyticalIntegral(code, rangeName);
76 Int_t getMaxVal(
const RooArgSet& vars)
const override {
77 return _func.arg().getMaxVal(vars);
79 Double_t maxVal(Int_t code)
const override {
80 return _func.arg().maxVal(code);
82 Int_t minTrialSamples(
const RooArgSet& arGenObs)
const override {
83 return _func.arg().minTrialSamples(arGenObs);
87 Bool_t isBinnedDistribution(
const RooArgSet& obs)
const override {
88 return _func.arg().isBinnedDistribution(obs);
90 std::list<Double_t>* binBoundaries(RooAbsRealLValue& obs, Double_t xlo, Double_t xhi)
const override {
91 return _func.arg().binBoundaries(obs, xlo, xhi);
93 std::list<Double_t>* plotSamplingHint(RooAbsRealLValue& obs, Double_t xlo, Double_t xhi)
const override {
94 return _func.arg().plotSamplingHint(obs, xlo, xhi);
102 double evaluate()
const override {
106 ClassDefOverride(RooWrapperPdf,1)