Logo ROOT  
Reference Guide
 
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;
TH1D * projh2X;
TH1D * projh2Y;
TPad *right_pad, *top_pad;
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
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 SetFillColor(Color_t fcolor)
Set the fill area color.
Definition TAttFill.h:37
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
virtual void SetRangeUser(Double_t ufirst, Double_t ulast)
Set the viewing range for the axis from ufirst to ulast (in user coordinates, that is,...
Definition TAxis.cxx:1080
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
TAxis * GetXaxis()
Definition TH1.h:324
void Draw(Option_t *option="") override
Draw this histogram with options.
Definition TH1.cxx:3066
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
void Modified(Bool_t flag=true) override
Mark pad modified Will be repainted when TCanvas::Update() will be called next time.
Definition TPad.cxx:7369
TVirtualPad * cd(Int_t subpadnumber=0) override
Set Current pad.
Definition TPad.cxx:693
void Draw(Option_t *option="") override
Draw Pad in Current pad (re-parent pad if necessary).
Definition TPad.cxx:1364
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.