Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
RooTFnPdfBinding.cxx
Go to the documentation of this file.
1 /*****************************************************************************
2  * Project: RooFit *
3  * *
4  * This code was autogenerated by RooClassFactory *
5  *****************************************************************************/
6 
7 /** \class RooTFnPdfBinding
8  \ingroup Roofit
9 
10 **/
11 
12 #include "Riostream.h"
13 
14 #include "RooTFnPdfBinding.h"
15 #include "RooAbsReal.h"
16 #include "RooAbsCategory.h"
17 #include "TF3.h"
18 
19 using namespace std;
20 
21 ClassImp(RooTFnPdfBinding);
22 
23 ////////////////////////////////////////////////////////////////////////////////
24 
25 RooTFnPdfBinding::RooTFnPdfBinding(const char *name, const char *title, TF1* func, const RooArgList& list) :
26  RooAbsPdf(name,title),
27  _list("params","params",this),
28  _func(func)
29 {
30  _list.add(list) ;
31 }
32 
33 ////////////////////////////////////////////////////////////////////////////////
34 
35 RooTFnPdfBinding::RooTFnPdfBinding(const RooTFnPdfBinding& other, const char* name) :
36  RooAbsPdf(other,name),
37  _list("params",this,other._list),
38  _func(other._func)
39 {
40 }
41 
42 ////////////////////////////////////////////////////////////////////////////////
43 
44 Double_t RooTFnPdfBinding::evaluate() const
45 {
46  Double_t x = _list.at(0) ? ((RooAbsReal*)_list.at(0))->getVal() : 0 ;
47  Double_t y = _list.at(1) ? ((RooAbsReal*)_list.at(1))->getVal() : 0 ;
48  Double_t z = _list.at(2) ? ((RooAbsReal*)_list.at(2))->getVal() : 0 ;
49  return _func->Eval(x,y,z) ;
50 }
51 
52 ////////////////////////////////////////////////////////////////////////////////
53 
54 void RooTFnPdfBinding::printArgs(ostream& os) const
55 {
56  // Print object arguments and name/address of function pointer
57  os << "[ TFn={" << _func->GetName() << "=" << _func->GetTitle() << "} " ;
58  for (Int_t i=0 ; i<numProxies() ; i++) {
59  RooAbsProxy* p = getProxy(i) ;
60  if (!TString(p->name()).BeginsWith("!")) {
61  p->print(os) ;
62  os << " " ;
63  }
64  }
65  os << "]" ;
66 }
67 
68 ////////////////////////////////////////////////////////////////////////////////
69 
70 namespace RooFit {
71 
72  RooAbsPdf* bindPdf(TF1* func,RooAbsReal& x) {
73  return new RooTFnPdfBinding(func->GetName(),func->GetName(),func,x) ;
74  }
75 
76  RooAbsPdf* bindPdf(TF2* func,RooAbsReal& x, RooAbsReal& y) {
77  return new RooTFnPdfBinding(func->GetName(),func->GetName(),func,RooArgList(x,y)) ;
78  }
79 
80  RooAbsPdf* bindPdf(TF3* func,RooAbsReal& x, RooAbsReal& y, RooAbsReal& z) {
81  return new RooTFnPdfBinding(func->GetName(),func->GetName(),func,RooArgList(x,y,z)) ;
82  }
83 
84 }