/***************************************************************************** 
 * Project: RooFit                                                           * 
 *                                                                           * 
 * This code was autogenerated by RooClassFactory                            * 
 *****************************************************************************/ 

// Your description goes here...

#include "Riostream.h" 

#include "RooTFnPdfBinding.h" 
#include "RooAbsReal.h" 
#include "RooAbsCategory.h" 
#include "TF3.h"

using namespace std;

ClassImp(RooTFnPdfBinding) 

RooTFnPdfBinding::RooTFnPdfBinding(const char *name, const char *title, TF1* func, const RooArgList& list) :
  RooAbsPdf(name,title), 
  _list("params","params",this),
  _func(func)
{ 
  _list.add(list) ;
} 


RooTFnPdfBinding::RooTFnPdfBinding(const RooTFnPdfBinding& other, const char* name) :  
  RooAbsPdf(other,name), 
  _list("params",this,other._list),
  _func(other._func)
{ 
} 



Double_t RooTFnPdfBinding::evaluate() const 
{ 
  Double_t x = _list.at(0) ? ((RooAbsReal*)_list.at(0))->getVal() : 0 ;
  Double_t y = _list.at(1) ? ((RooAbsReal*)_list.at(1))->getVal() : 0 ;
  Double_t z = _list.at(2) ? ((RooAbsReal*)_list.at(2))->getVal() : 0 ;
  return _func->Eval(x,y,z) ;
} 



void RooTFnPdfBinding::printArgs(ostream& os) const 
{
  // Print object arguments and name/address of function pointer
  os << "[ TFn={" << _func->GetName() << "=" << _func->GetTitle() << "} " ;    
  for (Int_t i=0 ; i<numProxies() ; i++) {
    RooAbsProxy* p = getProxy(i) ;
    if (!TString(p->name()).BeginsWith("!")) {
      p->print(os) ;
      os << " " ;
    }
  }    
  os << "]" ;  
}




namespace RooFit {

  RooAbsPdf* bindPdf(TF1* func,RooAbsReal& x) {
    return new RooTFnPdfBinding(func->GetName(),func->GetName(),func,x) ;
  }

  RooAbsPdf* bindPdf(TF2* func,RooAbsReal& x, RooAbsReal& y) {
    return new RooTFnPdfBinding(func->GetName(),func->GetName(),func,RooArgList(x,y)) ;
  }

  RooAbsPdf* bindPdf(TF3* func,RooAbsReal& x, RooAbsReal& y, RooAbsReal& z) {
    return new RooTFnPdfBinding(func->GetName(),func->GetName(),func,RooArgList(x,y,z)) ;
  }

}
 RooTFnPdfBinding.cxx:1
 RooTFnPdfBinding.cxx:2
 RooTFnPdfBinding.cxx:3
 RooTFnPdfBinding.cxx:4
 RooTFnPdfBinding.cxx:5
 RooTFnPdfBinding.cxx:6
 RooTFnPdfBinding.cxx:7
 RooTFnPdfBinding.cxx:8
 RooTFnPdfBinding.cxx:9
 RooTFnPdfBinding.cxx:10
 RooTFnPdfBinding.cxx:11
 RooTFnPdfBinding.cxx:12
 RooTFnPdfBinding.cxx:13
 RooTFnPdfBinding.cxx:14
 RooTFnPdfBinding.cxx:15
 RooTFnPdfBinding.cxx:16
 RooTFnPdfBinding.cxx:17
 RooTFnPdfBinding.cxx:18
 RooTFnPdfBinding.cxx:19
 RooTFnPdfBinding.cxx:20
 RooTFnPdfBinding.cxx:21
 RooTFnPdfBinding.cxx:22
 RooTFnPdfBinding.cxx:23
 RooTFnPdfBinding.cxx:24
 RooTFnPdfBinding.cxx:25
 RooTFnPdfBinding.cxx:26
 RooTFnPdfBinding.cxx:27
 RooTFnPdfBinding.cxx:28
 RooTFnPdfBinding.cxx:29
 RooTFnPdfBinding.cxx:30
 RooTFnPdfBinding.cxx:31
 RooTFnPdfBinding.cxx:32
 RooTFnPdfBinding.cxx:33
 RooTFnPdfBinding.cxx:34
 RooTFnPdfBinding.cxx:35
 RooTFnPdfBinding.cxx:36
 RooTFnPdfBinding.cxx:37
 RooTFnPdfBinding.cxx:38
 RooTFnPdfBinding.cxx:39
 RooTFnPdfBinding.cxx:40
 RooTFnPdfBinding.cxx:41
 RooTFnPdfBinding.cxx:42
 RooTFnPdfBinding.cxx:43
 RooTFnPdfBinding.cxx:44
 RooTFnPdfBinding.cxx:45
 RooTFnPdfBinding.cxx:46
 RooTFnPdfBinding.cxx:47
 RooTFnPdfBinding.cxx:48
 RooTFnPdfBinding.cxx:49
 RooTFnPdfBinding.cxx:50
 RooTFnPdfBinding.cxx:51
 RooTFnPdfBinding.cxx:52
 RooTFnPdfBinding.cxx:53
 RooTFnPdfBinding.cxx:54
 RooTFnPdfBinding.cxx:55
 RooTFnPdfBinding.cxx:56
 RooTFnPdfBinding.cxx:57
 RooTFnPdfBinding.cxx:58
 RooTFnPdfBinding.cxx:59
 RooTFnPdfBinding.cxx:60
 RooTFnPdfBinding.cxx:61
 RooTFnPdfBinding.cxx:62
 RooTFnPdfBinding.cxx:63
 RooTFnPdfBinding.cxx:64
 RooTFnPdfBinding.cxx:65
 RooTFnPdfBinding.cxx:66
 RooTFnPdfBinding.cxx:67
 RooTFnPdfBinding.cxx:68
 RooTFnPdfBinding.cxx:69
 RooTFnPdfBinding.cxx:70
 RooTFnPdfBinding.cxx:71
 RooTFnPdfBinding.cxx:72
 RooTFnPdfBinding.cxx:73
 RooTFnPdfBinding.cxx:74
 RooTFnPdfBinding.cxx:75
 RooTFnPdfBinding.cxx:76
 RooTFnPdfBinding.cxx:77
 RooTFnPdfBinding.cxx:78
 RooTFnPdfBinding.cxx:79