#include "TFile.h" #include "TCanvas.h" #include "TStyle.h" #include "TH1.h" #include "TGaxis.h" #include "TRandom.h" #include "TLegend.h" #include "TPaveStats.h" void hnsecondari() { TFile *f = TFile::Open("G:/cors/gamma/gammatot/cors_plot-gammatot.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(); TH1F *hngam = (TH1F *)f->Get("hngam"); TH1F *hnele = (TH1F *)f->Get("hnele"); TH1F *hnmuo = (TH1F *)f->Get("hnmuo"); TH1F *hnhad = (TH1F *)f->Get("hnhad"); if ((hngam == 0) || (hnele == 0) || (hnmuo == 0) || (hnhad == 0)){ printf("Error getting an histogram from the file!\n"); return; } gStyle->SetOptStat(); TCanvas *c5 = new TCanvas("c5","hists with different scales",1280,1024); float offx=0.9; float offy=1.3; float marg=0.12; c5->SetLeftMargin(marg); c5->SetLogx(); c5->SetLogy(); hngam->SetLineColor(kBlack); hngam->SetTitle("Molteplicita' delle particelle secondarie in EAS indotti da #gamma"); hngam.GetXaxis()->SetTitle("N_{Secondari}"); hngam.GetYaxis()->SetTitle("N_{Showers}"); hngam->GetXaxis()->SetTitleOffset(offx); hngam->GetYaxis()->SetTitleOffset(offy); hngam->SetName("#gamma"); hngam->Draw(); c5->Update(); hnele->SetLineColor(kRed); // use "sames" option to also draw the stats box hnele->Draw("sames"); hnele->SetName("e^{#pm}"); c5->Update(); hnmuo->SetLineColor(kGreen); hnmuo->SetName("#mu^{#pm}"); hnmuo->Draw("sames"); c5->Update(); hnhad->SetLineColor(kBlue); hnhad->SetName("Adroni"); hnhad->Draw("sames"); c5->Update(); TLegend* leg = new TLegend(0.7, 0.7, .5, 0.85); leg->SetNColumns(1); leg->AddEntry(hngam, "#gamma", "l"); leg->AddEntry(hnele, "e^{#pm}", "l"); leg->AddEntry(hnmuo, "#mu^{#pm}", "l"); leg->AddEntry(hnhad, "Adroni", "l"); leg->Draw("same"); // now retrieve each stats box and reposition them TPaveStats *stats1 = (TPaveStats*)hngam->GetListOfFunctions()->FindObject("stats"); TPaveStats *stats2 = (TPaveStats*)hnele->GetListOfFunctions()->FindObject("stats"); TPaveStats *stats3 = (TPaveStats*)hnmuo->GetListOfFunctions()->FindObject("stats"); TPaveStats *stats4 = (TPaveStats*)hnhad->GetListOfFunctions()->FindObject("stats"); TList *listOfLines1 = stats1->GetListOfLines(); TList *listOfLines2 = stats2->GetListOfLines(); TList *listOfLines3 = stats3->GetListOfLines(); TList *listOfLines4 = stats4->GetListOfLines(); TLatex *myt1 = new TLatex(0,0,"N_{#gamma} = 5.574668e+007"); TLatex *myt2 = new TLatex(0,0,"N_{e^{#pm}} = 6678937"); TLatex *myt3 = new TLatex(0,0,"N_{#mu^{#pm}} = 23059"); TLatex *myt4 = new TLatex(0,0,"N_{Adr} = 6493"); listOfLines1->Add(myt1); listOfLines2->Add(myt2); listOfLines3->Add(myt3); listOfLines4->Add(myt4); // the following line is needed to avoid that the automatic redrawing of stats hngam->SetStats(0); hnele->SetStats(0); hnmuo->SetStats(0); hnhad->SetStats(0); c5->Modified(); stats1->SetTextColor(kBlack); stats2->SetTextColor(kRed); stats3->SetTextColor(kGreen); stats4->SetTextColor(kBlue); stats1->SetX1NDC(0.80); stats1->SetX2NDC(0.98); stats1->SetY1NDC(0.77); stats1->SetY2NDC(0.92); stats2->SetX1NDC(0.80); stats2->SetX2NDC(0.98); stats2->SetY1NDC(0.60); stats2->SetY2NDC(0.75); stats3->SetX1NDC(0.80); stats3->SetX2NDC(0.98); stats3->SetY1NDC(0.43); stats3->SetY2NDC(0.58); stats4->SetX1NDC(0.80); stats4->SetX2NDC(0.98); stats4->SetY1NDC(0.26); stats4->SetY2NDC(0.41); c5->Update(); gROOT->ProcessLine("gROOT->SetBatch()"); c5.Print("G:/cors/gamma/prova/gamma_hnsecondari.png");delete c5; gROOT->ProcessLine("gROOT->SetBatch(kFALSE)"); //exit(); }