Logo ROOT  
Reference Guide
RooQuasiRandomGenerator Class Reference

This class generates the quasi-random (aka "low discrepancy") sequence for dimensions up to 12 using the Niederreiter base 2 algorithm described in Bratley, Fox, Niederreiter, ACM Trans. Model. Comp. Sim. 2, 195 (1992). This implementation was adapted from the 0.9 beta release of the GNU scientific library. Quasi-random number sequences are useful for improving the convergence of a Monte Carlo integration.

Definition at line 21 of file RooQuasiRandomGenerator.h.

Public Types

enum  { MaxDimension = 12, NBits = 31, MaxDegree = 50, MaxPrimitiveDegree = 5 }
 

Public Member Functions

 RooQuasiRandomGenerator ()
 Perform one-time initialization of our static coefficient array if necessary and initialize our workspace. More...
 
virtual ~RooQuasiRandomGenerator ()
 Destructor. More...
 
Bool_t generate (UInt_t dimension, Double_t vector[])
 Generate the next number in the sequence for the specified dimension. More...
 
void reset ()
 Reset the workspace to its initial state. More...
 

Protected Member Functions

Int_t add (Int_t x, Int_t y) const
 
void calculateCoefs (UInt_t dimension)
 Calculate the coefficients for the given number of dimensions. More...
 
void calculateV (const int px[], int px_degree, int pb[], int *pb_degree, int v[], int maxv)
 Internal function. More...
 
Int_t mul (Int_t x, Int_t y) const
 
void polyMultiply (const int pa[], int pa_degree, const int pb[], int pb_degree, int pc[], int *pc_degree)
 Internal function. More...
 
Int_t sub (Int_t x, Int_t y) const
 

Private Attributes

Int_t_nextq
 
Int_t _sequenceCount
 

Static Private Attributes

static Int_t _cj [NBits][MaxDimension]
 
static Bool_t _coefsCalculated = kFALSE
 
static const Int_t _polyDegree [MaxDimension+1]
 
static const Int_t _primitivePoly [MaxDimension+1][MaxPrimitiveDegree+1]
 

#include <RooQuasiRandomGenerator.h>

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
MaxDimension 
NBits 
MaxDegree 
MaxPrimitiveDegree 

Definition at line 41 of file RooQuasiRandomGenerator.h.

Constructor & Destructor Documentation

◆ RooQuasiRandomGenerator()

RooQuasiRandomGenerator::RooQuasiRandomGenerator ( )

Perform one-time initialization of our static coefficient array if necessary and initialize our workspace.

Definition at line 48 of file RooQuasiRandomGenerator.cxx.

◆ ~RooQuasiRandomGenerator()

RooQuasiRandomGenerator::~RooQuasiRandomGenerator ( )
virtual

Destructor.

Definition at line 63 of file RooQuasiRandomGenerator.cxx.

Member Function Documentation

◆ add()

Int_t RooQuasiRandomGenerator::add ( Int_t  x,
Int_t  y 
) const
inlineprotected

Definition at line 49 of file RooQuasiRandomGenerator.h.

◆ calculateCoefs()

void RooQuasiRandomGenerator::calculateCoefs ( UInt_t  dimension)
protected

Calculate the coefficients for the given number of dimensions.

Definition at line 123 of file RooQuasiRandomGenerator.cxx.

◆ calculateV()

void RooQuasiRandomGenerator::calculateV ( const int  px[],
int  px_degree,
int  pb[],
int pb_degree,
int  v[],
int  maxv 
)
protected

Internal function.

Definition at line 201 of file RooQuasiRandomGenerator.cxx.

◆ generate()

Bool_t RooQuasiRandomGenerator::generate ( UInt_t  dimension,
Double_t  vector[] 
)

Generate the next number in the sequence for the specified dimension.

The maximum dimension supported is 12.

Definition at line 83 of file RooQuasiRandomGenerator.cxx.

◆ mul()

Int_t RooQuasiRandomGenerator::mul ( Int_t  x,
Int_t  y 
) const
inlineprotected

Definition at line 50 of file RooQuasiRandomGenerator.h.

◆ polyMultiply()

void RooQuasiRandomGenerator::polyMultiply ( const int  pa[],
int  pa_degree,
const int  pb[],
int  pb_degree,
int  pc[],
int pc_degree 
)
protected

Internal function.

Definition at line 293 of file RooQuasiRandomGenerator.cxx.

◆ reset()

void RooQuasiRandomGenerator::reset ( )

Reset the workspace to its initial state.

Definition at line 72 of file RooQuasiRandomGenerator.cxx.

◆ sub()

Int_t RooQuasiRandomGenerator::sub ( Int_t  x,
Int_t  y 
) const
inlineprotected

Definition at line 51 of file RooQuasiRandomGenerator.h.

Member Data Documentation

◆ _cj

Int_t RooQuasiRandomGenerator::_cj
staticprivate

Definition at line 57 of file RooQuasiRandomGenerator.h.

◆ _coefsCalculated

Bool_t RooQuasiRandomGenerator::_coefsCalculated = kFALSE
staticprivate

Definition at line 56 of file RooQuasiRandomGenerator.h.

◆ _nextq

Int_t* RooQuasiRandomGenerator::_nextq
private

Definition at line 53 of file RooQuasiRandomGenerator.h.

◆ _polyDegree

const Int_t RooQuasiRandomGenerator::_polyDegree
staticprivate
Initial value:
=
{
0, 1, 1, 2, 3, 3, 4, 4, 4, 5, 5, 5, 5
}

Definition at line 59 of file RooQuasiRandomGenerator.h.

◆ _primitivePoly

const Int_t RooQuasiRandomGenerator::_primitivePoly
staticprivate
Initial value:
=
{
{ 1, 0, 0, 0, 0, 0 },
{ 0, 1, 0, 0, 0, 0 },
{ 1, 1, 0, 0, 0, 0 },
{ 1, 1, 1, 0, 0, 0 },
{ 1, 1, 0, 1, 0, 0 },
{ 1, 0, 1, 1, 0, 0 },
{ 1, 1, 0, 0, 1, 0 },
{ 1, 0, 0, 1, 1, 0 },
{ 1, 1, 1, 1, 1, 0 },
{ 1, 0, 1, 0, 0, 1 },
{ 1, 0, 0, 1, 0, 1 },
{ 1, 1, 1, 1, 0, 1 },
{ 1, 1, 1, 0, 1, 1 }
}

Definition at line 58 of file RooQuasiRandomGenerator.h.

◆ _sequenceCount

Int_t RooQuasiRandomGenerator::_sequenceCount
private

Definition at line 54 of file RooQuasiRandomGenerator.h.

Libraries for RooQuasiRandomGenerator:
[legend]

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