Loading [MathJax]/extensions/tex2jax.js
Logo ROOT  
Reference Guide
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
hlHisto2.C File Reference

Detailed Description

This tutorial demonstrates how the highlight mechanism can be used on an histogram.

A 2D histogram is booked an filled with a random gaussian distribution and drawn with the "col" option. Then an highlight method is connected to the histogram. Moving the mouse on the histogram open a new canvas displaying the two X and Y projections at the highlighted bin.

void Highlight2(TVirtualPad *pad, TObject *obj, Int_t xhb, Int_t yhb);
TText *info;
void hlHisto2()
{
auto Canvas = new TCanvas("Canvas", "Canvas", 0, 0, 500, 500);
auto h2 = new TH2F("h2", "", 50, -5.0, 5.0, 50, -5.0, 5.0);
for (Int_t i = 0; i < 10000; i++) h2->Fill(gRandom->Gaus(), gRandom->Gaus());
h2->Draw("col");
info = new TText(0.0, -4.0, "please move the mouse over the frame");
info->SetTextAlign(22);
info->SetTextSize(0.04);
info->SetTextColor(kRed+1);
info->Draw();
Canvas->Update();
h2->SetHighlight();
Canvas->HighlightConnect("Highlight2(TVirtualPad*,TObject*,Int_t,Int_t)");
}
void Highlight2(TVirtualPad *pad, TObject *obj, Int_t xhb, Int_t yhb)
{
auto h2 = (TH2F *)obj;
if(!h2) return;
auto CanvasProj = (TCanvas *) gROOT->GetListOfCanvases()->FindObject("CanvasProj");
if (!h2->IsHighlight()) { // after highlight disabled
if (CanvasProj) delete CanvasProj;
return;
}
info->SetTitle("");
auto px = h2->ProjectionX("_px", yhb, yhb);
auto py = h2->ProjectionY("_py", xhb, xhb);
px->SetTitle(TString::Format("ProjectionX of biny[%02d]", yhb));
py->SetTitle(TString::Format("ProjectionY of binx[%02d]", xhb));
if (!CanvasProj) {
CanvasProj = new TCanvas("CanvasProj", "CanvasProj", 505, 0, 600, 600);
CanvasProj->Divide(1, 2);
CanvasProj->cd(1);
px->Draw();
CanvasProj->cd(2);
py->Draw();
}
CanvasProj->GetPad(1)->Modified();
CanvasProj->GetPad(2)->Modified();
CanvasProj->Update();
}
int Int_t
Definition: RtypesCore.h:43
@ kRed
Definition: Rtypes.h:64
@ kCannotPick
Definition: TObject.h:359
#define gROOT
Definition: TROOT.h:406
R__EXTERN TRandom * gRandom
Definition: TRandom.h:62
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
Definition: TAttText.h:41
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
Definition: TAttText.h:43
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
Definition: TAttText.h:46
The Canvas class.
Definition: TCanvas.h:27
2-D histogram with a float per channel (see TH1 documentation)}
Definition: TH2.h:251
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
Definition: TNamed.cxx:164
Mother of all ROOT objects.
Definition: TObject.h:37
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Definition: TObject.cxx:694
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
Definition: TObject.cxx:195
virtual Double_t Gaus(Double_t mean=0, Double_t sigma=1)
Samples a random number from the standard Normal (Gaussian) Distribution with the given mean and sigm...
Definition: TRandom.cxx:263
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Definition: TString.cxx:2311
Base class for several text objects.
Definition: TText.h:23
TVirtualPad is an abstract base class for the Pad and Canvas classes.
Definition: TVirtualPad.h:51
Date
March 2018
Author
Jan Musinsky

Definition in file hlHisto2.C.