Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TUnuranSampler Class Reference

TUnuranSampler class class implementing the ROOT::Math::DistSampler interface using the UNU.RAN package for sampling distributions.

Definition at line 51 of file TUnuranSampler.h.

Public Member Functions

 TUnuranSampler ()
 default constructor
 
virtual ~TUnuranSampler ()
 virtual destructor
 
TRandomGetRandom ()
 Get the random engine used by the sampler.
 
bool Init (const char *algo="")
 initialize the generators with the given algorithm If no algorithm is passed used the default one for the type of distribution
 
bool Init (const ROOT::Math::DistSamplerOptions &opt)
 initialize the generators with the given algorithm If no algorithm is passed used the default one for the type of distribution
 
bool Sample (double *x)
 sample one event in multi-dimension by filling the given array return false if sampling failed
 
double Sample1D ()
 sample one event in one dimension better implementation could be provided by the derived classes
 
bool SampleBin (double prob, double &value, double *error=0)
 sample one bin given an estimated of the pdf in the bin (this can be function value at the center or its integral in the bin divided by the bin width) By default do not do random sample, just return the function values
 
void SetArea (double area)
 Set the normalization area of distribution.
 
void SetCdf (const ROOT::Math::IGenFunction &cdf)
 set the cumulative distribution function of the PDF used for random sampling (one dim case)
 
void SetDPdf (const ROOT::Math::IGenFunction &dpdf)
 set the Derivative of the PDF used for random sampling (one dim continous case)
 
void SetFunction (const ROOT::Math::IGenFunction &func)
 Set the parent function distribution to use for random sampling (one dim case).
 
void SetFunction (TF1 *pdf)
 Set the Function using a TF1 pointer.
 
void SetMode (const std::vector< double > &modes)
 Set the mode of the distribution (Multi-dim case).
 
void SetMode (double mode)
 Set the mode of the distribution (1D case).
 
void SetPrintLevel (int level)
 Set the print level (if level=-1 use default)
 
void SetRandom (TRandom *r)
 Set the random engine to be used Needs to be called before Init to have effect.
 
void SetSeed (unsigned int seed)
 Set the random seed for the TRandom instances used by the sampler classes Needs to be called before Init to have effect.
 
void SetUseLogPdf (bool on=true)
 Set using of logarithm of PDF (only for 1D continous case)
 
- Public Member Functions inherited from ROOT::Math::DistSampler
 DistSampler ()
 default constructor
 
virtual ~DistSampler ()
 virtual destructor
 
virtual bool Generate (unsigned int nevt, const int *nbins, ROOT::Fit::BinData &data, bool extend=true, bool expErr=true)
 Generate a binned data set.
 
virtual bool Generate (unsigned int nevt, double *data, bool eventRow=false)
 Generate a vector of events by fillling the passed data vector.
 
bool Generate (unsigned int nevt, int nbins, double xmin, double xmax, ROOT::Fit::BinData &data, bool extend=true, bool expErr=true)
 Same as before but passing the range in case of 1 dim data.
 
virtual bool Generate (unsigned int nevt, ROOT::Fit::UnBinData &data)
 Generate a un-binned data set by filling the given data set object.
 
bool HasParentPdf () const
 Check if there is a parent distribution defined.
 
unsigned int NDim () const
 return the dimension of the parent distribution (and the data)
 
const ROOT::Math::IMultiGenFunctionParentPdf () const
 Get the parent distribution function (must be called after setting the function).
 
const doubleSample ()
 Sample one event and return an array x with sample coordinates values.
 
virtual bool SampleBins (unsigned int n, const double *prob, double *values, double *errors=0)
 Sample a set of bins given a vector of probabilities Typically multinomial statistics will be used and the sum of the probabilities will be equal to the total number of events to be generated For sampling the bins indipendently, SampleBin should be used.
 
virtual void SetFunction (const ROOT::Math::IMultiGenFunction &func)
 set the parent function distribution to use for random sampling (multi-dim case)
 
template<class Function >
void SetFunction (Function &func, unsigned int dim)
 set the parent function distribution to use for sampling (generic case)
 
void SetRange (const double *xmin, const double *xmax)
 Set the range for all dimensions.
 
void SetRange (const ROOT::Fit::DataRange &range)
 Set the range using the ROOT::Fit::DataRange class.
 
void SetRange (const std::vector< double > &xmin, const std::vector< double > &xmax)
 Set the range for all dimensions (use std::vector)
 
void SetRange (double xmin, double xmax, int icoord=0)
 Set the range in a given dimension.
 

Protected Member Functions

bool DoInit1D (const char *algo)
 Initialization for 1D distributions.
 
bool DoInitDiscrete1D (const char *algo)
 Initialization for 1D discrete distributions.
 
bool DoInitND (const char *algo)
 Initialization for multi-dim distributions.
 
- Protected Member Functions inherited from ROOT::Math::DistSampler
virtual void DoSetDimension (unsigned int ndim)
 
virtual void DoSetFunction (const ROOT::Math::IMultiGenFunction &func, bool copy)
 
bool IsInitialized ()
 
const ROOT::Fit::DataRangePdfRange () const
 return the data range of the Pdf . Must be called after setting the function
 

Private Attributes

double fArea
 mode of dist (1D)
 
const ROOT::Math::IGenFunctionfCDF = nullptr
 1D function pointer (pdf)
 
bool fDiscrete = false
 flag to indicate if the function is 1 dimension
 
const ROOT::Math::IGenFunctionfDPDF = nullptr
 CDF function pointer.
 
const ROOT::Math::IGenFunctionfFunc1D = nullptr
 mode of the multi-dim distribution
 
bool fHasArea = false
 flag to indicate if a mode is set
 
bool fHasMode = false
 flag to indicate if the function is discrete
 
int fLevel
 flag to indicate if we use the log of the PDF
 
double fMode
 debug level
 
std::vector< doublefNDMode
 area of dist
 
bool fOneDim = false
 
TUnuranfUnuran = nullptr
 1D Derivative function pointer
 
bool fUseLogPdf = false
 flag to indicate if a area is set
 

#include <TUnuranSampler.h>

Inheritance diagram for TUnuranSampler:
[legend]

Constructor & Destructor Documentation

◆ TUnuranSampler()

TUnuranSampler::TUnuranSampler ( )

default constructor

Definition at line 33 of file TUnuranSampler.cxx.

◆ ~TUnuranSampler()

TUnuranSampler::~TUnuranSampler ( )
virtual

virtual destructor

Definition at line 43 of file TUnuranSampler.cxx.

Member Function Documentation

◆ DoInit1D()

bool TUnuranSampler::DoInit1D ( const char *  algo)
protected

Initialization for 1D distributions.

Definition at line 143 of file TUnuranSampler.cxx.

◆ DoInitDiscrete1D()

bool TUnuranSampler::DoInitDiscrete1D ( const char *  algo)
protected

Initialization for 1D discrete distributions.

Definition at line 183 of file TUnuranSampler.cxx.

◆ DoInitND()

bool TUnuranSampler::DoInitND ( const char *  algo)
protected

Initialization for multi-dim distributions.

Definition at line 224 of file TUnuranSampler.cxx.

◆ GetRandom()

TRandom * TUnuranSampler::GetRandom ( )
virtual

Get the random engine used by the sampler.

Reimplemented from ROOT::Math::DistSampler.

Definition at line 267 of file TUnuranSampler.cxx.

◆ Init() [1/2]

bool TUnuranSampler::Init ( const char *  algo = "")
virtual

initialize the generators with the given algorithm If no algorithm is passed used the default one for the type of distribution

Reimplemented from ROOT::Math::DistSampler.

Definition at line 48 of file TUnuranSampler.cxx.

◆ Init() [2/2]

bool TUnuranSampler::Init ( const ROOT::Math::DistSamplerOptions opt)
virtual

initialize the generators with the given algorithm If no algorithm is passed used the default one for the type of distribution

Reimplemented from ROOT::Math::DistSampler.

Definition at line 106 of file TUnuranSampler.cxx.

◆ Sample()

bool TUnuranSampler::Sample ( double x)
virtual

sample one event in multi-dimension by filling the given array return false if sampling failed

Implements ROOT::Math::DistSampler.

Definition at line 277 of file TUnuranSampler.cxx.

◆ Sample1D()

double TUnuranSampler::Sample1D ( )
virtual

sample one event in one dimension better implementation could be provided by the derived classes

Reimplemented from ROOT::Math::DistSampler.

Definition at line 272 of file TUnuranSampler.cxx.

◆ SampleBin()

bool TUnuranSampler::SampleBin ( double  prob,
double value,
double error = 0 
)
virtual

sample one bin given an estimated of the pdf in the bin (this can be function value at the center or its integral in the bin divided by the bin width) By default do not do random sample, just return the function values

Reimplemented from ROOT::Math::DistSampler.

Definition at line 285 of file TUnuranSampler.cxx.

◆ SetArea()

void TUnuranSampler::SetArea ( double  )
inlinevirtual

Set the normalization area of distribution.

Implemented by derived classes if needed

Reimplemented from ROOT::Math::DistSampler.

Definition at line 129 of file TUnuranSampler.h.

◆ SetCdf()

void TUnuranSampler::SetCdf ( const ROOT::Math::IGenFunction cdf)
virtual

set the cumulative distribution function of the PDF used for random sampling (one dim case)

Reimplemented from ROOT::Math::DistSampler.

Definition at line 312 of file TUnuranSampler.cxx.

◆ SetDPdf()

void TUnuranSampler::SetDPdf ( const ROOT::Math::IGenFunction dpdf)
virtual

set the Derivative of the PDF used for random sampling (one dim continous case)

Reimplemented from ROOT::Math::DistSampler.

Definition at line 318 of file TUnuranSampler.cxx.

◆ SetFunction() [1/2]

void TUnuranSampler::SetFunction ( const ROOT::Math::IGenFunction func)
inlinevirtual

Set the parent function distribution to use for random sampling (one dim case).

Reimplemented from ROOT::Math::DistSampler.

Definition at line 66 of file TUnuranSampler.h.

◆ SetFunction() [2/2]

void TUnuranSampler::SetFunction ( TF1 pdf)

Set the Function using a TF1 pointer.

Definition at line 252 of file TUnuranSampler.cxx.

◆ SetMode() [1/2]

void TUnuranSampler::SetMode ( const std::vector< double > &  )
virtual

Set the mode of the distribution (Multi-dim case).

Reimplemented from ROOT::Math::DistSampler.

Definition at line 294 of file TUnuranSampler.cxx.

◆ SetMode() [2/2]

void TUnuranSampler::SetMode ( double  )
inlinevirtual

Set the mode of the distribution (1D case).

It could be useful or needed by some sampling methods. It is implemented by derived classes if needed (e.g. TUnuranSampler)

Reimplemented from ROOT::Math::DistSampler.

Definition at line 115 of file TUnuranSampler.h.

◆ SetPrintLevel()

void TUnuranSampler::SetPrintLevel ( int  level)
inline

Set the print level (if level=-1 use default)

Definition at line 110 of file TUnuranSampler.h.

◆ SetRandom()

void TUnuranSampler::SetRandom ( TRandom r)
virtual

Set the random engine to be used Needs to be called before Init to have effect.

Reimplemented from ROOT::Math::DistSampler.

Definition at line 257 of file TUnuranSampler.cxx.

◆ SetSeed()

void TUnuranSampler::SetSeed ( unsigned int  seed)
virtual

Set the random seed for the TRandom instances used by the sampler classes Needs to be called before Init to have effect.

Reimplemented from ROOT::Math::DistSampler.

Definition at line 262 of file TUnuranSampler.cxx.

◆ SetUseLogPdf()

void TUnuranSampler::SetUseLogPdf ( bool  on = true)
inlinevirtual

Set using of logarithm of PDF (only for 1D continous case)

Reimplemented from ROOT::Math::DistSampler.

Definition at line 135 of file TUnuranSampler.h.

Member Data Documentation

◆ fArea

double TUnuranSampler::fArea
private

mode of dist (1D)

Definition at line 191 of file TUnuranSampler.h.

◆ fCDF

const ROOT::Math::IGenFunction* TUnuranSampler::fCDF = nullptr
private

1D function pointer (pdf)

Definition at line 194 of file TUnuranSampler.h.

◆ fDiscrete

bool TUnuranSampler::fDiscrete = false
private

flag to indicate if the function is 1 dimension

Definition at line 185 of file TUnuranSampler.h.

◆ fDPDF

const ROOT::Math::IGenFunction* TUnuranSampler::fDPDF = nullptr
private

CDF function pointer.

Definition at line 195 of file TUnuranSampler.h.

◆ fFunc1D

const ROOT::Math::IGenFunction* TUnuranSampler::fFunc1D = nullptr
private

mode of the multi-dim distribution

Definition at line 193 of file TUnuranSampler.h.

◆ fHasArea

bool TUnuranSampler::fHasArea = false
private

flag to indicate if a mode is set

Definition at line 187 of file TUnuranSampler.h.

◆ fHasMode

bool TUnuranSampler::fHasMode = false
private

flag to indicate if the function is discrete

Definition at line 186 of file TUnuranSampler.h.

◆ fLevel

int TUnuranSampler::fLevel
private

flag to indicate if we use the log of the PDF

Definition at line 189 of file TUnuranSampler.h.

◆ fMode

double TUnuranSampler::fMode
private

debug level

Definition at line 190 of file TUnuranSampler.h.

◆ fNDMode

std::vector<double> TUnuranSampler::fNDMode
private

area of dist

Definition at line 192 of file TUnuranSampler.h.

◆ fOneDim

bool TUnuranSampler::fOneDim = false
private

Definition at line 184 of file TUnuranSampler.h.

◆ fUnuran

TUnuran* TUnuranSampler::fUnuran = nullptr
private

1D Derivative function pointer

Definition at line 196 of file TUnuranSampler.h.

◆ fUseLogPdf

bool TUnuranSampler::fUseLogPdf = false
private

flag to indicate if a area is set

Definition at line 188 of file TUnuranSampler.h.

Libraries for TUnuranSampler:

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