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 ~ParamHistFunc() override ;
31
32 ParamHistFunc(const ParamHistFunc& other, const char* name = 0);
33 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
39 void setParamConst( Int_t, bool=true );
40 void setConstant(bool constant);
41
42 void setShape(TH1* shape);
43
44 RooAbsReal& getParameter() const ;
45 RooAbsReal& 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 bool forceAnalyticalInt(const RooAbsArg&) const override { return true ; }
53
54 Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& analVars, const RooArgSet* normSet,const char* rangeName=nullptr) const override;
55 double analyticalIntegralWN(Int_t code, const RooArgSet* normSet, const char* rangeName=nullptr) 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, double);
59 static RooArgList createParamSet(const std::string&, Int_t, double, double);
60
61 std::list<double>* binBoundaries(RooAbsRealLValue& /*obs*/, double /*xlo*/, double /*xhi*/) const override;
62 std::list<double>* plotSamplingHint(RooAbsRealLValue& obs, double xlo, double xhi) const override;
63 bool isBinnedDistribution(const RooArgSet& obs) const override { return _dataVars.overlaps(obs); }
64
65
66protected:
67
69 public:
70 CacheElem() {} ;
71 ~CacheElem() override {} ;
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 void computeBatch(cudaStream_t*, double* output, size_t size, RooFit::Detail::DataMap const&) const override;
109
110private:
111 static NumBins getNumBinsPerDim(RooArgSet const& vars);
112
114};
115
116#endif
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
#define ClassDefOverride(name, id)
Definition: Rtypes.h:339
char name[80]
Definition: TGX11.cxx:110
RooArgList containedArgs(Action) override
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
std::list< double > * binBoundaries(RooAbsRealLValue &, double, double) const override
Return sampling hint for making curves of (projections) of this function as the recursive division st...
RooDataHist _dataSet
static Int_t GetNumBins(const RooArgSet &vars)
TObject * clone(const char *newname) const override
Definition: ParamHistFunc.h:33
double analyticalIntegralWN(Int_t code, const RooArgSet *normSet, const char *rangeName=nullptr) const override
Implement analytical integrations by doing appropriate weighting from component integrals functions t...
void setConstant(bool constant)
const RooArgList & paramList() const
Definition: ParamHistFunc.h:35
Int_t getCurrentBin() const
Get the index of the gamma parameter associated with the current bin.
Int_t getAnalyticalIntegralWN(RooArgSet &allVars, RooArgSet &analVars, const RooArgSet *normSet, const char *rangeName=nullptr) const override
Advertise that all integrals can be handled internally.
RooObjCacheManager _normIntMgr
! The integration cache manager
Definition: ParamHistFunc.h:83
Int_t numBins() const
Definition: ParamHistFunc.h:37
double evaluate() const override
Find the bin corresponding to the current value of the observable, and evaluate the associated parame...
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,...
RooAbsReal & getParameter() const
bool forceAnalyticalInt(const RooAbsArg &) const override
Definition: ParamHistFunc.h:52
Int_t addParamSet(const RooArgList &params)
NumBins _numBinsPerDim
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.
void setParamConst(Int_t, bool=true)
std::list< double > * plotSamplingHint(RooAbsRealLValue &obs, double xlo, double xhi) const override
Return sampling hint for making curves of (projections) of this function as the recursive division st...
RooListProxy _paramSet
interpolation parameters
Definition: ParamHistFunc.h:86
~ParamHistFunc() override
void setShape(TH1 *shape)
double binVolume() const
Definition: ParamHistFunc.h:50
RooListProxy _dataVars
The RooRealVars.
Definition: ParamHistFunc.h:85
bool isBinnedDistribution(const RooArgSet &obs) const override
Tests if the distribution is binned. Unless overridden by derived classes, this always returns false.
Definition: ParamHistFunc.h:63
void computeBatch(cudaStream_t *, double *output, size_t size, RooFit::Detail::DataMap const &) const override
Find all bins corresponding to the values of the observables in evalData, and evaluate the associated...
RooAbsArg is the common abstract base class for objects that represent a value and a "shape" in RooFi...
Definition: RooAbsArg.h:71
RooAbsCacheElement is the abstract base class for objects to be stored in RooAbsCache cache manager o...
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
bool overlaps(Iterator_t otherCollBegin, Iterator_t otherCollEnd) const
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:62
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:56
The RooDataHist is a container class to hold N-dimensional binned data.
Definition: RooDataHist.h:45
double binVolume(std::size_t i) const
Return bin volume of i-th bin.
Definition: RooDataHist.h:116
Int_t numEntries() const override
Return the number of bins.
const RooArgSet * get() const override
Get bin centre of current bin.
Definition: RooDataHist.h:82
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:40
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
static void output()