// RooCFunction2Binding is a templated implementation of class RooAbsReal that binds 
// generic C(++) functions to a RooAbsReal argument thus allowing generic C++
// functions to be used as RooFit functions. Instances of function binding
// classes are fully functional RooFit function objects with one exception:
// if the bound function is _not_ a standard TMath or MathMore function the
// class cannot be persisted in a RooWorkspace without registering the function
// pointer first using RooCFunction2Binding<T1,T2,T3>::register().
// END_HTML
#include "Riostream.h" 
#include "RooCFunction2Binding.h" 
#include "RooCintUtils.h"
using namespace std ;
#ifndef ROOFIT_R__NO_CLASS_TEMPLATE_SPECIALIZATION
#define ROOFIT_R__NO_CLASS_TEMPLATE_SPECIALIZATION
templateClassImp(RooCFunction2Binding) 
templateClassImp(RooCFunction2Ref) 
#endif 
template<> RooCFunction2Map<double,double,double>* RooCFunction2Ref<double,double,double>::_fmap = 0 ;
template<> RooCFunction2Map<double,int,double> *RooCFunction2Ref<double,int,double>::_fmap = 0 ;
template<> RooCFunction2Map<double,unsigned int,double> *RooCFunction2Ref<double,unsigned int,double>::_fmap = 0 ;
template<> RooCFunction2Map<double,double,int> *RooCFunction2Ref<double,double,int>::_fmap = 0 ;
template<> RooCFunction2Map<double,int,int> *RooCFunction2Ref<double,int,int>::_fmap = 0 ;
namespace RooFit {
  RooAbsReal* bindFunction(const char* name,CFUNCD2DD func,RooAbsReal& x, RooAbsReal& y) {
    return new RooCFunction2Binding<Double_t,Double_t,Double_t>(name,name,func,x,y) ;
  }
  RooAbsReal* bindFunction(const char* name,CFUNCD2ID func,RooAbsReal& x, RooAbsReal& y) {
    return new RooCFunction2Binding<Double_t,Int_t,Double_t>(name,name,func,x,y) ;
  }
  RooAbsReal* bindFunction(const char* name,CFUNCD2UD func,RooAbsReal& x, RooAbsReal& y) {
    return new RooCFunction2Binding<Double_t,UInt_t,Double_t>(name,name,func,x,y) ;
  }
  RooAbsReal* bindFunction(const char* name,CFUNCD2DI func,RooAbsReal& x, RooAbsReal& y) {
    return new RooCFunction2Binding<Double_t,Double_t,Int_t>(name,name,func,x,y) ;
  }
  RooAbsReal* bindFunction(const char* name,CFUNCD2II func,RooAbsReal& x, RooAbsReal& y) {
    return new RooCFunction2Binding<Double_t,Int_t,Int_t>(name,name,func,x,y) ;
  }
  RooAbsPdf* bindPdf(const char* name,CFUNCD2DD func,RooAbsReal& x, RooAbsReal& y) {
    return new RooCFunction2PdfBinding<Double_t,Double_t,Double_t>(name,name,func,x,y) ;
  }
  RooAbsPdf* bindPdf(const char* name,CFUNCD2ID func,RooAbsReal& x, RooAbsReal& y) {
    return new RooCFunction2PdfBinding<Double_t,Int_t,Double_t>(name,name,func,x,y) ;
  }
  RooAbsPdf* bindPdf(const char* name,CFUNCD2UD func,RooAbsReal& x, RooAbsReal& y) {
    return new RooCFunction2PdfBinding<Double_t,UInt_t,Double_t>(name,name,func,x,y) ;
  }
  RooAbsPdf* bindPdf(const char* name,CFUNCD2DI func,RooAbsReal& x, RooAbsReal& y) {
    return new RooCFunction2PdfBinding<Double_t,Double_t,Int_t>(name,name,func,x,y) ;
  }
  RooAbsPdf* bindPdf(const char* name,CFUNCD2II func,RooAbsReal& x, RooAbsReal& y) {
    return new RooCFunction2PdfBinding<Double_t,Int_t,Int_t>(name,name,func,x,y) ;
  }
}
 RooCFunction2Binding.cxx:1  RooCFunction2Binding.cxx:2  RooCFunction2Binding.cxx:3  RooCFunction2Binding.cxx:4  RooCFunction2Binding.cxx:5  RooCFunction2Binding.cxx:6  RooCFunction2Binding.cxx:7  RooCFunction2Binding.cxx:8  RooCFunction2Binding.cxx:9  RooCFunction2Binding.cxx:10  RooCFunction2Binding.cxx:11  RooCFunction2Binding.cxx:12  RooCFunction2Binding.cxx:13  RooCFunction2Binding.cxx:14  RooCFunction2Binding.cxx:15  RooCFunction2Binding.cxx:16  RooCFunction2Binding.cxx:17  RooCFunction2Binding.cxx:18  RooCFunction2Binding.cxx:19  RooCFunction2Binding.cxx:20  RooCFunction2Binding.cxx:21  RooCFunction2Binding.cxx:22  RooCFunction2Binding.cxx:23  RooCFunction2Binding.cxx:24  RooCFunction2Binding.cxx:25  RooCFunction2Binding.cxx:26  RooCFunction2Binding.cxx:27  RooCFunction2Binding.cxx:28  RooCFunction2Binding.cxx:29  RooCFunction2Binding.cxx:30  RooCFunction2Binding.cxx:31  RooCFunction2Binding.cxx:32  RooCFunction2Binding.cxx:33  RooCFunction2Binding.cxx:34  RooCFunction2Binding.cxx:35  RooCFunction2Binding.cxx:36  RooCFunction2Binding.cxx:37  RooCFunction2Binding.cxx:38  RooCFunction2Binding.cxx:39  RooCFunction2Binding.cxx:40  RooCFunction2Binding.cxx:41  RooCFunction2Binding.cxx:42  RooCFunction2Binding.cxx:43  RooCFunction2Binding.cxx:44  RooCFunction2Binding.cxx:45  RooCFunction2Binding.cxx:46  RooCFunction2Binding.cxx:47  RooCFunction2Binding.cxx:48  RooCFunction2Binding.cxx:49  RooCFunction2Binding.cxx:50  RooCFunction2Binding.cxx:51  RooCFunction2Binding.cxx:52  RooCFunction2Binding.cxx:53  RooCFunction2Binding.cxx:54  RooCFunction2Binding.cxx:55  RooCFunction2Binding.cxx:56  RooCFunction2Binding.cxx:57  RooCFunction2Binding.cxx:58  RooCFunction2Binding.cxx:59  RooCFunction2Binding.cxx:60  RooCFunction2Binding.cxx:61  RooCFunction2Binding.cxx:62  RooCFunction2Binding.cxx:63  RooCFunction2Binding.cxx:64  RooCFunction2Binding.cxx:65  RooCFunction2Binding.cxx:66  RooCFunction2Binding.cxx:67  RooCFunction2Binding.cxx:68  RooCFunction2Binding.cxx:69  RooCFunction2Binding.cxx:70  RooCFunction2Binding.cxx:71  RooCFunction2Binding.cxx:72  RooCFunction2Binding.cxx:73  RooCFunction2Binding.cxx:74  RooCFunction2Binding.cxx:75  RooCFunction2Binding.cxx:76  RooCFunction2Binding.cxx:77  RooCFunction2Binding.cxx:78  RooCFunction2Binding.cxx:79  RooCFunction2Binding.cxx:80  RooCFunction2Binding.cxx:81  RooCFunction2Binding.cxx:82  RooCFunction2Binding.cxx:83  RooCFunction2Binding.cxx:84  RooCFunction2Binding.cxx:85  RooCFunction2Binding.cxx:86  RooCFunction2Binding.cxx:87  RooCFunction2Binding.cxx:88