ROOT   Reference Guide
multivarGaus.C File Reference

## Detailed Description

Tutorial illustrating the multivariate gaussian random number generation

void multivarGaus() {
rnd.Initialize();
const int dim = 3;
double pars[dim] = {0, 0, 0.5};
double genpars[dim] = {0, 0, 0};
double cov[dim * dim] = {1.0, -0.2, 0.0, -0.2, 1.0, 0.5, 0.0, 0.5, 0.75};
TH1F* hX = new TH1F("hX", "hX;x;Counts", 100, -5, 5);
TH1F* hY = new TH1F("hY", "hY;y;Counts", 100, -5, 5);
TH1F* hZ = new TH1F("hZ", "hZ;z;Counts", 100, -5, 5);
TH2F* hXY = new TH2F("hXY", "hXY;x;y;Counts", 100, -5, 5, 100, -5, 5);
TH2F* hXZ = new TH2F("hXZ", "hXZ;x;z;Counts", 100, -5, 5, 100, -5, 5);
TH2F* hYZ = new TH2F("hYZ", "hYZ;y;z;Counts", 100, -5, 5, 100, -5, 5);
const int MAX = 10000;
for (int evnts = 0; evnts < MAX; ++evnts) {
rnd.GaussianND(dim, pars, cov, genpars);
auto x = genpars[0];
auto y = genpars[1];
auto z = genpars[2];
hX->Fill(x);
hY->Fill(y);
hZ->Fill(z);
hXY->Fill(x, y);
hXZ->Fill(x, z);
hYZ->Fill(y, z);
}
TCanvas* c = new TCanvas("c", "Multivariate gaussian random numbers");
c->Divide(3, 2);
c->cd(1);
hX->Draw();
c->cd(2);
hY->Draw();
c->cd(3);
hZ->Draw();
c->cd(4);
hXY->Draw("COL");
c->cd(5);
hXZ->Draw("COL");
c->cd(6);
hYZ->Draw("COL");
}
#define c(i)
Definition: RSha256.hxx:101
GSLRandomEngine Base class for all GSL random engines, normally user instantiate the derived classes ...
void GaussianND(const int dim, double *pars, double *covmat, double *genpars) const
Multivariate Gaussian distribution.
void Initialize()
initialize the generator If no rng is present the default one based on Mersenne and Twister is create...
The Canvas class.
Definition: TCanvas.h:23
1-D histogram with a float per channel (see TH1 documentation)}
Definition: TH1.h:577
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
Definition: TH1.cxx:3338
void Draw(Option_t *option="") override
Draw this histogram with options.
Definition: TH1.cxx:3060
2-D histogram with a float per channel (see TH1 documentation)}
Definition: TH2.h:257
Int_t Fill(Double_t) override
Invalid Fill method.
Definition: TH2.cxx:347
Double_t y[n]
Definition: legend1.C:17
Double_t x[n]
Definition: legend1.C:17
#define MAX(x, y)
Definition: sweep.c:94

Definition in file multivarGaus.C.