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
 ~TUnuranSampler () override
 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 filling 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.
TRandomGetRandom () override
 Get the random engine used by the sampler.
bool HasParentPdf () const
 Check if there is a parent distribution defined.
bool Init (const char *algo="") override
 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) override
 initialize the generators with the given algorithm If no algorithm is passed used the default one for the type of distribution
virtual TClassIsA () const
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.
bool Sample (double *x) override
 sample one event in multi-dimension by filling the given array return false if sampling failed
double Sample1D () override
 sample one event in one dimension better implementation could be provided by the derived classes
bool SampleBin (double prob, double &value, double *error=nullptr) override
 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
virtual bool SampleBins (unsigned int n, const double *prob, double *values, double *errors=nullptr)
 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 independently, SampleBin should be used.
void SetArea (double area) override
 Set the normalization area of distribution.
void SetCdf (const ROOT::Math::IGenFunction &cdf) override
 set the cumulative distribution function of the PDF used for random sampling (one dim case)
void SetDPdf (const ROOT::Math::IGenFunction &dpdf) override
 set the Derivative of the PDF used for random sampling (one dim continuous case)
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 SetFunction (const ROOT::Math::IGenFunction &func) override
 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) override
 Set the mode of the distribution (Multi-dim case).
void SetMode (double mode) override
 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) override
 Set the random engine to be used Needs to be called before Init to have effect.
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.
void SetSeed (unsigned int seed) override
 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) override
 Set using of logarithm of PDF (only for 1D continuous case).
virtual void Streamer (TBuffer &)
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 ()

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.
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
 area of dist
const ROOT::Math::IGenFunctionfCDF = nullptr
 CDF function pointer.
std::vector< doublefData
 ! internal array used to cached the sample data
bool fDiscrete = false
 flag to indicate if the function is discrete
const ROOT::Math::IGenFunctionfDPDF = nullptr
 1D Derivative function pointer
const ROOT::Math::IMultiGenFunctionfFunc
 internal function (ND)
const ROOT::Math::IGenFunctionfFunc1D = nullptr
 1D function pointer (pdf)
bool fHasArea = false
 flag to indicate if a area is set
bool fHasMode = false
 flag to indicate if a mode is set
int fLevel
 debug level
double fMode
 mode of dist (1D)
std::vector< doublefNDMode
 mode of the multi-dim distribution
bool fOneDim = false
 flag to indicate if the function is 1 dimension
bool fOwnFunc
 flag to indicate if the function is owned
ROOT::Fit::DataRangefRange
 data range
TUnuranfUnuran = nullptr
 unuran engine class
bool fUseLogPdf = false
 flag to indicate if we use the log of the PDF

#include <TUnuranSampler.h>

Inheritance diagram for TUnuranSampler:
ROOT::Math::DistSampler

Constructor & Destructor Documentation

◆ TUnuranSampler()

TUnuranSampler::TUnuranSampler ( )

default constructor

Definition at line 32 of file TUnuranSampler.cxx.

◆ ~TUnuranSampler()

TUnuranSampler::~TUnuranSampler ( )
override

virtual destructor

Definition at line 42 of file TUnuranSampler.cxx.

Member Function Documentation

◆ Class()

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

◆ Class_Name()

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

◆ Class_Version()

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

Definition at line 198 of file TUnuranSampler.h.

◆ DeclFileName()

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

Definition at line 198 of file TUnuranSampler.h.

◆ DoInit1D()

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

Initialization for 1D distributions.

Definition at line 142 of file TUnuranSampler.cxx.

◆ DoInitDiscrete1D()

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

Initialization for 1D discrete distributions.

Definition at line 182 of file TUnuranSampler.cxx.

◆ DoInitND()

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

Initialization for multi-dim distributions.

Definition at line 223 of file TUnuranSampler.cxx.

◆ DoSetDimension()

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

Definition at line 78 of file DistSampler.cxx.

◆ DoSetFunction()

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

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 )
virtualinherited

Generate a binned data set.

A range must have been set before (otherwise inf is returned) and the bins are equidistant 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 )
virtualinherited

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

The flag eventRow indicates how the events are arranged 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 )
inlineinherited

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

Definition at line 261 of file DistSampler.h.

◆ Generate() [4/4]

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

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

TRandom * TUnuranSampler::GetRandom ( )
overridevirtual

Get the random engine used by the sampler.

Reimplemented from ROOT::Math::DistSampler.

Definition at line 261 of file TUnuranSampler.cxx.

◆ HasParentPdf()

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

Check if there is a parent distribution defined.

Definition at line 179 of file DistSampler.h.

◆ Init() [1/2]

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

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 47 of file TUnuranSampler.cxx.

◆ Init() [2/2]

bool TUnuranSampler::Init ( const ROOT::Math::DistSamplerOptions & opt)
overridevirtual

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 105 of file TUnuranSampler.cxx.

◆ IsA()

virtual TClass * TUnuranSampler::IsA ( ) const
inlinevirtual
Returns
TClass describing current object

Definition at line 198 of file TUnuranSampler.h.

◆ IsInitialized()

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

Definition at line 89 of file DistSampler.cxx.

◆ NDim()

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

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

Definition at line 92 of file DistSampler.h.

◆ ParentPdf()

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

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

Definition at line 174 of file DistSampler.h.

◆ PdfRange()

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

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

Definition at line 277 of file DistSampler.h.

◆ Sample() [1/2]

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

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

Definition at line 194 of file DistSampler.h.

◆ Sample() [2/2]

bool TUnuranSampler::Sample ( double * x)
overridevirtual

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

Implements ROOT::Math::DistSampler.

Definition at line 271 of file TUnuranSampler.cxx.

◆ Sample1D()

double TUnuranSampler::Sample1D ( )
overridevirtual

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

Reimplemented from ROOT::Math::DistSampler.

Definition at line 266 of file TUnuranSampler.cxx.

◆ SampleBin()

bool TUnuranSampler::SampleBin ( double prob,
double & value,
double * error = nullptr )
overridevirtual

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 279 of file TUnuranSampler.cxx.

◆ SampleBins()

virtual bool ROOT::Math::DistSampler::SampleBins ( unsigned int n,
const double * prob,
double * values,
double * errors = nullptr )
inlinevirtualinherited

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 independently, SampleBin should be used.

Definition at line 224 of file DistSampler.h.

◆ SetArea()

void TUnuranSampler::SetArea ( double )
inlineoverridevirtual

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)
overridevirtual

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

Reimplemented from ROOT::Math::DistSampler.

Definition at line 306 of file TUnuranSampler.cxx.

◆ SetDPdf()

void TUnuranSampler::SetDPdf ( const ROOT::Math::IGenFunction & dpdf)
overridevirtual

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

Reimplemented from ROOT::Math::DistSampler.

Definition at line 312 of file TUnuranSampler.cxx.

◆ SetFunction() [1/4]

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

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

Definition at line 87 of file DistSampler.h.

◆ SetFunction() [2/4]

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

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

Definition at line 73 of file DistSampler.h.

◆ SetFunction() [3/4]

void TUnuranSampler::SetFunction ( const ROOT::Math::IGenFunction & func)
inlineoverridevirtual

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() [4/4]

void TUnuranSampler::SetFunction ( TF1 * pdf)

Set the Function using a TF1 pointer.

Definition at line 246 of file TUnuranSampler.cxx.

◆ SetMode() [1/2]

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

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

Reimplemented from ROOT::Math::DistSampler.

Definition at line 288 of file TUnuranSampler.cxx.

◆ SetMode() [2/2]

void TUnuranSampler::SetMode ( double )
inlineoverridevirtual

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)
overridevirtual

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

Reimplemented from ROOT::Math::DistSampler.

Definition at line 251 of file TUnuranSampler.cxx.

◆ SetRange() [1/4]

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

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)
inherited

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 )
inlineinherited

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

Definition at line 141 of file DistSampler.h.

◆ SetRange() [4/4]

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

Set the range in a given dimension.

Definition at line 40 of file DistSampler.cxx.

◆ SetSeed()

void TUnuranSampler::SetSeed ( unsigned int seed)
overridevirtual

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 256 of file TUnuranSampler.cxx.

◆ SetUseLogPdf()

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

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

Reimplemented from ROOT::Math::DistSampler.

Definition at line 135 of file TUnuranSampler.h.

◆ Streamer()

virtual void TUnuranSampler::Streamer ( TBuffer & )
virtual

◆ StreamerNVirtual()

void TUnuranSampler::StreamerNVirtual ( TBuffer & ClassDef_StreamerNVirtual_b)
inline

Definition at line 198 of file TUnuranSampler.h.

Member Data Documentation

◆ fArea

double TUnuranSampler::fArea
private

area of dist

Definition at line 191 of file TUnuranSampler.h.

◆ fCDF

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

CDF function pointer.

Definition at line 194 of file TUnuranSampler.h.

◆ fData

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

! internal array used to cached the sample data

Definition at line 287 of file DistSampler.h.

◆ fDiscrete

bool TUnuranSampler::fDiscrete = false
private

flag to indicate if the function is discrete

Definition at line 185 of file TUnuranSampler.h.

◆ fDPDF

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

1D Derivative function pointer

Definition at line 195 of file TUnuranSampler.h.

◆ fFunc

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

internal function (ND)

Definition at line 289 of file DistSampler.h.

◆ fFunc1D

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

1D function pointer (pdf)

Definition at line 193 of file TUnuranSampler.h.

◆ fHasArea

bool TUnuranSampler::fHasArea = false
private

flag to indicate if a area is set

Definition at line 187 of file TUnuranSampler.h.

◆ fHasMode

bool TUnuranSampler::fHasMode = false
private

flag to indicate if a mode is set

Definition at line 186 of file TUnuranSampler.h.

◆ fLevel

int TUnuranSampler::fLevel
private

debug level

Definition at line 189 of file TUnuranSampler.h.

◆ fMode

double TUnuranSampler::fMode
private

mode of dist (1D)

Definition at line 190 of file TUnuranSampler.h.

◆ fNDMode

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

mode of the multi-dim distribution

Definition at line 192 of file TUnuranSampler.h.

◆ fOneDim

bool TUnuranSampler::fOneDim = false
private

flag to indicate if the function is 1 dimension

Definition at line 184 of file TUnuranSampler.h.

◆ fOwnFunc

bool ROOT::Math::DistSampler::fOwnFunc
privateinherited

flag to indicate if the function is owned

Definition at line 286 of file DistSampler.h.

◆ fRange

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

data range

Definition at line 288 of file DistSampler.h.

◆ fUnuran

TUnuran* TUnuranSampler::fUnuran = nullptr
private

unuran engine class

Definition at line 196 of file TUnuranSampler.h.

◆ fUseLogPdf

bool TUnuranSampler::fUseLogPdf = false
private

flag to indicate if we use the log of the PDF

Definition at line 188 of file TUnuranSampler.h.


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