#include Double_t GaussFunct (Double_t* x, Double_t* par) { return exp(-0.5*pow((x[0]-par[0])/par[1],2))/ (par[1]*sqrt(2*TMath::Pi())); } Double_t Fattoriale (Int_t x) { if (x<=1) return 1.0; return x*Fattoriale(x-1); } Double_t PoissonFunct (Int_t x, Int_t media) { return pow(media,x)*exp(-media)/Fattoriale(x); } void GaussPoiss() { gROOT->Reset(); const Int_t nEv = 10000; const Int_t xMin = 5; const Int_t xMax = 45; Double_t ParPoiss = 25.0; Double_t ParGaus[2] = {25.0,5.0}; gRandom->SetSeed(0); TCanvas* c1 = new TCanvas("c1","Gauss",180,10,700,500); TCanvas* c2 = new TCanvas("c2","Poisson",200,30,700,500); // Calcolo i valori della poissoniana Double_t x[xMax-xMin+1], y[xMax-xMin+1]; for (Int_t i = 0; icd(); TF1* Gauss2PDF = new TF1("Gauss2PDF",GaussFunct,xMin,xMax,4); Gauss2PDF->SetParameters (ParGaus); Gauss2PDF->SetLineColor(8); Gauss2PDF->Draw(""); // Disegno la poisson nella seconda canvas c2->cd(); TGraph* Poisson1PDF = new TGraph (xMax-xMin+1,x,y); Poisson1PDF->SetFillColor(35); Poisson1PDF ->SetTitle("Poisson"); Poisson1PDF->SetMarkerStyle(21); Poisson1PDF->SetMarkerColor(4); Poisson1PDF->Draw("APC"); TCanvas* all = new TCanvas ("all","All in one"); all->cd(); Poisson1PDF->Draw("APC"); Gauss2PDF->Draw("same"); }