Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
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.
 
 TUnuranDiscrDist (const TUnuranDiscrDist &)
 Copy constructor.
 
template<class Iterator >
 TUnuranDiscrDist (Iterator *begin, Iterator *end)
 Constructor from a vector of probability.
 
 TUnuranDiscrDist (TF1 *func)
 Constructor from a TF1 objects specifying the pdf.
 
 ~TUnuranDiscrDist () override
 Destructor.
 
double Cdf (int x) const
 evaluate the integral (cdf) on the given domain
 
TUnuranDiscrDistClone () const override
 Clone (required by base class)
 
bool GetDomain (int &xmin, int &xmax) const
 check if distribution has domain and return in case its domain
 
bool HasCdf () const
 flag to control if distribution provides also a Cdf
 
bool HasMode () const
 flag to control if distribution provides the mode
 
bool HasProbSum () const
 flag to control if distribution provides the total area of the probability function
 
TClassIsA () const override
 
int Mode () const
 get the mode (x location of function maximum)
 
TUnuranDiscrDistoperator= (const TUnuranDiscrDist &rhs)
 Assignment operator.
 
double Pmf (int x) const
 evaluate the distribution (probability mesh function) at the integer value x.
 
double ProbSum () const
 return area of the pdf
 
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.
 
void SetCdf (const ROOT::Math::IGenFunction &cdf)
 set cdf distribution from a generic function interface.
 
void SetCdf (TF1 *cdf)
 set cdf distribution from a TF1 pointer.
 
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.
 
void SetMode (int mode)
 set the mode of the distribution (location of maximum probability)
 
void SetProbSum (double sum)
 set the value of the sum of the probabilities in the given domain
 
void Streamer (TBuffer &) override
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
- Public Member Functions inherited from TUnuranBaseDist
virtual ~TUnuranBaseDist ()
 Destructor (no operations)
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 

Static Public Member Functions

static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
- Static Public Member Functions inherited from TUnuranBaseDist
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 

Private Attributes

const ROOT::Math::IGenFunctionfCdf
 pointer to the cumulative distribution function
 
bool fHasDomain
 flag to control if distribution has a defined domain (otherwise is [0,INT_MAX])
 
bool fHasMode
 flag to control if distribution has a pre-computed mode
 
bool fHasSum
 flag to control if distribution has a pre-computed sum of the probabilities
 
int fMode
 mode of the distribution
 
bool fOwnFunc
 flag to control if distribution owns the function pointers
 
const ROOT::Math::IGenFunctionfPmf
 pointer to a function calculating the probability
 
std::vector< doublefPVec
 Vector of the probabilities.
 
std::vector< doublefPVecSum
 Vector of the sum of the probabilities.
 
double fSum
 total sum of the probabilities in the given domain
 
int fXmax
 upper value of the domain
 
int fXmin
 lower value of the domain
 

#include <TUnuranDiscrDist.h>

Inheritance diagram for TUnuranDiscrDist:
[legend]

Constructor & Destructor Documentation

◆ 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 ( )
override

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.

Member Function Documentation

◆ Cdf()

double TUnuranDiscrDist::Cdf ( int  x) const

evaluate the integral (cdf) on the given domain

Definition at line 131 of file TUnuranDiscrDist.cxx.

◆ Class()

static TClass * TUnuranDiscrDist::Class ( )
static
Returns
TClass describing this class

◆ Class_Name()

static const char * TUnuranDiscrDist::Class_Name ( )
static
Returns
Name of this class

◆ Class_Version()

static constexpr Version_t TUnuranDiscrDist::Class_Version ( )
inlinestaticconstexpr
Returns
Version of this class

Definition at line 216 of file TUnuranDiscrDist.h.

◆ Clone()

TUnuranDiscrDist * TUnuranDiscrDist::Clone ( ) const
inlineoverridevirtual

Clone (required by base class)

Implements TUnuranBaseDist.

Definition at line 101 of file TUnuranDiscrDist.h.

◆ DeclFileName()

static const char * TUnuranDiscrDist::DeclFileName ( )
inlinestatic
Returns
Name of the file containing the class declaration

Definition at line 216 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.

◆ IsA()

TClass * TUnuranDiscrDist::IsA ( ) const
inlineoverridevirtual
Returns
TClass describing current object

Reimplemented from TUnuranBaseDist.

Definition at line 216 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.

◆ Streamer()

void TUnuranDiscrDist::Streamer ( TBuffer )
overridevirtual

Reimplemented from TUnuranBaseDist.

◆ StreamerNVirtual()

void TUnuranDiscrDist::StreamerNVirtual ( TBuffer ClassDef_StreamerNVirtual_b)
inline

Definition at line 216 of file TUnuranDiscrDist.h.

Member Data Documentation

◆ fCdf

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

pointer to the cumulative distribution function

Definition at line 205 of file TUnuranDiscrDist.h.

◆ fHasDomain

bool TUnuranDiscrDist::fHasDomain
private

flag to control if distribution has a defined domain (otherwise is [0,INT_MAX])

Definition at line 211 of file TUnuranDiscrDist.h.

◆ fHasMode

bool TUnuranDiscrDist::fHasMode
private

flag to control if distribution has a pre-computed mode

Definition at line 212 of file TUnuranDiscrDist.h.

◆ fHasSum

bool TUnuranDiscrDist::fHasSum
private

flag to control if distribution has a pre-computed sum of the probabilities

Definition at line 213 of file TUnuranDiscrDist.h.

◆ fMode

int TUnuranDiscrDist::fMode
private

mode of the distribution

Definition at line 208 of file TUnuranDiscrDist.h.

◆ fOwnFunc

bool TUnuranDiscrDist::fOwnFunc
private

flag to control if distribution owns the function pointers

Definition at line 214 of file TUnuranDiscrDist.h.

◆ fPmf

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

pointer to a function calculating the probability

Definition at line 204 of file TUnuranDiscrDist.h.

◆ fPVec

std::vector<double> TUnuranDiscrDist::fPVec
private

Vector of the probabilities.

Definition at line 202 of file TUnuranDiscrDist.h.

◆ fPVecSum

std::vector<double> TUnuranDiscrDist::fPVecSum
mutableprivate

Vector of the sum of the probabilities.

Definition at line 203 of file TUnuranDiscrDist.h.

◆ fSum

double TUnuranDiscrDist::fSum
private

total sum of the probabilities in the given domain

Definition at line 209 of file TUnuranDiscrDist.h.

◆ fXmax

int TUnuranDiscrDist::fXmax
private

upper value of the domain

Definition at line 207 of file TUnuranDiscrDist.h.

◆ fXmin

int TUnuranDiscrDist::fXmin
private

lower value of the domain

Definition at line 206 of file TUnuranDiscrDist.h.

Libraries for TUnuranDiscrDist:

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