Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Loading...
Searching...
No Matches
h2proj.C File Reference

Detailed Description

View in nbviewer Open in SWAN
This example demonstrates how to display a histogram and its two projections.

A TExec allows to redraw automatically the projections when a zoom is performed on the 2D histogram.

TH2F *h2;
void h2proj()
{
auto c1 = new TCanvas("c1", "c1",900,900);
TPad *center_pad = new TPad("center_pad", "center_pad",0.0,0.0,0.6,0.6);
center_pad->Draw();
right_pad = new TPad("right_pad", "right_pad",0.55,0.0,1.0,0.6);
right_pad->Draw();
top_pad = new TPad("top_pad", "top_pad",0.0,0.55,0.6,1.0);
top_pad->Draw();
h2 = new TH2F("h2","",40,-4,4,40,-20,20);
Float_t px, py;
for (Int_t i = 0; i < 25000; i++) {
gRandom->Rannor(px,py);
h2->Fill(px,5*py);
}
projh2X = h2->ProjectionX();
projh2Y = h2->ProjectionY();
center_pad->cd();
h2->Draw("COL");
top_pad->cd();
projh2X->SetFillColor(kBlue+1);
projh2X->Draw("bar");
right_pad->cd();
projh2Y->SetFillColor(kBlue-2);
projh2Y->Draw("hbar");
c1->cd();
TLatex t;
t.SetTextFont(42);
t.SetTextSize(0.02);
t.DrawLatex(0.6,0.88,"This example demonstrates how to display");
t.DrawLatex(0.6,0.85,"a histogram and its two projections.");
auto ex = new TExec("zoom","ZoomExec()");
h2->GetListOfFunctions()->Add(ex);
}
void ZoomExec()
{
int xfirst = h2->GetXaxis()->GetFirst();
int xlast = h2->GetXaxis()->GetLast();
double xmin = h2->GetXaxis()->GetBinLowEdge(xfirst);
double xmax = h2->GetXaxis()->GetBinUpEdge(xlast);
projh2X->GetXaxis()->SetRangeUser(xmin, xmax);
top_pad->Modified();
int yfirst = h2->GetYaxis()->GetFirst();
int ylast = h2->GetYaxis()->GetLast();
double ymin = h2->GetYaxis()->GetBinLowEdge(yfirst);
double ymax = h2->GetYaxis()->GetBinUpEdge(ylast);
projh2Y->GetXaxis()->SetRangeUser(ymin, ymax);
right_pad->Modified();
}
int Int_t
Definition RtypesCore.h:45
float Float_t
Definition RtypesCore.h:57
@ kBlue
Definition Rtypes.h:66
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
float xmin
float ymin
float xmax
float ymax
R__EXTERN TRandom * gRandom
Definition TRandom.h:62
R__EXTERN TStyle * gStyle
Definition TStyle.h:436
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
Definition TAttText.h:46
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
Definition TAttText.h:47
The Canvas class.
Definition TCanvas.h:23
TExec is a utility class that can be used to execute a C++ command when some event happens in a pad.
Definition TExec.h:26
1-D histogram with a double per channel (see TH1 documentation)
Definition TH1.h:670
2-D histogram with a float per channel (see TH1 documentation)
Definition TH2.h:307
To draw Mathematical Formula.
Definition TLatex.h:18
TLatex * DrawLatex(Double_t x, Double_t y, const char *text)
Make a copy of this object with the new parameters And copy object attributes.
Definition TLatex.cxx:1943
The most important graphics class in the ROOT system.
Definition TPad.h:28
virtual void Rannor(Float_t &a, Float_t &b)
Return 2 numbers distributed following a gaussian with mean=0 and sigma=1.
Definition TRandom.cxx:507
void SetOptStat(Int_t stat=1)
The type of information printed in the histogram statistics box can be selected via the parameter mod...
Definition TStyle.cxx:1640
void SetPalette(Int_t ncolors=kBird, Int_t *colors=nullptr, Float_t alpha=1.)
See TColor::SetPalette.
Definition TStyle.cxx:1888
return c1
Definition legend1.C:41
Double_t ex[n]
Definition legend1.C:17
Author
Olivier Couet

Definition in file h2proj.C.