#include Double_t Fattoriale (Int_t x) { if (x<=1) return 1.0; return x*Fattoriale(x-1); } Double_t Binomiale(Int_t x, Int_t N, Double_t p) { return Fattoriale(N)*pow(p,x)*pow((1-p),(N-x))/(Fattoriale(x)*Fattoriale(N-x)); } Double_t PoissonFunct (Int_t x, Int_t media) { return pow(media,x)*exp(-media)/Fattoriale(x); } 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 Gauss2Funct (Double_t* x, Double_t* par) { return GaussFunct (x,par) + GaussFunct (x,&par[2]); } void Poisson() { gROOT->Reset(); // Intervalli di visualizzazione delle distribuzioni const Int_t xMin = 0; const Int_t xMax = 8; // Media della distribuzione di Poisson Double_t ParPoiss = 2.0; TCanvas* c1 = new TCanvas("c1","Poisson1",180,10,700,500); TCanvas* c2 = new TCanvas("c2","Poisson2",200,30,700,500); TCanvas* c3 = new TCanvas("c3","Poisson3",220,50,700,500); TCanvas* c4 = new TCanvas("c4","Poisson4",240,70,700,500); // Calcolo i valori della 1a poissoniana Double_t x[xMax-xMin+1], y[xMax-xMin+1]; for (Int_t i = 0; icd(); TGraph* Poisson1PDF = new TGraph (xMax-xMin+1,x,y); Poisson1PDF->SetFillColor(35); Poisson1PDF ->SetTitle("Poisson1"); Poisson1PDF->SetMarkerStyle(21); Poisson1PDF->SetMarkerColor(4); Poisson1PDF->Draw("APC"); // Seconda Poissoniana const Int_t xMin = 0; const Int_t xMax = 14; // Media della distribuzione di Poisson Double_t ParPoiss = 4; // Calcolo i valori della seconda poissoniana Double_t x1[xMax-xMin+1], y1[xMax-xMin+1]; for (Int_t i = 0; icd(); TGraph* Poisson2PDF = new TGraph (xMax-xMin+1,x1,y1); Poisson2PDF->SetFillColor(35); Poisson2PDF ->SetTitle("Poisson2"); Poisson2PDF->SetMarkerStyle(21); Poisson2PDF->SetMarkerColor(2); Poisson2PDF->Draw("APC"); // terza Poissoniana const Int_t xMin = 0; const Int_t xMax = 20; // Media della distribuzione di Poisson Double_t ParPoiss = 8; // Calcolo i valori della terza poissoniana Double_t x2[xMax-xMin+1], y2[xMax-xMin+1]; for (Int_t i = 0; icd(); TGraph* Poisson3PDF = new TGraph (xMax-xMin+1,x2,y2); Poisson3PDF->SetFillColor(35); Poisson3PDF ->SetTitle("Poisson3"); Poisson3PDF->SetMarkerStyle(21); Poisson3PDF->SetMarkerColor(3); Poisson3PDF->Draw("APC"); // quarta Poissoniana const Int_t xMin = 0; const Int_t xMax = 35; // Media della distribuzione di Poisson Double_t ParPoiss = 15; // Calcolo i valori della quarta poissoniana Double_t x3[xMax-xMin+1], y3[xMax-xMin+1]; for (Int_t i = 0; icd(); TGraph* Poisson4PDF = new TGraph (xMax-xMin+1,x3,y3); Poisson4PDF->SetFillColor(35); Poisson4PDF ->SetTitle("Poisson4"); Poisson4PDF->SetMarkerStyle(21); Poisson4PDF->SetMarkerColor(7); Poisson4PDF->Draw("APC"); // Disegno tutte e tre le distribuzioni nella quarta canvas insieme // c4->cd(); //TH2F* histo = new TH2F("hist","All",10,xMin,xMax,10,0,2); //histo->SetStats(kFALSE); //histo->Draw(); //Poisson1PDF->Draw("PC"); //Poisson2PDF->Draw("PC"); //Poisson3PDF->Draw("PC"); //Poisson4PDF->Draw("PC"); // Disegno la legenda //leg = new TLegend(0.7,0.7,0.89,0.89); //leg->SetHeader("Valore di aspettazione = 2"); // leg->AddEntry(Poisson1PDF,"Poisson1","p"); //leg->AddEntry(Poisson2PDF,"Poisson2","l"); //leg->AddEntry(Poisson3PDF,"Poisson3","l"); //leg->AddEntry(Poisson4PDF,"Poisson4","l"); // leg->SetTextSize(0.04); // leg->Draw(); TCanvas* all = new TCanvas ("all","All in one"); all->Divide(2,2); all->cd(1); Poisson1PDF->Draw("APC"); leg = new TLegend(0.45,0.75,0.89,0.89); leg->SetHeader("Valore di aspettazione = 2"); leg->SetTextSize(0.05); leg->Draw(); all->cd(2); Poisson2PDF->Draw("APC"); leg1 = new TLegend(0.45,0.75,0.89,0.89); leg1->SetHeader("Valore di aspettazione = 4"); leg1->SetTextSize(0.05); leg1->Draw(); all_3->cd(); Poisson3PDF->Draw("APC"); leg2 = new TLegend(0.45,0.75,0.89,0.89); leg2->SetHeader("Valore di aspettazione = 8"); leg2->SetTextSize(0.05); leg2->Draw(); all_4->cd(); leg3 = new TLegend(0.55,0.80,0.98,0.98); Poisson4PDF->Draw("APC"); leg3->SetHeader("Valore di aspettazione = 15"); leg3->SetTextSize(0.05); leg3->Draw(); // hist->Draw(); // Poisson1PDF->Draw("PC"); //Poisson2PDF->Draw("PC"); //Poisson3PDF->Draw("PC"); //leg->Draw(); }