Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RooTFnPdfBinding.cxx
Go to the documentation of this file.
1/*
2 * Project: RooFit
3 *
4 * Copyright (c) 2023, CERN
5 *
6 * Redistribution and use in source and binary forms,
7 * with or without modification, are permitted according to the terms
8 * listed in LICENSE (http://roofit.sourceforge.net/license.txt)
9 */
10
11/** \class RooTFnPdfBinding
12 \ingroup Roofit
13
14**/
15
16#include "Riostream.h"
17
18#include "RooTFnPdfBinding.h"
19#include "RooAbsCategory.h"
20#include "TF3.h"
21
22using std::ostream;
23
25
26////////////////////////////////////////////////////////////////////////////////
27
28RooTFnPdfBinding::RooTFnPdfBinding(const char *name, const char *title, TF1* func, const RooArgList& list) :
29 RooAbsPdf(name,title),
30 _list("params","params",this),
31 _func(func)
32{
33 _list.add(list) ;
34}
35
36////////////////////////////////////////////////////////////////////////////////
37
39 RooAbsPdf(other,name),
40 _list("params",this,other._list),
41 _func(other._func)
42{
43}
44
45////////////////////////////////////////////////////////////////////////////////
46
48{
49 double x = _list.at(0) ? (static_cast<RooAbsReal*>(_list.at(0)))->getVal() : 0 ;
50 double y = _list.at(1) ? (static_cast<RooAbsReal*>(_list.at(1)))->getVal() : 0 ;
51 double z = _list.at(2) ? (static_cast<RooAbsReal*>(_list.at(2)))->getVal() : 0 ;
52 return _func->Eval(x,y,z) ;
53}
54
55////////////////////////////////////////////////////////////////////////////////
56
57void RooTFnPdfBinding::printArgs(ostream& os) const
58{
59 // Print object arguments and name/address of function pointer
60 os << "[ TFn={" << _func->GetName() << "=" << _func->GetTitle() << "} " ;
61 for (Int_t i=0 ; i<numProxies() ; i++) {
62 RooAbsProxy* p = getProxy(i) ;
63 if (!TString(p->name()).BeginsWith("!")) {
64 p->print(os) ;
65 os << " " ;
66 }
67 }
68 os << "]" ;
69}
70
71////////////////////////////////////////////////////////////////////////////////
72
73namespace RooFit {
74
76 return new RooTFnPdfBinding(func->GetName(),func->GetName(),func,x) ;
77 }
78
80 return new RooTFnPdfBinding(func->GetName(),func->GetName(),func,RooArgList(x,y)) ;
81 }
82
84 return new RooTFnPdfBinding(func->GetName(),func->GetName(),func,RooArgList(x,y,z)) ;
85 }
86
87}
#define ClassImp(name)
Definition Rtypes.h:382
winID h TVirtualViewer3D TVirtualGLPainter p
char name[80]
Definition TGX11.cxx:110
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
RooArgList is a container object that can hold multiple RooAbsArg objects.
Definition RooArgList.h:22
RooAbsArg * at(Int_t idx) const
Return object at given index, or nullptr if index is out of range.
Definition RooArgList.h:110
bool add(const RooAbsArg &var, bool valueServer, bool shapeServer, bool silent)
Overloaded RooCollection_t::add() method insert object into set and registers object as server to own...
void printArgs(std::ostream &os) const override
Print object arguments, ie its proxies.
RooTFnPdfBinding()=default
double evaluate() const override
Evaluate this PDF / function / constant. Needs to be overridden by all derived classes.
1-Dim function class
Definition TF1.h:233
virtual Double_t Eval(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
Evaluate this function.
Definition TF1.cxx:1439
A 2-Dim function with parameters.
Definition TF2.h:29
A 3-Dim function with parameters.
Definition TF3.h:28
const char * GetName() const override
Returns name of object.
Definition TNamed.h:47
const char * GetTitle() const override
Returns title of object.
Definition TNamed.h:48
Basic string class.
Definition TString.h:139
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
Definition TString.h:623
Double_t y[n]
Definition legend1.C:17
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)