#include "TStyle.h" #include "TTimer.h" #include "Riostream.h" #include "TCanvas.h" #include "TGraph.h" #include "TROOT.h" #include "TGraphErrors.h" #include "TFrame.h" #include "TAxis.h" #include "TH1F.h" #include "TRandom.h" #include "TF1.h" //Breit-Wigner function Double_t mybw(Double_t* x, Double_t* par) { Double_t arg1 = 14.0/22.0; // 2 over pi Double_t arg2 = par[1]*par[1]*par[2]*par[2]; //Gamma=par[1] M=par[2] Double_t arg3 = ((x[0]*x[0]) - (par[2]*par[2]))*((x[0]*x[0]) - (par[2]*par[2])); Double_t arg4 = x[0]*x[0]*x[0]*x[0]*((par[1]*par[1])/(par[2]*par[2])); return par[0]*arg1*arg2/(arg3 + arg4); } //-------------------------------------------- void hsum2(){ gROOT->Reset(); TCanvas * c1 = new TCanvas("c1","The HSUM example",200,10,600,400); c1->Divide(1,2); c1->cd(1); // Create some histograms. TH1F * main = new TH1F("main","Main contributor",100,1382.-10.*36.,1382.+10.*36.); // Fill histograms randomly gRandom->SetSeed(); Float_t xs1; for ( Int_t i=0; i<10000; i++) { xs1 = gRandom->BreitWigner(1382.0, 36.0); main->Fill(xs1); } // main->Draw(); // to redraw axis hidden by the fill area main->DrawCopy(); // to redraw axis hidden by the fill area c1->Modified(); c1->Update(); //} c1->cd(2); TH1F * norm = (TH1F *) main->Clone("norm"); norm->Scale(1./norm->Integral()); norm->DrawCopy(); // FIT EXERCISE TCanvas * cFit = new TCanvas("cFit","The Fit example",1000,500); cFit->Divide(2,1); cFit->cd(1); TH1F *hFit1 = (TH1F*)main->Clone("hFit1"); hFit1->Fit("landau","R","",1340,1420); hFit1->DrawCopy("same"); cFit->cd(2); TF1 *fBW = new TF1("fBW",mybw,1100,1700,3); fBW->SetParameter(0,1400); fBW->SetParameter(1,50); fBW->SetParameter(2,1500); TH1F *hFit2 = (TH1F*)main->Clone("hFit2"); hFit2->Fit(fBW,"R","",1100,1700); hFit2->DrawCopy("same"); }