Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RooRealAnalytic.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 RooRealAnalytic.cxx
19\class RooRealAnalytic
20\ingroup Roofitcore
21
22Lightweight RooAbsFunc interface adaptor that binds an analytic integral of a
23RooAbsReal object (specified by a code) to a set of dependent variables.
24**/
25
26#include "RooRealAnalytic.h"
27#include "RooAbsRealLValue.h"
28
29#include <assert.h>
30
31using namespace std;
32
34;
35
36
37////////////////////////////////////////////////////////////////////////////////
38/// Evaluate our analytic integral at the specified values of the dependents.
39
40double RooRealAnalytic::operator()(const double xvector[]) const
41{
42 assert(isValid());
43 loadValues(xvector);
44 _ncall++ ;
46}
47
48
49////////////////////////////////////////////////////////////////////////////////
50/// Evaluate the analytic integral of the function at the specified values of the dependents.
52 assert(isValid());
53 _ncall += coordinates.front().size();
54
55 if (!_batchBuffer)
56 _batchBuffer = std::make_unique<std::vector<double>>();
57 _batchBuffer->resize(coordinates.front().size());
59
60 for (std::size_t i=0; i < coordinates.front().size(); ++i) {
61 for (unsigned int dim=0; dim < coordinates.size(); ++dim) {
62 _vars[dim]->setVal(coordinates[dim][i]);
63 }
64
65 if (_code == 0) {
66 results[i] = _func->getVal(_nset);
67 } else {
69 }
70 }
71
72 return results;
73}
74
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
#define ClassImp(name)
Definition Rtypes.h:377
bool isValid() const
Definition RooAbsFunc.h:37
Int_t _ncall
Function call counter.
Definition RooAbsFunc.h:78
double getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
Definition RooAbsReal.h:91
virtual double analyticalIntegralWN(Int_t code, const RooArgSet *normSet, const char *rangeName=nullptr) const
Implements the actual analytical integral(s) advertised by getAnalyticalIntegral.
Lightweight RooAbsFunc interface adaptor that binds an analytic integral of a RooAbsReal object (spec...
double operator()(const double xvector[]) const override
Evaluate our analytic integral at the specified values of the dependents.
RooSpan< const double > getValues(std::vector< RooSpan< const double > > coordinates) const override
Evaluate the analytic integral of the function at the specified values of the dependents.
std::unique_ptr< std::vector< double > > _batchBuffer
! Buffer for handing out spans.
std::vector< RooAbsRealLValue * > _vars
Non-owned pointers to variables.
void loadValues(const double xvector[]) const
Load the vector of variable values into the RooRealVars associated as variables with the bound RooAbs...
const RooArgSet * _nset
const RooAbsReal * _func
const TNamed * _rangeName
!
A simple container to hold a batch of data values.
Definition RooSpan.h:34
const char * GetName() const override
Returns name of object.
Definition TNamed.h:47