ROOT   Reference Guide
TUnuranDiscrDist Class Reference

TUnuranDiscrDist class for one dimensional discrete distribution.

It is used by TUnuran to generate integer random numbers according to this distribution via TUnuran::SampleDiscr().

The class can be constructed from a one-dimensional function (TF1 pointer) representing the discrete distribution (probability mesh function) (for example a TF1("f","TMath::PoissonI(x,[0])") ) or from a vector of probability, used by passing an iterator specifying the begin and the end of the vector. In the latter case the domain of the distribution will be defined by the vector, while in the first case is by default (0,+inf). a Method to set the domain of the distribution ( SetDomain ) is provided and it defines the range of the generated random numbers.

The derivatives of the pdf which are used by some UNURAN methods are estimated numerically in the Derivative() method. Some extra information (like distribution mode, cdf function, probability sum, etc..) can be set as well otherwise will be estimated internally if required.

Definition at line 51 of file TUnuranDiscrDist.h.

## Public Member Functions

TUnuranDiscrDist (const ROOT::Math::IGenFunction &func, bool copyFunc=false)
Constructor from a generic function object specifying the pdf. More...

TUnuranDiscrDist (const TUnuranDiscrDist &)
Copy constructor. More...

template<class Iterator >
TUnuranDiscrDist (Iterator *begin, Iterator *end)
Constructor from a vector of probability. More...

TUnuranDiscrDist (TF1 *func)
Constructor from a TF1 objects specifying the pdf. More...

virtual ~TUnuranDiscrDist ()
Destructor. More...

double Cdf (int x) const
evaluate the integral (cdf) on the given domain More...

virtual TUnuranDiscrDistClone () const
Clone (required by base class) More...

bool GetDomain (int &xmin, int &xmax) const
check if distribution has domain and return in case its domain More...

bool HasCdf () const
flag to control if distribution provides also a Cdf More...

bool HasMode () const
flag to control if distribution provides the mode More...

bool HasProbSum () const
flag to control if distribution provides the total area of the probability function More...

int Mode () const
get the mode (x location of function maximum) More...

TUnuranDiscrDistoperator= (const TUnuranDiscrDist &rhs)
Assignment operator. More...

double Pmf (int x) const
evaluate the distribution (probability mesh function) at the integer value x. More...

double ProbSum () const
return area of the pdf More...

const std::vector< double > & ProbVec () const
retrieve a reference to the vector of the probabilities : Prob(i) If the distribution is defined from a function (i.e. More...

void SetCdf (const ROOT::Math::IGenFunction &cdf)
set cdf distribution from a generic function interface. More...

void SetCdf (TF1 *cdf)
set cdf distribution from a TF1 pointer. More...

void SetDomain (int xmin, int xmax)
Set the distribution domain, by default the domain is [0,INT_MAX] If xmin >= xmax a domain is removed. More...

void SetMode (int mode)
set the mode of the distribution (location of maximum probability) More...

void SetProbSum (double sum)
set the value of the sum of the probabilities in the given domain More...

Public Member Functions inherited from TUnuranBaseDist
virtual ~TUnuranBaseDist ()
Destructor (no operations) More...

virtual TUnuranBaseDistClone () const =0
Abstract clone method for a deep copy of the derived classes. More...

## Private Attributes

const ROOT::Math::IGenFunctionfCdf

bool fHasDomain

bool fHasMode

bool fHasSum

int fMode

bool fOwnFunc

const ROOT::Math::IGenFunctionfPmf

std::vector< doublefPVec

std::vector< doublefPVecSum

double fSum

int fXmax

int fXmin

#include <TUnuranDiscrDist.h>

Inheritance diagram for TUnuranDiscrDist:
[legend]

## ◆ TUnuranDiscrDist() [1/4]

 TUnuranDiscrDist::TUnuranDiscrDist ( const ROOT::Math::IGenFunction & func, bool copyFunc = false )

Constructor from a generic function object specifying the pdf.

Definition at line 23 of file TUnuranDiscrDist.cxx.

## ◆ TUnuranDiscrDist() [2/4]

 TUnuranDiscrDist::TUnuranDiscrDist ( TF1 * func )

Constructor from a TF1 objects specifying the pdf.

Definition at line 43 of file TUnuranDiscrDist.cxx.

## ◆ TUnuranDiscrDist() [3/4]

template<class Iterator >
 TUnuranDiscrDist::TUnuranDiscrDist ( Iterator * begin, Iterator * end )
inline

Constructor from a vector of probability.

Definition at line 69 of file TUnuranDiscrDist.h.

## ◆ ~TUnuranDiscrDist()

 TUnuranDiscrDist::~TUnuranDiscrDist ( )
virtual

Destructor.

Definition at line 96 of file TUnuranDiscrDist.cxx.

## ◆ TUnuranDiscrDist() [4/4]

 TUnuranDiscrDist::TUnuranDiscrDist ( const TUnuranDiscrDist & rhs )

Copy constructor.

Definition at line 59 of file TUnuranDiscrDist.cxx.

## ◆ Cdf()

 double TUnuranDiscrDist::Cdf ( int x ) const

evaluate the integral (cdf) on the given domain

Definition at line 131 of file TUnuranDiscrDist.cxx.

## ◆ Clone()

 virtual TUnuranDiscrDist * TUnuranDiscrDist::Clone ( ) const
inlinevirtual

Clone (required by base class)

Implements TUnuranBaseDist.

Definition at line 101 of file TUnuranDiscrDist.h.

## ◆ GetDomain()

 bool TUnuranDiscrDist::GetDomain ( int & xmin, int & xmax ) const
inline

check if distribution has domain and return in case its domain

Definition at line 143 of file TUnuranDiscrDist.h.

## ◆ HasCdf()

 bool TUnuranDiscrDist::HasCdf ( ) const
inline

flag to control if distribution provides also a Cdf

Definition at line 174 of file TUnuranDiscrDist.h.

## ◆ HasMode()

 bool TUnuranDiscrDist::HasMode ( ) const
inline

flag to control if distribution provides the mode

Definition at line 163 of file TUnuranDiscrDist.h.

## ◆ HasProbSum()

 bool TUnuranDiscrDist::HasProbSum ( ) const
inline

flag to control if distribution provides the total area of the probability function

Definition at line 169 of file TUnuranDiscrDist.h.

## ◆ Mode()

 int TUnuranDiscrDist::Mode ( ) const
inline

get the mode (x location of function maximum)

Definition at line 152 of file TUnuranDiscrDist.h.

## ◆ operator=()

 TUnuranDiscrDist & TUnuranDiscrDist::operator= ( const TUnuranDiscrDist & rhs )

Assignment operator.

Definition at line 68 of file TUnuranDiscrDist.cxx.

## ◆ Pmf()

 double TUnuranDiscrDist::Pmf ( int x ) const

evaluate the distribution (probability mesh function) at the integer value x.

Used internally by UnuRan For integer values outside the domain the function must return 0.0

Definition at line 122 of file TUnuranDiscrDist.cxx.

## ◆ ProbSum()

 double TUnuranDiscrDist::ProbSum ( ) const
inline

return area of the pdf

Definition at line 157 of file TUnuranDiscrDist.h.

## ◆ ProbVec()

 const std::vector< double > & TUnuranDiscrDist::ProbVec ( ) const
inline

retrieve a reference to the vector of the probabilities : Prob(i) If the distribution is defined from a function (i.e.

for distribution with undefined domain) the vector is empty.

Definition at line 182 of file TUnuranDiscrDist.h.

## ◆ SetCdf() [1/2]

 void TUnuranDiscrDist::SetCdf ( const ROOT::Math::IGenFunction & cdf )

set cdf distribution from a generic function interface.

If a method requires it and is not set it is estimated numerically

Definition at line 104 of file TUnuranDiscrDist.cxx.

## ◆ SetCdf() [2/2]

 void TUnuranDiscrDist::SetCdf ( TF1 * cdf )

set cdf distribution from a TF1 pointer.

If a method requires it and is not set it is estimated numerically

Definition at line 109 of file TUnuranDiscrDist.cxx.

## ◆ SetDomain()

 void TUnuranDiscrDist::SetDomain ( int xmin, int xmax )
inline

Set the distribution domain, by default the domain is [0,INT_MAX] If xmin >= xmax a domain is removed.

Definition at line 120 of file TUnuranDiscrDist.h.

## ◆ SetMode()

 void TUnuranDiscrDist::SetMode ( int mode )
inline

set the mode of the distribution (location of maximum probability)

Definition at line 133 of file TUnuranDiscrDist.h.

## ◆ SetProbSum()

 void TUnuranDiscrDist::SetProbSum ( double sum )
inline

set the value of the sum of the probabilities in the given domain

Definition at line 138 of file TUnuranDiscrDist.h.

## ◆ fCdf

 const ROOT::Math::IGenFunction* TUnuranDiscrDist::fCdf
private

Definition at line 205 of file TUnuranDiscrDist.h.

## ◆ fHasDomain

 bool TUnuranDiscrDist::fHasDomain
private

Definition at line 211 of file TUnuranDiscrDist.h.

## ◆ fHasMode

 bool TUnuranDiscrDist::fHasMode
private

Definition at line 212 of file TUnuranDiscrDist.h.

## ◆ fHasSum

 bool TUnuranDiscrDist::fHasSum
private

Definition at line 213 of file TUnuranDiscrDist.h.

## ◆ fMode

 int TUnuranDiscrDist::fMode
private

Definition at line 208 of file TUnuranDiscrDist.h.

## ◆ fOwnFunc

 bool TUnuranDiscrDist::fOwnFunc
private

Definition at line 214 of file TUnuranDiscrDist.h.

## ◆ fPmf

 const ROOT::Math::IGenFunction* TUnuranDiscrDist::fPmf
private

Definition at line 204 of file TUnuranDiscrDist.h.

## ◆ fPVec

 std::vector TUnuranDiscrDist::fPVec
private

Definition at line 202 of file TUnuranDiscrDist.h.

## ◆ fPVecSum

 std::vector TUnuranDiscrDist::fPVecSum
mutableprivate

Definition at line 203 of file TUnuranDiscrDist.h.

## ◆ fSum

 double TUnuranDiscrDist::fSum
private

Definition at line 209 of file TUnuranDiscrDist.h.

## ◆ fXmax

 int TUnuranDiscrDist::fXmax
private

Definition at line 207 of file TUnuranDiscrDist.h.

## ◆ fXmin

 int TUnuranDiscrDist::fXmin
private

Definition at line 206 of file TUnuranDiscrDist.h.

Libraries for TUnuranDiscrDist:
[legend]

The documentation for this class was generated from the following files: