#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 distrlat() { TFile *f = TFile::Open("G:/cors/gamma/gamma1/cors_plot-gamma1.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 *hgamlat = (TH1F *)f->Get("hgamlat"); TH1F *helelat = (TH1F *)f->Get("helelat"); TH1F *hmuolat = (TH1F *)f->Get("hmuolat"); TH1F *hhadlat = (TH1F *)f->Get("hhadlat"); if ((hgamlat == 0) || (helelat == 0) || (hmuolat == 0) || (hhadlat == 0)){ printf("Error getting an histogram from the file!\n"); return; } TCanvas *c5 = new TCanvas("c5","hists with different scales",1280,1024); gStyle->SetOptFit(); float offx=1.0; float offy=1.2; float n=3; float marg=0.17; c5->SetLeftMargin(marg); c5->SetLogx(); c5->SetLogy(); hgamlat->SetLineColor(kBlack); hgamlat.GetXaxis()->SetTitle("Distanza dal core (m)"); hgamlat.GetYaxis()->SetTitle("Densita' (1/m^{2})"); hgamlat->GetXaxis()->SetTitleOffset(offx); hgamlat->GetYaxis()->SetTitleOffset(offy); hgamlat->Draw(); c5->Update(); helelat->SetLineColor(kRed); // use "sames" option to also draw the stats box helelat->Draw("sames"); c5->Update(); hmuolat->SetLineColor(kGreen); hmuolat->Draw("sames"); c5->Update(); hhadlat->SetLineColor(kBlue); hhadlat->Draw("sames"); c5->Update(); TLegend* leg = new TLegend(0.75, 0.7, .55, .85); leg->SetNColumns(1); leg->AddEntry(hgamlat, "Fotoni", "l"); leg->AddEntry(helelat, "Elettroni/Positroni", "l"); leg->AddEntry(hmuolat, "Muoni", "l"); leg->AddEntry(hhadlat, "Adroni", "l"); leg->Draw("same"); // now retrieve each stats box and reposition them TPaveStats *stats1 = (TPaveStats*)hgamlat->GetListOfFunctions()->FindObject("stats"); TPaveStats *stats2 = (TPaveStats*)helelat->GetListOfFunctions()->FindObject("stats"); TPaveStats *stats3 = (TPaveStats*)hmuolat->GetListOfFunctions()->FindObject("stats"); TPaveStats *stats4 = (TPaveStats*)hhadlat->GetListOfFunctions()->FindObject("stats"); 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/gamma1_distr_lat.pdf");delete c5; gROOT->ProcessLine("gROOT->SetBatch(kFALSE)"); TCanvas *c3 = new TCanvas("c3","hists with different scales",1280,1024); c3->SetLogx(); c3->SetLogy(); TF1 *fitgam = new TF1("fitgam", "[0] * ([1]/10000)*TMath::Power((x/10000), ([2]-2))*TMath::Power((1+x/10000), ([2]-4.5))", 0, 1e4); TF1 *fitele = new TF1("fitele", "[0] * ([1]/10000)*TMath::Power((x/10000), ([2]-2))*TMath::Power((1+x/10000), ([2]-4.5))", 0, 1e4); TF1 *fitmuo = new TF1("fitmuo", "[0] * ([1]/10000)*TMath::Power((x/10000), ([2]-2))*TMath::Power((1+x/10000), ([2]-4.5))", 0, 1e4); TF1 *fithad = new TF1("fithad", "[0] * ([1]/10000)*TMath::Power((x/10000), ([2]-2))*TMath::Power((1+x/10000), ([2]-4.5))", 0, 1e4); fitgam->SetParameters(1.0e-1, 2.4e7,1.2); fitele->SetParameters(1.0e-1, 3e5,1.2); fitmuo->SetParameters(1.0e-1, 2e3,1.2); fithad->SetParameters(1.0e-1, 1.3e3,1.2); fitgam->SetParName(0,"c"); fitgam->SetParName(1,"N"); fitgam->SetParName(2,"s"); fitele->SetParName(0,"c"); fitele->SetParName(1,"N"); fitele->SetParName(2,"s"); fitmuo->SetParName(0,"c"); fitmuo->SetParName(1,"N"); fitmuo->SetParName(2,"s"); fithad->SetParName(0,"c"); fithad->SetParName(1,"N"); fithad->SetParName(2,"s"); hgamlat->SetLineColor(kBlack); hgamlat.GetXaxis()->SetTitle("Distanza dal core (m)"); hgamlat.GetYaxis()->SetTitle("Densita' (1/m^{2})"); hgamlat->GetXaxis()->SetTitleOffset(offx); hgamlat->GetYaxis()->SetTitleOffset(offy); hgamlat->Draw(); hgamlat->Fit("fitgam"); c3->Update(); helelat->SetLineColor(kRed); helelat->Draw("sames"); helelat->Fit("fitele"); c3->Update(); hmuolat->SetLineColor(kGreen); hmuolat->Draw("sames"); hmuolat->Fit("fitmuo"); c3->Update(); hhadlat->SetLineColor(kBlue); hhadlat->Draw("sames"); hhadlat->Fit("fithad"); c3->Update(); TLegend* leg = new TLegend(0.75, 0.7, .55, .85); leg->SetNColumns(1); leg->AddEntry(hgamlat, "Fotoni", "l"); leg->AddEntry(helelat, "Elettroni/Positroni", "l"); leg->AddEntry(hmuolat, "Muoni", "l"); leg->AddEntry(hhadlat, "Adroni", "l"); leg->Draw("same"); TPaveStats *stats1 = (TPaveStats*)hgamlat->GetListOfFunctions()->FindObject("stats"); TPaveStats *stats2 = (TPaveStats*)helelat->GetListOfFunctions()->FindObject("stats"); TPaveStats *stats3 = (TPaveStats*)hmuolat->GetListOfFunctions()->FindObject("stats"); TPaveStats *stats4 = (TPaveStats*)hhadlat->GetListOfFunctions()->FindObject("stats"); 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); c3->Update(); gROOT->ProcessLine("gROOT->SetBatch()"); c3.Print("G:/cors/gamma/gamma1_distr_lat_fit.pdf");delete c3; gROOT->ProcessLine("gROOT->SetBatch(kFALSE)"); }