Logo ROOT  
Reference Guide
RooIntegrator2D.cxx
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * @(#)root/roofitcore:$Id$
5 * Authors: *
6 * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
7 * DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
8 * *
9 * Copyright (c) 2000-2005, Regents of the University of California *
10 * and Stanford University. All rights reserved. *
11 * *
12 * Redistribution and use in source and binary forms, *
13 * with or without modification, are permitted according to the terms *
14 * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
15 *****************************************************************************/
16
17/**
18\file RooIntegrator2D.cxx
19\class RooIntegrator2D
20\ingroup Roofitcore
21
22RooIntegrator2D implements a numeric two-dimensiona integrator
23in terms of a recursive application of RooIntegrator1D
24**/
25
26
27#include "RooFit.h"
28
29#include "TClass.h"
30#include "RooIntegrator2D.h"
31#include "RooArgSet.h"
33#include "RooRealVar.h"
34#include "RooNumber.h"
35#include "RooNumIntFactory.h"
36
37#include <assert.h>
38
39using namespace std;
40
42;
43
44
45////////////////////////////////////////////////////////////////////////////////
46/// Register RooIntegrator2D, is parameters and capabilities with RooNumIntFactory
47
49{
53}
54
55
56////////////////////////////////////////////////////////////////////////////////
57/// Default constructor
58
60 _xIntegrator(0), _xint(0)
61{
62}
63
64
65////////////////////////////////////////////////////////////////////////////////
66/// Constructor with a given function binding, summation rule,
67/// maximum number of steps and conversion tolerance. The integration
68/// limits are taken from the definition in the function binding.
69
71 Int_t maxSteps, Double_t eps) :
72 RooIntegrator1D(*(_xint=new RooIntegratorBinding(*(_xIntegrator=new RooIntegrator1D(function,rule,maxSteps,eps)))),rule,maxSteps,eps)
73{
74}
75
76
77////////////////////////////////////////////////////////////////////////////////
78/// Constructor with a given function binding, summation rule,
79/// maximum number of steps, conversion tolerance and an explicit
80/// choice of integration limits on both dimensions.
81
84 SummationRule rule, Int_t maxSteps, Double_t eps) :
85 RooIntegrator1D(*(_xint=new RooIntegratorBinding(*(_xIntegrator=new RooIntegrator1D(function,ymin,ymax,rule,maxSteps,eps)))),xmin,xmax,rule,maxSteps,eps)
86{
87}
88
89
90////////////////////////////////////////////////////////////////////////////////
91/// Constructor with a function binding and a configuration object.
92/// The integration limits are taken from the definition in the function
93/// binding
94
96 RooIntegrator1D(*(_xint=new RooIntegratorBinding(*(_xIntegrator=new RooIntegrator1D(function,config)))),config)
97{
98}
99
100
101
102////////////////////////////////////////////////////////////////////////////////
103/// Constructor with a function binding, a configuration object and
104/// an explicit definition of the integration limits.
105
108 const RooNumIntConfig& config) :
109 RooIntegrator1D(*(_xint=new RooIntegratorBinding(*(_xIntegrator=new RooIntegrator1D(function,ymin,ymax,config)))),xmin,xmax,config)
110{
111}
112
113
114////////////////////////////////////////////////////////////////////////////////
115/// Clone integrator with new function and configuration. Needed to support RooNumIntFactory
116
118{
119 return new RooIntegrator2D(function,config) ;
120}
121
122
123
124////////////////////////////////////////////////////////////////////////////////
125/// Destructor
126
128{
129 delete _xint ;
130 delete _xIntegrator ;
131}
132
133
134////////////////////////////////////////////////////////////////////////////////
135/// Verify that the limits are OK for this integrator (i.e. no open-ended ranges)
136
138{
140 ret &= _xIntegrator->checkLimits() ;
141 return ret ;
142}
void Class()
Definition: Class.C:29
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
double Double_t
Definition: RtypesCore.h:55
#define ClassImp(name)
Definition: Rtypes.h:365
float xmin
Definition: THbookFile.cxx:93
float ymin
Definition: THbookFile.cxx:93
float xmax
Definition: THbookFile.cxx:93
float ymax
Definition: THbookFile.cxx:93
const char * proto
Definition: civetweb.c:16604
Abstract interface for evaluating a real-valued function of one real variable and performing numerica...
Definition: RooAbsFunc.h:23
RooAbsIntegrator is the abstract interface for integrators of real-valued functions that implement th...
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:28
virtual Bool_t setLabel(const char *label, Bool_t printError=kTRUE)
Set value by specifying the name of the desired state If printError is set, a message will be printed...
RooIntegrator1D implements an adaptive one-dimensional numerical integration algorithm.
virtual Bool_t checkLimits() const
Check that our integration range is finite and otherwise return kFALSE.
RooIntegrator2D implements a numeric two-dimensiona integrator in terms of a recursive application of...
virtual RooAbsIntegrator * clone(const RooAbsFunc &function, const RooNumIntConfig &config) const
Clone integrator with new function and configuration. Needed to support RooNumIntFactory.
RooAbsFunc * _xint
static void registerIntegrator(RooNumIntFactory &fact)
Register RooIntegrator2D, is parameters and capabilities with RooNumIntFactory.
RooIntegrator1D * _xIntegrator
RooIntegrator2D()
Default constructor.
virtual ~RooIntegrator2D()
Destructor.
virtual Bool_t checkLimits() const
Verify that the limits are OK for this integrator (i.e. no open-ended ranges)
Function binding representing the output of a RooAbsIntegrator.
RooNumIntConfig holds the configuration parameters of the various numeric integrators used by RooReal...
RooCategory & method2D()
static RooNumIntConfig & defaultConfig()
Return reference to instance of default numeric integrator configuration object.
RooNumIntFactory is a factory to instantiate numeric integrators from a given function binding and a ...
Bool_t storeProtoIntegrator(RooAbsIntegrator *proto, const RooArgSet &defConfig, const char *depName="")
Method accepting registration of a prototype numeric integrator along with a RooArgSet of its default...
virtual const char * GetName() const
Returns name of object.
Definition: TObject.cxx:357
void function(const Char_t *name_, T fun, const Char_t *docstring=0)
Definition: RExports.h:151