63   TH1D * 
h1 = 
new TH1D(
"h1G",
"gaussian distribution from Unuran",100,-10,10);
 
   64   TH1D * h2 = 
new TH1D(
"h2G",
"gaussian distribution from TRandom",100,-10,10);
 
   66   cout << 
"\nTest using UNURAN string API \n\n";
 
   70   if (! unr.
Init( 
"normal()", 
"method=arou") ) {
 
   71      cout << 
"Error initializing unuran" << endl;
 
   79   for (
int i = 0; i < 
n; ++i) {
 
   85   cout << 
"Time using Unuran method " << unr.
MethodName() << 
"\t=\t " << 
w.CpuTime() << endl;
 
   90   for (
int i = 0; i < 
n; ++i) {
 
   96   cout << 
"Time using TRandom::Gaus  \t=\t " << 
w.CpuTime() << endl;
 
  108double distr(
double *
x, 
double *
p) {
 
  112double cdf(
double *
x, 
double *
p) {
 
  119   cout << 
"\nTest 1D Continous distributions\n\n";
 
  121   TH1D * 
h1 = 
new TH1D(
"h1BW",
"Breit-Wigner distribution from Unuran",100,-10,10);
 
  122   TH1D * h2 = 
new TH1D(
"h2BW",
"Breit-Wigner distribution from GetRandom",100,-10,10);
 
  126   TF1 * 
f = 
new TF1(
"distrFunc",distr,-10,10,2);
 
  127   double par[2] = {1,0};  
 
  128   f->SetParameters(par);
 
  130   TF1 * fc = 
new TF1(
"cdfFunc",cdf,-10,10,2);
 
  141   std::string method = 
"tdr";
 
  149   if (!unr.
Init(dist,method) ) {
 
  150      cout << 
"Error initializing unuran" << endl;
 
  160   for (
int i = 0; i < 
n; ++i) {
 
  166   cout << 
"Time using Unuran method " << unr.
MethodName() << 
"\t=\t " << 
w.CpuTime() << endl;
 
  169   for (
int i = 0; i < 
n; ++i) {
 
  170      double x = 
f->GetRandom();
 
  175   cout << 
"Time using TF1::GetRandom()  \t=\t " << 
w.CpuTime() << endl;
 
  183   std::cout << 
" chi2 test of UNURAN vs GetRandom generated histograms:  " << std::endl;
 
  189double gaus3d(
double *
x, 
double *
p) {
 
  191   double sigma_x = 
p[0];
 
  192   double sigma_y = 
p[1];
 
  193   double sigma_z = 
p[2];
 
  195   double u = 
x[0] / sigma_x ;
 
  196   double v = 
x[1] / sigma_y ;
 
  197   double w = 
x[2] / sigma_z ;
 
  198   double c = 1 - rho*rho ;
 
  200      * 
exp (-(u * u - 2 * rho * u * 
v + 
v * 
v + 
w*
w) / (2 * 
c));
 
  205void testDistrMultiDim() {
 
  207   cout << 
"\nTest Multidimensional distributions\n\n";
 
  209   TH3D * 
h1 = 
new TH3D(
"h13D",
"gaussian 3D distribution from Unuran",50,-10,10,50,-10,10,50,-10,10);
 
  210   TH3D * h2 = 
new TH3D(
"h23D",
"gaussian 3D distribution from GetRandom",50,-10,10,50,-10,10,50,-10,10);
 
  214   TF3 * 
f = 
new TF3(
"g3d",gaus3d,-10,10,-10,10,-10,10,3);
 
  215   double par[3] = {2,2,0.5};
 
  216   f->SetParameters(par);
 
  225   std::string method = 
"hitro";
 
  226   if ( !  unr.
Init(dist,method) ) {
 
  227      cout << 
"Error initializing unuran" << endl;
 
  235   for (
int i = 0; i < NGEN; ++i) {
 
  241   cout << 
"Time using Unuran method " << unr.
MethodName() << 
"\t=\t\t " << 
w.CpuTime() << endl;
 
  255   for (
int i = 0; i < NGEN; ++i) {
 
  256      f->GetRandom3(
x[0],
x[1],
x[2]);
 
  261   cout << 
"Time using TF1::GetRandom  \t\t=\t " << 
w.CpuTime() << endl;
 
  267   std::cout << 
" chi2 test of UNURAN vs GetRandom generated histograms:  " << std::endl;
 
  275double poisson(
double * 
x, 
double * 
p) {
 
  279void testDiscDistr() {
 
  281   cout << 
"\nTest Discrete distributions\n\n";
 
  283   TH1D * 
h1 = 
new TH1D(
"h1PS",
"Unuran Poisson prob",20,0,20);
 
  284   TH1D * h2 = 
new TH1D(
"h2PS",
"Poisson dist from TRandom",20,0,20);
 
  288   TF1 * 
f = 
new TF1(
"fps",poisson,1,0,1);
 
  289   f->SetParameter(0,mu);
 
  297   bool ret = unr.
Init(dist2,
"dari");
 
  304   for (
int i = 0; i < 
n; ++i) {
 
  310   cout << 
"Time using Unuran method " << unr.
MethodName() << 
"\t=\t\t " << 
w.CpuTime() << endl;
 
  313   for (
int i = 0; i < 
n; ++i) {
 
  316   cout << 
"Time using TRandom::Poisson " << 
"\t=\t\t " << 
w.CpuTime() << endl;
 
  323   std::cout << 
" chi2 test of UNURAN vs TRandom generated histograms:  " << std::endl;
 
  335   cout << 
"\nTest Empirical distributions using smoothing\n\n";
 
  339   const int Ndata = 1000;
 
  341   for (
int i = 0; i < Ndata; ++i) {
 
  348   TH1D * h0 = 
new TH1D(
"h0Ref",
"Starting data",100,-10,10);
 
  349   TH1D * 
h1 = 
new TH1D(
"h1Unr",
"Unuran unbin Generated data",100,-10,10);
 
  350   TH1D * h1b = 
new TH1D(
"h1bUnr",
"Unuran bin Generated data",100,-10,10);
 
  351   TH1D * h2 = 
new TH1D(
"h2GR",
"Data from TH1::GetRandom",100,-10,10);
 
  363   if (!unr.
Init(dist)) 
return;
 
  364   for (
int i = 0; i < 
n; ++i) {
 
  369   cout << 
"Time using Unuran unbin  " << unr.
MethodName() << 
"\t=\t\t " << 
w.CpuTime() << endl;
 
  374   if (!unr.
Init(binDist)) 
return;
 
  375   for (
int i = 0; i < 
n; ++i) {
 
  379   cout << 
"Time using Unuran bin  " << unr.
MethodName() << 
"\t=\t\t " << 
w.CpuTime() << endl;
 
  382   for (
int i = 0; i < 
n; ++i) {
 
  385   cout << 
"Time using TH1::GetRandom " << 
"\t=\t\t " << 
w.CpuTime() << endl;
 
  410   c1 = 
new TCanvas(
"c1_unuranMulti",
"Multidimensional distribution",10,10,1000,1000);
 
winID h TVirtualViewer3D TVirtualGLPainter p
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t np
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
 
R__EXTERN TRandom * gRandom
 
R__EXTERN TStyle * gStyle
 
R__EXTERN TSystem * gSystem
 
virtual void SetLineColor(Color_t lcolor)
Set the line color.
 
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
 
virtual void SetParameters(const Double_t *params)
 
A 3-Dim function with parameters.
 
1-D histogram with a double per channel (see TH1 documentation)}
 
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
 
void Draw(Option_t *option="") override
Draw this histogram with options.
 
virtual Double_t GetRandom(TRandom *rng=nullptr) const
Return a random number distributed according the histogram bin contents.
 
virtual Double_t Chi2Test(const TH1 *h2, Option_t *option="UU", Double_t *res=nullptr) const
test for comparing weighted and unweighted histograms
 
virtual void FillN(Int_t ntimes, const Double_t *x, const Double_t *w, Int_t stride=1)
Fill this histogram with an array x and weights w.
 
3-D histogram with a double per channel (see TH1 documentation)}
 
Int_t Fill(Double_t) override
Invalid Fill method.
 
Random number generator class based on the maximally quidistributed combined Tausworthe generator by ...
 
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...
 
virtual Int_t Poisson(Double_t mean)
Generates a random integer N according to a Poisson law.
 
void Start(Bool_t reset=kTRUE)
Start the stopwatch.
 
void SetOptFit(Int_t fit=1)
The type of information about fit parameters printed in the histogram statistics box can be selected ...
 
virtual int Load(const char *module, const char *entry="", Bool_t system=kFALSE)
Load a shared library.
 
TUnuranContDist class describing one dimensional continuous distribution.
 
TUnuranDiscrDist class for one dimensional discrete distribution.
 
void SetMode(int mode)
set the mode of the distribution (location of maximum probability)
 
void SetProbSum(double sum)
set the value of the sum of the probabilities in the given domain
 
TUnuranEmpDist class for describing empirical distributions.
 
TUnuranMultiContDist class describing multi dimensional continuous distributions.
 
int SampleDiscr()
Sample discrete distributions.
 
const std::string & MethodName() const
used Unuran method
 
bool SampleMulti(double *x)
Sample multidimensional distributions.
 
bool Init(const std::string &distr, const std::string &method)
Initialize with Unuran string API interface.
 
double Sample()
Sample 1D distribution.
 
double breitwigner_pdf(double x, double gamma, double x0=0)
Probability density function of Breit-Wigner distribution, which is similar, just a different definit...
 
double poisson_pdf(unsigned int n, double mu)
Probability density function of the Poisson distribution.
 
double breitwigner_cdf(double x, double gamma, double x0=0)
Cumulative distribution function (lower tail) of the Breit_Wigner distribution and it is similar (jus...
 
RVec< PromoteType< T > > exp(const RVec< T > &v)
 
double dist(Rotation3D const &r1, Rotation3D const &r2)
 
VecExpr< UnaryOp< Sqrt< T >, VecExpr< A, T, D >, T >, T, D > sqrt(const VecExpr< A, T, D > &rhs)