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. | |
virtual | ~RooQuasiRandomGenerator () |
Destructor. | |
bool | generate (UInt_t dimension, double vector[]) |
Generate the next number in the sequence for the specified dimension. | |
virtual TClass * | IsA () const |
void | reset () |
Reset the workspace to its initial state. | |
virtual void | Streamer (TBuffer &) |
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
Static Public Member Functions | |
static TClass * | Class () |
static const char * | Class_Name () |
static constexpr Version_t | Class_Version () |
static const char * | DeclFileName () |
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. | |
void | calculateV (const int px[], int px_degree, int pb[], int *pb_degree, int v[], int maxv) |
Internal function. | |
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. | |
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 | _coefsCalculated = false |
static const Int_t | _polyDegree [MaxDimension+1] |
static const Int_t | _primitivePoly [MaxDimension+1][MaxPrimitiveDegree+1] |
#include <RooQuasiRandomGenerator.h>
anonymous enum |
Enumerator | |
---|---|
MaxDimension | |
NBits | |
MaxDegree | |
MaxPrimitiveDegree |
Definition at line 27 of file RooQuasiRandomGenerator.h.
RooQuasiRandomGenerator::RooQuasiRandomGenerator | ( | ) |
Perform one-time initialization of our static coefficient array if necessary and initialize our workspace.
Definition at line 46 of file RooQuasiRandomGenerator.cxx.
|
virtual |
Destructor.
Definition at line 61 of file RooQuasiRandomGenerator.cxx.
Definition at line 35 of file RooQuasiRandomGenerator.h.
|
protected |
Calculate the coefficients for the given number of dimensions.
Definition at line 122 of file RooQuasiRandomGenerator.cxx.
|
protected |
Internal function.
Definition at line 201 of file RooQuasiRandomGenerator.cxx.
|
static |
|
inlinestaticconstexpr |
Definition at line 47 of file RooQuasiRandomGenerator.h.
|
inlinestatic |
Definition at line 47 of file RooQuasiRandomGenerator.h.
Generate the next number in the sequence for the specified dimension.
The maximum dimension supported is 12.
Definition at line 81 of file RooQuasiRandomGenerator.cxx.
|
inlinevirtual |
Definition at line 47 of file RooQuasiRandomGenerator.h.
Definition at line 36 of file RooQuasiRandomGenerator.h.
|
protected |
Internal function.
Definition at line 295 of file RooQuasiRandomGenerator.cxx.
void RooQuasiRandomGenerator::reset | ( | ) |
Reset the workspace to its initial state.
Definition at line 70 of file RooQuasiRandomGenerator.cxx.
|
virtual |
|
inline |
Definition at line 47 of file RooQuasiRandomGenerator.h.
Definition at line 37 of file RooQuasiRandomGenerator.h.
|
staticprivate |
Definition at line 43 of file RooQuasiRandomGenerator.h.
|
staticprivate |
Definition at line 42 of file RooQuasiRandomGenerator.h.
|
private |
Definition at line 39 of file RooQuasiRandomGenerator.h.
|
staticprivate |
Definition at line 45 of file RooQuasiRandomGenerator.h.
|
staticprivate |
Definition at line 44 of file RooQuasiRandomGenerator.h.
|
private |
Definition at line 40 of file RooQuasiRandomGenerator.h.