177#include "RConfigure.h"
238 "",
"AXIS",
"HIST",
"SAME",
"CYL",
"POL",
"SPH",
"PSR",
"LEGO",
"LEGO1",
"LEGO2",
239 "SURF",
"SURF1",
"SURF2",
"SURF3",
"SURF4"
243 "",
"AH",
"B",
"C",
"E",
"E1",
"E2",
"E3",
"E4",
"L",
"P",
"*H"
247 "",
"ARR",
"BOX",
"COL",
"COL2",
"CONT",
"CONT0",
"CONT1",
"CONT2",
"CONT3",
248 "FB",
"BB",
"SCAT",
"PROF"
328 gROOT->ProcessLine(
"#ifndef GTV_DEFINED\n\
329 TTreeViewer *gTV = 0;\n\
330 TTree *tv__tree = 0;\n\
331 TList *tv__tree_list = 0;\n\
332 TFile *tv__tree_file = 0;\n\
333 #define GTV_DEFINED\n\
335 snprintf(command,128,
"gTV = (TTreeViewer*)0x%zx", (
size_t)
this);
336 gROOT->ProcessLine(command);
338 gROOT->ProcessLine(
"tv__tree_list = new TList;");
349 fDimension(0), fVarDraw(false), fScanMode(false),
350 fTreeIndex(0), fDefaultCursor(0), fWatchCursor(0),
351 fCounting(false), fStopMapping(false), fEnableCut(false),fNexpressions(0)
358 gROOT->ProcessLine(
"#ifndef GTV_DEFINED\n\
359 TTreeViewer *gTV = 0;\n\
360 TTree *tv__tree = 0;\n\
361 TList *tv__tree_list = 0;\n\
362 TFile *tv__tree_file = 0;\n\
363 #define GTV_DEFINED\n\
365 snprintf(command,128,
"gTV = (TTreeViewer*)0x%zx", (
size_t)
this);
366 gROOT->ProcessLine(command);
369 gROOT->ProcessLine(
"tv__tree_list = new TList;");
375 if (cdir) cdir->
cd();
380 cdir = tree->GetDirectory();
384 if (dirsav) dirsav->
cd();
395 printf(
"Tree found\n");
398 while ((ftree = (TTree*)next())) {
399 if (ftree==tree) {printf(
"found at index %i\n",
index);
break;}
409 TGListTreeItem *base =
nullptr;
410 TGListTreeItem *parent =
fLt->FindChildByName(base,
"TreeList");
411 TGListTreeItem *item =
fLt->FindChildByName(parent,
fTree->GetName());
412 fLt->ClearHighlighted();
413 fLt->HighlightItem(item);
425 snprintf(command,100,
"tv__tree = (TTree *)0x%zx;", (
size_t)tree);
432 TGListTreeItem *base =
nullptr;
433 TGListTreeItem *parent =
fLt->FindChildByName(base,
"TreeList");
437 TGListTreeItem *lTreeItem =
fLt->AddItem(parent,
tree->GetName(), itemType,
438 gClient->GetPicture(
"tree_t.xpm"),
gClient->GetPicture(
"tree_t.xpm"));
440 fLt->OpenItem(parent);
441 fLt->HighlightItem(lTreeItem);
457 if (diff <= 0)
return;
466 if (
fTree) ((TTreePlayer *)
fTree->GetPlayer())->SetScanFileName(
name);
489 TString command =
TString::Format(
"tv__tree = (TTree *)0x%zx;", (
size_t)tree);
496 TGListTreeItem *base =
nullptr;
497 TGListTreeItem *parent =
fLt->FindChildByName(base,
"TreeList");
501 TGListTreeItem *lTreeItem =
fLt->AddItem(parent,
tree->GetName(), itemType,
502 gClient->GetPicture(
"tree_t.xpm"),
gClient->GetPicture(
"tree_t.xpm"));
504 fLt->OpenItem(parent);
505 fLt->HighlightItem(lTreeItem);
520 if (!treeName)
return;
521 TTree *
tree = (TTree *)
gROOT->FindObject(treeName);
524 printf(
"Tree found\n");
527 while ((tree = (TTree*)next())) {
528 if (!strcmp(treeName,
tree->GetName())) {printf(
"found at index %i\n",
index);
break;}
538 TGListTreeItem *base =
nullptr;
539 TGListTreeItem *parent =
fLt->FindChildByName(base,
"TreeList");
540 TGListTreeItem *item =
fLt->FindChildByName(parent,
fTree->GetName());
541 fLt->ClearHighlighted();
542 fLt->HighlightItem(item);
554 TString command =
TString::Format(
"tv__tree = (TTree *) gROOT->FindObject(\"%s\");", treeName);
561 TGListTreeItem *base =
nullptr;
562 TGListTreeItem *parent =
fLt->FindChildByName(base,
"TreeList");
566 TGListTreeItem *lTreeItem =
fLt->AddItem(parent, treeName, itemType,
567 gClient->GetPicture(
"tree_t.xpm"),
gClient->GetPicture(
"tree_t.xpm"));
569 fLt->OpenItem(parent);
570 fLt->HighlightItem(lTreeItem);
586 TSeqCollection *list =
gROOT->GetListOfFiles();
591 while ((obj=next())) {
597 std::cout <<
"File name : "<<
fFilename << std::endl;
615 fTimer =
new TTimer(
this, 20,
true);
623 gClient->GetColorByName(
"blue",color);
630 fContextMenu =
new TContextMenu(
"TreeViewer context menu",
"");
784 fBarCommand->SetToolTipText(
"User commands executed via interpreter. Type <ENTER> to execute");
787 TGVertical3DLine *vSeparator =
new TGVertical3DLine(
fToolBar);
802 fBarOption->SetToolTipText(
"Histogram graphics option. Type option here and click <Draw> (or <ENTER> to update current histogram).");
805 vSeparator =
new TGVertical3DLine(
fToolBar);
830 fBarH->SetToolTipText(
"Checked : redraw only current histogram");
836 fBarScan->SetToolTipText(
"Check to redirect TTree::Scan command in a file");
841 fBarRec->SetToolTipText(
"Check to record commands in history file and be verbose");
844 TGHorizontal3DLine *toolBarSep =
new TGHorizontal3DLine(
this);
849 toolBarSep =
new TGHorizontal3DLine(
this);
854 fHf =
new TGHorizontalFrame(
this, 10, 10);
878 fLt->Associate(
this);
891 fDRAW->SetToolTipText(
"Draw current selection");
892 fDRAW->Associate(
this);
900 fSPIDER->SetToolTipText(
"Scan current selection using a spider plot");
907 fSPIDER->Connect(
"Clicked()",
"TTreeViewer",
this,
"ExecuteSpider()");
913 fSTOP->SetToolTipText(
"Abort current operation");
914 fSTOP->Associate(
this);
923 fREFR->SetToolTipText(
"Update the tree viewer");
928 fREFR->Connect(
"Clicked()",
"TTreeViewer",
this,
"DoRefresh()");
935 fV2 =
new TGVerticalFrame(
fHf, 10, 10);
953 fV1->Resize(
fTreeHdr->GetDefaultWidth()+100,
fV1->GetDefaultHeight());
962 TGVSplitter *splitter =
new TGVSplitter(
fHf);
967 fHf->AddFrame(splitter,lo);
993 toolBarSep =
new TGHorizontal3DLine(
this);
998 fBFrame =
new TGHorizontalFrame(
this,10,10);
1006 fBarListIn->SetToolTipText(
"Name of a previously created event list");
1014 fBarListOut->SetToolTipText(
"Output event list. Use <Draw> to generate it.");
1025 fReset->SetToolTipText(
"Reset variable's fields and drawing options");
1033 fBGFirst->SetToolTipText(
"First record");
1045 fBGNext->SetToolTipText(
"Next record");
1049 fBGLast->SetToolTipText(
"Last record");
1076 const TGPicture *pic, *spic;
1084 entry->
SetToolTipText(
"X expression. Drag and drop expressions here");
1093 entry->
SetToolTipText(
"Y expression. Drag and drop expressions here");
1102 entry->
SetToolTipText(
"Z expression. Drag and drop expressions here");
1112 entry->
SetToolTipText(
"Active cut. Double-click to enable/disable");
1122 entry->
SetToolTipText(
"Drag and drop expressions/leaves here. Double-click to scan. Check <Scan> to redirect on file.");
1135 entry->
SetToolTipText(
"User defined expression/cut. Double-click to edit");
1147 fSlider->SetRange(0LL,1000000LL);
1148 fSlider->SetPosition(0LL,1000000LL);
1255 bool next,
bool last)
1299 TString stripped(
name);
1300 if (!stripped.Contains(
"["))
return name;
1301 TString retstr(
name);
1304 while (stripped.Index(
"[",
index) !=
kNPOS) {
1308 objstr =
new TObjString(retstr.Data());
1310 return (objstr->
String()).Data();
1313 retstr = stripped.Remove(start+1, end-start-1);
1316 objstr =
new TObjString(retstr.Data());
1318 return (objstr->
String()).Data();
1335 TTVLVEntry *item =
nullptr;
1336 if ((item = (TTVLVEntry *)
fLVContainer->GetNextSelected(&p)) ==
nullptr) {
1337 Warning(
"Empty",
"No item selected.");
1342 Warning(
"Empty",
"Not expression type.");
1388 Int_t dimension = 0;
1396 if (!(item = (TTVLVEntry *)
fLVContainer->GetNextSelected(&p)))
return;
1401 if (
Ez() && strlen(
Ez())) {
1408 if ((
Ez() && strlen(
Ez())) && ((
Ex() &&strlen(
Ex())) || (
Ey() && strlen(
Ey())))) varexp +=
":";
1409 if (
Ey() && strlen(
Ey())) {
1416 if (
Ey() && strlen(
Ey()) &&
Ex() && strlen(
Ex())) varexp +=
":";
1417 if (
Ex () && strlen(
Ex())) {
1426 Warning(
"ExecuteDraw",
"Nothing to draw on X,Y,Z.");
1430 fTree->SetEventList(
nullptr);
1431 TEventList *elist =
nullptr;
1434 if (elist)
fTree->SetEventList(elist);
1439 if (strcmp(
"htemp",
fBarHist->GetText())) {
1444 auto pad =
gROOT->GetSelectedPad();
1449 gROOT->SetInterrupt(
false);
1451 const char *cut =
"";
1456 fSlider->GetMinPositionD() + 1);
1464 command =
TString::Format(
"tv__tree->Scan(\"%s\",\"%s\",\"%s\", %lld, %lld);",
1467 ((TTreePlayer *)
fTree->GetPlayer())->SetScanRedirect(
true);
1469 ((TTreePlayer *)
fTree->GetPlayer())->SetScanRedirect(
false);
1478 TH1 *hist =
fTree->GetHistogram();
1484 TString current(gopt);
1487 if (current == last) {
1491 if (dimension == 3 && strlen(gopt)) {
1492 std::cout <<
"Graphics option " << gopt <<
" not valid for 3D histograms" << std::endl;
1495 std::cout <<
" Graphics option for current histogram changed to " << gopt << std::endl;
1509 if (dimension == 3 && strlen(gopt)) {
1510 std::cout <<
"Graphics option " << gopt <<
" not valid for 3D histograms" << std::endl;
1514 command =
TString::Format(
"tv__tree->Draw(\"%s\",\"%s\",\"%s\", %lld, %lld);",
1518 fTree->SetTimerInterval(200);
1523 fTree->SetTimerInterval(0);
1527 TH1 *hist =
fTree->GetHistogram();
1531 for (
i=0;
i<3;
i++) {
1532 if (alias[
i].Length()) {
1534 alias[current] = alias[
i];
1545 for (
Int_t ind=0; ind<3; ind++) axis[ind]->SetTitle(alias[ind].Data());
1556 Int_t dimension = 0;
1559 bool previousexp =
false;
1561 if (
Ez() && strlen(
Ez())) {
1569 if ((
Ez() && strlen(
Ez())) && ((
Ex() && strlen(
Ex())) || (
Ey() && strlen(
Ey())))) varexp +=
":";
1570 if (
Ey() && strlen(
Ey())) {
1578 if (
Ey() && strlen(
Ey()) &&
Ex() && strlen(
Ex())) varexp +=
":";
1579 if (
Ex() && strlen(
Ex())) {
1588 if(
En(
i+5) && strlen(
En(
i+5))){
1593 }
else varexp =
En(
i+5);
1598 Warning(
"ExecuteSpider",
"Need at least 3 variables");
1602 fTree->SetEventList(
nullptr);
1603 TEventList *elist =
nullptr;
1606 if (elist)
fTree->SetEventList(elist);
1611 auto pad =
gROOT->GetSelectedPad();
1616 gROOT->SetInterrupt(
false);
1618 const char *cut =
"";
1623 fSlider->GetMinPositionD() + 1);
1628 TSpider* spider =
new TSpider(
fTree,varexp.
Data(),cut,
Form(
"%s spider average",gopt),
nentries,firstentry);
1664 if(
e)
return e->ConvertAliases();
1675 TTVLVEntry *item =
nullptr;
1676 if ((item = (TTVLVEntry *)
fLVContainer->GetNextSelected(&p)) ==
nullptr) {
1677 Warning(
"EditExpression",
"No item selected.");
1683 Warning(
"EditExpression",
"Not expression type.");
1693 fDialogBox->SetWindowName(
"Expression editor");
1707 if (!
fTree)
return 0;
1708 return fTree->MakeSelector(selector);
1716 if (!
fTree)
return 0;
1750 TTVLVEntry *item =
nullptr;
1752 if ((item = (TTVLVEntry *)
fLVContainer->GetNextSelected(&p)) ==
nullptr) {
1753 Warning(
"RemoveItem",
"No item selected.");
1759 Warning(
"RemoveItem",
"Not removable type.");
1796 TRootHelpDialog *hd;
1833 TGListTreeItem *ltItem =
nullptr;
1835 if ((ltItem =
fLt->GetSelected()) !=
nullptr) {
1940 gROOT->SetInterrupt(
true);
1950 if ((record =
fSession->Previous()))
1974 Warning(
"ProcessMessage",
"Edit expressions first.");
1978 Warning(
"ProcessMessage",
"You have only one expression active.");
1982 Warning(
"ProcessMessage",
"1D drawing options not apply to 2D histograms.");
1991 gROOT->MakeDefCanvas();
1995 static TString dir(
".");
2002 TString command =
TString::Format(
"tv__tree_file = new TFile(\"%s\");",
2006 std::cout <<
"Use SetTreeName() from context menu and supply a tree name" << std::endl;
2007 std::cout <<
"The context menu is activated by right-clicking the panel from right" << std::endl;
2016 event.fX =
event.fY = 1;
2023 static TString dir(
".");
2034 snprintf(command,1024,
"open_session((void*)0x%zx);", (
size_t)
this);
2068 new TWin32SplashThread(
true);
2072 hd =
new TRootHelpDialog(
this, str, 600, 400);
2080 hd =
new TRootHelpDialog(
this,
"About TreeViewer...", 600, 400);
2086 hd =
new TRootHelpDialog(
this,
"Quick start...", 600, 400);
2091 hd =
new TRootHelpDialog(
this,
"Layout...", 600, 400);
2096 hd =
new TRootHelpDialog(
this,
"Open/Save...", 600, 400);
2101 hd =
new TRootHelpDialog(
this,
"Dragging items...", 600, 400);
2106 hd =
new TRootHelpDialog(
this,
"Editing expressions...", 600, 400);
2111 hd =
new TRootHelpDialog(
this,
"Session...", 600, 400);
2116 hd =
new TRootHelpDialog(
this,
"Executing user commands...", 600, 400);
2121 hd =
new TRootHelpDialog(
this,
"Context menus...", 600, 400);
2126 hd =
new TRootHelpDialog(
this,
"Drawing histograms...", 600, 400);
2131 hd =
new TRootHelpDialog(
this,
"Using macros...", 600, 400);
2156 if ((item = (TTVLVEntry *)
fLVContainer->GetNextSelected(&p)) !=
nullptr) {
2158 TString trueName(vname);
2159 if (trueName.Contains(
"[]")) {
2160 TIter next(
fTree->GetListOfLeaves());
2162 while((leaf=(TLeaf*)next())) {
2167 char* msg2 =
new char[2000];
2172 char symbol = (char)((*itemType) >> 8);
2173 snprintf(msg2,2000,
"%c expression : %s", symbol, vname);
2177 snprintf(msg2,2000,
"Cut : %s", vname);
2180 snprintf(msg2,2000,
"Box : %s", vname);
2184 snprintf(msg2,2000,
"Expression : %s", vname);
2187 snprintf(msg2,2000,
"Branch : %s", vname);
2189 snprintf(msg2,2000,
"Leaf : %s", vname);
2196 TString message = msg2;
2197 message = message(0,150);
2204 if (item ==
fDialogBox->EditedEntry())
break;
2226 TTVLVEntry *item =
nullptr;
2227 if ((item = (TTVLVEntry *)
fLVContainer->GetNextSelected(&p)) !=
nullptr) {
2247 if ((item = (TTVLVEntry *)
fLVContainer->GetNextSelected(&p)) !=
nullptr) {
2316 if (strlen(command) > 1999) {
2317 Warning(
"ExecuteCommand",
"Command too long: aborting.");
2320 snprintf(comm,2000,
"%s", command);
2326 gROOT->ProcessLineFast(command);
2328 gROOT->ProcessLine(command);
2418 TObjArray *branches =
tree->GetListOfBranches();
2419 if (!branches)
return;
2423 for (
id=0;
id<branches->
GetEntries();
id++) {
2424 branch = (TBranch *)branches->
At(
id);
2427 if (
name.Contains(
"fBits") ||
name.Contains(
"fUniqueID"))
continue;
2435 TIter nextf(
tree->GetTree()->GetListOfFriends() );
2437 while ((fr = (TFriendElement*)nextf())) {
2440 for (
id=0;
id<branches->
GetEntries();
id++) {
2441 branch = (TBranch *)branches->
At(
id);
2444 if (
name.Contains(
"fBits") ||
name.Contains(
"fUniqueID"))
continue;
2463 if (!branch)
return;
2465 if (prefix && strlen(prefix) > 0) {
2467 if (!
name.EndsWith(
"."))
name +=
".";
2472 TGListTreeItem *branchItem =
nullptr;
2475 if (
name.Contains(
"fBits") ||
name.Contains(
"fUniqueID"))
return;
2478 const TGPicture *pic, *spic;
2503 TLeaf *leaf =
nullptr;
2506 leaf = (TLeaf *)leaves->
At(lf);
2513 fLt->AddItem(branchItem, leafName.
Data(), itemType, pic, spic);
2526 TGString *textEntry =
nullptr;
2527 const TGPicture *pic, *spic;
2553 entry->
SetToolTipText(
"Branch with sub-branches. Can not be dragged");
2559 if (textEntry)
delete textEntry;
2565 entry->
SetToolTipText(
"Branch with more than one leaf. Can not be dragged");
2571 TLeaf *leaf =
nullptr;
2574 leaf = (TLeaf *)leaves->
At(lf);
2578 textEntry =
new TGString(leafName.
Data());
2583 entry->
SetToolTipText(
"Double-click to draw. Drag to X, Y, Z or scan box.");
2589 pic = (
gClient->GetMimeTypeList())->GetIcon(
"TLeaf",
false);
2591 spic =
gClient->GetMimeTypeList()->GetIcon(
"TLeaf",
true);
2595 entry->
SetToolTipText(
"Double-click to draw. Drag to X, Y, Z or scan box.");
2605 TBranch *branchDaughter =
nullptr;
2608 for (ind=0; ind<branches->
GetEntries(); ind++) {
2609 branchDaughter = (TBranch *)branches->
UncheckedAt(ind);
2611 MapBranch(branchDaughter,
"", branchItem, listIt);
2624 TTVLVEntry *entry =
new TTVLVEntry(
fLVContainer,pic,spic,
2643 if (!itemType)
return;
2644 TGListTreeItem *parent =
nullptr;
2672 static const int buf_size = 2048;
2673 char buf[buf_size], *bp;
2675 int n = vsnprintf(buf, buf_size, fmt, va);
2678 if (
n == -1 ||
n >= buf_size) {
2686 const char *title =
"";
2694 title =
"System Error";
2705 char * msg =
new char[100];
2706 snprintf(msg,100,
"First entry : %lld Last entry : %lld",
2724 lenfile = strlen(fname);
2732 out.open(fname, std::ios::out);
2734 fname =
new char[13];
2735 strlcpy(fname,
"treeviewer.C",13);
2736 out.open(fname, std::ios::out);
2739 printf(
"SaveSource cannot open file : %s\n", fname);
2741 if (!lenfile)
delete [] fname;
2746 out <<
"void open_session(void *p = 0);"<<std::endl<<std::endl;
2747 out <<
"void "<<std::filesystem::path(fname).stem()<<
"() {"<<std::endl;
2748 out <<
"//=========Macro generated by ROOT version"<<
gROOT->GetVersion()<<std::endl;
2749 out <<
"//=========for tree "<<quote<<
fTree->GetName()<<quote<<
" ("<<t.
AsString()<<
")"<<std::endl;
2750 out <<
"//===This macro can be opened from a TreeViewer session after loading"<<std::endl;
2751 out <<
"//===the corresponding tree, or by running root with the macro name argument"<<std::endl<<std::endl;
2752 out <<
" open_session();"<<std::endl;
2753 out <<
"}"<<std::endl<<std::endl;
2754 out <<
"void open_session(void *p = 0) {"<<std::endl;
2755 out <<
" gSystem->Load("<<quote<<
"libTreeViewer"<<quote<<
");"<<std::endl;
2756 out <<
" TTreeViewer *treeview = (TTreeViewer *) p;"<<std::endl;
2757 out <<
" if (!treeview) treeview = new TTreeViewer();"<<std::endl;
2758 out <<
" TTree *tv_tree = (TTree*)gROOT->FindObject("<<quote<<
fTree->GetName()<<quote<<
");"<<std::endl;
2759 out <<
" TFile *tv_file = (TFile*)gROOT->GetListOfFiles()->FindObject("<<quote<<
fFilename<<quote<<
");"<<std::endl;
2760 out <<
" if (!tv_tree) {"<<std::endl;
2761 out <<
" if (!tv_file) tv_file = new TFile("<<quote<<
fFilename<<quote<<
");"<<std::endl;
2762 out <<
" if (tv_file) tv_tree = (TTree*)tv_file->Get("<<quote<<
fTree->GetName()<<quote<<
");"<<std::endl;
2763 out <<
" if(!tv_tree) {"<<std::endl;
2764 out <<
" printf(\"Tree %s not found\", "<<quote<<
fTree->GetName()<<quote<<
");"<<std::endl;
2765 out <<
" return;"<<std::endl;
2766 out <<
" }"<<std::endl;
2767 out <<
" }"<<std::endl<<std::endl;
2768 out <<
" treeview->SetTreeName("<<quote<<
fTree->GetName()<<quote<<
");"<<std::endl;
2772 out <<
"// Set expressions on axis and cut"<<std::endl;
2773 out <<
" TTVLVEntry *item;"<<std::endl;
2777 out <<
"// X expression"<<std::endl;
2780 out <<
"// Y expression"<<std::endl;
2783 out <<
"// Z expression"<<std::endl;
2786 out <<
"// Cut expression"<<std::endl;
2792 out <<
" item = treeview->ExpressionItem("<<
i<<
");"<<std::endl;
2794 <<
", "<<quote<<item->
GetAlias()<<quote<<
");"<<std::endl;
2796 out <<
"// Scan list"<<std::endl;
2798 out <<
" item = treeview->ExpressionItem(4);"<<std::endl;
2800 <<
", "<<quote<<
"Scan box"<<quote<<
");"<<std::endl;
2801 out <<
"// User defined expressions"<<std::endl;
2809 out <<
" item = treeview->ExpressionItem("<<crt<<
");"<<std::endl;
2811 <<
", "<<quote<<item->
GetAlias()<<quote<<
", "<<itemType.
Data()<<
");"<<std::endl;
2814 out <<
"}"<<std::endl;
2816 printf(
"C++ Macro file: %s has been generated\n", fname);
2817 if (!lenfile)
delete [] fname;
2827 Warning(
"SwitchTree",
"No tree found.");
2831 std::string command;
2832 if (tree !=
fTree) {
2833 command =
"tv__tree = (TTree *) tv__tree_list->At";
2841 command =
"Current Tree : ";
2842 command +=
fTree->GetName();
2843 fLbl2->SetText(
new TGString(command.c_str()));
2888 if (rec)
rec->SetUserCode(code, autoexec);
2897 fCombo->RemoveEntries(0, 1000);
2899 if ((record =
fSession->GetRecord(entry)))
2921 fSlider->SetPosition(min,max);
EMouseButton
Button names.
R__EXTERN const char gTVHelpLayout[]
R__EXTERN const char gTVHelpStart[]
R__EXTERN const char gTVHelpDrawing[]
R__EXTERN const char gTVHelpOpenSave[]
R__EXTERN const char gTVHelpMacros[]
R__EXTERN const char gTVHelpEditExpressions[]
R__EXTERN const char gTVHelpAbout[]
R__EXTERN const char gTVHelpDraggingItems[]
R__EXTERN const char gTVHelpUserCommands[]
R__EXTERN const char gTVHelpSession[]
R__EXTERN const char gTVHelpContext[]
R__EXTERN const char gHelpAbout[]
R__EXTERN TApplication * gApplication
const Int_t kDoNotProcess
constexpr Int_t kSysError
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
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 filename
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize id
Option_t Option_t TPoint TPoint const char mode
Option_t Option_t TPoint TPoint percent
static const char * gOpenTypes[]
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
R__EXTERN TSystem * gSystem
static const char * gOpt2D[14]
static const char * gOptgen[16]
static const char * gOpt1D[12]
static const char * gMacroTypes[]
virtual void Terminate(Int_t status=0)
Terminate the application by call TSystem::Exit() unless application has been told to return from Run...
A TTree is a list of TBranches.
TObjArray * GetListOfBranches()
TObjArray * GetListOfLeaves()
const char * AsString() const
Return the date & time as a string (ctime() format).
TObject * Get(const char *namecycle) override
Return pointer to object identified by namecycle.
Describe directory structure in memory.
virtual TFile * GetFile() const
virtual Bool_t cd()
Change current directory to "this" directory.
virtual TTree * GetTree()
Return pointer to friend TTree.
TGDimension GetDefaultSize() const override
std::cout << fWidth << "x" << fHeight << std::endl;
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=nullptr)
Add frame to the composite frame using the specified layout hints.
void MapSubwindows() override
Map all sub windows that are part of the composite frame.
TGCompositeFrame(const TGCompositeFrame &)=delete
char * fFilename
selected file name
const char ** fFileTypes
file types used to filter selectable files
char * fIniDir
on input: initial directory, on output: new directory
void SetIniDir(const char *inidir)
Set directory name.
void Resize(UInt_t w=0, UInt_t h=0) override
Resize the frame.
static Pixel_t GetWhitePixel()
Get white pixel value.
void MapWindow() override
map window
virtual void DeleteWindow()
Delete window.
void * GetUserData() const
void SetUserData(void *userData)
virtual const char * GetText() const =0
TGListTreeItem * GetParent() const
virtual void * GetUserData() const =0
Defines top level windows that interact with the system Window Manager.
TGMainFrame(const TGMainFrame &)=delete
virtual void SendCloseMessage()
Send close message to self.
void SetWindowName(const char *name=nullptr) override
Set window name. This is typically done via the window manager.
TGClient * fClient
Connection to display server.
Pixmap_t GetPicture() const
static TGSelectBox * GetInstance()
Return the pointer to the instantiated singleton.
const char * GetString() const
void SetFrame(TGFrame *frame, Bool_t left) override
Set frame to be resized.
void SetTitle(const char *title) override
Change/set the title.
TObject * FindObject(const char *name) const override
Search object named name in the list of functions.
void Draw(Option_t *option="") override
Draw this histogram with options.
const char * GetName() const override
Returns name of object.
Int_t GetEntries() const override
Return the number of objects in array (i.e.
TObject * At(Int_t idx) const override
TObject * UncheckedAt(Int_t i) const
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual void DoError(int level, const char *location, const char *fmt, va_list va) const
Interface to ErrorHandler (protected).
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
TObject()
TObject constructor.
static const TString & GetBinDir()
Get the binary directory in the installation. Static utility function.
void SetText(const char *helpText)
Set help text from helpText buffer in TGTextView.
void Popup()
Show help dialog.
void Draw(Option_t *options="") override
Draw the spider.
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
const char * Data() const
TString & Remove(Ssiz_t pos)
TString & Append(const char *cs)
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
virtual Int_t Exec(const char *shellcmd)
Execute a command.
virtual const char * UnixPathName(const char *unixpathname)
Convert from a local pathname to a Unix pathname.
virtual const char * GetError()
Return system error string.
This class represent entries that goes into the TreeViewer listview container.
TGItemContext * GetContext()
void SetSmallPic(const TGPicture *spic)
Set small picture.
void SetAlias(const char *alias)
void SetToolTipText(const char *text, Long_t delayms=1000)
Set tool tip text associated with this item.
void SetTrueName(const char *name)
const char * ConvertAliases()
Convert all aliases into true names.
void Empty()
Clear all names and alias.
const char * GetTrueName()
const char * GetName() const override
Returns name of object.
I/O classes for TreeViewer session handling.
Handles synchronous and a-synchronous timer events.
void Reset()
Reset the timer.
A graphic user interface designed to handle ROOT trees and to take advantage of TTree class features.
void SetScanRedirect(bool mode)
TGLabel * fBarLbl2
Label of option text entry.
TGSelectBox * fDialogBox
Expression editor.
void SetCurrentRecord(Long64_t entry)
TGCheckButton * fBarRec
Command recording toggle.
TGHProgressBar * fProgressBar
Progress bar.
bool HandleTimer(TTimer *timer) override
Execute action in response of a timer timing out.
void SetHistogramTitle(const char *title)
void UpdateRecord(const char *name="new name")
TGTextEntry * fBarOption
Histogram drawing option entry.
TGLabel * fBLbl4
Label for input list entry.
TGTextEntry * fBarCommand
User command entry.
TGListView * fListView
ListView with branches and leaves.
TGComboBox * fCombo
Combo box with session records.
TGListTree * fLt
ListTree with file and tree items.
TList * fWidgets
List of widgets to be deleted.
void SetNexpressions(Int_t expr)
TTreeViewer(const char *treeName=nullptr)
TTreeViewer default constructor.
TGCheckButton * fBarH
Checked for drawing current histogram with different graphic option.
TGPictureButton * fBGFirst
void SetUserCode(const char *code, bool autoexec=true)
Cursor_t fDefaultCursor
Default cursor.
void MapOptions(Long_t parm1)
TGLabel * fBLbl5
Label for output list entry.
TGCanvas * fTreeView
ListTree canvas container.
Int_t fTreeIndex
Index of current tree in list.
TGPictureButton * fSTOP
Interrupt current command (not yet)
void SetSession(TTVSession *session)
void SetParentTree(TGListTreeItem *item)
const char * EmptyBrackets(const char *name)
const TGPicture * fPicStop
Pictures for Stop buttons.
void CloseWindow() override
Close and delete main frame.
const TGPicture * fPicY
Pictures for Y expressions.
TGLabel * fLbl2
Label for list view.
TTVLVEntry * ExpressionItem(Int_t index)
Cursor_t fWatchCursor
Watch cursor.
void AppendTree(TTree *tree)
TGTextEntry * fBarListIn
Tree input event list name entry.
void ActivateButtons(bool first, bool previous, bool next, bool last)
TTimer * fTimer
Tree viewer timer.
void MapTree(TTree *tree, TGListTreeItem *parent=nullptr, bool listIt=true)
Long64_t Process(const char *filename, Option_t *option="", Long64_t nentries=TTree::kMaxEntries, Long64_t firstentry=0)
TGCheckButton * fBarScan
Checked for tree scan.
const TGPicture * fPicRefr
Pictures for Refresh buttons ///<ia.
const char * fSourceFile
Name of the C++ source file - default treeviewer.C.
Int_t MakeSelector(const char *selector=nullptr)
bool fCounting
True if timer is counting.
const TGPicture * fPicX
Pictures for X expressions.
bool fScanMode
Flag activated when Scan Box is double-clicked.
void DoError(int level, const char *location, const char *fmt, va_list va) const override
Interface to ErrorHandler (protected).
void SetRecordName(const char *name)
TGPictureButton * fDRAW
DRAW button.
TString fLastOption
Last graphic option.
TList * fTreeList
List of mapped trees.
const char * fFilename
Name of the file containing the tree.
TGTextEntry * fBarHist
Histogram name entry.
TGLayoutHints * fBarLayout
TContextMenu * fContextMenu
Context menu for tree viewer.
TGHorizontalFrame * fHpb
Progress bar frame.
TGPictureButton * fBGNext
Int_t fNexpressions
Number of expression widgets.
void SetTreeName(const char *treeName)
TGVerticalFrame * fV2
List view mother.
void MapBranch(TBranch *branch, const char *prefix="", TGListTreeItem *parent=nullptr, bool listIt=true)
TGLayoutHints * fMenuBarItemLayout
void SaveSource(const char *filename="", Option_t *option="") override
Save the GUI main frame widget in a C++ macro file.
TClass * IsA() const override
TTree * fTree
Selected tree.
TGCompositeFrame * fTreeHdr
Header for list tree.
TGLabel * fBarLbl3
Label of histogram name text entry.
bool fEnableCut
True if cuts are enabled.
bool SwitchTree(Int_t index)
void SetTree(TTree *tree)
bool fVarDraw
True if an item is double-clicked.
TGDoubleVSlider * fSlider
Vertical slider to select processed tree entries;.
TTree * fMappedTree
Listed tree.
TGVerticalFrame * fV1
List tree mother.
void Message(const char *msg) override
void ExecuteCommand(const char *command, bool fast=false)
const TGPicture * fPicDraw
Pictures for Draw buttons.
TGPictureButton * fBGLast
TGPopupMenu * fOptionsMenu
TGLayoutHints * fMenuBarHelpLayout
TGPictureButton * fBGPrevious
TTVLVContainer * fLVContainer
Container for listview.
TGLabel * fLbl1
Label for list tree.
void SetGrOpt(const char *option)
TGPopupMenu * fOptionsGen
TGLayoutHints * fMenuBarLayout
TGLabel * fBarLbl1
Label of command text entry.
TGPictureButton * fREFR
REFRESH button ///<ia.
TGHorizontalFrame * fHf
Main horizontal frame.
const TGPicture * fPicZ
Pictures for Z expressions.
TGHorizontalFrame * fBFrame
Button frame.
TBranch * fMappedBranch
Listed branch.
TTVSession * fSession
Current tree-viewer session.
Int_t fDimension
Histogram dimension.
TGCompositeFrame * fListHdr
Header for list view.
bool fStopMapping
True if branch don't need remapping.
TGTextEntry * fBarListOut
Pree output event list name entry.
TGTextButton * fReset
clear expression's entries
bool ProcessMessage(Longptr_t msg, Longptr_t parm1, Longptr_t parm2) override
TGPictureButton * fBGRecord
void SetScanFileName(const char *name="")
TGStatusBar * fStatusBar
Status bar.
TGTextButton * fSPIDER
SPIDER button.
A TTree represents a columnar dataset.
virtual TObjArray * GetListOfBranches()
__device__ AFloat max(AFloat x, AFloat y)
UInt_t GetListOfMethods(TList &methods, TDirectory *dir=nullptr)
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.