/// \file /// \ingroup tutorial_hist /// Example displaying two histograms and their ratio. This macro does not use the /// class TRatioPlot. For ROOT version >= 6.08 TRatioPlot should be used. See /// the other ratio plots examples in this folder. /// /// \macro_image /// \macro_code /// /// \author Olivier Couet void ratioplotOld( ) { // Define two gaussian histograms. Note the X and Y title are defined // at booking time using the convention "Hist_title ; X_title ; Y_title" TDatime T0(2003,1,1,0,0,0); int X0 =T0.Convert(); gStyle->SetTimeOffset(X0); // Define the lowest histogram limit as 2002, September 23rd TDatime T1(2002,9,23,0,0,0); int X1 =T1.Convert()-X0; // Define the highest histogram limit as 2003, March 7th TDatime T2(2003,3,7,0,0,0); int X2 =T2.Convert(1)-X0; TH1F *h1 = new TH1F("h1", "Two gaussian plots and their ratio;x title; h1 and h2 gaussian histograms", 100, X1, X2); TH1F *h2 = new TH1F("h2", "h2", 100, X1, X2); TRandom r; for(int i=0;i<30000;i++){ double noise =r.Gaus(0.5*(X1+X2),0.1*(X2-X1)); h1->Fill(noise); double noise2 =r.Gaus(0.5*(X1+X2),0.1*(X2-X1)); h2->Fill(noise2); } // Define the Canvas TCanvas *c = new TCanvas("c", "canvas", 800, 800); // Upper plot will be in pad1 TPad *pad1 = new TPad("pad1", "pad1", 0, 0.3, 1, 1.0); pad1->SetBottomMargin(0); // Upper and lower plot are joined pad1->SetGridx(); // Vertical grid pad1->Draw(); // Draw the upper pad: pad1 pad1->cd(); // pad1 becomes the current pad h1->SetStats(0); // No statistics on upper plot h1->Draw(); // Draw h1 h2->Draw("same"); // Draw h2 on top of h1 // Do not draw the Y axis label on the upper plot and redraw a small // axis instead, in order to avoid the first label (0) to be clipped. h1->GetYaxis()->SetLabelSize(0.); TGaxis *axis = new TGaxis(X1,0.1*h1->GetMaximum(),X1,1.05*h1->GetMaximum() ,0.1*h1->GetMaximum(),1.05*h1->GetMaximum(),510,""); axis->SetLabelFont(43); // Absolute font size in pixel (precision 3) axis->SetLabelSize(15); axis->Draw(); h1->GetXaxis()->SetLabelSize(0.); h1->GetXaxis()->SetTimeDisplay(1); // lower plot will be in pad c->cd(); // Go back to the main canvas before defining pad2 TPad *pad2 = new TPad("pad2", "pad2", 0, 0.05, 1, 0.3); pad2->SetTopMargin(0); pad2->SetBottomMargin(0.2); pad2->SetGridx(); // vertical grid pad2->Draw(); pad2->cd(); // pad2 becomes the current pad // Define the ratio plot TH1F *h3 = (TH1F*)h1->Clone("h3"); h3->SetLineColor(kBlack); h3->SetMinimum(0.8); // Define Y .. h3->SetMaximum(1.35); // .. range h3->Sumw2(); h3->SetStats(0); // No statistics on lower plot h3->Divide(h2); h3->SetMarkerStyle(21); // h1 settings h1->SetLineColor(kBlue+1); h1->SetLineWidth(2); // Y axis h1 plot settings h1->GetYaxis()->SetTitleSize(20); h1->GetYaxis()->SetTitleFont(43); h1->GetYaxis()->SetTitleOffset(1.55); // h2 settings h2->SetLineColor(kRed); h2->SetLineWidth(2); // Ratio plot (h3) settings h3->SetTitle(""); // Remove the ratio title // Y axis ratio plot settings h3->GetYaxis()->SetTitle("ratio h1/h2 "); h3->GetYaxis()->SetNdivisions(505); h3->GetYaxis()->SetTitleSize(20); h3->GetYaxis()->SetTitleFont(43); h3->GetYaxis()->SetTitleOffset(1.55); h3->GetYaxis()->SetLabelFont(43); // Absolute font size in pixel (precision 3) h3->GetYaxis()->SetLabelSize(15); // X axis ratio plot settings h3->GetXaxis()->SetTitleSize(20); h3->GetXaxis()->SetTitleFont(43); h3->GetXaxis()->SetTitleOffset(4.); h3->GetXaxis()->SetLabelFont(43); // Absolute font size in pixel (precision 3) h3->GetXaxis()->SetLabelSize(15); h3->GetXaxis()->SetTimeDisplay(1); h3->GetXaxis()->SetTimeFormat("%Y/%m/%d"); h3->Draw("ep"); // Draw the ratio plot }