/usr/include/root/RooRealIntegral.h is in libroot-roofit-dev 5.34.19+dfsg-1.2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | /*****************************************************************************
* Project: RooFit *
* Package: RooFitCore *
* File: $Id: RooRealIntegral.h,v 1.44 2007/05/11 09:11:30 verkerke Exp $
* Authors: *
* WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
* DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
* *
* Copyright (c) 2000-2005, Regents of the University of California *
* and Stanford University. All rights reserved. *
* *
* Redistribution and use in source and binary forms, *
* with or without modification, are permitted according to the terms *
* listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
*****************************************************************************/
#ifndef ROO_REAL_INTEGRAL
#define ROO_REAL_INTEGRAL
#include "RooAbsReal.h"
#include "RooArgSet.h"
#include "RooAbsPdf.h"
#include "RooRealProxy.h"
#include "RooSetProxy.h"
#include "RooListProxy.h"
class RooArgSet ;
class TH1F ;
class RooAbsCategory ;
class RooRealVar ;
class RooAbsIntegrator ;
class RooNumIntConfig ;
class RooRealIntegral : public RooAbsReal {
public:
// Constructors, assignment etc
RooRealIntegral() ;
RooRealIntegral(const char *name, const char *title, const RooAbsReal& function, const RooArgSet& depList,
const RooArgSet* funcNormSet=0, const RooNumIntConfig* config=0, const char* rangeName=0) ;
RooRealIntegral(const RooRealIntegral& other, const char* name=0);
virtual TObject* clone(const char* newname) const { return new RooRealIntegral(*this,newname); }
virtual ~RooRealIntegral();
virtual Double_t getValV(const RooArgSet* set=0) const ;
Bool_t isValid() const { return _valid; }
void printMultiline(std::ostream& os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const ;
void printMetaArgs(std::ostream& os) const ;
const RooArgSet& numIntCatVars() const { return _sumList ; }
const RooArgSet& numIntRealVars() const { return _intList ; }
const RooArgSet& anaIntVars() const { return _anaList ; }
RooArgSet intVars() const { RooArgSet tmp(_sumList) ; tmp.add(_intList) ; tmp.add(_anaList) ; tmp.add(_facList) ; return tmp ; }
const char* intRange() { return _rangeName ? _rangeName->GetName() : 0 ; }
const RooAbsReal& integrand() const { return _function.arg() ; }
void setCacheNumeric(Bool_t flag) {
// If true, value of this interal is cached if it is (partially numeric)
_cacheNum = flag ;
}
Bool_t getCacheNumeric() {
// If true, value of this interal is cached if it is (partially numeric)
return _cacheNum ;
}
static void setCacheAllNumeric(Int_t ndim) ;
static Int_t getCacheAllNumeric() ;
virtual std::list<Double_t>* plotSamplingHint(RooAbsRealLValue& obs, Double_t xlo, Double_t xhi) const {
// Forward plot sampling hint of integrand
return _function.arg().plotSamplingHint(obs,xlo,xhi) ;
}
virtual RooAbsReal* createIntegral(const RooArgSet& iset, const RooArgSet* nset=0, const RooNumIntConfig* cfg=0, const char* rangeName=0) const ;
protected:
mutable Bool_t _valid;
const RooArgSet& parameters() const ;
enum IntOperMode { Hybrid, Analytic, PassThrough } ;
//friend class RooAbsPdf ;
Bool_t initNumIntegrator() const;
void autoSelectDirtyMode() ;
virtual Double_t sum() const ;
virtual Double_t integrate() const ;
virtual Double_t jacobianProduct() const ;
// Evaluation and validation implementation
Double_t evaluate() const ;
virtual Bool_t isValidReal(Double_t value, Bool_t printError=kFALSE) const ;
Bool_t servesExclusively(const RooAbsArg* server,const RooArgSet& exclLVBranches, const RooArgSet& allBranches) const ;
virtual Bool_t redirectServersHook(const RooAbsCollection& newServerList,
Bool_t mustReplaceAll, Bool_t nameChange, Bool_t isRecursive) ;
// Function pointer and integrands list
mutable RooSetProxy _sumList ; // Set of discrete observable over which is summed numerically
mutable RooSetProxy _intList ; // Set of continuous observables over which is integrated numerically
mutable RooSetProxy _anaList ; // Set of observables over which is integrated/summed analytically
mutable RooSetProxy _jacList ; // Set of lvalue observables over which is analytically integration that have a non-unit Jacobian
mutable RooSetProxy _facList ; // Set of observables on which function does not depends, which are integrated nevertheless
mutable RooArgSet _facListOwned ; // Owned components in _facList
TIterator* _facListIter ; //! Iterator over factorizing observables
TIterator* _jacListIter ; //! Iterator over lvalue observables with Jacobian
RooRealProxy _function ; // Function being integration
RooArgSet* _funcNormSet ; // Optional normalization set passed to function
mutable RooArgSet _saveInt ; //! do not persist
mutable RooArgSet _saveSum ; //! do not persist
RooNumIntConfig* _iconfig ;
mutable RooListProxy _sumCat ; //! do not persist
TIterator* _sumCatIter ; //!
Int_t _mode ;
IntOperMode _intOperMode ; // integration operation mode
mutable Bool_t _restartNumIntEngine ; //! do not persist
mutable RooAbsIntegrator* _numIntEngine ; //! do not persist
mutable RooAbsFunc *_numIntegrand; //! do not persist
TNamed* _rangeName ;
mutable RooArgSet* _params ; //! cache for set of parameters
Bool_t _cacheNum ; // Cache integral if numeric
static Int_t _cacheAllNDim ; //! Cache all integrals with given numeric dimension
virtual void operModeHook() ; // cache operation mode
ClassDef(RooRealIntegral,2) // Real-valued function representing an integral over a RooAbsReal object
};
#endif
|