Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RooAbsIntegrator.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 RooAbsIntegrator.cxx
19\class RooAbsIntegrator
20\ingroup Roofitcore
21
22RooAbsIntegrator is the abstract interface for integrators of real-valued
23functions that implement the RooAbsFunc interface.
24**/
25
26#include "Riostream.h"
27
28#include "RooAbsIntegrator.h"
29#include "RooMsgService.h"
30#include "TClass.h"
31
32using namespace std;
33
35
37
38////////////////////////////////////////////////////////////////////////////////
39/// Copy constructor
40
41RooAbsIntegrator::RooAbsIntegrator(const RooAbsFunc& function, bool doPrintEvalCounter) :
42 _function(&function), _valid(function.isValid()), _printEvalCounter(doPrintEvalCounter)
43{
44}
45
46
47
48////////////////////////////////////////////////////////////////////////////////
49/// Calculate integral value with given array of parameter values
50
51double RooAbsIntegrator::calculate(const double *yvec)
52{
54
55 integrand()->saveXVec() ;
56 double ret = integral(yvec) ;
58
59 cxcoutD(NumIntegration) << ClassName() << "::calculate(" << _function->getName() << ") number of function calls = " << integrand()->numCall()<<", result = "<<ret << endl ;
60 return ret ;
61}
62
64
65////////////////////////////////////////////////////////////////////////////////
66/// Interface to set limits on integration
67
69{
70 return setLimits(&xmin,&xmax) ;
71}
72
73
74
75////////////////////////////////////////////////////////////////////////////////
76/// Interface function that allows to defer limit definition to integrand definition
77
79{
80 return false ;
81}
#define cxcoutD(a)
#define ClassImp(name)
Definition Rtypes.h:377
float xmin
float xmax
Abstract interface for evaluating a real-valued function of one real variable and performing numerica...
Definition RooAbsFunc.h:27
virtual void saveXVec() const
Definition RooAbsFunc.h:56
void resetNumCall() const
Reset function call counter.
Definition RooAbsFunc.h:52
Int_t numCall() const
Return number of function calls since last reset.
Definition RooAbsFunc.h:47
virtual void restoreXVec() const
Definition RooAbsFunc.h:59
virtual const char * getName() const
Name of function binding.
Definition RooAbsFunc.h:65
RooAbsIntegrator is the abstract interface for integrators of real-valued functions that implement th...
virtual bool setUseIntegrandLimits(bool flag)
Interface function that allows to defer limit definition to integrand definition.
double calculate(const double *yvec=nullptr)
Calculate integral value with given array of parameter values.
virtual double integral(const double *yvec=nullptr)=0
const RooAbsFunc * _function
Pointer to function binding of integrand.
const RooAbsFunc * integrand() const
Return integrand function binding.
virtual bool setLimits(double *, double *)
virtual const char * ClassName() const
Returns name of class to which the object belongs.
Definition TObject.cxx:207