Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RooFunctor1DBinding.cxx
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * File: $Id$
5 * Authors: *
6 * WV, Wouter Verkerke, NIKHEF, verkerke@nikhef.nl *
7 * *
8 * Copyright (c) 2000-2008, NIKHEF, Regents of the University of California *
9 * and Stanford University. All rights reserved. *
10 * *
11 *****************************************************************************/
12
13/** \class RooFunctor1DBinding
14 \ingroup Roofit
15
16RooCFunction1Binding is a templated implementation of class RooAbsReal that binds
17generic C(++) functions to a RooAbsReal argument thus allowing generic C++
18functions to be used as RooFit functions. Instances of function binding
19classes are fully functional RooFit function objects with one exception:
20if the bound function is _not_ a standard TMath or MathMore function the
21class cannot be persisted in a RooWorkspace without registering the function
22pointer first using RooCFunction1Binding<T1,T2>::register().
23**/
24
25/** \class RooFunctor1DPdfBinding
26 \ingroup Roofit
27**/
28
29#include "Riostream.h"
30#include "RooFunctor1DBinding.h"
31
32using std::ostream;
33
34
35////////////////////////////////////////////////////////////////////////////////
36
38 RooAbsReal(name,title),
39 func(&ftor),
40 var("x","x",this,x)
41{
42}
43
44////////////////////////////////////////////////////////////////////////////////
45
48 func(other.func),
49 var("x",this,other.var)
50{
51 // Copy constructor
52}
53
54////////////////////////////////////////////////////////////////////////////////
55
56void RooFunctor1DBinding::printArgs(ostream& os) const {
57 // Print object arguments and name/address of function pointer
58 os << "[ function=" << func << " " ;
59 for (Int_t i=0 ; i<numProxies() ; i++) {
60 RooAbsProxy* p = getProxy(i) ;
61 if (!TString(p->name()).BeginsWith("!")) {
62 p->print(os) ;
63 os << " " ;
64 }
65 }
66 os << "]" ;
67}
68
69////////////////////////////////////////////////////////////////////////////////
70
72 // Return value of embedded function using value of referenced variable x
73 return (*func)(var.arg().getVal()) ;
74 }
75
76////////////////////////////////////////////////////////////////////////////////
77
79 RooAbsPdf(name,title),
80 func(&ftor),
81 var("x","x",this,x)
82{
83}
84
85////////////////////////////////////////////////////////////////////////////////
86
89 func(other.func),
90 var("x",this,other.var)
91{
92 // Copy constructor
93}
94
95////////////////////////////////////////////////////////////////////////////////
96
97void RooFunctor1DPdfBinding::printArgs(ostream& os) const {
98 // Print object arguments and name/address of function pointer
99 os << "[ function=" << func << " " ;
100 for (Int_t i=0 ; i<numProxies() ; i++) {
101 RooAbsProxy* p = getProxy(i) ;
102 if (!TString(p->name()).BeginsWith("!")) {
103 p->print(os) ;
104 os << " " ;
105 }
106 }
107 os << "]" ;
108}
109
110////////////////////////////////////////////////////////////////////////////////
111
113 // Return value of embedded function using value of referenced variable x
114 return (*func)(var.arg().getVal()) ;
115 }
116
117namespace RooFit {
118
122
124 return new RooFunctor1DPdfBinding(name,name,ftor,var) ;
125 }
126
127}
winID h TVirtualViewer3D TVirtualGLPainter p
char name[80]
Definition TGX11.cxx:110
Interface (abstract class) for generic functions objects of one-dimension Provides a method to evalua...
Definition IFunction.h:114
Int_t numProxies() const
Return the number of registered proxies.
RooAbsProxy * getProxy(Int_t index) const
Return the nth proxy from the proxy list.
Abstract interface for all probability density functions.
Definition RooAbsPdf.h:40
Abstract interface for proxy classes.
Definition RooAbsProxy.h:37
Abstract base class for objects that represent a real value and implements functionality common to al...
Definition RooAbsReal.h:59
RooCFunction1Binding is a templated implementation of class RooAbsReal that binds generic C(++) funct...
double evaluate() const override
Evaluate this PDF / function / constant. Needs to be overridden by all derived classes.
void printArgs(std::ostream &os) const override
Print object arguments, ie its proxies.
const ROOT::Math::IBaseFunctionOneDim * func
const ROOT::Math::IBaseFunctionOneDim * func
double evaluate() const override
Evaluate this PDF / function / constant. Needs to be overridden by all derived classes.
void printArgs(std::ostream &os) const override
Print object arguments, ie its proxies.
const T & arg() const
Return reference to object held in proxy.
Basic string class.
Definition TString.h:139
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
Definition TString.h:623
Double_t x[n]
Definition legend1.C:17
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
Definition CodegenImpl.h:64
RooAbsPdf * bindPdf(const char *name, CFUNCD1D func, RooAbsReal &x)
RooAbsReal * bindFunction(const char *name, CFUNCD1D func, RooAbsReal &x)