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

Detailed Description

This tutorial demonstrates how to use the highlight mode on graph.

TNtuple *ntuple = 0;
void HighlightBinId(TVirtualPad *pad, TObject *obj, Int_t ihp, Int_t y);
void hlGraph2()
{
auto dir = gROOT->GetTutorialDir();
dir.Append("/hsimple.C");
dir.ReplaceAll("/./","/");
if (!gInterpreter->IsLoaded(dir.Data())) gInterpreter->LoadMacro(dir.Data());
auto file = (TFile*)gROOT->ProcessLineFast("hsimple(1)");
if (!file) return;
file->GetObject("ntuple", ntuple);
if (!ntuple) return;
TCanvas *Canvas1 = new TCanvas("Canvas1", "Canvas1", 0, 0, 500, 500);
const char *cut = "pz > 3.0";
ntuple->Draw("px:py", cut);
TGraph *graph = (TGraph *)gPad->FindObject("Graph");
auto info = new TText(0.0, 4.5, "please move the mouse over the graph");
info->SetTextAlign(22);
info->SetTextSize(0.03);
info->SetTextColor(kRed+1);
info->SetBit(kCannotPick);
info->Draw();
graph->SetHighlight();
Canvas1->HighlightConnect("HighlightBinId(TVirtualPad*,TObject*,Int_t,Int_t)");
auto Canvas2 = new TCanvas("Canvas2", "Canvas2", 505, 0, 600, 400);
ntuple->Draw("TMath::Sqrt(px*px + py*py + pz*pz)>>histo(100, 0, 15)", cut);
// Must be last
ntuple->Draw("px:py:pz:i", cut, "goff");
}
void HighlightBinId(TVirtualPad *pad, TObject *obj, Int_t ihp, Int_t y)
{
auto Canvas2 = (TCanvas *)gROOT->GetListOfCanvases()->FindObject("Canvas2");
if (!Canvas2) return;
auto histo = (TH1F *)Canvas2->FindObject("histo");
if (!histo) return;
Double_t px = ntuple->GetV1()[ihp];
Double_t py = ntuple->GetV2()[ihp];
Double_t pz = ntuple->GetV3()[ihp];
Double_t i = ntuple->GetV4()[ihp];
Double_t p = TMath::Sqrt(px*px + py*py + pz*pz);
Int_t hbin = histo->FindBin(p);
Bool_t redraw = kFALSE;
auto bh = (TBox *)Canvas2->FindObject("TBox");
if (!bh) {
bh = new TBox();
bh->SetFillColor(kBlack);
bh->SetFillStyle(3001);
bh->SetBit(kCannotPick);
bh->SetBit(kCanDelete);
redraw = kTRUE;
}
bh->SetX1(histo->GetBinLowEdge(hbin));
bh->SetY1(histo->GetMinimum());
bh->SetX2(histo->GetBinWidth(hbin) + histo->GetBinLowEdge(hbin));
bh->SetY2(histo->GetBinContent(hbin));
auto th = (TText *)Canvas2->FindObject("TText");
if (!th) {
th = new TText();
th->SetName("TText");
th->SetTextColor(bh->GetFillColor());
th->SetBit(kCanDelete);
redraw = kTRUE;
}
th->SetText(histo->GetXaxis()->GetXmax()*0.75, histo->GetMaximum()*0.5,
TString::Format("id = %d", (Int_t)i));
if (ihp == -1) { // after highlight disabled
delete bh;
delete th;
}
Canvas2->Modified();
Canvas2->Update();
if (!redraw) return;
auto savepad = gPad;
Canvas2->cd();
bh->Draw();
th->Draw();
Canvas2->Update();
savepad->cd();
}
int Int_t
Definition RtypesCore.h:45
const Bool_t kFALSE
Definition RtypesCore.h:101
bool Bool_t
Definition RtypesCore.h:63
double Double_t
Definition RtypesCore.h:59
const Bool_t kTRUE
Definition RtypesCore.h:100
@ kRed
Definition Rtypes.h:66
@ kBlack
Definition Rtypes.h:65
#define gInterpreter
@ kCanDelete
Definition TObject.h:369
@ kCannotPick
Definition TObject.h:374
#define gROOT
Definition TROOT.h:404
#define gPad
Create a Box.
Definition TBox.h:22
The Canvas class.
Definition TCanvas.h:23
virtual void HighlightConnect(const char *slot)
This is "simplification" for function TCanvas::Connect with Highlighted signal for specific slot.
Definition TCanvas.cxx:1631
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Definition TFile.h:54
A TGraph is an object made of two arrays X and Y with npoints each.
Definition TGraph.h:41
1-D histogram with a float per channel (see TH1 documentation)}
Definition TH1.h:575
A simple TTree restricted to a list of float variables only.
Definition TNtuple.h:28
Mother of all ROOT objects.
Definition TObject.h:41
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:2336
Base class for several text objects.
Definition TText.h:22
virtual Double_t * GetV3()
Definition TTree.h:537
virtual Double_t * GetV1()
Definition TTree.h:533
virtual Double_t * GetV4()
Definition TTree.h:539
virtual void Draw(Option_t *opt)
Default Draw method for all objects.
Definition TTree.h:428
virtual Double_t * GetV2()
Definition TTree.h:535
TVirtualPad is an abstract base class for the Pad and Canvas classes.
Definition TVirtualPad.h:51
Double_t y[n]
Definition legend1.C:17
Double_t Sqrt(Double_t x)
Definition TMath.h:641
Definition file.py:1
Definition graph.py:1
Date
March 2018
Author
Jan Musinsky

Definition in file hlGraph2.C.