#if !defined(__CINT__) || defined(__MAKECINT__) #include #include #include #include #include #include #include #endif const double knorm = 1000.; // numero di esperimenti (--> normal. curva teorica) // DICHIARAZIONE DELLE FUNZIONI double Gamma(double xx); // FUNZIONE GAMMA (FATTORIALE) double Decay(int n0,double alpha, double Delt,double timetot); // SIM. DECADIMENTI double poissonian(double xx, double norm, double param); // DENSITA POISSONIANA double binomial(double xx, double norm, double prob, double ntrials); //DENSITA BINOMIALE void poisson(int n0 = 1000,double alpha = 2.5e-5, double Delt = 1.,double time=100.); /////////////////////////////////////////////////////////////////////////// void poisson(int n0,double alpha, double Delt,double time){ // gRandom punta ad un oggetto della classe TRandom, instanziato per // default all'avvio di root. unsigned int seed; cout<<"Inserire il seed per i numeri casuali\n"; cin>>seed; gRandom->SetSeed(seed); // booking degli istogrammi char title[500]; sprintf(title,"Numero di decadimenti in %4.1f s",time); int nbins = static_cast(n0*alpha*time*4); cout<<"numero di celle "<Fill(x,poissonian(x,knorm,nu)); for (double x=0.;xFill(x,binomial(x,knorm,prob,ntrials)); // simulazione for(int exper = 0; experFill(nodecay); } // SALVATAGGIO DEGLI ISTOGRAMMI TFile *file = new TFile("poisson.root","recreate"); ndecays->Write(); fteo->Write(); fteo2->Write(); file->Close(); cout<Draw("histc"); new TCanvas(); fteo2->Draw("histc"); new TCanvas(); ndecays->Draw("hist"); cout<<"Esecuzione terminata - gli istogrammi sono accessibili"<Rndm()(n0init-n0); } /////////////////////////////////////////////////////////////////////////// double poissonian(double xx, double norm, double param){ return norm*(TMath::Power(param,xx)*TMath::Exp(-param-Gamma(xx+1))); } /////////////////////////////////////////////////////////////////////////// double binomial(double xx, double norm, double prob, double ntrials){ // cout<<"binomial con xx= "<