{ // // Determine Pi by integration of a circle with random numbers // gROOT->Reset(); float pi=0.0; int Nac=0,Ntot=0; TCanvas *c1; TPad *pad,*padtx; number_of_points=100000; // create canvas c1 = new TCanvas("cpi","Calculate Pi",200,10,400,600); c1->SetGrid(); c1->SetFillColor(42); // create random object TRandom *myRnd=new TRandom(); // pad for text and plot padtx = new TPad("pad2","Pad for value of Pi",0.02,0.82,0.98,0.98,21); padtx->Draw(); pad = new TPad("pad1","Pad for 2D Plot",0.02,0.02,0.98,0.8,21); pad->Draw(); padtx->cd(); char text[50]; sprintf(text,"Pi = %f",pi); TText* Pitxt=new TText(0.1,0.1,text); Pitxt->SetTextSize(0.6); Pitxt->Draw(); // create 2d-Histo pad->cd(); TH2F* h2fac = new TH2F("h2fPiac","Circle accepted random numbers",100,0.0,1.0,100,0.,1.); h2fac->SetMarkerStyle(21); h2fac->SetMarkerSize(0.2); h2fac->SetMarkerColor(2); h2fac->SetFillColor(2); TH2F* h2frej = new TH2F("h2fPirej","Rejected random numbers",100,0.0,1.0,100,0.,1.); h2frej->SetMarkerStyle(21); h2frej->SetMarkerSize(0.3); h2frej->SetMarkerColor(3); h2frej->SetFillColor(3); float x1,x2; for(int i=1;iRndm(); x2 = myRnd->Rndm(); Ntot++; if(sqrt(x1*x1+x2*x2) <= 1.0) { Nac++; h2fac->Fill(x1,x2); } else { h2frej->Fill(x1,x2); } if(i%1000 == 0) { pad->cd(); h2fac->Draw(); h2frej->Draw("same"); if(Ntot > 0) pi = (float)Nac/(float)Ntot*4.0; sprintf(text,"Pi = %f",pi); padtx->cd(); Pitxt->SetText(0.1,0.1,text); Pitxt->Draw(); c1->Modified(); c1->Update(); } } pad->cd(); h2fac->Draw(); h2frej->Draw("same"); if(Ntot > 0) pi = (float)Nac/(float)Ntot*4.0; sprintf(text,"Pi = %f",pi); padtx->cd(); Pitxt->SetText(0.1,0.1,text); Pitxt->Draw(); c1->Modified(); // c1->Update(); }