#include "TFile.h" #include "TCanvas.h" #include "TStyle.h" #include "TH1.h" #include "TH2.h" #include "TH3.h" #include "TGaxis.h" #include "TRandom.h" #include "TLegend.h" #include "TPaveStats.h" #include "TGraph.h" void test() { TFile *f = TFile::Open("H:/cors/cors_plot.root"); if (f == 0) { // if we cannot open the file, print an error message and return immediatly printf("Error: cannot open cors_plot.root!\n"); return; } f->ls(); gStyle->SetOptFit(); TCanvas *c36 = new TCanvas("c36","multigraph",1024,748); //c36->SetGrid(); gStyle->SetOptFit(0001); // draw a frame to define the range TMultiGraph *mg = new TMultiGraph(); TGraphErrors *gr1 = new TGraphErrors("H:/cors/dati4.txt","%lg %*lg %lg %*lg %*lg %*lg %*lg %*lg %*lg %*lg"); gr1->SetMarkerColor(kBlue); gr1->SetMarkerStyle(21); TF1 *fit1 = new TF1("fit1", "[0]*x+[1]", 1, 5e3); fit1->SetParameters(-1e-6, -2e-3); fit1->SetParName(0,"m"); fit1->SetParName(1,"q"); fit1->SetLineColor(kYellow); gr1->Fit("fit1","q"); //gr1->Fit("pol1","q"); mg->Add(gr1); // create second graph TGraphErrors *gr2 = new TGraphErrors("H:/cors/dati4.txt","%lg %*lg %*lg %lg %*lg %*lg %*lg %*lg %*lg %*lg"); gr2->SetMarkerColor(kRed); gr2->SetMarkerStyle(20); TF1 *fit2 = new TF1("fit2", "[0]*x+[1]", 1, 5e3); fit2->SetParameters(4.4e-6, -2e-4); fit2->SetParName(0,"m"); fit2->SetParName(1,"q"); fit2->SetLineColor(kGreen); gr2->Fit("fit2","q"); // gr2->Fit("pol1","q"); mg->Add(gr2); mg->Draw("ap"); //force drawing of canvas to generate the fit TPaveStats mg->SetTitle("Energia primario- densita'"); mg->GetXaxis()->SetTitle("Energia (GeV)"); mg->GetYaxis()->SetTitle("Densita'(particelle/m^2)"); gPad->Modified(); //force drawing of canvas to generate the fit TPaveStats c36->Update(); TLegend* leg = new TLegend(0.2, 0.7, .4, .85); leg->SetNColumns(1); leg->AddEntry(gr1, "distanza 10 m", "lp"); leg->AddEntry(fit1, "distanza 10 m Fit", "l"); leg->AddEntry(gr2, "distanza 100 m", "lp"); leg->AddEntry(fit2, "distanza 100 m Fit", "l"); leg->Draw("same"); TPaveStats *stats1 = (TPaveStats*)gr1->GetListOfFunctions()->FindObject("stats"); TPaveStats *stats2 = (TPaveStats*)gr2->GetListOfFunctions()->FindObject("stats"); if (stats1) { stats1->SetTextColor(kBlue); stats1->SetX1NDC(0.12); stats1->SetX2NDC(0.32); stats1->SetY1NDC(0.75); } if (stats2) { stats2->SetTextColor(kRed); stats2->SetX1NDC(0.72); stats2->SetX2NDC(0.92); stats2->SetY1NDC(0.78); } c36->Modified(); // gROOT->ProcessLine("gROOT->SetBatch()"); // c32.Print("H:/cors/distr_lat_adroni_energia.pdf");delete c32; // gROOT->ProcessLine("gROOT->SetBatch(kFALSE)"); }