Logo ROOT  
Reference Guide
RooHistFunc.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * File: $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#ifndef ROO_HIST_FUNC
17#define ROO_HIST_FUNC
18
19#include "RooAbsReal.h"
20#include "RooRealProxy.h"
21#include "RooSetProxy.h"
22#include "RooAICRegistry.h"
23#include "RooTrace.h"
24#include <list>
25
26class RooRealVar;
27class RooAbsReal;
28class RooDataHist ;
29
30class RooHistFunc : public RooAbsReal {
31public:
32 RooHistFunc() ;
33 RooHistFunc(const char *name, const char *title, const RooArgSet& vars, const RooDataHist& dhist, Int_t intOrder=0);
34 RooHistFunc(const char *name, const char *title, const RooArgList& funcObs, const RooArgList& histObs, const RooDataHist& dhist, Int_t intOrder=0);
35 RooHistFunc(const RooHistFunc& other, const char* name=0);
36 virtual TObject* clone(const char* newname) const { return new RooHistFunc(*this,newname); }
37 virtual ~RooHistFunc() ;
38
39 /// Return RooDataHist that is represented.
41 return *_dataHist ;
42 }
43
44 /// Return RooDataHist that is represented.
45 const RooDataHist& dataHist() const {
46 return *_dataHist ;
47 }
48
49 /// Get total bin volume spanned by this hist function.
50 /// In 1-d, this is e.g. the range spanned on the x-axis.
51 Double_t totVolume() const;
52
53 /// Set histogram interpolation order.
55
56 _intOrder = order ;
57 }
58
59 /// Return histogram interpolation order.
61
62 return _intOrder ;
63 }
64
65 Int_t getAnalyticalIntegral(RooArgSet& allVars, RooArgSet& analVars, const char* rangeName=0) const ;
66 Double_t analyticalIntegral(Int_t code, const char* rangeName=0) const ;
67
68 /// Set use of special boundary conditions for c.d.f.s
70 _cdfBoundaries = flag ;
71 }
72
73 /// If true, special boundary conditions for c.d.f.s are used
75
76 return _cdfBoundaries ;
77 }
78
79 virtual Int_t getMaxVal(const RooArgSet& vars) const;
80 virtual Double_t maxVal(Int_t code) const;
81
82 virtual std::list<Double_t>* binBoundaries(RooAbsRealLValue& /*obs*/, Double_t /*xlo*/, Double_t /*xhi*/) const ;
83 virtual std::list<Double_t>* plotSamplingHint(RooAbsRealLValue& obs, Double_t xlo, Double_t xhi) const ;
84 virtual Bool_t isBinnedDistribution(const RooArgSet&) const { return _intOrder==0 ; }
85 RooArgSet const& getHistObsList() const { return _histObsList; }
86
87
88 Int_t getBin() const;
89 std::vector<Int_t> getBins(RooBatchCompute::RunContext& evalData) const;
90
91protected:
92
94 Bool_t areIdentical(const RooDataHist& dh1, const RooDataHist& dh2) ;
95
96 Double_t evaluate() const;
97 RooSpan<double> evaluateSpan(RooBatchCompute::RunContext& evalData, const RooArgSet* /*normSet*/) const;
98 friend class RooAbsCachedReal ;
99
100 virtual void ioStreamerPass2() ;
101
102 RooArgSet _histObsList ; // List of observables defining dimensions of histogram
103 RooSetProxy _depList ; // List of observables mapped onto histogram observables
104 RooDataHist* _dataHist ; // Unowned pointer to underlying histogram
105 mutable RooAICRegistry _codeReg ; //! Auxiliary class keeping tracking of analytical integration code
106 Int_t _intOrder ; // Interpolation order
107 Bool_t _cdfBoundaries ; // Use boundary conditions for CDFs.
108 mutable Double_t _totVolume ; //! Total volume of space (product of ranges of observables)
109 Bool_t _unitNorm ; //! Assume contents is unit normalized (for use as pdf cache)
110
111 ClassDef(RooHistFunc,2) // Histogram based function
112};
113
114#endif
int Int_t
Definition: CPyCppyy.h:43
bool Bool_t
Definition: RtypesCore.h:63
double Double_t
Definition: RtypesCore.h:59
#define ClassDef(name, id)
Definition: Rtypes.h:325
RooAICRegistry is a utility class for operator p.d.f classes that keeps track of analytical integrati...
RooAbsCachedReal is the abstract base class for functions that need or want to cache their evaluate()...
RooAbsRealLValue is the common abstract base class for objects that represent a real value that may a...
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition: RooAbsReal.h:61
RooArgList is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgList.h:22
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:35
The RooDataHist is a container class to hold N-dimensional binned data.
Definition: RooDataHist.h:39
RooHistFunc implements a real-valued function sampled from a multidimensional histogram.
Definition: RooHistFunc.h:30
RooDataHist & dataHist()
Return RooDataHist that is represented.
Definition: RooHistFunc.h:40
virtual Int_t getMaxVal(const RooArgSet &vars) const
Only handle case of maximum in all variables.
Int_t getInterpolationOrder() const
Return histogram interpolation order.
Definition: RooHistFunc.h:60
Bool_t _cdfBoundaries
Definition: RooHistFunc.h:107
RooDataHist * _dataHist
Definition: RooHistFunc.h:104
Double_t evaluate() const
Return the current value: The value of the bin enclosing the current coordinates of the dependents,...
Int_t getAnalyticalIntegral(RooArgSet &allVars, RooArgSet &analVars, const char *rangeName=0) const
Determine integration scenario.
Bool_t importWorkspaceHook(RooWorkspace &ws)
Check if our datahist is already in the workspace.
void setInterpolationOrder(Int_t order)
Set histogram interpolation order.
Definition: RooHistFunc.h:54
virtual std::list< Double_t > * binBoundaries(RooAbsRealLValue &, Double_t, Double_t) const
Return sampling hint for making curves of (projections) of this function as the recursive division st...
RooHistFunc()
Default constructor.
Definition: RooHistFunc.cxx:52
RooSpan< double > evaluateSpan(RooBatchCompute::RunContext &evalData, const RooArgSet *) const
Compute value of the HistFunc for every entry in evalData.
RooAICRegistry _codeReg
Definition: RooHistFunc.h:105
Bool_t _unitNorm
Total volume of space (product of ranges of observables)
Definition: RooHistFunc.h:109
const RooDataHist & dataHist() const
Return RooDataHist that is represented.
Definition: RooHistFunc.h:45
Double_t totVolume() const
Get total bin volume spanned by this hist function.
virtual TObject * clone(const char *newname) const
Definition: RooHistFunc.h:36
RooArgSet const & getHistObsList() const
Definition: RooHistFunc.h:85
Double_t analyticalIntegral(Int_t code, const char *rangeName=0) const
Return integral identified by 'code'.
virtual void ioStreamerPass2()
Schema evolution: if histObsList wasn't filled from persistence (v1) then fill it here.
Bool_t areIdentical(const RooDataHist &dh1, const RooDataHist &dh2)
Int_t getBin() const
Compute bin number corresponding to current coordinates.
virtual Bool_t isBinnedDistribution(const RooArgSet &) const
Tests if the distribution is binned. Unless overridden by derived classes, this always returns false.
Definition: RooHistFunc.h:84
virtual ~RooHistFunc()
virtual Double_t maxVal(Int_t code) const
Return maximum value for set of observables identified by code assigned in getMaxVal.
Int_t _intOrder
Auxiliary class keeping tracking of analytical integration code.
Definition: RooHistFunc.h:106
Double_t _totVolume
Definition: RooHistFunc.h:108
Bool_t getCdfBoundaries() const
If true, special boundary conditions for c.d.f.s are used.
Definition: RooHistFunc.h:74
std::vector< Int_t > getBins(RooBatchCompute::RunContext &evalData) const
Compute bin numbers corresponding to all coordinates in evalData.
RooSetProxy _depList
Definition: RooHistFunc.h:103
void setCdfBoundaries(Bool_t flag)
Set use of special boundary conditions for c.d.f.s.
Definition: RooHistFunc.h:69
RooArgSet _histObsList
Definition: RooHistFunc.h:102
virtual std::list< Double_t > * plotSamplingHint(RooAbsRealLValue &obs, Double_t xlo, Double_t xhi) const
Return sampling hint for making curves of (projections) of this function as the recursive division st...
RooRealVar represents a variable that can be changed from the outside.
Definition: RooRealVar.h:39
RooSetProxy is the concrete proxy for RooArgSet objects.
Definition: RooSetProxy.h:23
A simple container to hold a batch of data values.
Definition: RooSpan.h:34
The RooWorkspace is a persistable container for RooFit projects.
Definition: RooWorkspace.h:43
Mother of all ROOT objects.
Definition: TObject.h:37
static const std::string name("name")
This struct enables passing computation data around between elements of a computation graph.
Definition: RunContext.h:31
void ws()
Definition: ws.C:66