66const char *
filetypes[] = {
"ROOT files",
"*.root",
"All files",
"*",
nullptr,
nullptr};
68const char *
rcfiletypes[] = {
"All files",
"*",
nullptr,
nullptr};
85 void DoRedraw()
override {}
89 Int_t ty = 0,
Int_t th = 0,
const char *col =
"#ffffff");
92 virtual void CloseWindow();
95 TH1 *GetHisto()
const {
return fHist; }
96 const char *GetText()
const {
return fText.
Data(); }
98 void SetHisto(
TH1 *hist);
99 void SetText(
const char *
text);
128 void SetLabel(
Int_t col,
const char *label) { fLabels[col] = label; }
212 void HandleMenu(
Int_t id);
219 void ToggleOrthoRotate();
220 void ToggleOrthoDolly();
238TGHtml *SplitGLView::fgHtml =
nullptr;
242 Int_t th,
const char *col)
258 if ((
cx > 0) && (
cy > 0) && (cw > 0) && (ch > 0)) {
266 Resize(fBgnd->GetWidth(), fBgnd->GetHeight());
270TGShapedToolTip::~TGShapedToolTip()
281void TGShapedToolTip::CloseWindow()
289void TGShapedToolTip::Refresh()
293 const char *str = fText.
Data();
294 char *
string =
strdup(str);
297 char *s =
strtok((
char *)
string,
"\n");
300 while ((s =
strtok(
nullptr,
"\n"))) {
304 img->PaintImage(fId, 0, 0, 0, 0, 0, 0,
"opaque");
321 Resize(fBgnd->GetWidth(), fBgnd->GetHeight());
336 Resize(fBgnd->GetWidth(), fBgnd->GetHeight());
343void TGShapedToolTip::SetHisto(
TH1 *hist)
351 fEc->GetCanvas()->Clear();
355 fEc->GetCanvas()->SetBorderMode(0);
356 fEc->GetCanvas()->SetFillColor(10);
357 fEc->GetCanvas()->cd();
359 fEc->GetCanvas()->Update();
365void TGShapedToolTip::SetText(
const char *
text)
377void TGShapedToolTip::SetTextColor(
const char *col)
415 fEc->GetCanvas()->SetBorderMode(0);
416 fEc->GetCanvas()->SetFillColor(10);
417 fEc->GetCanvas()->cd();
419 fEc->GetCanvas()->Update();
430 fValues =
new TArrayF[fNFields];
431 for (
int i = 0; i < fNFields; i++)
432 fValues[i].Set(
nvals);
433 fLabels =
new TString[fNFields];
437HtmlObjTable::~HtmlObjTable()
446void HtmlObjTable::Build()
450 fHtml =
"<table width=100% border=1 cellspacing=0 cellpadding=0 bgcolor=f0f0f0> ",
453 if (fExpand && (fNFields > 0) && (
fNValues > 0)) {
462void HtmlObjTable::BuildTitle()
466 fHtml +=
"<tr><td colspan=";
467 fHtml +=
Form(
"%d>", fNFields + 1);
468 fHtml +=
"<table width=100% border=0 cellspacing=2 cellpadding=0 bgcolor=6e6ea0>";
469 fHtml +=
"<tr><td align=left>";
470 fHtml +=
"<font face=Verdana size=3 color=ffffff><b><i>";
472 fHtml +=
"</i></b></font></td>";
474 fHtml +=
"<td align=right> ";
475 fHtml +=
"<font face=Verdana size=3 color=ffffff><b><i>";
477 fHtml +=
"</i></b></font></td></tr>";
479 fHtml +=
"</td></tr>";
483void HtmlObjTable::BuildLabels()
488 fHtml +=
"<tr bgcolor=c0c0ff>";
489 fHtml +=
"<th> </th>";
490 for (i = 0; i < fNFields; i++) {
499void HtmlObjTable::BuildTable()
503 for (
int i = 0; i <
fNValues; i++) {
505 fHtml +=
"<tr bgcolor=e0e0ff>";
507 fHtml +=
"<tr bgcolor=ffffff>";
510 name.ReplaceAll(
" ",
"_");
512 fHtml +=
"<td bgcolor=d0d0ff align=\"center\">";
513 fHtml +=
"<input type=\"checkbox\" name=\"";
515 fHtml +=
Form(
"[%d]\">", i);
518 for (
int j = 0;
j < fNFields;
j++) {
519 fHtml +=
"<td width=";
520 fHtml +=
Form(
"%d%%", 100 / fNFields);
521 fHtml +=
" align=\"center\"";
523 fHtml +=
Form(
"%1.4f", fValues[
j][i]);
531HtmlSummary::HtmlSummary(
const char *title) :
fNTables(0), fTitle(title)
539HtmlSummary::~HtmlSummary()
563void HtmlSummary::Clear(
Option_t *option)
567 if (option && option[0] ==
'D')
585void HtmlSummary::Build()
590 for (
int i = 0; i <
fNTables; i++) {
591 GetTable(i)->Build();
592 fHtml += GetTable(i)->Html();
598void HtmlSummary::MakeHeader()
602 fHeader =
"<html><head><title>";
604 fHeader +=
"</title></head><body>";
605 fHeader +=
"<center><h2><font color=#2222ee><i>";
607 fHeader +=
"</i></font></h2></center>";
612void HtmlSummary::MakeFooter()
616 fFooter =
"<br><p><br><center><strong><font size=2 color=#2222ee>";
617 fFooter +=
"Example of using Html widget to display tabular data";
619 fFooter +=
"(c) 2007-2010 Bertrand Bellenot";
620 fFooter +=
"</font></strong></center></body></html>";
638 fMenuFile->AddEntry(
"&Open...",
kFileOpen);
639 fMenuFile->AddSeparator();
641 fMenuFile->AddSeparator();
644 fMenuFile->AddSeparator();
649 fMenuCamera->AddEntry(
"Perspective (Floor XOZ)", kGLPerspXOZ);
650 fMenuCamera->AddEntry(
"Perspective (Floor YOZ)", kGLPerspYOZ);
651 fMenuCamera->AddEntry(
"Perspective (Floor XOY)", kGLPerspXOY);
652 fMenuCamera->AddEntry(
"Orthographic (XOY)", kGLXOY);
653 fMenuCamera->AddEntry(
"Orthographic (XOZ)", kGLXOZ);
654 fMenuCamera->AddEntry(
"Orthographic (ZOY)", kGLZOY);
656 fMenuCamera->AddEntry(
"Ortho allow rotate", kGLOrthoRotate);
657 fMenuCamera->AddEntry(
"Ortho allow dolly", kGLOrthoDolly);
677 fMenuFile->Connect(
"Activated(Int_t)",
"SplitGLView",
this,
"HandleMenu(Int_t)");
678 fMenuCamera->Connect(
"Activated(Int_t)",
"SplitGLView",
this,
"HandleMenu(Int_t)");
679 fMenuScene->Connect(
"Activated(Int_t)",
"SplitGLView",
this,
"HandleMenu(Int_t)");
680 fMenuHelp->Connect(
"Activated(Int_t)",
"SplitGLView",
this,
"HandleMenu(Int_t)");
689 fStatusBar->SetParts(
parts, 4);
695 fPad->SetFillColor(
kBlack);
704 fSplitFrame->GetSecond()->GetSecond()->VSplit(266);
709 frm->SetName(
"Main_View");
714 but1->Connect(
"Clicked(TGLViewerBase*)",
"SplitGLView",
this,
"SwapToMainView(TGLViewerBase*)");
716 but2->Connect(
"Clicked(TGLViewerBase*)",
"SplitGLView",
this,
"UnDock(TGLViewerBase*)");
721 fViewer0->Connect(
"MouseOver(TGLPhysicalShape*)",
"SplitGLView",
this,
"OnMouseOver(TGLPhysicalShape*)");
722 fViewer0->Connect(
"Activated()",
"SplitGLView",
this,
"OnViewerActivated()");
723 fViewer0->Connect(
"MouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)",
"SplitGLView",
this,
724 "OnMouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)");
725 fViewer0->Connect(
"Clicked(TObject*)",
"SplitGLView",
this,
"OnClicked(TObject*)");
726 fViewer[0] =
new TEveViewer(
"SplitGLViewer[0]");
728 fViewer[0]->IncDenyDestroy();
744 frm->SetName(
"Bottom_Left");
749 but3->Connect(
"Clicked(TGLViewerBase*)",
"SplitGLView",
this,
"SwapToMainView(TGLViewerBase*)");
751 but4->Connect(
"Clicked(TGLViewerBase*)",
"SplitGLView",
this,
"UnDock(TGLViewerBase*)");
757 fViewer1->Connect(
"MouseOver(TGLPhysicalShape*)",
"SplitGLView",
this,
"OnMouseOver(TGLPhysicalShape*)");
758 fViewer1->Connect(
"Activated()",
"SplitGLView",
this,
"OnViewerActivated()");
759 fViewer1->Connect(
"MouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)",
"SplitGLView",
this,
760 "OnMouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)");
761 fViewer1->Connect(
"Clicked(TObject*)",
"SplitGLView",
this,
"OnClicked(TObject*)");
762 fViewer[1] =
new TEveViewer(
"SplitGLViewer[1]");
764 fViewer[1]->IncDenyDestroy();
768 fViewer[1]->AddScene(s);
783 frm->SetName(
"Bottom_Center");
788 but5->Connect(
"Clicked(TGLViewerBase*)",
"SplitGLView",
this,
"SwapToMainView(TGLViewerBase*)");
790 but6->Connect(
"Clicked(TGLViewerBase*)",
"SplitGLView",
this,
"UnDock(TGLViewerBase*)");
796 fViewer2->Connect(
"MouseOver(TGLPhysicalShape*)",
"SplitGLView",
this,
"OnMouseOver(TGLPhysicalShape*)");
797 fViewer2->Connect(
"Activated()",
"SplitGLView",
this,
"OnViewerActivated()");
798 fViewer2->Connect(
"MouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)",
"SplitGLView",
this,
799 "OnMouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)");
800 fViewer2->Connect(
"Clicked(TObject*)",
"SplitGLView",
this,
"OnClicked(TObject*)");
801 fViewer[2] =
new TEveViewer(
"SplitGLViewer[2]");
803 fViewer[2]->IncDenyDestroy();
807 fViewer[2]->AddScene(s);
814 frm->SetName(
"Bottom_Right");
821 button->SetToolTipText(
"Swap to big view");
823 button->Connect(
"Clicked()",
"SplitGLView",
this,
"SwapToMainView(TGLViewerBase*=0)");
832 "ItemClicked(TGListTreeItem*, Int_t, Int_t, Int_t)");
836 Resize(GetDefaultSize());
843SplitGLView::~SplitGLView()
848 fMenuFile->Disconnect(
"Activated(Int_t)",
this,
"HandleMenu(Int_t)");
849 fMenuCamera->Disconnect(
"Activated(Int_t)",
this,
"HandleMenu(Int_t)");
850 fMenuScene->Disconnect(
"Activated(Int_t)",
this,
"HandleMenu(Int_t)");
851 fMenuHelp->Disconnect(
"Activated(Int_t)",
this,
"HandleMenu(Int_t)");
852 fViewer0->Disconnect(
"MouseOver(TGLPhysicalShape*)",
this,
"OnMouseOver(TGLPhysicalShape*)");
853 fViewer0->Disconnect(
"Activated()",
this,
"OnViewerActivated()");
854 fViewer0->Disconnect(
"MouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)",
this,
855 "OnMouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)");
856 fViewer1->Disconnect(
"MouseOver(TGLPhysicalShape*)",
this,
"OnMouseOver(TGLPhysicalShape*)");
857 fViewer1->Disconnect(
"Activated()",
this,
"OnViewerActivated()");
858 fViewer1->Disconnect(
"MouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)",
this,
859 "OnMouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)");
860 fViewer2->Disconnect(
"MouseOver(TGLPhysicalShape*)",
this,
"OnMouseOver(TGLPhysicalShape*)");
861 fViewer2->Disconnect(
"Activated()",
this,
"OnViewerActivated()");
862 fViewer2->Disconnect(
"MouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)",
this,
863 "OnMouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)");
888void SplitGLView::HandleMenu(
Int_t id)
960 case kGLOrthoRotate: ToggleOrthoRotate();
break;
961 case kGLOrthoDolly: ToggleOrthoDolly();
break;
1000void SplitGLView::OnClicked(
TObject *obj)
1005 fStatusBar->SetText(
Form(
"User clicked on: \"%s\"", obj->
GetName()), 1);
1007 fStatusBar->SetText(
"", 1);
1022 TF1 *
sqroot =
new TF1(
"sqroot",
"x*gaus(0) + [3]*form1", 0, 10);
1023 sqroot->SetParameters(10, 4, 1, 20);
1025 h1f =
new TH1F(
"h1f",
"", 50, 0, 10);
1027 h1f->SetFillColor(45);
1028 h1f->SetStats(
false);
1029 h1f->FillRandom(
"sqroot", 200);
1044 Form(
"%s\n \n%s", shape->
GetLogical()->GetExternal()->IsA()->GetName(),
1045 shape->
GetLogical()->GetExternal()->GetName()),
1059 fStatusBar->SetText(
Form(
"Mouse Over: \"%s\"", shape->
GetLogical()->GetExternal()->GetName()), 0);
1061 fStatusBar->SetText(
"", 0);
1065void SplitGLView::OnViewerActivated()
1073 fActViewer->GetFrame()->ChangeBackground(GetDefaultFrameBackground());
1080 printf(
"dyncast failed ...\n");
1093 if (
fActViewer->GetOrthoXOYCamera()->GetDollyToZoom() &&
fActViewer->GetOrthoXOZCamera()->GetDollyToZoom() &&
1094 fActViewer->GetOrthoZOYCamera()->GetDollyToZoom())
1099 if (
fActViewer->GetOrthoXOYCamera()->GetEnableRotate() &&
fActViewer->GetOrthoXOYCamera()->GetEnableRotate() &&
1100 fActViewer->GetOrthoXOYCamera()->GetEnableRotate())
1107void SplitGLView::OpenFile(
const char *
fname)
1126 fPad->GetListOfPrimitives()->Delete();
1136void SplitGLView::ToggleOrthoRotate()
1146 fActViewer->GetOrthoXOYCamera()->SetEnableRotate(state);
1147 fActViewer->GetOrthoXOYCamera()->SetEnableRotate(state);
1148 fActViewer->GetOrthoXOYCamera()->SetEnableRotate(state);
1153void SplitGLView::ToggleOrthoDolly()
1163 fActViewer->GetOrthoXOYCamera()->SetDollyToZoom(state);
1164 fActViewer->GetOrthoXOZCamera()->SetDollyToZoom(state);
1165 fActViewer->GetOrthoZOYCamera()->SetDollyToZoom(state);
1182 if (
v->InheritsFrom(
"TGLEmbeddedViewer")) {
1184 gVirtualX->SetInputFocus(
ev->GetGLWidget()->GetId());
1190void SplitGLView::LoadConfig(
const char *
fname)
1238void SplitGLView::SaveConfig(
const char *
fname)
1292 while (parent && !parent->
InheritsFrom(
"TGSplitFrame")) {
1323void SplitGLView::UpdateSummary()
1335 for (i =
mgr->BeginChildren(); i !=
mgr->EndChildren(); ++i) {
1352 table->SetLabel(0,
"Momentum");
1353 table->SetLabel(1,
"P_t");
1354 table->SetLabel(2,
"Phi");
1355 table->SetLabel(3,
"Theta");
1356 table->SetLabel(4,
"Eta");
1360 table->SetValue(0, k,
p);
1362 table->SetValue(1, k,
pt);
1364 table->SetValue(2, k, phi);
1366 table->SetValue(3, k, theta);
1368 table->SetValue(4, k, eta);
1383 printf(
"This script is used via ACLiC by the macro \"alice_esd_split.C\"\n");
1384 printf(
"To see it in action, just run \".x alice_esd_split.C\"\n");
Handle_t Window_t
Window handle.
ULong_t Pixel_t
Pixel value.
R__EXTERN const char gHelpAbout[]
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
#define ClassDef(name, id)
#define ClassDefOverride(name, id)
R__EXTERN TApplication * gApplication
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
R__EXTERN TEveManager * gEve
winID h TVirtualViewer3D TVirtualGLPainter p
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 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 sel
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize MapSubwindows
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t src
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t height
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t button
Option_t Option_t TPoint TPoint const char text
R__EXTERN TGeoManager * gGeoManager
R__EXTERN void * gTQSender
Binding & operator=(OUT(*fun)(void))
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
R__EXTERN TSystem * gSystem
virtual void Terminate(Int_t status=0)
Terminate the application by call TSystem::Exit() unless application has been told to return from Run...
Array of floats (32 bits per element).
void SetAt(Double_t v, Int_t i) override
The TEnv class reads config files, by default named .rootrc.
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
virtual void SetValue(const char *name, const char *value, EEnvLevel level=kEnvChange, const char *type=nullptr)
Set the value of a resource or create a new resource.
virtual void SaveLevel(EEnvLevel level)
Write the resource file for a certain level.
void EveMenu(Int_t id)
Handle events from Eve menu.
Base class for TEveUtil visualization elements, providing hierarchy management, rendering control and...
virtual void AddElement(TEveElement *el)
Add el to the list of children.
Base class for event management and navigation.
Exception class thrown by TEve classes and macros.
TGListTree * GetListTree() const
Get default list-tree widget.
TEveViewerList * GetViewers() const
TEveSelection * GetSelection() const
TEveScene * GetGlobalScene() const
TEveBrowser * GetBrowser() const
TGListTreeItem * AddToListTree(TEveElement *re, Bool_t open, TGListTree *lt=nullptr)
TEveScene * SpawnNewScene(const char *name, const char *title="")
Create a new scene.
TEveSelection * GetHighlight() const
TEveScene * GetEventScene() const
TEveEventManager * GetCurrentEvent() const
This was intended as a TPad wrapper to allow smart updates of groups of pads.
TEvePointSet is a render-element holding a collection of 3D points with optional per-point TRef and a...
const char * GetElementTitle() const override
Virtual function for retrieving title of the render-element.
const char * GetElementName() const override
Virtual function for retrieving name of the element.
Axes for non-linear projections.
Manager class for steering of projections and managing projected objects.
Eve representation of TGLScene.
Int_t GetPickToSelect() const
A list of tracks supporting change of common attributes and selection based on track parameters.
Visual representation of a track.
void AddElement(TEveElement *el) override
Call base-class implementation.
Eve representation of TGLViewer.
The base class for composite widgets (menu bars, list boxes, etc.).
A frame with handles that allow it to be undocked (i.e.
This class creates a file selection dialog.
void Resize(UInt_t w=0, UInt_t h=0) override
Resize the frame.
A composite frame that layout their children in horizontal way.
Minimal GL-viewer that can be embedded in a standard ROOT frames.
Concrete physical shape - a GL drawable.
const TGLLogicalShape * GetLogical() const
Base class for GL viewers.
Base GL viewer object - used by both standalone and embedded (in pad) GL.
This class describes layout hints used by the layout classes.
virtual void * GetUserData() const =0
Defines top level windows that interact with the system Window Manager.
Provides a StatusBar widget.
ROOT GUI Window base class.
const TGWindow * GetParent() const
static TGeoManager * Import(const char *filename, const char *name="", Option_t *option="")
static function Import a geometry from a gdml or ROOT file
void DefaultColors()
Set default volume colors according to A of material.
TGeoVolume * GetTopVolume() const
1-D histogram with a float per channel (see TH1 documentation)
TH1 is the base class of all histogram classes in ROOT.
void Draw(Option_t *option="") override
Draw this histogram with options.
TObject * Clone(const char *newname="") const override
Make a complete copy of the underlying object.
An abstract interface to image processing library.
Mother of all ROOT objects.
virtual const char * GetName() const
Returns name of object.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
This is the ROOT implementation of the Qt object communication mechanism (see also http://www....
Bool_t Connect(const char *signal, const char *receiver_class, void *receiver, const char *slot)
Non-static method is used to connect from the signal of this object to the receiver slot.
static const TString & GetBinDir()
Get the binary directory in the installation. Static utility function.
TGTab * GetTabBottom() const
TGStatusBar * GetStatusBar() const
TGTab * GetTabRight() const
This class creates a TGCanvas in which a TCanvas is created.
A TRootHelpDialog is used to display help text (or any text in a dialog window).
void ToLower()
Change string to lower-case.
const char * Data() const
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
virtual Int_t Exec(const char *shellcmd)
Execute a command.
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
virtual int Rename(const char *from, const char *to)
Rename a file.
TFile * OpenFile(const TString &fin)