Logo ROOT  
Reference Guide
 
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
76
77////////////////////////////////////////////////////////////////////////////////
78/// Default TreeFileMap constructor.
79
81{
82 fFile = nullptr;
83 fFrame = nullptr;
84 fXsize = 1000;
85 fYsize = 1000;
86}
87
88////////////////////////////////////////////////////////////////////////////////
89/// TFileDrawMap normal constructor.
90/// see descriptions of arguments above
91
92TFileDrawMap::TFileDrawMap(const TFile *file, const char *keys, Option_t *)
93 : TNamed("TFileDrawMap","")
94{
95 fFile = (TFile*) file;
96 fKeys = keys;
98
99 //create histogram used to draw the map frame
100
101 if (file->GetEND() > 1000000) {
102 fXsize = 1000000;
103 } else {
104 fXsize = 1000;
105 }
106 fYsize = 1 + Int_t(file->GetEND()/fXsize);
107
108 fFrame = new TH2D("hmapframe","",100,0,fXsize,100,0,fYsize);
109 fFrame->SetDirectory(nullptr);
112 if (fXsize > 1000) {
113 fFrame->GetYaxis()->SetTitle("MBytes");
114 } else {
115 fFrame->GetYaxis()->SetTitle("KBytes");
116 }
117 fFrame->GetXaxis()->SetTitle("Bytes");
118
119 if (gPad)
120 gPad->Clear();
121
122 fFrame->Draw("axis");
123 Draw();
124
125 if (gPad)
126 gPad->Update();
127}
128
129////////////////////////////////////////////////////////////////////////////////
130/// Tree destructor.
131
133{
134 //delete fFrame; //should not be deleted (kCanDelete set)
135}
136
137////////////////////////////////////////////////////////////////////////////////
138/// Returns info which corresponds to recent mouse position
139/// In case of normal graphics it is object name
140/// In case of web canvas use stored click event position
141
143{
145 if (gPad && gPad->IsWeb()) {
146 // in case of web canvas one can try to use last click event
147 GetObjectInfoDir(fFile, gPad->GetEventX(), gPad->GetEventY(), info);
148 } else {
149 // last selected place stored as name
150 info = GetName();
151 }
152 return info;
153}
154
155
156////////////////////////////////////////////////////////////////////////////////
157/// Show sequence of baskets reads for the list of baskets involved
158/// in the list of branches (separated by ",")
159/// - if branches="", the branch pointed by the mouse is taken.
160/// - if branches="*", all branches are taken
161/// Example:
162///
163/// AnimateTree("x,y,u");
164
166{
168
169 auto pos = info.Index(", basket=");
170 if (pos == kNPOS)
171 return;
172 info.Remove(pos);
173
174 pos = info.Index(", branch=");
175 if (pos == kNPOS)
176 return;
177 TString select_branches = info(pos + 9, info.Length() - pos - 9);
178
179 auto colon = info.Index("::");
180 if (colon == kNPOS)
181 return;
182
183 info.Resize(colon - 1);
184
185 auto tree = fFile->Get<TTree>(info);
186 if (!tree)
187 return;
188 if (branches && *branches)
190
191 // create list of branches
192 Int_t nzip = 0;
194 TObjArray list;
195 char *comma;
196 while((comma = strrchr((char*)select_branches.Data(),','))) {
197 *comma = 0;
198 comma++;
199 while (*comma == ' ') comma++;
200 branch = tree->GetBranch(comma);
201 if (branch) {
202 nzip += (Int_t)branch->GetZipBytes();
203 branch->SetUniqueID(0);
204 list.Add(branch);
205 }
206 }
207 comma = (char*)select_branches.Data();
208 while (*comma == ' ') comma++;
209 branch = tree->GetBranch(comma);
210 if (branch) {
211 nzip += (Int_t)branch->GetZipBytes();
212 branch->SetUniqueID(0);
213 list.Add(branch);
214 }
216 Int_t nbranches = list.GetEntries();
217
218 // loop on all tree entries
219 Int_t nentries = (Int_t)tree->GetEntries();
220 Int_t sleep = 1;
222 if (stime < 10) {stime=1; sleep = nentries/400;}
223
224 // turn off double buffer and draw in invert mode
225 gPad->FeedbackMode(kTRUE);
226
227 for (Int_t entry=0;entry<nentries;entry++) {
228 for (Int_t ib=0;ib<nbranches;ib++) {
229 branch = (TBranch*)list.At(ib);
230 Int_t nbaskets = branch->GetListOfBaskets()->GetSize();
232 Int_t nbytes = branch->GetBasketBytes()[basket];
233 Int_t bseek = branch->GetBasketSeek(basket);
234 Int_t entry0 = branch->GetBasketEntry()[basket];
235 Int_t entryn = branch->GetBasketEntry()[basket+1];
237 DrawMarker(ib,branch->GetUniqueID());
239 branch->SetUniqueID(eseek);
241 if (entry%sleep == 0) gSystem->Sleep(stime);
242 }
243 }
244}
245
246////////////////////////////////////////////////////////////////////////////////
247/// Compute distance from point px,py to this TreeFileMap.
248/// Find the closest object to the mouse, save its path in the TFileDrawMap name.
249
251{
252 Int_t pxmin = gPad->XtoAbsPixel(gPad->GetUxmin());
253 Int_t pxmax = gPad->XtoAbsPixel(gPad->GetUxmax());
254 Int_t pymin = gPad->YtoAbsPixel(gPad->GetUymin());
255 Int_t pymax = gPad->YtoAbsPixel(gPad->GetUymax());
256 if (px > pxmin && px < pxmax && py > pymax && py < pymin) {
257 SetName(GetObjectInfo(px,py));
258 return 0;
259 }
260 return fFrame->DistancetoPrimitive(px,py);
261}
262
263////////////////////////////////////////////////////////////////////////////////
264/// Draw marker.
265
267{
268 Int_t iy = gPad->YtoAbsPixel(eseek/fXsize);
269 Int_t ix = gPad->XtoAbsPixel(eseek%fXsize);
270 Int_t d;
271 Int_t mark = marker%4;
272 switch (mark) {
273 case 0 :
274 d = 6; //arrow
275 gVirtualX->DrawLine(ix-3*d,iy,ix,iy);
276 gVirtualX->DrawLine(ix-d,iy+d,ix,iy);
277 gVirtualX->DrawLine(ix-d,iy-d,ix,iy);
278 gVirtualX->DrawLine(ix-d,iy-d,ix-d,iy+d);
279 break;
280 case 1 :
281 d = 5; //up triangle
282 gVirtualX->DrawLine(ix-d,iy-d,ix+d,iy-d);
283 gVirtualX->DrawLine(ix+d,iy-d,ix,iy+d);
284 gVirtualX->DrawLine(ix,iy+d,ix-d,iy-d);
285 break;
286 case 2 :
287 d = 5; //open square
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 gVirtualX->DrawLine(ix-d,iy+d,ix-d,iy-d);
292 break;
293 case 3 :
294 d = 8; //cross
295 gVirtualX->DrawLine(ix-d,iy,ix+d,iy);
296 gVirtualX->DrawLine(ix,iy-d,ix,iy+d);
297 break;
298 }
299}
300
301////////////////////////////////////////////////////////////////////////////////
302/// Draw object at the mouse position.
303
305{
306 TVirtualPad *padsave = gROOT->GetSelectedPad();
307 if ((padsave == gPad) || (gPad && gPad->IsWeb())) {
308 //must create a new canvas
309 gROOT->MakeDefCanvas();
310 } else if (padsave) {
311 padsave->cd();
312 }
313
315
316 // case of a TTree
317 auto pbasket = info.Index(", basket=");
318 if (pbasket != kNPOS) {
319 info.Resize(pbasket);
320 auto pbranch = info.Index(", branch=");
321 if (pbranch == kNPOS)
322 return;
323
324 TString cbranch = info(pbranch + 9, info.Length() - pbranch - 9);
325
326 auto colon = info.Index("::");
327 if (colon == kNPOS)
328 return;
329
330 info.Resize(colon - 1);
331
332 auto tree = fFile->Get<TTree>(info);
333 if (tree)
334 tree->Draw(cbranch);
335 } else {
336 // other objects
337 auto obj = GetObject();
338 if (obj)
339 obj->Draw();
340 }
341}
342
343
344////////////////////////////////////////////////////////////////////////////////
345/// Dump object at the mouse position.
346
348{
349 TObject *obj = GetObject();
350 if (obj) {
351 obj->Dump();
352 return;
353 }
354
356
357 auto indx = info.Index("entry=");
358 if (indx == kNPOS)
359 return;
360
361 Int_t entry = 0;
362 sscanf(info.Data() + indx + 6, "%d", &entry);
363
364 auto colon = info.Index("::");
365 if (colon == kNPOS)
366 return;
367
368 info.Resize(colon - 1);
369
370 auto tree = fFile->Get<TTree>(info);
371 if (tree)
372 tree->Show(entry);
373}
374
375////////////////////////////////////////////////////////////////////////////////
376/// Retrieve object at the mouse position in memory.
377
379{
381
382 if (info.Contains("entry="))
383 return nullptr;
384
385 auto colon = info.Index("::");
386 if (colon == kNPOS)
387 return nullptr;
388
389 info.Resize(colon - 1);
390
391 return fFile->Get(info);
392}
393
394////////////////////////////////////////////////////////////////////////////////
395/// Redefines TObject::GetObjectInfo.
396/// Displays the keys info in the file corresponding to cursor position px,py
397/// in the canvas status bar info panel
398
400{
401 // Thread safety: this solution is not elegant, but given the action performed
402 // by the method, this construct can be considered non-problematic.
403 static TString info;
404 GetObjectInfoDir(fFile, px, py, info);
405 return (char*)info.Data();
406}
407
408////////////////////////////////////////////////////////////////////////////////
409/// Redefines TObject::GetObjectInfo.
410/// Displays the keys info in the directory
411/// corresponding to cursor position px,py
412
414{
415 Double_t x = gPad->AbsPixeltoX(px);
416 Double_t y = gPad->AbsPixeltoY(py);
417 Int_t iy = (Int_t)y;
422 dir->cd();
423
424 TIter next(dir->GetListOfKeys());
425 TKey *key;
426 while ((key = (TKey*)next())) {
429 // a TDirectory ?
430 if (cl && cl == TDirectoryFile::Class()) {
431 curdir->cd(key->GetName());
433 bool gotInfo = GetObjectInfoDir(subdir, px, py, info);
434 if (gotInfo) {
435 dirsav->cd();
436 return true;
437 }
438 curdir->cd();
439 continue;
440 }
441 // a TTree ?
442 if (cl && cl->InheritsFrom(TTree::Class())) {
443 TTree *tree = (TTree*)gDirectory->Get(key->GetName());
444 TIter nextb(tree->GetListOfLeaves());
445 while (auto leaf = (TLeaf *)nextb()) {
446 TBranch *branch = leaf->GetBranch();
447 Int_t nbaskets = branch->GetMaxBaskets();
448 Int_t offsets = branch->GetEntryOffsetLen();
449 Int_t len = leaf->GetLen();
450 for (Int_t i = 0; i < nbaskets; i++) {
451 bseek = branch->GetBasketSeek(i);
452 if (!bseek)
453 break;
454 nbytes = branch->GetBasketBytes()[i];
455 if (pbyte >= bseek && pbyte < bseek + nbytes) {
456 Int_t entry = branch->GetBasketEntry()[i];
457 if (!offsets) entry += (pbyte-bseek)/len;
458 if (curdir == (TDirectory*)fFile) {
459 info.Form("%s%s ::%s, branch=%s, basket=%d, entry=%d",curdir->GetPath(),key->GetName(),key->GetClassName(),branch->GetName(),i,entry);
460 } else {
461 info.Form("%s/%s ::%s, branch=%s, basket=%d, entry=%d",curdir->GetPath(),key->GetName(),key->GetClassName(),branch->GetName(),i,entry);
462 }
463 return true;
464 }
465 }
466 }
467 }
468 nbytes = key->GetNbytes();
469 bseek = key->GetSeekKey();
470 if (pbyte >= bseek && pbyte < bseek+nbytes) {
471 if (curdir == (TDirectory*)fFile) {
472 info.Form("%s%s ::%s, nbytes=%d",curdir->GetPath(),key->GetName(),key->GetClassName(),nbytes);
473 } else {
474 info.Form("%s/%s ::%s, nbytes=%d",curdir->GetPath(),key->GetName(),key->GetClassName(),nbytes);
475 }
476 dirsav->cd();
477 return true;
478 }
479 }
480 // Are we in the Keys list
481 if (pbyte >= dir->GetSeekKeys() && pbyte < dir->GetSeekKeys()+dir->GetNbytesKeys()) {
482 info.Form("%sKeys List, nbytes=%d",dir->GetPath(),dir->GetNbytesKeys());
483 dirsav->cd();
484 return true;
485 }
486 if (dir == (TDirectory*)fFile) {
487 // Are we in the TStreamerInfo
489 info.Form("%sStreamerInfo List, nbytes=%d",dir->GetPath(),fFile->GetNbytesInfo());
490 dirsav->cd();
491 return true;
492 }
493 // Are we in the Free Segments
495 info.Form("%sFree List, nbytes=%d",dir->GetPath(),fFile->GetNbytesFree());
496 dirsav->cd();
497 return true;
498 }
499 }
500 info.Form("(byte=%lld)",pbyte);
501 dirsav->cd();
502 return false;
503}
504
505////////////////////////////////////////////////////////////////////////////////
506/// Inspect object at the mouse position.
507
509{
510 TObject *obj = GetObject();
511 if (obj) obj->Inspect();
512}
513
514////////////////////////////////////////////////////////////////////////////////
515/// Paint this TFileDrawMap.
516
518{
519 //draw keys
521}
522
523////////////////////////////////////////////////////////////////////////////////
524/// Paint the object at bseek with nbytes using the box object.
525
527{
528 Int_t iy = bseek/fXsize;
529 Int_t ix = bseek%fXsize;
530 Int_t ny = 1+(nbytes+ix)/fXsize;
532 for (Int_t j=0;j<ny;j++) {
533 if (j == 0) xmin = (Double_t)ix;
534 else xmin = 0;
535 xmax = xmin + nbytes;
536 if (xmax > fXsize) xmax = fXsize;
537 ymin = iy+j;
538 ymax = ymin+1;
539 nbytes -= (Int_t)(xmax-xmin);
540 if (xmax < gPad->GetUxmin()) continue;
541 if (xmin > gPad->GetUxmax()) continue;
542 if (xmin < gPad->GetUxmin()) xmin = gPad->GetUxmin();
543 if (xmax > gPad->GetUxmax()) xmax = gPad->GetUxmax();
544 if (ymax < gPad->GetUymin()) continue;
545 if (ymin > gPad->GetUymax()) continue;
546 if (ymin < gPad->GetUymin()) ymin = gPad->GetUymin();
547 if (ymax > gPad->GetUymax()) ymax = gPad->GetUymax();
548 //box.TAttFill::Modify();
549 box.PaintBox(xmin,ymin,xmax,ymax);
550 }
551}
552
553////////////////////////////////////////////////////////////////////////////////
554/// Paint keys in a directory.
555
556void TFileDrawMap::PaintDir(TDirectory *dir, const char *keys)
557{
559 TIter next(dir->GetListOfKeys());
560 TKey *key;
561 Int_t color = 0;
562 TBox box;
563 TRegexp re(keys,true);
564 while ((key = (TKey*)next())) {
565 Int_t nbytes = key->GetNbytes();
566 Long64_t bseek = key->GetSeekKey();
568 if (cl) {
569 color = (Int_t)(cl->GetUniqueID()%20);
570 } else {
571 color = 1;
572 }
573 box.SetFillColor(color);
574 box.SetFillStyle(1001);
575 TString s = key->GetName();
576 if (strcmp(fKeys.Data(),key->GetName()) && s.Index(re) == kNPOS) continue;
577 // a TDirectory ?
578 if (cl && cl == TDirectoryFile::Class()) {
580 gDirectory->cd(key->GetName());
582 PaintDir(subdir,"*");
583 curdir->cd();
584 }
586 // a TTree ?
587 if (cl && cl->InheritsFrom(TTree::Class())) {
588 TTree *tree = (TTree*)gDirectory->Get(key->GetName());
589 TIter nextb(tree->GetListOfLeaves());
590 while (auto leaf = (TLeaf*)nextb()) {
591 TBranch *branch = leaf->GetBranch();
592 color = branch->GetFillColor();
593 if (color == 0) {
594 if (fBranchColors.find(branch) == fBranchColors.end()) {
595 gPad->IncrementPaletteColor(1, "pfc");
596 fBranchColors[branch] = gPad->NextPaletteColor();
597 }
598 color = fBranchColors[branch];
599 }
600 box.SetFillColor(color);
601 Int_t nbaskets = branch->GetMaxBaskets();
602 for (Int_t i=0;i<nbaskets;i++) {
603 bseek = branch->GetBasketSeek(i);
604 if (!bseek) break;
605 nbytes = branch->GetBasketBytes()[i];
607 }
608 }
609 }
610 }
611
612 // draw the box for Keys list
613 box.SetFillColor(50);
614 box.SetFillStyle(1001);
615 PaintBox(box,dir->GetSeekKeys(),dir->GetNbytesKeys());
616 if (dir == (TDirectory*)fFile) {
617 // draw the box for TStreamerInfo
618 box.SetFillColor(6);
619 box.SetFillStyle(3008);
621 // draw the box for Free Segments
622 box.SetFillColor(1);
623 box.SetFillStyle(1001);
625 }
626 dirsav->cd();
627}
#define d(i)
Definition RSha256.hxx:102
int Int_t
Signed integer 4 bytes (int)
Definition RtypesCore.h:60
double Double_t
Double 8 bytes.
Definition RtypesCore.h:74
constexpr Ssiz_t kNPOS
The equivalent of std::string::npos for the ROOT class TString.
Definition RtypesCore.h:132
long long Long64_t
Portable signed long integer 8 bytes.
Definition RtypesCore.h:84
constexpr Bool_t kTRUE
Definition RtypesCore.h:108
const char Option_t
Option string (const char)
Definition RtypesCore.h:81
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
#define gDirectory
Definition TDirectory.h:385
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:417
R__EXTERN TSystem * gSystem
Definition TSystem.h:582
#define gPad
#define gVirtualX
Definition TVirtualX.h:379
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:4995
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:2999
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:227
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:231
virtual TList * GetListOfKeys() const
Definition TDirectory.h:224
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 file, usually with extension .root, that stores data and code in the form of serialized objects in ...
Definition TFile.h:130
virtual Long64_t GetSeekFree() const
Definition TFile.h:340
virtual Long64_t GetEND() const
Definition TFile.h:319
virtual Long64_t GetSeekInfo() const
Definition TFile.h:341
virtual Int_t GetNbytesFree() const
Definition TFile.h:337
virtual Int_t GetNbytesInfo() const
Definition TFile.h:336
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:9170
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Compute distance from point px,py to a line.
Definition TH1.cxx:2952
@ kNoStats
Don't draw stats box.
Definition TH1.h:403
TAxis * GetXaxis()
Definition TH1.h:571
TAxis * GetYaxis()
Definition TH1.h:572
void Draw(Option_t *option="") override
Draw this histogram with options.
Definition TH1.cxx:3193
2-D histogram with a double per channel (see TH1 documentation)
Definition TH2.h:400
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:91
Int_t GetNbytes() const
Definition TKey.h:88
virtual const char * GetClassName() const
Definition TKey.h:77
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:173
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:149
An array of TObjects.
Definition TObjArray.h:31
Mother of all ROOT objects.
Definition TObject.h:42
virtual void Inspect() const
Dump contents of this object in a graphics canvas.
Definition TObject.cxx:569
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:479
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Definition TObject.cxx:886
@ kCanDelete
if object in a list can be deleted
Definition TObject.h:71
Regular expression class.
Definition TRegexp.h:31
Basic string class.
Definition TString.h:137
const char * Data() const
Definition TString.h:385
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
Definition TString.h:661
virtual void Sleep(UInt_t milliSec)
Sleep milliSec milli seconds.
Definition TSystem.cxx:440
virtual Bool_t ProcessEvents()
Process pending events (GUI, timers, sockets).
Definition TSystem.cxx:419
A TTree represents a columnar dataset.
Definition TTree.h:89
virtual void Show(Long64_t entry=-1, Int_t lenmax=20)
Print values of all active leaves for entry.
Definition TTree.cxx:9793
virtual TObjArray * GetListOfLeaves()
Definition TTree.h:584
void Draw(Option_t *opt) override
Default Draw method for all objects.
Definition TTree.h:486
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:329
th1 Draw()