void genera() { using namespace std; gROOT->Reset(); TFile* f = (TFile*)gROOT->FindObject("samples.root"); if (f) f->Close(); f = new TFile ("samples.root","RECREATE",""); TTree * t = new TTree("t", "Nuovo Tree"); int a = 16807; int m = 2147483647; int c=0; //generatore di tipo moltiplicativo int Nmax=10000; int z, i; double PI = 3.141592653; double u, u0, y,r, rsq; double csi = pow(10, -4); double bm, bm2; double mean=15, sigma=2; t->Branch("u", &u, "u/D"); t->Branch("exp", &y, "y/D"); t->Branch("BM", &bm, "bm/D"); t->Branch("BM2", &bm2, "bm2/D"); int z0 = 12; //seme for(i=0; i< Nmax; i++){ z = (a*z0 +c) % m ; u = fabs((double)z/(double)m); //distribuzione uniforme u0 = fabs((double)z0/(double)m); y = -csi*log(u); // distribuzione esponenziale bm = sqrt(-2*log(u))*sin(2*PI*u0); //Box-Muller bm2 = mean + sigma*sqrt(-2*log(u))*sin(2*PI*u0);//Box-Muller mu=15, sigma=2 t->Fill(); z0 = z; } f->cd(); t->Write(); f->Close(); }