Logo ROOT  
Reference Guide
ROOT::Math::DistSampler Class Referenceabstract

Interface class for generic sampling of a distribution, i.e.

generating random numbers according to arbitrary distributions

Definition at line 57 of file DistSampler.h.

Public Member Functions

 DistSampler ()
 default constructor More...
 
virtual ~DistSampler ()
 virtual destructor More...
 
virtual bool Generate (unsigned int nevt, const int *nbins, ROOT::Fit::BinData &data, bool extend=true, bool expErr=true)
 Generate a binned data set. More...
 
virtual bool Generate (unsigned int nevt, double *data, bool eventRow=false)
 Generate a vector of events by fillling the passed data vector. More...
 
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. More...
 
virtual bool Generate (unsigned int nevt, ROOT::Fit::UnBinData &data)
 Generate a un-binned data set by filling the given data set object. More...
 
virtual TRandomGetRandom ()
 Get the random engine used by the sampler. More...
 
bool HasParentPdf () const
 Check if there is a parent distribution defined. More...
 
virtual bool Init (const char *="")
 Initialize the sampling generator with the given algorithm. More...
 
virtual bool Init (const DistSamplerOptions &opt)
 Initialize the generators with the given DistSamplerOption object. More...
 
unsigned int NDim () const
 return the dimension of the parent distribution (and the data) More...
 
const ROOT::Math::IMultiGenFunctionParentPdf () const
 Get the parent distribution function (must be called after setting the function). More...
 
const doubleSample ()
 Sample one event and return an array x with sample coordinates values. More...
 
virtual bool Sample (double *x)=0
 Sample one event in multi-dimension by filling the given array. More...
 
virtual double Sample1D ()
 Sample one event in one dimension. More...
 
virtual bool SampleBin (double prob, double &value, double *error=0)
 Sample one bin given an estimate of the pdf in the bin. More...
 
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. More...
 
virtual void SetArea (double)
 Set the normalization area of distribution. More...
 
virtual void SetCdf (const ROOT::Math::IGenFunction &)
 Set usage of Cumulative of PDF. More...
 
virtual void SetDPdf (const ROOT::Math::IGenFunction &)
 Set usage of Derivative of PDF. More...
 
virtual void SetFunction (const ROOT::Math::IGenFunction &func)
 set the parent function distribution to use for random sampling (one dim case) More...
 
virtual void SetFunction (const ROOT::Math::IMultiGenFunction &func)
 set the parent function distribution to use for random sampling (multi-dim case) More...
 
template<class Function >
void SetFunction (Function &func, unsigned int dim)
 set the parent function distribution to use for sampling (generic case) More...
 
virtual void SetMode (const std::vector< double > &)
 Set the mode of the distribution (Multi-dim case). More...
 
virtual void SetMode (double)
 Set the mode of the distribution (1D case). More...
 
virtual void SetRandom (TRandom *)
 Set the random engine to be used. More...
 
void SetRange (const double *xmin, const double *xmax)
 Set the range for all dimensions. More...
 
void SetRange (const ROOT::Fit::DataRange &range)
 Set the range using the ROOT::Fit::DataRange class. More...
 
void SetRange (const std::vector< double > &xmin, const std::vector< double > &xmax)
 Set the range for all dimensions (use std::vector) More...
 
void SetRange (double xmin, double xmax, int icoord=0)
 Set the range in a given dimension. More...
 
virtual void SetSeed (unsigned int)
 Set the random seed for the TRandom instances used by the sampler classes. More...
 
virtual void SetUseLogPdf (bool=true)
 Use the log of the provided pdf. More...
 

Protected Member Functions

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 More...
 

Private Attributes

std::vector< doublefData
 flag to indicate if the function is owned More...
 
const ROOT::Math::IMultiGenFunctionfFunc
 data range More...
 
bool fOwnFunc
 
ROOT::Fit::DataRangefRange
 ! internal array used to cached the sample data More...
 

#include <Math/DistSampler.h>

Inheritance diagram for ROOT::Math::DistSampler:
[legend]

Constructor & Destructor Documentation

◆ DistSampler()

ROOT::Math::DistSampler::DistSampler ( )
inline

default constructor

Definition at line 62 of file DistSampler.h.

◆ ~DistSampler()

ROOT::Math::DistSampler::~DistSampler ( )
virtual

virtual destructor

Definition at line 29 of file DistSampler.cxx.

Member Function Documentation

◆ DoSetDimension()

void ROOT::Math::DistSampler::DoSetDimension ( unsigned int  ndim)
protectedvirtual

Definition at line 78 of file DistSampler.cxx.

◆ DoSetFunction()

void ROOT::Math::DistSampler::DoSetFunction ( const ROOT::Math::IMultiGenFunction func,
bool  copy 
)
protectedvirtual

Definition at line 63 of file DistSampler.cxx.

◆ Generate() [1/4]

bool ROOT::Math::DistSampler::Generate ( unsigned int  nevt,
const int *  nbins,
ROOT::Fit::BinData data,
bool  extend = true,
bool  expErr = true 
)
virtual

Generate a binned data set.

A range must have been set before (otherwise inf is returned) and the bins are equidinstant in the previously defined range bin center values must be present in given data set If the sampler is implemented by a random one, the entries will be binned according to the Poisson distribution It is assumed the distribution is normalized, otherwise the nevt must be scaled accordingly. The expected value/bin nexp = f(x_i) * binArea/ nevt Extend control if use a fixed (i.e. multinomial statistics) or floating total number of events

Definition at line 135 of file DistSampler.cxx.

◆ Generate() [2/4]

bool ROOT::Math::DistSampler::Generate ( unsigned int  nevt,
double data,
bool  eventRow = false 
)
virtual

Generate a vector of events by fillling the passed data vector.

The flag eventRow indicates how the events are arrenged in the multi-dim case. The can be arranged in rows or in columns.
With eventRow=false events are the columns in data: {x1,x2,.....,xn},{y1,....yn} With eventRow=true events are rows in data: {x1,y1},{x2,y2},.....{xn,yn}

Definition at line 115 of file DistSampler.cxx.

◆ Generate() [3/4]

bool ROOT::Math::DistSampler::Generate ( unsigned int  nevt,
int  nbins,
double  xmin,
double  xmax,
ROOT::Fit::BinData data,
bool  extend = true,
bool  expErr = true 
)
inline

Same as before but passing the range in case of 1 dim data.

Definition at line 260 of file DistSampler.h.

◆ Generate() [4/4]

bool ROOT::Math::DistSampler::Generate ( unsigned int  nevt,
ROOT::Fit::UnBinData data 
)
virtual

Generate a un-binned data set by filling the given data set object.

If the data set object is not empty, the new generated data will be appended to the existing one.

Definition at line 99 of file DistSampler.cxx.

◆ GetRandom()

virtual TRandom * ROOT::Math::DistSampler::GetRandom ( )
inlinevirtual

Get the random engine used by the sampler.

To be implemented by the derived classes who needs it Returns zero by default

Reimplemented in TFoamSampler, and TUnuranSampler.

Definition at line 132 of file DistSampler.h.

◆ HasParentPdf()

bool ROOT::Math::DistSampler::HasParentPdf ( ) const
inline

Check if there is a parent distribution defined.

Definition at line 178 of file DistSampler.h.

◆ Init() [1/2]

virtual bool ROOT::Math::DistSampler::Init ( const char *  = "")
inlinevirtual

Initialize the sampling generator with the given algorithm.

Implemented by the derived classes who needs it (like UnuranSampler). If nothing is specified use default algorithm from DistSamplerOptions::SetDefaultAlgorithm

Reimplemented in TFoamSampler, and TUnuranSampler.

Definition at line 101 of file DistSampler.h.

◆ Init() [2/2]

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

Initialize the generators with the given DistSamplerOption object.

The string will include the algorithm and in case additional options which can be interpreted by a re-implemented method in the derived class. The default implementation just calls the above method passing just the algorithm name

Reimplemented in TFoamSampler, and TUnuranSampler.

Definition at line 35 of file DistSampler.cxx.

◆ IsInitialized()

bool ROOT::Math::DistSampler::IsInitialized ( )
protected

Definition at line 89 of file DistSampler.cxx.

◆ NDim()

unsigned int ROOT::Math::DistSampler::NDim ( ) const
inline

return the dimension of the parent distribution (and the data)

Definition at line 91 of file DistSampler.h.

◆ ParentPdf()

const ROOT::Math::IMultiGenFunction & ROOT::Math::DistSampler::ParentPdf ( ) const
inline

Get the parent distribution function (must be called after setting the function).

Definition at line 173 of file DistSampler.h.

◆ PdfRange()

const ROOT::Fit::DataRange & ROOT::Math::DistSampler::PdfRange ( ) const
inlineprotected

return the data range of the Pdf . Must be called after setting the function

Definition at line 276 of file DistSampler.h.

◆ Sample() [1/2]

const double * ROOT::Math::DistSampler::Sample ( )
inline

Sample one event and return an array x with sample coordinates values.

Definition at line 193 of file DistSampler.h.

◆ Sample() [2/2]

virtual bool ROOT::Math::DistSampler::Sample ( double x)
pure virtual

Sample one event in multi-dimension by filling the given array.

Return false if the sampling failed. Abstract method to be re-implmented by the derived classes

Implemented in TFoamSampler, and TUnuranSampler.

◆ Sample1D()

virtual double ROOT::Math::DistSampler::Sample1D ( )
inlinevirtual

Sample one event in one dimension.

Specialized implementation could be provided by the derived classes

Reimplemented in TUnuranSampler.

Definition at line 184 of file DistSampler.h.

◆ SampleBin()

virtual bool ROOT::Math::DistSampler::SampleBin ( double  prob,
double value,
double error = 0 
)
inlinevirtual

Sample one bin given an estimate 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 Typically Poisson statistics will be used

Reimplemented in TFoamSampler, and TUnuranSampler.

Definition at line 212 of file DistSampler.h.

◆ SampleBins()

virtual bool ROOT::Math::DistSampler::SampleBins ( unsigned int  n,
const double prob,
double values,
double errors = 0 
)
inlinevirtual

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.

Definition at line 223 of file DistSampler.h.

◆ SetArea()

virtual void ROOT::Math::DistSampler::SetArea ( double  )
inlinevirtual

Set the normalization area of distribution.

Implemented by derived classes if needed

Reimplemented in TUnuranSampler.

Definition at line 158 of file DistSampler.h.

◆ SetCdf()

virtual void ROOT::Math::DistSampler::SetCdf ( const ROOT::Math::IGenFunction )
inlinevirtual

Set usage of Cumulative of PDF.

Can be implemented by derived class

Reimplemented in TUnuranSampler.

Definition at line 170 of file DistSampler.h.

◆ SetDPdf()

virtual void ROOT::Math::DistSampler::SetDPdf ( const ROOT::Math::IGenFunction )
inlinevirtual

Set usage of Derivative of PDF.

Can be implemented by derived class

Reimplemented in TUnuranSampler.

Definition at line 166 of file DistSampler.h.

◆ SetFunction() [1/3]

virtual void ROOT::Math::DistSampler::SetFunction ( const ROOT::Math::IGenFunction func)
inlinevirtual

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

Reimplemented in TFoamSampler, and TUnuranSampler.

Definition at line 80 of file DistSampler.h.

◆ SetFunction() [2/3]

virtual void ROOT::Math::DistSampler::SetFunction ( const ROOT::Math::IMultiGenFunction func)
inlinevirtual

set the parent function distribution to use for random sampling (multi-dim case)

Definition at line 86 of file DistSampler.h.

◆ SetFunction() [3/3]

template<class Function >
void ROOT::Math::DistSampler::SetFunction ( Function func,
unsigned int  dim 
)
inline

set the parent function distribution to use for sampling (generic case)

Definition at line 72 of file DistSampler.h.

◆ SetMode() [1/2]

virtual void ROOT::Math::DistSampler::SetMode ( const std::vector< double > &  )
inlinevirtual

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

Reimplemented in TUnuranSampler.

Definition at line 154 of file DistSampler.h.

◆ SetMode() [2/2]

virtual void ROOT::Math::DistSampler::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 in TUnuranSampler.

Definition at line 151 of file DistSampler.h.

◆ SetRandom()

virtual void ROOT::Math::DistSampler::SetRandom ( TRandom )
inlinevirtual

Set the random engine to be used.

To be implemented by the derived classes who provides random sampling

Reimplemented in TFoamSampler, and TUnuranSampler.

Definition at line 118 of file DistSampler.h.

◆ SetRange() [1/4]

void ROOT::Math::DistSampler::SetRange ( const double xmin,
const double xmax 
)

Set the range for all dimensions.

Definition at line 48 of file DistSampler.cxx.

◆ SetRange() [2/4]

void ROOT::Math::DistSampler::SetRange ( const ROOT::Fit::DataRange range)

Set the range using the ROOT::Fit::DataRange class.

Definition at line 58 of file DistSampler.cxx.

◆ SetRange() [3/4]

void ROOT::Math::DistSampler::SetRange ( const std::vector< double > &  xmin,
const std::vector< double > &  xmax 
)
inline

Set the range for all dimensions (use std::vector)

Definition at line 140 of file DistSampler.h.

◆ SetRange() [4/4]

void ROOT::Math::DistSampler::SetRange ( double  xmin,
double  xmax,
int  icoord = 0 
)

Set the range in a given dimension.

Definition at line 40 of file DistSampler.cxx.

◆ SetSeed()

virtual void ROOT::Math::DistSampler::SetSeed ( unsigned int  )
inlinevirtual

Set the random seed for the TRandom instances used by the sampler classes.

To be implemented by the derived classes who provides random sampling

Reimplemented in TFoamSampler, and TUnuranSampler.

Definition at line 125 of file DistSampler.h.

◆ SetUseLogPdf()

virtual void ROOT::Math::DistSampler::SetUseLogPdf ( bool  = true)
inlinevirtual

Use the log of the provided pdf.

Implemented by the derived classes

Reimplemented in TUnuranSampler.

Definition at line 162 of file DistSampler.h.

Member Data Documentation

◆ fData

std::vector<double> ROOT::Math::DistSampler::fData
mutableprivate

flag to indicate if the function is owned

Definition at line 286 of file DistSampler.h.

◆ fFunc

const ROOT::Math::IMultiGenFunction* ROOT::Math::DistSampler::fFunc
private

data range

Definition at line 288 of file DistSampler.h.

◆ fOwnFunc

bool ROOT::Math::DistSampler::fOwnFunc
private

Definition at line 285 of file DistSampler.h.

◆ fRange

ROOT::Fit::DataRange* ROOT::Math::DistSampler::fRange
private

! internal array used to cached the sample data

Definition at line 287 of file DistSampler.h.

Libraries for ROOT::Math::DistSampler:
[legend]

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