Double_t g2(Double_t *x, Double_t *par) /* 2-dim Gaussian par0 = normalisation par1=mu_1 par2=sigma_1 par3=mu_2 par4=sigma_2 par5=rho */ { if(par[2] > 0 && par[4] > 0) { double norm=par[0]/(8*atan(1.)*par[2]*par[4]*sqrt(1.-par[5]*par[5])); double rx=(x[0]-par[1])/par[2]; double ry=(x[1]-par[3])/par[4]; double cov=2*par[5]*rx*ry; return norm*TMath::Exp(-(rx*rx+ry*ry-cov)/(2.*(1-par[5]*par[5])) ); } else return 0; } void gaus2d() { TF2 *g2 =new TF2("gaus2", g2, -3.,3.,-3.,3.,6); g2->SetParameter(0,1.); // normalisation g2->SetParameter(1,0.); // mu1 g2->SetParameter(2,1.); // sigma1 g2->SetParameter(3,0.); // mu2 g2->SetParameter(4,1.); // sigma2 g2->SetParameter(5,0.7); // rho // draw 2-dim function g2->Draw("surf3"); }