Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
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 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 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 std::list<Double_t>* binBoundaries(RooAbsRealLValue& /*obs*/, Double_t /*xlo*/, Double_t /*xhi*/) const override;
62 std::list<Double_t>* plotSamplingHint(RooAbsRealLValue& obs, Double_t xlo, Double_t xhi) const override;
63 Bool_t isBinnedDistribution(const RooArgSet& obs) const override { return _dataVars.overlaps(obs); }
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 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
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)
A class which maps the current values of a RooRealVar (or a set of RooRealVars) to one of a number of...
static NumBins getNumBinsPerDim(RooArgSet const &vars)
const RooArgSet * get(Int_t masterIdx) const
virtual ~ParamHistFunc()
void setParamConst(Int_t, Bool_t=kTRUE)
RooDataHist _dataSet
static Int_t GetNumBins(const RooArgSet &vars)
void setConstant(bool constant)
const RooArgList & paramList() const
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
Int_t getCurrentBin() const
Get the index of the gamma parameter associated with the current bin.
Bool_t isBinnedDistribution(const RooArgSet &obs) const override
Tests if the distribution is binned. Unless overridden by derived classes, this always returns false.
RooObjCacheManager _normIntMgr
! The integration cache manager
Int_t numBins() const
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
const RooArgSet * get(const RooArgSet &coord) const
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
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.
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
interpolation parameters
void setShape(TH1 *shape)
double binVolume() const
RooListProxy _dataVars
The RooRealVars.
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:69
RooAbsCacheElement is the abstract base class for objects to be stored in RooAbsCache cache manager o...
bool overlaps(Iterator_t otherCollBegin, Iterator_t otherCollEnd) const
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:64
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:45
double binVolume(std::size_t i) const
Return bin volume of i-th bin.
Int_t numEntries() const override
Return the number of bins.
const RooArgSet * get() const override
Get bin centre of current bin.
Definition RooDataHist.h:84
RooListProxy is the concrete proxy for RooArgList objects.
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
The RooWorkspace is a persistable container for RooFit projects.
TH1 is the base class of all histogram classes in ROOT.
Definition TH1.h:58
Mother of all ROOT objects.
Definition TObject.h:41
NumBins(int nx, int ny, int nz)
static void output(int code)
Definition gifencode.c:226