#ifndef ROOTFNBINDING
#define ROOTFNBINDING
#include "RooAbsReal.h"
#include "RooListProxy.h"
#include "RooAbsReal.h"
class TF1 ;
class TF2 ;
class TF3 ;
class RooTFnBinding : public RooAbsReal {
public:
RooTFnBinding() : _func(0) {} ;
RooTFnBinding(const char *name, const char *title, TF1* func, const RooArgList& list);
RooTFnBinding(const char *name, const char *title, TF1* func, const RooArgList& list, const RooArgList& plist);
RooTFnBinding(const RooTFnBinding& other, const char* name=0) ;
virtual TObject* clone(const char* newname) const { return new RooTFnBinding(*this,newname); }
inline virtual ~RooTFnBinding() { }
void printArgs(std::ostream& os) const ;
protected:
RooListProxy _olist ;
RooListProxy _plist ;
TF1* _func ;
Double_t evaluate() const ;
private:
ClassDef(RooTFnBinding,1)
};
namespace RooFit {
RooAbsReal* bindFunction(TF1* func,RooAbsReal& x) ;
RooAbsReal* bindFunction(TF2* func,RooAbsReal& x, RooAbsReal& y) ;
RooAbsReal* bindFunction(TF3* func,RooAbsReal& x, RooAbsReal& y, RooAbsReal& z) ;
RooAbsReal* bindFunction(TF1* func,RooAbsReal& x, const RooArgList& params) ;
RooAbsReal* bindFunction(TF2* func,RooAbsReal& x, RooAbsReal& y, const RooArgList& params) ;
RooAbsReal* bindFunction(TF3* func,RooAbsReal& x, RooAbsReal& y, RooAbsReal& z, const RooArgList& params) ;
}
#endif