Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Loading...
Searching...
No Matches
TFileDrawMap.cxx
Go to the documentation of this file.
1// @(#)root/treeplayer:$Id$
2// Author: Rene Brun 15/01/2003
3
4/*************************************************************************
5 * Copyright (C) 1995-2003, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12/** \class TFileDrawMap
13This class is automatically called by TFile::DrawMap.
14It draws a canvas showing the internal structure of a ROOT file.
15Each key or basket in a file is shown with a fill area drawn
16at the byte position of the key/basket in the file.
17The Y axis of the canvas shows the number of Kbytes/Mbytes.
18The X axis shows the bytes between y(i) and y(i+1).
19A color corresponding to the class in the key/basket is automatically
20selected using the class unique identifier.
21
22When moving the mouse in the canvas, the "Event Status" panels
23shows the object corresponding to the mouse position.
24if the object is a key, it shows the class and object name as well as
25the file directory name if the file has sub-directories.
26
27if the object is a basket, it shows:
28 - the name of the Tree
29 - the name of the branch
30 - the basket number
31 - the entry number in the basket
32
33Special keys like the StreamerInfo record, the Keys List Record
34and the Free Blocks Record are also shown.
35
36When clicking the right mouse button, a pop-up menu is shown
37with its title identifying the picked object and with the items:
38 - DrawObject: in case of a key, the Draw function of the object is called
39 in case of a basket, the branch is drawn for all entries
40 - DumpObject: in case of a key, the Dump function of the object is called
41 in case of a basket, tree->Show(entry) is called
42 - InspectObject: the Inspect function is called for the object.
43
44The normal axis zoom functionality can be used to zoom or unzoom
45One can also use the TCanvas context menu SetCanvasSize to make
46a larger canvas and use the canvas scroll bars.
47
48When the class is built, it is possible to identify a subset of the
49objects to be shown. For example, to view only the keys with
50names starting with "abc", set the argument keys to "abc*".
51The default is to view all the objects.
52The argument options can also be used (only one option currently)
53When the option "same" is given, the new picture is superimposed.
54The option "same" is useful, eg:
55to draw all keys with names = "abc" in a first pass
56then all keys with names = "uv*" in a second pass, etc.
57*/
58
59#include "TFileDrawMap.h"
60#include "TROOT.h"
61#include "TClass.h"
62#include "TFile.h"
63#include "TTree.h"
64#include "TBranch.h"
65#include "TLeaf.h"
66#include "TMath.h"
67#include "TVirtualPad.h"
68#include "TVirtualX.h"
69#include "TH2.h"
70#include "TBox.h"
71#include "TKey.h"
72#include "TRegexp.h"
73#include "TSystem.h"
74#include "strlcpy.h"
75
77
78////////////////////////////////////////////////////////////////////////////////
79/// Default TreeFileMap constructor.
80
82{
83 fFile = nullptr;
84 fFrame = nullptr;
85 fXsize = 1000;
86 fYsize = 1000;
87}
88
89////////////////////////////////////////////////////////////////////////////////
90/// TFileDrawMap normal constructor.
91/// see descriptions of arguments above
92
93TFileDrawMap::TFileDrawMap(const TFile *file, const char *keys, Option_t *)
94 : TNamed("TFileDrawMap","")
95{
96 fFile = (TFile*) file;
97 fKeys = keys;
99
100 //create histogram used to draw the map frame
101
102 if (file->GetEND() > 1000000) {
103 fXsize = 1000000;
104 } else {
105 fXsize = 1000;
106 }
107 fYsize = 1 + Int_t(file->GetEND()/fXsize);
108
109 fFrame = new TH2D("hmapframe","",100,0,fXsize,100,0,fYsize);
110 fFrame->SetDirectory(nullptr);
113 if (fXsize > 1000) {
114 fFrame->GetYaxis()->SetTitle("MBytes");
115 } else {
116 fFrame->GetYaxis()->SetTitle("KBytes");
117 }
118 fFrame->GetXaxis()->SetTitle("Bytes");
119
120 if (gPad)
121 gPad->Clear();
122
123 fFrame->Draw("axis");
124 Draw();
125
126 if (gPad)
127 gPad->Update();
128}
129
130////////////////////////////////////////////////////////////////////////////////
131/// Tree destructor.
132
134{
135 //delete fFrame; //should not be deleted (kCanDelete set)
136}
137
138////////////////////////////////////////////////////////////////////////////////
139/// Returns info which corresponds to recent mouse position
140/// In case of normal graphics it is object name
141/// In case of web canvas use stored click event position
142
144{
146 if (gPad && gPad->IsWeb()) {
147 // in case of web canvas one can try to use last click event
148 GetObjectInfoDir(fFile, gPad->GetEventX(), gPad->GetEventY(), info);
149 } else {
150 // last selected place stored as name
151 info = GetName();
152 }
153 return info;
154}
155
156
157////////////////////////////////////////////////////////////////////////////////
158/// Show sequence of baskets reads for the list of baskets involved
159/// in the list of branches (separated by ",")
160/// - if branches="", the branch pointed by the mouse is taken.
161/// - if branches="*", all branches are taken
162/// Example:
163///
164/// AnimateTree("x,y,u");
165
167{
169
170 auto pos = info.Index(", basket=");
171 if (pos == kNPOS)
172 return;
173 info.Remove(pos);
174
175 pos = info.Index(", branch=");
176 if (pos == kNPOS)
177 return;
178 TString select_branches = info(pos + 9, info.Length() - pos - 9);
179
180 auto colon = info.Index("::");
181 if (colon == kNPOS)
182 return;
183
184 info.Resize(colon - 1);
185
186 auto tree = fFile->Get<TTree>(info);
187 if (!tree)
188 return;
189 if (branches && *branches)
191
192 // create list of branches
193 Int_t nzip = 0;
195 TObjArray list;
196 char *comma;
197 while((comma = strrchr((char*)select_branches.Data(),','))) {
198 *comma = 0;
199 comma++;
200 while (*comma == ' ') comma++;
201 branch = tree->GetBranch(comma);
202 if (branch) {
203 nzip += (Int_t)branch->GetZipBytes();
204 branch->SetUniqueID(0);
205 list.Add(branch);
206 }
207 }
208 comma = (char*)select_branches.Data();
209 while (*comma == ' ') comma++;
210 branch = tree->GetBranch(comma);
211 if (branch) {
212 nzip += (Int_t)branch->GetZipBytes();
213 branch->SetUniqueID(0);
214 list.Add(branch);
215 }
217 Int_t nbranches = list.GetEntries();
218
219 // loop on all tree entries
220 Int_t nentries = (Int_t)tree->GetEntries();
221 Int_t sleep = 1;
223 if (stime < 10) {stime=1; sleep = nentries/400;}
224 gPad->SetDoubleBuffer(0); // turn off double buffer mode
225 gVirtualX->SetDrawMode(TVirtualX::kInvert); // set the drawing mode to XOR mode
226 for (Int_t entry=0;entry<nentries;entry++) {
227 for (Int_t ib=0;ib<nbranches;ib++) {
228 branch = (TBranch*)list.At(ib);
229 Int_t nbaskets = branch->GetListOfBaskets()->GetSize();
231 Int_t nbytes = branch->GetBasketBytes()[basket];
232 Int_t bseek = branch->GetBasketSeek(basket);
233 Int_t entry0 = branch->GetBasketEntry()[basket];
234 Int_t entryn = branch->GetBasketEntry()[basket+1];
236 DrawMarker(ib,branch->GetUniqueID());
238 branch->SetUniqueID(eseek);
240 if (entry%sleep == 0) gSystem->Sleep(stime);
241 }
242 }
243}
244
245////////////////////////////////////////////////////////////////////////////////
246/// Compute distance from point px,py to this TreeFileMap.
247/// Find the closest object to the mouse, save its path in the TFileDrawMap name.
248
250{
251 Int_t pxmin = gPad->XtoAbsPixel(gPad->GetUxmin());
252 Int_t pxmax = gPad->XtoAbsPixel(gPad->GetUxmax());
253 Int_t pymin = gPad->YtoAbsPixel(gPad->GetUymin());
254 Int_t pymax = gPad->YtoAbsPixel(gPad->GetUymax());
255 if (px > pxmin && px < pxmax && py > pymax && py < pymin) {
256 SetName(GetObjectInfo(px,py));
257 return 0;
258 }
259 return fFrame->DistancetoPrimitive(px,py);
260}
261
262////////////////////////////////////////////////////////////////////////////////
263/// Draw marker.
264
266{
267 Int_t iy = gPad->YtoAbsPixel(eseek/fXsize);
268 Int_t ix = gPad->XtoAbsPixel(eseek%fXsize);
269 Int_t d;
270 Int_t mark = marker%4;
271 switch (mark) {
272 case 0 :
273 d = 6; //arrow
274 gVirtualX->DrawLine(ix-3*d,iy,ix,iy);
275 gVirtualX->DrawLine(ix-d,iy+d,ix,iy);
276 gVirtualX->DrawLine(ix-d,iy-d,ix,iy);
277 gVirtualX->DrawLine(ix-d,iy-d,ix-d,iy+d);
278 break;
279 case 1 :
280 d = 5; //up triangle
281 gVirtualX->DrawLine(ix-d,iy-d,ix+d,iy-d);
282 gVirtualX->DrawLine(ix+d,iy-d,ix,iy+d);
283 gVirtualX->DrawLine(ix,iy+d,ix-d,iy-d);
284 break;
285 case 2 :
286 d = 5; //open square
287 gVirtualX->DrawLine(ix-d,iy-d,ix+d,iy-d);
288 gVirtualX->DrawLine(ix+d,iy-d,ix+d,iy+d);
289 gVirtualX->DrawLine(ix+d,iy+d,ix-d,iy+d);
290 gVirtualX->DrawLine(ix-d,iy+d,ix-d,iy-d);
291 break;
292 case 3 :
293 d = 8; //cross
294 gVirtualX->DrawLine(ix-d,iy,ix+d,iy);
295 gVirtualX->DrawLine(ix,iy-d,ix,iy+d);
296 break;
297 }
298}
299
300////////////////////////////////////////////////////////////////////////////////
301/// Draw object at the mouse position.
302
304{
305 TVirtualPad *padsave = gROOT->GetSelectedPad();
306 if ((padsave == gPad) || (gPad && gPad->IsWeb())) {
307 //must create a new canvas
308 gROOT->MakeDefCanvas();
309 } else if (padsave) {
310 padsave->cd();
311 }
312
314
315 // case of a TTree
316 auto pbasket = info.Index(", basket=");
317 if (pbasket != kNPOS) {
318 info.Resize(pbasket);
319 auto pbranch = info.Index(", branch=");
320 if (pbranch == kNPOS)
321 return;
322
323 TString cbranch = info(pbranch + 9, info.Length() - pbranch - 9);
324
325 auto colon = info.Index("::");
326 if (colon == kNPOS)
327 return;
328
329 info.Resize(colon - 1);
330
331 auto tree = fFile->Get<TTree>(info);
332 if (tree)
333 tree->Draw(cbranch);
334 } else {
335 // other objects
336 auto obj = GetObject();
337 if (obj)
338 obj->Draw();
339 }
340}
341
342
343////////////////////////////////////////////////////////////////////////////////
344/// Dump object at the mouse position.
345
347{
348 TObject *obj = GetObject();
349 if (obj) {
350 obj->Dump();
351 return;
352 }
353
355
356 auto indx = info.Index("entry=");
357 if (indx == kNPOS)
358 return;
359
360 Int_t entry = 0;
361 sscanf(info.Data() + indx + 6, "%d", &entry);
362
363 auto colon = info.Index("::");
364 if (colon == kNPOS)
365 return;
366
367 info.Resize(colon - 1);
368
369 auto tree = fFile->Get<TTree>(info);
370 if (tree)
371 tree->Show(entry);
372}
373
374////////////////////////////////////////////////////////////////////////////////
375/// Retrieve object at the mouse position in memory.
376
378{
380
381 if (info.Contains("entry="))
382 return nullptr;
383
384 auto colon = info.Index("::");
385 if (colon == kNPOS)
386 return nullptr;
387
388 info.Resize(colon - 1);
389
390 return fFile->Get(info);
391}
392
393////////////////////////////////////////////////////////////////////////////////
394/// Redefines TObject::GetObjectInfo.
395/// Displays the keys info in the file corresponding to cursor position px,py
396/// in the canvas status bar info panel
397
399{
400 // Thread safety: this solution is not elegant, but given the action performed
401 // by the method, this construct can be considered non-problematic.
402 static TString info;
403 GetObjectInfoDir(fFile, px, py, info);
404 return (char*)info.Data();
405}
406
407////////////////////////////////////////////////////////////////////////////////
408/// Redefines TObject::GetObjectInfo.
409/// Displays the keys info in the directory
410/// corresponding to cursor position px,py
411
413{
414 Double_t x = gPad->AbsPixeltoX(px);
415 Double_t y = gPad->AbsPixeltoY(py);
416 Int_t iy = (Int_t)y;
421 dir->cd();
422
423 TIter next(dir->GetListOfKeys());
424 TKey *key;
425 while ((key = (TKey*)next())) {
428 // a TDirectory ?
429 if (cl && cl == TDirectoryFile::Class()) {
430 curdir->cd(key->GetName());
432 bool gotInfo = GetObjectInfoDir(subdir, px, py, info);
433 if (gotInfo) {
434 dirsav->cd();
435 return true;
436 }
437 curdir->cd();
438 continue;
439 }
440 // a TTree ?
441 if (cl && cl->InheritsFrom(TTree::Class())) {
442 TTree *tree = (TTree*)gDirectory->Get(key->GetName());
443 TIter nextb(tree->GetListOfLeaves());
444 while (auto leaf = (TLeaf *)nextb()) {
445 TBranch *branch = leaf->GetBranch();
446 Int_t nbaskets = branch->GetMaxBaskets();
447 Int_t offsets = branch->GetEntryOffsetLen();
448 Int_t len = leaf->GetLen();
449 for (Int_t i = 0; i < nbaskets; i++) {
450 bseek = branch->GetBasketSeek(i);
451 if (!bseek)
452 break;
453 nbytes = branch->GetBasketBytes()[i];
454 if (pbyte >= bseek && pbyte < bseek + nbytes) {
455 Int_t entry = branch->GetBasketEntry()[i];
456 if (!offsets) entry += (pbyte-bseek)/len;
457 if (curdir == (TDirectory*)fFile) {
458 info.Form("%s%s ::%s, branch=%s, basket=%d, entry=%d",curdir->GetPath(),key->GetName(),key->GetClassName(),branch->GetName(),i,entry);
459 } else {
460 info.Form("%s/%s ::%s, branch=%s, basket=%d, entry=%d",curdir->GetPath(),key->GetName(),key->GetClassName(),branch->GetName(),i,entry);
461 }
462 return true;
463 }
464 }
465 }
466 }
467 nbytes = key->GetNbytes();
468 bseek = key->GetSeekKey();
469 if (pbyte >= bseek && pbyte < bseek+nbytes) {
470 if (curdir == (TDirectory*)fFile) {
471 info.Form("%s%s ::%s, nbytes=%d",curdir->GetPath(),key->GetName(),key->GetClassName(),nbytes);
472 } else {
473 info.Form("%s/%s ::%s, nbytes=%d",curdir->GetPath(),key->GetName(),key->GetClassName(),nbytes);
474 }
475 dirsav->cd();
476 return true;
477 }
478 }
479 // Are we in the Keys list
480 if (pbyte >= dir->GetSeekKeys() && pbyte < dir->GetSeekKeys()+dir->GetNbytesKeys()) {
481 info.Form("%sKeys List, nbytes=%d",dir->GetPath(),dir->GetNbytesKeys());
482 dirsav->cd();
483 return true;
484 }
485 if (dir == (TDirectory*)fFile) {
486 // Are we in the TStreamerInfo
488 info.Form("%sStreamerInfo List, nbytes=%d",dir->GetPath(),fFile->GetNbytesInfo());
489 dirsav->cd();
490 return true;
491 }
492 // Are we in the Free Segments
494 info.Form("%sFree List, nbytes=%d",dir->GetPath(),fFile->GetNbytesFree());
495 dirsav->cd();
496 return true;
497 }
498 }
499 info.Form("(byte=%lld)",pbyte);
500 dirsav->cd();
501 return false;
502}
503
504////////////////////////////////////////////////////////////////////////////////
505/// Inspect object at the mouse position.
506
508{
509 TObject *obj = GetObject();
510 if (obj) obj->Inspect();
511}
512
513////////////////////////////////////////////////////////////////////////////////
514/// Paint this TFileDrawMap.
515
517{
518 //draw keys
520}
521
522////////////////////////////////////////////////////////////////////////////////
523/// Paint the object at bseek with nbytes using the box object.
524
526{
527 Int_t iy = bseek/fXsize;
528 Int_t ix = bseek%fXsize;
529 Int_t ny = 1+(nbytes+ix)/fXsize;
531 for (Int_t j=0;j<ny;j++) {
532 if (j == 0) xmin = (Double_t)ix;
533 else xmin = 0;
534 xmax = xmin + nbytes;
535 if (xmax > fXsize) xmax = fXsize;
536 ymin = iy+j;
537 ymax = ymin+1;
538 nbytes -= (Int_t)(xmax-xmin);
539 if (xmax < gPad->GetUxmin()) continue;
540 if (xmin > gPad->GetUxmax()) continue;
541 if (xmin < gPad->GetUxmin()) xmin = gPad->GetUxmin();
542 if (xmax > gPad->GetUxmax()) xmax = gPad->GetUxmax();
543 if (ymax < gPad->GetUymin()) continue;
544 if (ymin > gPad->GetUymax()) continue;
545 if (ymin < gPad->GetUymin()) ymin = gPad->GetUymin();
546 if (ymax > gPad->GetUymax()) ymax = gPad->GetUymax();
547 //box.TAttFill::Modify();
548 box.PaintBox(xmin,ymin,xmax,ymax);
549 }
550}
551
552////////////////////////////////////////////////////////////////////////////////
553/// Paint keys in a directory.
554
555void TFileDrawMap::PaintDir(TDirectory *dir, const char *keys)
556{
558 TIter next(dir->GetListOfKeys());
559 TKey *key;
560 Int_t color = 0;
561 TBox box;
562 TRegexp re(keys,true);
563 while ((key = (TKey*)next())) {
564 Int_t nbytes = key->GetNbytes();
565 Long64_t bseek = key->GetSeekKey();
567 if (cl) {
568 color = (Int_t)(cl->GetUniqueID()%20);
569 } else {
570 color = 1;
571 }
572 box.SetFillColor(color);
573 box.SetFillStyle(1001);
574 TString s = key->GetName();
575 if (strcmp(fKeys.Data(),key->GetName()) && s.Index(re) == kNPOS) continue;
576 // a TDirectory ?
577 if (cl && cl == TDirectoryFile::Class()) {
579 gDirectory->cd(key->GetName());
581 PaintDir(subdir,"*");
582 curdir->cd();
583 }
585 // a TTree ?
586 if (cl && cl->InheritsFrom(TTree::Class())) {
587 TTree *tree = (TTree*)gDirectory->Get(key->GetName());
588 TIter nextb(tree->GetListOfLeaves());
589 while (auto leaf = (TLeaf*)nextb()) {
590 TBranch *branch = leaf->GetBranch();
591 color = branch->GetFillColor();
592 if (color == 0) {
593 if (fBranchColors.find(branch) == fBranchColors.end()) {
594 gPad->IncrementPaletteColor(1, "pfc");
595 fBranchColors[branch] = gPad->NextPaletteColor();
596 }
597 color = fBranchColors[branch];
598 }
599 box.SetFillColor(color);
600 Int_t nbaskets = branch->GetMaxBaskets();
601 for (Int_t i=0;i<nbaskets;i++) {
602 bseek = branch->GetBasketSeek(i);
603 if (!bseek) break;
604 nbytes = branch->GetBasketBytes()[i];
606 }
607 }
608 }
609 }
610
611 // draw the box for Keys list
612 box.SetFillColor(50);
613 box.SetFillStyle(1001);
614 PaintBox(box,dir->GetSeekKeys(),dir->GetNbytesKeys());
615 if (dir == (TDirectory*)fFile) {
616 // draw the box for TStreamerInfo
617 box.SetFillColor(6);
618 box.SetFillStyle(3008);
620 // draw the box for Free Segments
621 box.SetFillColor(1);
622 box.SetFillStyle(1001);
624 }
625 dirsav->cd();
626}
#define d(i)
Definition RSha256.hxx:102
int Int_t
Definition RtypesCore.h:45
double Double_t
Definition RtypesCore.h:59
constexpr Ssiz_t kNPOS
Definition RtypesCore.h:117
long long Long64_t
Definition RtypesCore.h:69
const char Option_t
Definition RtypesCore.h:66
#define ClassImp(name)
Definition Rtypes.h:374
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
#define gDirectory
Definition TDirectory.h:384
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
float xmin
int nentries
float ymin
float xmax
float ymax
R__EXTERN C unsigned int sleep(unsigned int seconds)
#define gROOT
Definition TROOT.h:406
R__EXTERN TSystem * gSystem
Definition TSystem.h:572
#define gPad
#define gVirtualX
Definition TVirtualX.h:337
Create a Box.
Definition TBox.h:22
A TTree is a list of TBranches.
Definition TBranch.h:93
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition TClass.h:84
Bool_t InheritsFrom(const char *cl) const override
Return kTRUE if this class inherits from a class with name "classname".
Definition TClass.cxx:4984
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
Definition TClass.cxx:3069
static TClass * Class()
TObject * Get(const char *namecycle) override
Return pointer to object identified by namecycle.
Describe directory structure in memory.
Definition TDirectory.h:45
virtual Int_t GetNbytesKeys() const
Definition TDirectory.h:226
virtual const char * GetPath() const
Returns the full path of the directory.
virtual Bool_t cd()
Change current directory to "this" directory.
virtual Long64_t GetSeekKeys() const
Definition TDirectory.h:230
virtual TList * GetListOfKeys() const
Definition TDirectory.h:223
This class is automatically called by TFile::DrawMap.
virtual bool GetObjectInfoDir(TDirectory *dir, Int_t px, Int_t py, TString &info) const
Redefines TObject::GetObjectInfo.
TFile * fFile
! Pointer to the file, cannot be persistent
virtual void DrawObject()
Draw object at the mouse position.
virtual void DrawMarker(Int_t marker, Long64_t eseek)
Draw marker.
Int_t fYsize
Size in K/Mbytes of Y axis.
TString fKeys
List of keys.
~TFileDrawMap() override
Tree destructor.
virtual void PaintDir(TDirectory *dir, const char *keys)
Paint keys in a directory.
Int_t fXsize
Size in bytes of X axis.
virtual void DumpObject()
Dump object at the mouse position.
virtual void InspectObject()
Inspect object at the mouse position.
TFileDrawMap()
Default TreeFileMap constructor.
TString GetRecentInfo()
Returns info which corresponds to recent mouse position In case of normal graphics it is object name ...
char * GetObjectInfo(Int_t px, Int_t py) const override
Redefines TObject::GetObjectInfo.
TH2 * fFrame
Histogram used to draw the map frame.
virtual void PaintBox(TBox &box, Long64_t bseek, Int_t nbytes)
Paint the object at bseek with nbytes using the box object.
virtual TObject * GetObject()
Retrieve object at the mouse position in memory.
virtual void AnimateTree(const char *branches="")
Show sequence of baskets reads for the list of baskets involved in the list of branches (separated by...
std::map< TBranch *, Int_t > fBranchColors
! map of generated colors for the branches
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Compute distance from point px,py to this TreeFileMap.
void Paint(Option_t *option) override
Paint this TFileDrawMap.
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
Definition TFile.h:131
virtual Long64_t GetSeekFree() const
Definition TFile.h:335
virtual Long64_t GetEND() const
Definition TFile.h:314
virtual Long64_t GetSeekInfo() const
Definition TFile.h:336
virtual Int_t GetNbytesFree() const
Definition TFile.h:332
virtual Int_t GetNbytesInfo() const
Definition TFile.h:331
virtual void SetDirectory(TDirectory *dir)
By default, when a histogram is created, it is added to the list of histogram objects in the current ...
Definition TH1.cxx:8933
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Compute distance from point px,py to a line.
Definition TH1.cxx:2795
@ kNoStats
Don't draw stats box.
Definition TH1.h:176
TAxis * GetXaxis()
Definition TH1.h:344
TAxis * GetYaxis()
Definition TH1.h:345
void Draw(Option_t *option="") override
Draw this histogram with options.
Definition TH1.cxx:3038
2-D histogram with a double per channel (see TH1 documentation)
Definition TH2.h:356
Book space in a file, create I/O buffers, to fill them, (un)compress them.
Definition TKey.h:28
virtual Long64_t GetSeekKey() const
Definition TKey.h:89
Int_t GetNbytes() const
Definition TKey.h:86
virtual const char * GetClassName() const
Definition TKey.h:75
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
Definition TLeaf.h:57
The TNamed class is the base class for all named ROOT classes.
Definition TNamed.h:29
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
Definition TNamed.cxx:174
const char * GetName() const override
Returns name of object.
Definition TNamed.h:49
virtual void SetName(const char *name)
Set the name of the TNamed.
Definition TNamed.cxx:150
An array of TObjects.
Definition TObjArray.h:31
Mother of all ROOT objects.
Definition TObject.h:41
virtual void Inspect() const
Dump contents of this object in a graphics canvas.
Definition TObject.cxx:564
virtual void Dump() const
Dump contents of object on stdout.
Definition TObject.cxx:366
virtual UInt_t GetUniqueID() const
Return the unique object id.
Definition TObject.cxx:475
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Definition TObject.cxx:864
@ kCanDelete
if object in a list can be deleted
Definition TObject.h:68
Regular expression class.
Definition TRegexp.h:31
Basic string class.
Definition TString.h:139
const char * Data() const
Definition TString.h:376
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
Definition TString.h:651
virtual void Sleep(UInt_t milliSec)
Sleep milliSec milli seconds.
Definition TSystem.cxx:437
virtual Bool_t ProcessEvents()
Process pending events (GUI, timers, sockets).
Definition TSystem.cxx:416
A TTree represents a columnar dataset.
Definition TTree.h:79
static TClass * Class()
TVirtualPad is an abstract base class for the Pad and Canvas classes.
Definition TVirtualPad.h:51
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Definition fillpatterns.C:1
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17
Long64_t BinarySearch(Long64_t n, const T *array, T value)
Binary search in an array of n values to locate value.
Definition TMathBase.h:347
th1 Draw()