ROOT  6.07/01
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Private Attributes | List of all members
TUnuranContDist Class Reference

TUnuranContDist class describing one dimensional continuous distribution.

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

The class can be constructed from a function (TF1) representing the probability density function of the distribution. Optionally the derivative of the pdf can also be passed.

It provides a method to set the domain of the distribution ( SetDomain ) which will correspond to the range of the generated random numbers. By default the domain is (-inf, + inf), indipendently of the range set in the TF1 class used to construct the distribution.

In addition, some UNURAN methods requires extra information (cdf function, distribution mode, area of pdf, etc...). This information can as well be set. Some methods require instead of the pdf the log of the pdf. This can also be controlled by setting a flag when constructing this class.

Definition at line 52 of file TUnuranContDist.h.

Public Member Functions

 TUnuranContDist (TF1 *pdf=0, TF1 *deriv=0, bool isLogPdf=false)
 Constructor from a TF1 objects specifying the pdf and optionally from another function representing the derivative of the pdf. More...
 
 TUnuranContDist (const ROOT::Math::IGenFunction &pdf, const ROOT::Math::IGenFunction *dpdf=0, bool isLogPdf=false, bool copyFunc=false)
 Constructor as before but from a generic function object interface for one-dim functions. More...
 
virtual ~TUnuranContDist ()
 Destructor. More...
 
 TUnuranContDist (const TUnuranContDist &)
 Copy constructor. More...
 
TUnuranContDistoperator= (const TUnuranContDist &rhs)
 Assignment operator. More...
 
virtual TUnuranContDistClone () const
 Clone (required by base class) More...
 
void SetCdf (TF1 *cdf)
 set cdf distribution. More...
 
void SetCdf (const ROOT::Math::IGenFunction &cdf)
 set cdf distribution using a generic function interface More...
 
void SetDomain (double xmin, double xmax)
 Set the distribution domain. More...
 
void SetMode (double mode)
 set the distribution mode (x position of its maximum) More...
 
void SetPdfArea (double area)
 set the area below the pdf More...
 
bool GetDomain (double &xmin, double &xmax) const
 check if distribution has a defined domain and return in case its domain More...
 
bool HasCdf () const
 check if a cdf function is provided for the distribution More...
 
bool HasMode () const
 check if distribution has a pre-computed mode More...
 
bool HasPdfArea () const
 check if distribution has a pre-computed area below the Pdf More...
 
double Mode () const
 return the mode (x location of maximum of the pdf) More...
 
double PdfArea () const
 return area below the pdf More...
 
bool IsLogPdf () const
 flag to control if given function represent the log of a pdf More...
 
double Pdf (double x) const
 evaluate the Probability Density function. More...
 
double DPdf (double x) const
 evaluate the derivative of the pdf. More...
 
double Cdf (double x) const
 evaluate the integral (cdf) on the domain. More...
 
- Public Member Functions inherited from TUnuranBaseDist
virtual ~TUnuranBaseDist ()
 Destructor (no operations) More...
 

Private Attributes

const ROOT::Math::IGenFunctionfPdf
 
const ROOT::Math::IGenFunctionfDPdf
 
const ROOT::Math::IGenFunctionfCdf
 
double fXmin
 
double fXmax
 
double fMode
 
double fArea
 
bool fIsLogPdf
 
bool fHasDomain
 
bool fHasMode
 
bool fHasArea
 
bool fOwnFunc
 

#include <TUnuranContDist.h>

Inheritance diagram for TUnuranContDist:
[legend]

Constructor & Destructor Documentation

TUnuranContDist::TUnuranContDist ( TF1 pdf = 0,
TF1 deriv = 0,
bool  isLogPdf = false 
)
explicit

Constructor from a TF1 objects specifying the pdf and optionally from another function representing the derivative of the pdf.

The flag isLogPdf can be used to pass instead of the pdf (and its derivative) the log (and the derivative of the log) of the pdf. By default the distribution has not domain set (it is defined between [-inf,+inf], no mode, no pdf area and no cdf explicity defined. UnuRan, if needed, can compute some of this quantities, but the user if they know them can set them in order to speed up the algorithm. For example in case of the Cdf, if the user has not set it, a numerical integration algorithm is used to estimate the Cdf from the Pdf. In case an algorithm requires only the Cdf (no Pdf), an empty distribution can be constructed and then the user must set afterwards the Cdf.

Definition at line 48 of file TUnuranContDist.cxx.

Referenced by Clone().

TUnuranContDist::TUnuranContDist ( const ROOT::Math::IGenFunction pdf,
const ROOT::Math::IGenFunction dpdf = 0,
bool  isLogPdf = false,
bool  copyFunc = false 
)
explicit

Constructor as before but from a generic function object interface for one-dim functions.

TUnuranContDist::~TUnuranContDist ( )
virtual

Destructor.

Definition at line 107 of file TUnuranContDist.cxx.

TUnuranContDist::TUnuranContDist ( const TUnuranContDist rhs)

Copy constructor.

Definition at line 67 of file TUnuranContDist.cxx.

Member Function Documentation

double TUnuranContDist::Cdf ( double  x) const

evaluate the integral (cdf) on the domain.

Used by Unuran algorithm

Definition at line 159 of file TUnuranContDist.cxx.

Referenced by ContDist::Cdf().

virtual TUnuranContDist* TUnuranContDist::Clone ( ) const
inlinevirtual

Clone (required by base class)

Implements TUnuranBaseDist.

Definition at line 95 of file TUnuranContDist.h.

Referenced by ClassImp(), and TUnuran::Init().

double TUnuranContDist::DPdf ( double  x) const

evaluate the derivative of the pdf.

Used by UnuRan

Definition at line 144 of file TUnuranContDist.cxx.

Referenced by ContDist::Dpdf().

bool TUnuranContDist::GetDomain ( double xmin,
double xmax 
) const
inline

check if distribution has a defined domain and return in case its domain

Definition at line 135 of file TUnuranContDist.h.

Referenced by TUnuran::SetContDistribution().

bool TUnuranContDist::HasCdf ( ) const
inline

check if a cdf function is provided for the distribution

Definition at line 144 of file TUnuranContDist.h.

Referenced by TUnuran::SetContDistribution().

bool TUnuranContDist::HasMode ( ) const
inline

check if distribution has a pre-computed mode

Definition at line 149 of file TUnuranContDist.h.

Referenced by TUnuran::SetContDistribution().

bool TUnuranContDist::HasPdfArea ( ) const
inline

check if distribution has a pre-computed area below the Pdf

Definition at line 155 of file TUnuranContDist.h.

Referenced by TUnuran::SetContDistribution().

bool TUnuranContDist::IsLogPdf ( ) const
inline

flag to control if given function represent the log of a pdf

Definition at line 171 of file TUnuranContDist.h.

Referenced by TUnuran::SetContDistribution().

double TUnuranContDist::Mode ( ) const
inline

return the mode (x location of maximum of the pdf)

Definition at line 160 of file TUnuranContDist.h.

Referenced by TUnuran::SetContDistribution().

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

Assignment operator.

Definition at line 77 of file TUnuranContDist.cxx.

Referenced by TUnuranContDist().

double TUnuranContDist::Pdf ( double  x) const

evaluate the Probability Density function.

Used by the UnuRan algorithms

Definition at line 137 of file TUnuranContDist.cxx.

Referenced by ContDist::Pdf().

double TUnuranContDist::PdfArea ( ) const
inline

return area below the pdf

Definition at line 165 of file TUnuranContDist.h.

Referenced by TUnuran::SetContDistribution().

void TUnuranContDist::SetCdf ( TF1 cdf)

set cdf distribution.

If a method requires it and is not set it is then estimated using numerical integration from the pdf

Definition at line 122 of file TUnuranContDist.cxx.

Referenced by unuranDistr().

void TUnuranContDist::SetCdf ( const ROOT::Math::IGenFunction cdf)

set cdf distribution using a generic function interface

Definition at line 116 of file TUnuranContDist.cxx.

void TUnuranContDist::SetDomain ( double  xmin,
double  xmax 
)
inline

Set the distribution domain.

If min < max a domain is defined otherwise is undefined

Definition at line 113 of file TUnuranContDist.h.

Referenced by TUnuranSampler::DoInit1D(), and unuranDistr().

void TUnuranContDist::SetMode ( double  mode)
inline

set the distribution mode (x position of its maximum)

Definition at line 125 of file TUnuranContDist.h.

Referenced by TUnuranSampler::DoInit1D(), and unuranDistr().

void TUnuranContDist::SetPdfArea ( double  area)
inline

set the area below the pdf

Definition at line 130 of file TUnuranContDist.h.

Referenced by TUnuranSampler::DoInit1D(), and unuranDistr().

Member Data Documentation

double TUnuranContDist::fArea
private

Definition at line 202 of file TUnuranContDist.h.

Referenced by operator=(), PdfArea(), and SetPdfArea().

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

Definition at line 197 of file TUnuranContDist.h.

Referenced by Cdf(), HasCdf(), operator=(), SetCdf(), and ~TUnuranContDist().

const ROOT::Math::IGenFunction* TUnuranContDist::fDPdf
private

Definition at line 196 of file TUnuranContDist.h.

Referenced by DPdf(), operator=(), SetCdf(), and ~TUnuranContDist().

bool TUnuranContDist::fHasArea
private

Definition at line 208 of file TUnuranContDist.h.

Referenced by HasPdfArea(), operator=(), and SetPdfArea().

bool TUnuranContDist::fHasDomain
private

Definition at line 206 of file TUnuranContDist.h.

Referenced by GetDomain(), operator=(), and SetDomain().

bool TUnuranContDist::fHasMode
private

Definition at line 207 of file TUnuranContDist.h.

Referenced by HasMode(), operator=(), and SetMode().

bool TUnuranContDist::fIsLogPdf
private

Definition at line 205 of file TUnuranContDist.h.

Referenced by IsLogPdf(), and operator=().

double TUnuranContDist::fMode
private

Definition at line 201 of file TUnuranContDist.h.

Referenced by Mode(), operator=(), and SetMode().

bool TUnuranContDist::fOwnFunc
private

Definition at line 209 of file TUnuranContDist.h.

Referenced by operator=(), SetCdf(), and ~TUnuranContDist().

const ROOT::Math::IGenFunction* TUnuranContDist::fPdf
private

Definition at line 195 of file TUnuranContDist.h.

Referenced by Cdf(), DPdf(), operator=(), Pdf(), SetCdf(), and ~TUnuranContDist().

double TUnuranContDist::fXmax
private

Definition at line 200 of file TUnuranContDist.h.

Referenced by Cdf(), GetDomain(), operator=(), and SetDomain().

double TUnuranContDist::fXmin
private

Definition at line 199 of file TUnuranContDist.h.

Referenced by Cdf(), GetDomain(), operator=(), and SetDomain().

Collaboration diagram for TUnuranContDist:
[legend]

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