// RooCFunction3Binding 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 RooCFunction3Binding<T1,T2,T3,T4>::register().
// END_HTML
#include "Riostream.h"
#include "RooCFunction3Binding.h"
#include "RooCintUtils.h"
using namespace std ;
#ifndef ROOFIT_R__NO_CLASS_TEMPLATE_SPECIALIZATION
#define ROOFIT_R__NO_CLASS_TEMPLATE_SPECIALIZATION
templateClassImp(RooCFunction3Binding)
templateClassImp(RooCFunction3Ref)
#endif
template<> RooCFunction3Map<double,double,double,double>* RooCFunction3Ref<double,double,double,double>::_fmap = 0 ;
template<> RooCFunction3Map<double,double,double,bool>* RooCFunction3Ref<double,double,double,bool>::_fmap = 0 ;
template<> RooCFunction3Map<double,double,int,int>* RooCFunction3Ref<double,double,int,int>::_fmap = 0 ;
template<> RooCFunction3Map<double,unsigned int,double,unsigned int>* RooCFunction3Ref<double,unsigned int,double,unsigned int>::_fmap = 0 ;
template<> RooCFunction3Map<double,unsigned int,double,double>* RooCFunction3Ref<double,unsigned int,double,double>::_fmap = 0 ;
template<> RooCFunction3Map<double,unsigned int,unsigned int,double>* RooCFunction3Ref<double,unsigned int,unsigned int,double>::_fmap = 0 ;
namespace RooFit {
RooAbsReal* bindFunction(const char* name,void* func,RooAbsReal& x, RooAbsReal& y, RooAbsReal& z) {
if (RooCintUtils::matchFuncPtrArgs(func,"double,double,double")) return new RooCFunction3Binding<Double_t,Double_t,Double_t,Double_t>(name,name,(CFUNCD3DDD)func,x,y,z) ;
if (RooCintUtils::matchFuncPtrArgs(func,"double,double,bool")) return new RooCFunction3Binding<Double_t,Double_t,Double_t,Bool_t>(name,name,(CFUNCD3DDB)func,x,y,z) ;
if (RooCintUtils::matchFuncPtrArgs(func,"double,int,int")) return new RooCFunction3Binding<Double_t,Double_t,Int_t,Int_t>(name,name,(CFUNCD3DII)func,x,y,z) ;
if (RooCintUtils::matchFuncPtrArgs(func,"unsigned int,double,unsigned int")) return new RooCFunction3Binding<Double_t,UInt_t,Double_t,UInt_t>(name,name,(CFUNCD3UDU)func,x,y,z) ;
if (RooCintUtils::matchFuncPtrArgs(func,"unsigned int,double,double")) return new RooCFunction3Binding<Double_t,UInt_t,Double_t,Double_t>(name,name,(CFUNCD3UDD)func,x,y,z) ;
if (RooCintUtils::matchFuncPtrArgs(func,"unsigned int,unsigned int,double")) return new RooCFunction3Binding<Double_t,UInt_t,UInt_t,Double_t>(name,name,(CFUNCD3UUD)func,x,y,z) ;
oocoutE((TObject*)0,InputArguments) << "bindFunction::ERROR No matching RooCFunction3Binding<> class found for function " << RooCintUtils::functionName(func) << endl ;
return 0 ;
}
RooAbsReal* bindFunction(const char* name,CFUNCD3DDD func,RooAbsReal& x, RooAbsReal& y, RooAbsReal& z) {
return new RooCFunction3Binding<Double_t,Double_t,Double_t,Double_t>(name,name,func,x,y,z) ;
}
RooAbsReal* bindFunction(const char* name,CFUNCD3DDB func,RooAbsReal& x, RooAbsReal& y, RooAbsReal& z) {
return new RooCFunction3Binding<Double_t,Double_t,Double_t,Bool_t>(name,name,func,x,y,z) ;
}
RooAbsReal* bindFunction(const char* name,CFUNCD3DII func,RooAbsReal& x, RooAbsReal& y, RooAbsReal& z) {
return new RooCFunction3Binding<Double_t,Double_t,Int_t,Int_t>(name,name,func,x,y,z) ;
}
RooAbsReal* bindFunction(const char* name,CFUNCD3UDU func,RooAbsReal& x, RooAbsReal& y, RooAbsReal& z) {
return new RooCFunction3Binding<Double_t,UInt_t,Double_t,UInt_t>(name,name,func,x,y,z) ;
}
RooAbsReal* bindFunction(const char* name,CFUNCD3UDD func,RooAbsReal& x, RooAbsReal& y, RooAbsReal& z) {
return new RooCFunction3Binding<Double_t,UInt_t,Double_t,Double_t>(name,name,func,x,y,z) ;
}
RooAbsReal* bindFunction(const char* name,CFUNCD3UUD func,RooAbsReal& x, RooAbsReal& y, RooAbsReal& z) {
return new RooCFunction3Binding<Double_t,UInt_t,UInt_t,Double_t>(name,name,func,x,y,z) ;
}
RooAbsPdf* bindPdf(const char* name,void* func,RooAbsReal& x, RooAbsReal& y, RooAbsReal& z) {
if (RooCintUtils::matchFuncPtrArgs(func,"double,double,double")) return new RooCFunction3PdfBinding<Double_t,Double_t,Double_t,Double_t>(name,name,(CFUNCD3DDD)func,x,y,z) ;
if (RooCintUtils::matchFuncPtrArgs(func,"double,double,bool")) return new RooCFunction3PdfBinding<Double_t,Double_t,Double_t,Bool_t>(name,name,(CFUNCD3DDB)func,x,y,z) ;
if (RooCintUtils::matchFuncPtrArgs(func,"double,int,int")) return new RooCFunction3PdfBinding<Double_t,Double_t,Int_t,Int_t>(name,name,(CFUNCD3DII)func,x,y,z) ;
if (RooCintUtils::matchFuncPtrArgs(func,"unsigned int,double,unsigned int")) return new RooCFunction3PdfBinding<Double_t,UInt_t,Double_t,UInt_t>(name,name,(CFUNCD3UDU)func,x,y,z) ;
if (RooCintUtils::matchFuncPtrArgs(func,"unsigned int,double,double")) return new RooCFunction3PdfBinding<Double_t,UInt_t,Double_t,Double_t>(name,name,(CFUNCD3UDD)func,x,y,z) ;
if (RooCintUtils::matchFuncPtrArgs(func,"unsigned int,unsigned int,double")) return new RooCFunction3PdfBinding<Double_t,UInt_t,UInt_t,Double_t>(name,name,(CFUNCD3UUD)func,x,y,z) ;
oocoutE((TObject*)0,InputArguments) << "bindPdf::ERROR No matching RooCFunction3PdfBinding<> class found for function " << RooCintUtils::functionName(func) << endl ;
return 0 ;
}
RooAbsPdf* bindPdf(const char* name,CFUNCD3DDD func,RooAbsReal& x, RooAbsReal& y, RooAbsReal& z) {
return new RooCFunction3PdfBinding<Double_t,Double_t,Double_t,Double_t>(name,name,func,x,y,z) ;
}
RooAbsPdf* bindPdf(const char* name,CFUNCD3DDB func,RooAbsReal& x, RooAbsReal& y, RooAbsReal& z) {
return new RooCFunction3PdfBinding<Double_t,Double_t,Double_t,Bool_t>(name,name,func,x,y,z) ;
}
RooAbsPdf* bindPdf(const char* name,CFUNCD3DII func,RooAbsReal& x, RooAbsReal& y, RooAbsReal& z) {
return new RooCFunction3PdfBinding<Double_t,Double_t,Int_t,Int_t>(name,name,func,x,y,z) ;
}
RooAbsPdf* bindPdf(const char* name,CFUNCD3UDU func,RooAbsReal& x, RooAbsReal& y, RooAbsReal& z) {
return new RooCFunction3PdfBinding<Double_t,UInt_t,Double_t,UInt_t>(name,name,func,x,y,z) ;
}
RooAbsPdf* bindPdf(const char* name,CFUNCD3UDD func,RooAbsReal& x, RooAbsReal& y, RooAbsReal& z) {
return new RooCFunction3PdfBinding<Double_t,UInt_t,Double_t,Double_t>(name,name,func,x,y,z) ;
}
RooAbsPdf* bindPdf(const char* name,CFUNCD3UUD func,RooAbsReal& x, RooAbsReal& y, RooAbsReal& z) {
return new RooCFunction3PdfBinding<Double_t,UInt_t,UInt_t,Double_t>(name,name,func,x,y,z) ;
}
}
RooCFunction3Binding.cxx:1 RooCFunction3Binding.cxx:2 RooCFunction3Binding.cxx:3 RooCFunction3Binding.cxx:4 RooCFunction3Binding.cxx:5 RooCFunction3Binding.cxx:6 RooCFunction3Binding.cxx:7 RooCFunction3Binding.cxx:8 RooCFunction3Binding.cxx:9 RooCFunction3Binding.cxx:10 RooCFunction3Binding.cxx:11 RooCFunction3Binding.cxx:12 RooCFunction3Binding.cxx:13 RooCFunction3Binding.cxx:14 RooCFunction3Binding.cxx:15 RooCFunction3Binding.cxx:16 RooCFunction3Binding.cxx:17 RooCFunction3Binding.cxx:18 RooCFunction3Binding.cxx:19 RooCFunction3Binding.cxx:20 RooCFunction3Binding.cxx:21 RooCFunction3Binding.cxx:22 RooCFunction3Binding.cxx:23 RooCFunction3Binding.cxx:24 RooCFunction3Binding.cxx:25 RooCFunction3Binding.cxx:26 RooCFunction3Binding.cxx:27 RooCFunction3Binding.cxx:28 RooCFunction3Binding.cxx:29 RooCFunction3Binding.cxx:30 RooCFunction3Binding.cxx:31 RooCFunction3Binding.cxx:32 RooCFunction3Binding.cxx:33 RooCFunction3Binding.cxx:34 RooCFunction3Binding.cxx:35 RooCFunction3Binding.cxx:36 RooCFunction3Binding.cxx:37 RooCFunction3Binding.cxx:38 RooCFunction3Binding.cxx:39 RooCFunction3Binding.cxx:40 RooCFunction3Binding.cxx:41 RooCFunction3Binding.cxx:42 RooCFunction3Binding.cxx:43 RooCFunction3Binding.cxx:44 RooCFunction3Binding.cxx:45 RooCFunction3Binding.cxx:46 RooCFunction3Binding.cxx:47 RooCFunction3Binding.cxx:48 RooCFunction3Binding.cxx:49 RooCFunction3Binding.cxx:50 RooCFunction3Binding.cxx:51 RooCFunction3Binding.cxx:52 RooCFunction3Binding.cxx:53 RooCFunction3Binding.cxx:54 RooCFunction3Binding.cxx:55 RooCFunction3Binding.cxx:56 RooCFunction3Binding.cxx:57 RooCFunction3Binding.cxx:58 RooCFunction3Binding.cxx:59 RooCFunction3Binding.cxx:60 RooCFunction3Binding.cxx:61 RooCFunction3Binding.cxx:62 RooCFunction3Binding.cxx:63 RooCFunction3Binding.cxx:64 RooCFunction3Binding.cxx:65 RooCFunction3Binding.cxx:66 RooCFunction3Binding.cxx:67 RooCFunction3Binding.cxx:68 RooCFunction3Binding.cxx:69 RooCFunction3Binding.cxx:70 RooCFunction3Binding.cxx:71 RooCFunction3Binding.cxx:72 RooCFunction3Binding.cxx:73 RooCFunction3Binding.cxx:74 RooCFunction3Binding.cxx:75 RooCFunction3Binding.cxx:76 RooCFunction3Binding.cxx:77 RooCFunction3Binding.cxx:78 RooCFunction3Binding.cxx:79 RooCFunction3Binding.cxx:80 RooCFunction3Binding.cxx:81 RooCFunction3Binding.cxx:82 RooCFunction3Binding.cxx:83 RooCFunction3Binding.cxx:84 RooCFunction3Binding.cxx:85 RooCFunction3Binding.cxx:86 RooCFunction3Binding.cxx:87 RooCFunction3Binding.cxx:88 RooCFunction3Binding.cxx:89 RooCFunction3Binding.cxx:90 RooCFunction3Binding.cxx:91 RooCFunction3Binding.cxx:92 RooCFunction3Binding.cxx:93 RooCFunction3Binding.cxx:94 RooCFunction3Binding.cxx:95 RooCFunction3Binding.cxx:96 RooCFunction3Binding.cxx:97 RooCFunction3Binding.cxx:98 RooCFunction3Binding.cxx:99 RooCFunction3Binding.cxx:100 RooCFunction3Binding.cxx:101 RooCFunction3Binding.cxx:102 RooCFunction3Binding.cxx:103 RooCFunction3Binding.cxx:104 RooCFunction3Binding.cxx:105 RooCFunction3Binding.cxx:106 RooCFunction3Binding.cxx:107 RooCFunction3Binding.cxx:108 RooCFunction3Binding.cxx:109 RooCFunction3Binding.cxx:110 RooCFunction3Binding.cxx:111 RooCFunction3Binding.cxx:112 RooCFunction3Binding.cxx:113 RooCFunction3Binding.cxx:114 RooCFunction3Binding.cxx:115 RooCFunction3Binding.cxx:116 RooCFunction3Binding.cxx:117 RooCFunction3Binding.cxx:118 RooCFunction3Binding.cxx:119 RooCFunction3Binding.cxx:120 RooCFunction3Binding.cxx:121 RooCFunction3Binding.cxx:122 RooCFunction3Binding.cxx:123