ROOT  6.07/01
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 
22 RooAbsIntegrator is the abstract interface for integrators of real-valued
23 functions that implement the RooAbsFunc interface.
24 **/
25 
26 #include "RooFit.h"
27 
28 #include "Riostream.h"
29 
30 
31 #include "RooAbsIntegrator.h"
32 #include "RooAbsIntegrator.h"
33 #include "RooMsgService.h"
34 #include "TClass.h"
35 
36 using namespace std;
37 
39 ;
40 
41 
42 ////////////////////////////////////////////////////////////////////////////////
43 /// Default constructor
44 
45 RooAbsIntegrator::RooAbsIntegrator() : _function(0), _valid(kFALSE), _printEvalCounter(kFALSE)
46 {
47 }
48 
49 
50 
51 ////////////////////////////////////////////////////////////////////////////////
52 /// Copy constructor
53 
54 RooAbsIntegrator::RooAbsIntegrator(const RooAbsFunc& function, Bool_t doPrintEvalCounter) :
55  _function(&function), _valid(function.isValid()), _printEvalCounter(doPrintEvalCounter)
56 {
57 }
58 
59 
60 
61 ////////////////////////////////////////////////////////////////////////////////
62 /// Calculate integral value with given array of parameter values
63 
65 {
66  integrand()->resetNumCall() ;
67 
68  integrand()->saveXVec() ;
69  Double_t ret = integral(yvec) ;
70  integrand()->restoreXVec() ;
71 
72  cxcoutD(NumIntegration) << IsA()->GetName() << "::calculate(" << _function->getName() << ") number of function calls = " << integrand()->numCall()<<", result = "<<ret << endl ;
73  return ret ;
74 }
75 
76 
77 
78 ////////////////////////////////////////////////////////////////////////////////
79 /// Interface to set limits on integration
80 
82 {
83  return setLimits(&xmin,&xmax) ;
84 }
85 
86 
87 
88 ////////////////////////////////////////////////////////////////////////////////
89 /// Interface function that allows to defer limit definition to integrand definition
90 
92 {
93  return kFALSE ;
94 }
RooAbsIntegrator is the abstract interface for integrators of real-valued functions that implement th...
float xmin
Definition: THbookFile.cxx:93
virtual const char * getName() const
Definition: RooAbsFunc.h:59
#define cxcoutD(a)
Definition: RooMsgService.h:80
virtual void saveXVec() const
Definition: RooAbsFunc.h:51
bool Bool_t
Definition: RtypesCore.h:59
Double_t calculate(const Double_t *yvec=0)
Calculate integral value with given array of parameter values.
const Bool_t kFALSE
Definition: Rtypes.h:92
virtual Bool_t setLimits(Double_t *, Double_t *)
virtual Double_t integral(const Double_t *yvec=0)=0
RooAbsIntegrator()
Default constructor.
Int_t numCall() const
Definition: RooAbsFunc.h:42
void function(const char *name_, T fun, const char *docstring=0)
Definition: RExports.h:159
ClassImp(RooAbsIntegrator)
virtual void restoreXVec() const
Definition: RooAbsFunc.h:54
TClass * IsA() const
const RooAbsFunc * _function
virtual const char * GetName() const
Returns name of object.
Definition: TNamed.h:51
float xmax
Definition: THbookFile.cxx:93
void resetNumCall() const
Definition: RooAbsFunc.h:46
double Double_t
Definition: RtypesCore.h:55
virtual Bool_t setUseIntegrandLimits(Bool_t flag)
Interface function that allows to defer limit definition to integrand definition. ...
const RooAbsFunc * integrand() const
Abstract interface for evaluating a real-valued function of one real variable and performing numerica...
Definition: RooAbsFunc.h:23