//This macro shows how to divide and add 1D histograms. Based on ROOT 5 primer page number 33 (5.2) void format_hist(TH1F *h, int linecolor){ h->SetLineWidth(3); h->SetLineColor(linecolor); } void histexample3() { //four histograms TH1F* sig_h = new TH1F("sig_h","Signal Histogram",50,0,10); TH1F* gaus_h1 = new TH1F("gaus_h1","Gaus Histogram 1",30, 0, 10); TH1F* gaus_h2 = new TH1F("gaus_h2", "Gaus Histogram 2", 30,0,10); TH1F* bkg_h = new TH1F("exp_h", "Exponential Histogram",50,0,10); TRandom3 rndgen; for (int imeas=0;imeas<4000;imeas++){ exp_h->Fill(rndgen.Exp(4)); if (imeas%4==0) gaus_h1->Fill(rndgen.Gaus(5,2)); if (imeas%4==0) gaus_h2->Fill(rndgen.Gaus(5,2)); if (imeas%10==0)sig_h->Fill(rndgen.Gaus(5,.5)); } //Format Histograms TH1F* histograms[4] = {sig_h,bkg_h,gaus_h1,gaus_h2}; for (int i = 0; i<4;++i){ histograms[i]->Sumw2(); format_hist(histograms[i],i+1); } //Sum of histograms TH1F* sum_h = new TH1F(*bkg_h); sum_h->Add(sig_h,1.); sum_h->SetTitle("Exponential + Gaussian"); format_hist(sum_h,kBlue); TCanvas* c_sum = new TCanvas(); sum_h->Draw("hist"); bkg_h->Draw("SameHist"); sig_h->Draw("SameHist"); }