ROOT  6.07/01
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Protected Attributes | Private Member Functions | List of all members
ROOT::Math::RandomFunctionsImpl< TRandomEngine > Class Template Reference

template<>
class ROOT::Math::RandomFunctionsImpl< TRandomEngine >

Implementation class for the RandomFunction for all the engined that derives from TRandomEngine class, which defines an interface which has TRandomEngine::Rndm() In this way we can have a common implementation for the RandomFunctions.

Definition at line 69 of file RandomFunctions.h.

Public Member Functions

 RandomFunctionsImpl ()
 class constructor More...
 
void SetEngine (void *r)
 
int Binomial (int ntot, double prob)
 Generate binomial numbers. More...
 
double BreitWigner (double mean, double gamma)
 Return a number distributed following a BreitWigner function with mean and gamma. More...
 
void Circle (double &x, double &y, double r)
 Generates random vectors, uniformly distributed over a circle of given radius. More...
 
double Exp (double tau)
 Returns an exponential deviate. More...
 
double GausBM (double mean, double sigma)
 generate Gaussian number using Box-Muller method More...
 
double GausACR (double mean, double sigma)
 generate random numbers according to the Accemptance-Complemet-Ratio method More...
 
double Landau (double mu, double sigma)
 Generate a random number following a Landau distribution with location parameter mu and scale parameter sigma: Landau( (x-mu)/sigma ) More...
 
int Poisson (double mean)
 Generates a random integer N according to a Poisson law. More...
 
double PoissonD (double mean)
 Generates a random number according to a Poisson law. More...
 
void Rannor (double &a, double &b)
 Generate numbers distributed following a gaussian with mean=0 and sigma=1. More...
 
void Sphere (double &x, double &y, double &z, double r)
 Generates random vectors, uniformly distributed over the surface of a sphere of given radius. More...
 
double Uniform (double a, double b)
 generate random numbers following a Uniform distribution in the [a,b] interval More...
 
double Uniform (double a)
 Returns a uniform deviate on the interval (0, x1). More...
 

Protected Attributes

TRandomEnginefBaseEngine
 

Private Member Functions

double Rndm ()
 
double Gaus (double mean, double sigma)
 

#include <Math/RandomFunctions.h>

Constructor & Destructor Documentation

class constructor

Definition at line 74 of file RandomFunctions.h.

Member Function Documentation

Int_t ROOT::Math::RandomFunctionsImpl< TRandomEngine >::Binomial ( int  ntot,
double  prob 
)

Generate binomial numbers.

Definition at line 27 of file RandomFunctions.cxx.

Double_t ROOT::Math::RandomFunctionsImpl< TRandomEngine >::BreitWigner ( double  mean,
double  gamma 
)

Return a number distributed following a BreitWigner function with mean and gamma.

Definition at line 41 of file RandomFunctions.cxx.

Generates random vectors, uniformly distributed over a circle of given radius.

Input : r = circle radius Output: x,y a random 2-d vector of length r

Definition at line 55 of file RandomFunctions.cxx.

Returns an exponential deviate.

exp( -t/tau )

Definition at line 67 of file RandomFunctions.cxx.

double ROOT::Math::RandomFunctionsImpl< TRandomEngine >::Gaus ( double  mean,
double  sigma 
)
inlineprivate

Definition at line 132 of file RandomFunctions.h.

generate random numbers according to the Accemptance-Complemet-Ratio method

Definition at line 96 of file RandomFunctions.cxx.

generate Gaussian number using Box-Muller method

Definition at line 77 of file RandomFunctions.cxx.

Generate a random number following a Landau distribution with location parameter mu and scale parameter sigma: Landau( (x-mu)/sigma )

Generate a random number following a Landau distribution with location parameter mu and scale parameter sigma: Landau( (x-mu)/sigma ) Note that mu is not the mpv(most probable value) of the Landa distribution and sigma is not the standard deviation of the distribution which is not defined.

For mu =0 and sigma=1, the mpv = -0.22278

The Landau random number generation is implemented using the function landau_quantile(x,sigma), which provides the inverse of the landau cumulative distribution. landau_quantile has been converted from CERNLIB ranlan(G110).

Definition at line 191 of file RandomFunctions.cxx.

Generates a random integer N according to a Poisson law.

Prob(N) = exp(-mean)*mean^N/Factorial(N)

Prob(N) = exp(-mean)*mean^N/Factorial(N)

Use a different procedure according to the mean value. The algorithm is the same used by CLHEP. For lower value (mean < 25) use the rejection method based on the exponential. For higher values use a rejection method comparing with a Lorentzian distribution, as suggested by several authors. This routine since is returning 32 bits integer will not work for values larger than 2*10**9. One should then use the Trandom::PoissonD for such large values.

Definition at line 213 of file RandomFunctions.cxx.

Generates a random number according to a Poisson law.

Prob(N) = exp(-mean)*mean^N/Factorial(N)

This function is a variant of RandomFunctionsImpl<TRandomEngine>::Poisson returning a double instead of an integer.

Definition at line 265 of file RandomFunctions.cxx.

Generate numbers distributed following a gaussian with mean=0 and sigma=1.

Return 2 numbers distributed following a gaussian with mean=0 and sigma=1.

Using the Box-Muller method

Definition at line 312 of file RandomFunctions.cxx.

Definition at line 130 of file RandomFunctions.h.

void ROOT::Math::RandomFunctionsImpl< TRandomEngine >::SetEngine ( void r)
inline

Definition at line 76 of file RandomFunctions.h.

void ROOT::Math::RandomFunctionsImpl< TRandomEngine >::Sphere ( double x,
double y,
double z,
double  r 
)

Generates random vectors, uniformly distributed over the surface of a sphere of given radius.

Input : r = sphere radius Output: x,y,z a random 3-d vector of length r Method: (based on algorithm suggested by Knuth and attributed to Robert E Knop) which uses less random numbers than the CERNLIB RN23DIM algorithm

Definition at line 332 of file RandomFunctions.cxx.

generate random numbers following a Uniform distribution in the [a,b] interval

Returns a uniform deviate on the interval (x1, x2).

Definition at line 359 of file RandomFunctions.cxx.

Returns a uniform deviate on the interval (0, x1).

Definition at line 350 of file RandomFunctions.cxx.

Member Data Documentation

Definition at line 126 of file RandomFunctions.h.

Collaboration diagram for ROOT::Math::RandomFunctionsImpl< TRandomEngine >:
[legend]

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