Logo ROOT  
Reference Guide
ParamHistFunc.h
Go to the documentation of this file.
1// @(#)root/roostats:$Id: cranmer $
2// Author: George Lewis, Kyle Cranmer
3/*************************************************************************
4 * Copyright (C) 1995-2008, Rene Brun and Fons Rademakers. *
5 * All rights reserved. *
6 * *
7 * For the licensing terms see $ROOTSYS/LICENSE. *
8 * For the list of contributors see $ROOTSYS/README/CREDITS. *
9 *************************************************************************/
10
11
12#ifndef ROO_PARAMHISTFUNC
13#define ROO_PARAMHISTFUNC
14
15#include "RooAbsReal.h"
16#include "RooListProxy.h"
17#include "RooObjCacheManager.h"
18#include "RooDataHist.h"
19
20// Forward Declarations
21class RooRealVar;
22class RooWorkspace;
23
24class ParamHistFunc : public RooAbsReal {
25public:
26
28 ParamHistFunc(const char *name, const char *title, const RooArgList& vars, const RooArgList& paramSet );
29 ParamHistFunc(const char *name, const char *title, const RooArgList& vars, const RooArgList& paramSet, const TH1* hist );
30 virtual ~ParamHistFunc() ;
31
32 ParamHistFunc(const ParamHistFunc& other, const char* name = 0);
33 virtual TObject* clone(const char* newname) const override { return new ParamHistFunc(*this, newname); }
34
35 const RooArgList& paramList() const { return _paramSet ; }
36
37 Int_t numBins() const { return _dataSet.numEntries(); } // Number of bins (called numEntries in RooDataHist)
38
40 void setConstant(bool constant);
41
42 void setShape(TH1* shape);
43
44 RooRealVar& getParameter() const ;
45 RooRealVar& getParameter( Int_t masterIdx ) const ;
46
47 const RooArgSet* get(Int_t masterIdx) const { return _dataSet.get( masterIdx ) ; }
48 const RooArgSet* get(const RooArgSet& coord) const { return _dataSet.get( coord ) ; }
49
50 double binVolume() const { return _dataSet.binVolume(); }
51
52 virtual Bool_t forceAnalyticalInt(const RooAbsArg&) const override { return kTRUE ; }
53
54 Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& analVars, const RooArgSet* normSet,const char* rangeName=0) const override;
55 Double_t analyticalIntegralWN(Int_t code, const RooArgSet* normSet, const char* rangeName=0) const override;
56
57 static RooArgList createParamSet(RooWorkspace& w, const std::string&, const RooArgList& Vars);
58 static RooArgList createParamSet(RooWorkspace& w, const std::string&, const RooArgList& Vars, Double_t, Double_t);
59 static RooArgList createParamSet(const std::string&, Int_t, Double_t, Double_t);
60
61 virtual std::list<Double_t>* binBoundaries(RooAbsRealLValue& /*obs*/, Double_t /*xlo*/, Double_t /*xhi*/) const override;
62 virtual std::list<Double_t>* plotSamplingHint(RooAbsRealLValue& obs, Double_t xlo, Double_t xhi) const override;
63 virtual Bool_t isBinnedDistribution(const RooArgSet& /*obs*/) const override { return true; }
64
65
66protected:
67
69 public:
70 CacheElem() {} ;
71 virtual ~CacheElem() {} ;
74 ret.add(_lowIntList);
75 ret.add(_highIntList);
76 return ret ;
77 }
81 // will want std::vector<RooRealVar*> for low and high also
82 } ;
83 mutable RooObjCacheManager _normIntMgr ; //! The integration cache manager
84
85 RooListProxy _dataVars; // The RooRealVars
86 RooListProxy _paramSet ; // interpolation parameters
87
89 struct NumBins {
91 NumBins(int nx, int ny, int nz) : x{nx}, y{ny}, z{nz}, xy{x*y}, xz{x*z}, yz{y*z}, xyz{xy*z} {}
92 int x = 0;
93 int y = 0;
94 int z = 0;
95 int xy = 0;
96 int xz = 0;
97 int yz = 0;
98 int xyz = 0;
99 };
102
103 Int_t getCurrentBin() const;
104 Int_t addVarSet( const RooArgList& vars );
105 Int_t addParamSet( const RooArgList& params );
106 static Int_t GetNumBins( const RooArgSet& vars );
107 double evaluate() const override;
108 RooSpan<double> evaluateSpan(RooBatchCompute::RunContext& evalData, const RooArgSet* normSet) const override;
109
110private:
111 static NumBins getNumBinsPerDim(RooArgSet const& vars);
112
114};
115
116#endif
int Int_t
Definition: RtypesCore.h:45
bool Bool_t
Definition: RtypesCore.h:63
double Double_t
Definition: RtypesCore.h:59
const Bool_t kTRUE
Definition: RtypesCore.h:100
#define ClassDefOverride(name, id)
Definition: Rtypes.h:329
char name[80]
Definition: TGX11.cxx:110
virtual RooArgList containedArgs(Action)
Definition: ParamHistFunc.h:72
A class which maps the current values of a RooRealVar (or a set of RooRealVars) to one of a number of...
Definition: ParamHistFunc.h:24
static NumBins getNumBinsPerDim(RooArgSet const &vars)
const RooArgSet * get(Int_t masterIdx) const
Definition: ParamHistFunc.h:47
virtual ~ParamHistFunc()
void setParamConst(Int_t, Bool_t=kTRUE)
RooRealVar & getParameter() const
RooDataHist _dataSet
static Int_t GetNumBins(const RooArgSet &vars)
void setConstant(bool constant)
const RooArgList & paramList() const
Definition: ParamHistFunc.h:35
virtual std::list< Double_t > * binBoundaries(RooAbsRealLValue &, Double_t, Double_t) const override
Return sampling hint for making curves of (projections) of this function as the recursive division st...
virtual TObject * clone(const char *newname) const override
Definition: ParamHistFunc.h:33
Int_t getCurrentBin() const
Get the index of the gamma parameter associated with the current bin.
RooObjCacheManager _normIntMgr
Definition: ParamHistFunc.h:83
Int_t numBins() const
Definition: ParamHistFunc.h:37
Int_t getAnalyticalIntegralWN(RooArgSet &allVars, RooArgSet &analVars, const RooArgSet *normSet, const char *rangeName=0) const override
Advertise that all integrals can be handled internally.
virtual Bool_t forceAnalyticalInt(const RooAbsArg &) const override
Definition: ParamHistFunc.h:52
RooSpan< double > evaluateSpan(RooBatchCompute::RunContext &evalData, const RooArgSet *normSet) const override
Find all bins corresponding to the values of the observables in evalData, and evaluate the associated...
const RooArgSet * get(const RooArgSet &coord) const
Definition: ParamHistFunc.h:48
Int_t addVarSet(const RooArgList &vars)
return 0 for success return 1 for failure Check that the elements are actually RooRealVar's If so,...
Int_t addParamSet(const RooArgList &params)
NumBins _numBinsPerDim
double evaluate() const override
Find the bin corresponding to the current value of the observable, and evaluate the associated parame...
Double_t analyticalIntegralWN(Int_t code, const RooArgSet *normSet, const char *rangeName=0) const override
Implement analytical integrations by doing appropriate weighting from component integrals functions t...
static RooArgList createParamSet(RooWorkspace &w, const std::string &, const RooArgList &Vars)
Create the list of RooRealVar parameters which represent the height of the histogram bins.
virtual std::list< Double_t > * plotSamplingHint(RooAbsRealLValue &obs, Double_t xlo, Double_t xhi) const override
Return sampling hint for making curves of (projections) of this function as the recursive division st...
RooListProxy _paramSet
Definition: ParamHistFunc.h:86
void setShape(TH1 *shape)
double binVolume() const
Definition: ParamHistFunc.h:50
RooListProxy _dataVars
The integration cache manager.
Definition: ParamHistFunc.h:85
virtual Bool_t isBinnedDistribution(const RooArgSet &) const override
Tests if the distribution is binned. Unless overridden by derived classes, this always returns false.
Definition: ParamHistFunc.h:63
RooAbsArg is the common abstract base class for objects that represent a value and a "shape" in RooFi...
Definition: RooAbsArg.h:72
RooAbsCacheElement is the abstract base class for objects to be stored in RooAbsCache cache manager o...
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE)
Add the specified argument to list.
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:44
double binVolume(std::size_t i) const
Return bin volume of i-th bin.
Definition: RooDataHist.h:117
Int_t numEntries() const override
Return the number of bins.
const RooArgSet * get() const override
Get bin centre of current bin.
Definition: RooDataHist.h:83
RooListProxy is the concrete proxy for RooArgList objects.
Definition: RooListProxy.h:24
Class RooObjCacheManager is an implementation of class RooCacheManager<RooAbsCacheElement> and specia...
RooRealVar represents a variable that can be changed from the outside.
Definition: RooRealVar.h:39
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
TH1 is the base class of all histogram classes in ROOT.
Definition: TH1.h:58
Mother of all ROOT objects.
Definition: TObject.h:37
NumBins(int nx, int ny, int nz)
Definition: ParamHistFunc.h:91
This struct enables passing computation data around between elements of a computation graph.
Definition: RunContext.h:31