Logo ROOT  
Reference Guide
RooRandom.cxx
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * @(#)root/roofitcore:$Id$
5 * Authors: *
6 * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
7 * DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
8 * *
9 * Copyright (c) 2000-2005, Regents of the University of California *
10 * and Stanford University. All rights reserved. *
11 * *
12 * Redistribution and use in source and binary forms, *
13 * with or without modification, are permitted according to the terms *
14 * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
15 *****************************************************************************/
16
17/**
18\file RooRandom.cxx
19\class RooRandom
20\ingroup Roofitcore
21
22This class provides a static interface for generating random numbers.
23By default a private copy of TRandom3 is used to generate all random numbers.
24**/
25#include <cassert>
26
27#include "RooFit.h"
28
29#include "RooRandom.h"
31
32#include "TRandom3.h"
33
34using namespace std;
35
37 ;
38
39
43
44////////////////////////////////////////////////////////////////////////////////
45
48
49////////////////////////////////////////////////////////////////////////////////
50/// Return a pointer to a singleton random-number generator
51/// implementation. Creates the object the first time it is called.
52
54{
56 return _theGenerator;
57}
58
59
60////////////////////////////////////////////////////////////////////////////////
61/// set the random number generator; takes ownership of the object passed as parameter
62
64{
65 if (_theGenerator) delete _theGenerator;
66 _theGenerator = gen;
67}
68
69////////////////////////////////////////////////////////////////////////////////
70/// Return a pointer to a singleton quasi-random generator
71/// implementation. Creates the object the first time it is called.
72
74{
76 return _theQuasiGenerator;
77}
78
79
80////////////////////////////////////////////////////////////////////////////////
81/// Return a number uniformly distributed from (0,1)
82
84{
85 return generator->Rndm();
86}
87
88
89////////////////////////////////////////////////////////////////////////////////
90/// Fill the vector provided with random numbers uniformly distributed from (0,1)
91
92void RooRandom::uniform(UInt_t dimension, Double_t vector[], TRandom *generator)
93{
94 generator->RndmArray(dimension, vector);
95}
96
97
98////////////////////////////////////////////////////////////////////////////////
99/// Return an integer uniformly distributed from [0,n-1]
100
102{
103 return generator->Integer(n);
104}
105
106
107////////////////////////////////////////////////////////////////////////////////
108/// Return a Gaussian random variable with mean 0 and variance 1.
109
111{
112 return generator->Gaus();
113}
114
115
116////////////////////////////////////////////////////////////////////////////////
117/// Return a quasi-random number in the range (0,1) using the
118/// Niederreiter base 2 generator described in Bratley, Fox, Niederreiter,
119/// ACM Trans. Model. Comp. Sim. 2, 195 (1992).
120
122{
123 return generator->generate(dimension,vector);
124}
unsigned int UInt_t
Definition: RtypesCore.h:46
bool Bool_t
Definition: RtypesCore.h:63
double Double_t
Definition: RtypesCore.h:59
#define ClassImp(name)
Definition: Rtypes.h:364
This class generates the quasi-random (aka "low discrepancy") sequence for dimensions up to 12 using ...
Bool_t generate(UInt_t dimension, Double_t vector[])
Generate the next number in the sequence for the specified dimension.
This class provides a static interface for generating random numbers.
Definition: RooRandom.h:24
static RooQuasiRandomGenerator * quasiGenerator()
Return a pointer to a singleton quasi-random generator implementation.
Definition: RooRandom.cxx:73
static struct Guard guard
Definition: RooRandom.h:48
static Bool_t quasi(UInt_t dimension, Double_t vector[], RooQuasiRandomGenerator *generator=quasiGenerator())
Return a quasi-random number in the range (0,1) using the Niederreiter base 2 generator described in ...
Definition: RooRandom.cxx:121
static Double_t uniform(TRandom *generator=randomGenerator())
Return a number uniformly distributed from (0,1)
Definition: RooRandom.cxx:83
static TRandom * _theGenerator
Definition: RooRandom.h:43
static UInt_t integer(UInt_t max, TRandom *generator=randomGenerator())
Return an integer uniformly distributed from [0,n-1].
Definition: RooRandom.cxx:101
static void setRandomGenerator(TRandom *gen)
set the random number generator; takes ownership of the object passed as parameter
Definition: RooRandom.cxx:63
static Double_t gaussian(TRandom *generator=randomGenerator())
Return a Gaussian random variable with mean 0 and variance 1.
Definition: RooRandom.cxx:110
static RooQuasiRandomGenerator * _theQuasiGenerator
Definition: RooRandom.h:44
static TRandom * randomGenerator()
Return a pointer to a singleton random-number generator implementation.
Definition: RooRandom.cxx:53
Random number generator class based on M.
Definition: TRandom3.h:27
This is the base class for the ROOT Random number generators.
Definition: TRandom.h:27
virtual Double_t Gaus(Double_t mean=0, Double_t sigma=1)
Samples a random number from the standard Normal (Gaussian) Distribution with the given mean and sigm...
Definition: TRandom.cxx:274
virtual void RndmArray(Int_t n, Float_t *array)
Return an array of n random numbers uniformly distributed in ]0,1].
Definition: TRandom.cxx:588
virtual Double_t Rndm()
Machine independent random number generator.
Definition: TRandom.cxx:552
virtual UInt_t Integer(UInt_t imax)
Returns a random integer uniformly distributed on the interval [ 0, imax-1 ].
Definition: TRandom.cxx:360
const Int_t n
Definition: legend1.C:16