Logo ROOT   6.14/05
Reference Guide
RooSegmentedIntegrator2D.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 RooSegmentedIntegrator2D.cxx
19 \class RooSegmentedIntegrator2D
20 \ingroup Roofitcore
21 
22 RooSegmentedIntegrator2D implements an adaptive one-dimensional
23 numerical integration algorithm.
24 **/
25 
26 
27 #include "RooFit.h"
28 #include "Riostream.h"
29 
30 #include "TClass.h"
32 #include "RooArgSet.h"
33 #include "RooIntegratorBinding.h"
34 #include "RooRealVar.h"
35 #include "RooNumber.h"
36 #include "RooNumIntFactory.h"
37 #include "RooMsgService.h"
38 
39 #include <assert.h>
40 
41 
42 
43 using namespace std;
44 
46 ;
47 
48 
49 ////////////////////////////////////////////////////////////////////////////////
50 /// Register RooSegmentedIntegrator2D, its parameters, dependencies and capabilities with RooNumIntFactory
51 
53 {
55 }
56 
57 
58 
59 ////////////////////////////////////////////////////////////////////////////////
60 /// Default constructor
61 
63  _xIntegrator(0), _xint(0)
64 {
65 }
66 
67 
68 ////////////////////////////////////////////////////////////////////////////////
69 /// Constructor of integral on given function binding and with given configuration. The
70 /// integration limits are taken from the definition in the function binding
71 
74 {
75 }
76 
77 
78 ////////////////////////////////////////////////////////////////////////////////
79 /// Constructor integral on given function binding, with given configuration and
80 /// explicit definition of integration range
81 
84  const RooNumIntConfig& config) :
85  RooSegmentedIntegrator1D(*(_xint=new RooIntegratorBinding(*(_xIntegrator=new RooSegmentedIntegrator1D(function,ymin,ymax,config)))),xmin,xmax,config)
86 {
87 }
88 
89 
90 ////////////////////////////////////////////////////////////////////////////////
91 /// Virtual constructor with given function and configuration. Needed by RooNumIntFactory
92 
94 {
95  return new RooSegmentedIntegrator2D(function,config) ;
96 }
97 
98 
99 
100 ////////////////////////////////////////////////////////////////////////////////
101 /// Destructor
102 
104 {
105  delete _xint ;
106  delete _xIntegrator ;
107 }
108 
109 
110 
111 ////////////////////////////////////////////////////////////////////////////////
112 /// Check that our integration range is finite and otherwise return kFALSE.
113 /// Update the limits from the integrand if requested.
114 
116 {
117  if(_useIntegrandLimits) {
118  assert(0 != integrand() && integrand()->isValid());
119  _xmin= integrand()->getMinLimit(0);
120  _xmax= integrand()->getMaxLimit(0);
121  }
122  _range= _xmax - _xmin;
123  if(_range <= 0) {
124  oocoutE((TObject*)0,InputArguments) << "RooIntegrator1D::checkLimits: bad range with min >= max" << endl;
125  return kFALSE;
126  }
128 
129  // Adjust component integrators, if already created
130  if (_array && ret) {
131  Double_t segSize = (_xmax - _xmin) / _nseg ;
132  Int_t i ;
133  for (i=0 ; i<_nseg ; i++) {
134  _array[i]->setLimits(_xmin+i*segSize,_xmin+(i+1)*segSize) ;
135  }
136  }
137 
138  return ret ;
139 }
140 
141 
142 
std::string GetName(const std::string &scope_name)
Definition: Cppyy.cxx:145
RooAbsIntegrator is the abstract interface for integrators of real-valued functions that implement th...
float xmin
Definition: THbookFile.cxx:93
virtual ~RooSegmentedIntegrator2D()
Destructor.
RooSegmentedIntegrator2D()
Default constructor.
RooNumIntConfig holds the configuration parameters of the various numeric integrators used by RooReal...
float ymin
Definition: THbookFile.cxx:93
RooNumIntFactory is a factory to instantiate numeric integrators from a given function binding and a ...
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
static Int_t isInfinite(Double_t x)
Return true if x is infinite by RooNumBer internal specification.
Definition: RooNumber.cxx:58
STL namespace.
Bool_t isValid() const
void Class()
Definition: Class.C:29
Function binding representing the output of a RooAbsIntegrator.
#define oocoutE(o, a)
Definition: RooMsgService.h:47
RooSegmentedIntegrator1D implements an adaptive one-dimensional numerical integration algorithm...
void function(const Char_t *name_, T fun, const Char_t *docstring=0)
Definition: RExports.h:146
virtual RooAbsIntegrator * clone(const RooAbsFunc &function, const RooNumIntConfig &config) const
Virtual constructor with given function and configuration. Needed by RooNumIntFactory.
float ymax
Definition: THbookFile.cxx:93
virtual Double_t getMinLimit(UInt_t dimension) const =0
float xmax
Definition: THbookFile.cxx:93
Bool_t setLimits(Double_t *xmin, Double_t *xmax)
Change our integration limits.
const Bool_t kFALSE
Definition: RtypesCore.h:88
const RooAbsFunc * integrand() const
#define ClassImp(name)
Definition: Rtypes.h:359
virtual Double_t getMaxLimit(UInt_t dimension) const =0
double Double_t
Definition: RtypesCore.h:55
static void registerIntegrator(RooNumIntFactory &fact)
Register RooSegmentedIntegrator2D, its parameters, dependencies and capabilities with RooNumIntFactor...
Mother of all ROOT objects.
Definition: TObject.h:37
virtual Bool_t checkLimits() const
Check that our integration range is finite and otherwise return kFALSE.
RooSegmentedIntegrator1D * _xIntegrator
const Bool_t kTRUE
Definition: RtypesCore.h:87
Abstract interface for evaluating a real-valued function of one real variable and performing numerica...
Definition: RooAbsFunc.h:23
RooSegmentedIntegrator2D implements an adaptive one-dimensional numerical integration algorithm...
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...