65const char *
filetypes[] = {
"ROOT files",
"*.root",
"All files",
"*",
nullptr,
nullptr};
67const char *
rcfiletypes[] = {
"All files",
"*",
nullptr,
nullptr};
84 void DoRedraw()
override {}
91 virtual void CloseWindow();
94 TH1 *GetHisto()
const {
return fHist; }
95 const char *GetText()
const {
return fText.
Data(); }
97 void SetHisto(
TH1 *hist);
98 void SetText(
const char *
text);
127 void SetLabel(
Int_t col,
const char *label) { fLabels[
col] = label; }
211 void HandleMenu(
Int_t id);
218 void ToggleOrthoRotate();
219 void ToggleOrthoDolly();
236TGHtml *SplitGLView::fgHtml =
nullptr;
256 if ((
cx > 0) && (
cy > 0) && (cw > 0) && (ch > 0)) {
264 Resize(fBgnd->GetWidth(), fBgnd->GetHeight());
268TGShapedToolTip::~TGShapedToolTip()
279void TGShapedToolTip::CloseWindow()
287void TGShapedToolTip::Refresh()
291 const char *str = fText.
Data();
292 char *
string =
strdup(str);
295 char *s =
strtok((
char *)
string,
"\n");
298 while ((s =
strtok(
nullptr,
"\n"))) {
302 img->PaintImage(fId, 0, 0, 0, 0, 0, 0,
"opaque");
319 Resize(fBgnd->GetWidth(), fBgnd->GetHeight());
334 Resize(fBgnd->GetWidth(), fBgnd->GetHeight());
341void TGShapedToolTip::SetHisto(
TH1 *hist)
349 fEc->GetCanvas()->Clear();
353 fEc->GetCanvas()->SetBorderMode(0);
354 fEc->GetCanvas()->SetFillColor(10);
355 fEc->GetCanvas()->cd();
357 fEc->GetCanvas()->Update();
363void TGShapedToolTip::SetText(
const char *
text)
375void TGShapedToolTip::SetTextColor(
const char *
col)
413 fEc->GetCanvas()->SetBorderMode(0);
414 fEc->GetCanvas()->SetFillColor(10);
415 fEc->GetCanvas()->cd();
417 fEc->GetCanvas()->Update();
428 fValues =
new TArrayF[fNFields];
429 for (
int i = 0; i < fNFields; i++)
430 fValues[i].Set(
nvals);
431 fLabels =
new TString[fNFields];
435HtmlObjTable::~HtmlObjTable()
444void HtmlObjTable::Build()
448 fHtml =
"<table width=100% border=1 cellspacing=0 cellpadding=0 bgcolor=f0f0f0> ",
451 if (fExpand && (fNFields > 0) && (
fNValues > 0)) {
460void HtmlObjTable::BuildTitle()
464 fHtml +=
"<tr><td colspan=";
465 fHtml +=
Form(
"%d>", fNFields + 1);
466 fHtml +=
"<table width=100% border=0 cellspacing=2 cellpadding=0 bgcolor=6e6ea0>";
467 fHtml +=
"<tr><td align=left>";
468 fHtml +=
"<font face=Verdana size=3 color=ffffff><b><i>";
470 fHtml +=
"</i></b></font></td>";
472 fHtml +=
"<td align=right> ";
473 fHtml +=
"<font face=Verdana size=3 color=ffffff><b><i>";
475 fHtml +=
"</i></b></font></td></tr>";
477 fHtml +=
"</td></tr>";
481void HtmlObjTable::BuildLabels()
486 fHtml +=
"<tr bgcolor=c0c0ff>";
487 fHtml +=
"<th> </th>";
488 for (i = 0; i < fNFields; i++) {
497void HtmlObjTable::BuildTable()
501 for (
int i = 0; i <
fNValues; i++) {
503 fHtml +=
"<tr bgcolor=e0e0ff>";
505 fHtml +=
"<tr bgcolor=ffffff>";
508 name.ReplaceAll(
" ",
"_");
510 fHtml +=
"<td bgcolor=d0d0ff align=\"center\">";
511 fHtml +=
"<input type=\"checkbox\" name=\"";
513 fHtml +=
Form(
"[%d]\">", i);
516 for (
int j = 0;
j < fNFields;
j++) {
517 fHtml +=
"<td width=";
518 fHtml +=
Form(
"%d%%", 100 / fNFields);
519 fHtml +=
" align=\"center\"";
521 fHtml +=
Form(
"%1.4f", fValues[
j][i]);
529HtmlSummary::HtmlSummary(
const char *title) :
fNTables(0), fTitle(title)
537HtmlSummary::~HtmlSummary()
583void HtmlSummary::Build()
588 for (
int i = 0; i <
fNTables; i++) {
589 GetTable(i)->Build();
590 fHtml += GetTable(i)->Html();
596void HtmlSummary::MakeHeader()
600 fHeader =
"<html><head><title>";
602 fHeader +=
"</title></head><body>";
603 fHeader +=
"<center><h2><font color=#2222ee><i>";
605 fHeader +=
"</i></font></h2></center>";
610void HtmlSummary::MakeFooter()
614 fFooter =
"<br><p><br><center><strong><font size=2 color=#2222ee>";
615 fFooter +=
"Example of using Html widget to display tabular data";
617 fFooter +=
"(c) 2007-2010 Bertrand Bellenot";
618 fFooter +=
"</font></strong></center></body></html>";
636 fMenuFile->AddEntry(
"&Open...",
kFileOpen);
637 fMenuFile->AddSeparator();
639 fMenuFile->AddSeparator();
642 fMenuFile->AddSeparator();
647 fMenuCamera->AddEntry(
"Perspective (Floor XOZ)", kGLPerspXOZ);
648 fMenuCamera->AddEntry(
"Perspective (Floor YOZ)", kGLPerspYOZ);
649 fMenuCamera->AddEntry(
"Perspective (Floor XOY)", kGLPerspXOY);
650 fMenuCamera->AddEntry(
"Orthographic (XOY)", kGLXOY);
651 fMenuCamera->AddEntry(
"Orthographic (XOZ)", kGLXOZ);
652 fMenuCamera->AddEntry(
"Orthographic (ZOY)", kGLZOY);
654 fMenuCamera->AddEntry(
"Ortho allow rotate", kGLOrthoRotate);
655 fMenuCamera->AddEntry(
"Ortho allow dolly", kGLOrthoDolly);
675 fMenuFile->Connect(
"Activated(Int_t)",
"SplitGLView",
this,
"HandleMenu(Int_t)");
676 fMenuCamera->Connect(
"Activated(Int_t)",
"SplitGLView",
this,
"HandleMenu(Int_t)");
677 fMenuScene->Connect(
"Activated(Int_t)",
"SplitGLView",
this,
"HandleMenu(Int_t)");
678 fMenuHelp->Connect(
"Activated(Int_t)",
"SplitGLView",
this,
"HandleMenu(Int_t)");
687 fStatusBar->SetParts(
parts, 4);
693 fPad->SetFillColor(
kBlack);
702 fSplitFrame->GetSecond()->GetSecond()->VSplit(266);
707 frm->SetName(
"Main_View");
712 but1->Connect(
"Clicked(TGLViewerBase*)",
"SplitGLView",
this,
"SwapToMainView(TGLViewerBase*)");
714 but2->Connect(
"Clicked(TGLViewerBase*)",
"SplitGLView",
this,
"UnDock(TGLViewerBase*)");
719 fViewer0->Connect(
"MouseOver(TGLPhysicalShape*)",
"SplitGLView",
this,
"OnMouseOver(TGLPhysicalShape*)");
720 fViewer0->Connect(
"Activated()",
"SplitGLView",
this,
"OnViewerActivated()");
721 fViewer0->Connect(
"MouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)",
"SplitGLView",
this,
722 "OnMouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)");
723 fViewer0->Connect(
"Clicked(TObject*)",
"SplitGLView",
this,
"OnClicked(TObject*)");
724 fViewer[0] =
new TEveViewer(
"SplitGLViewer[0]");
726 fViewer[0]->IncDenyDestroy();
742 frm->SetName(
"Bottom_Left");
747 but3->Connect(
"Clicked(TGLViewerBase*)",
"SplitGLView",
this,
"SwapToMainView(TGLViewerBase*)");
749 but4->Connect(
"Clicked(TGLViewerBase*)",
"SplitGLView",
this,
"UnDock(TGLViewerBase*)");
755 fViewer1->Connect(
"MouseOver(TGLPhysicalShape*)",
"SplitGLView",
this,
"OnMouseOver(TGLPhysicalShape*)");
756 fViewer1->Connect(
"Activated()",
"SplitGLView",
this,
"OnViewerActivated()");
757 fViewer1->Connect(
"MouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)",
"SplitGLView",
this,
758 "OnMouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)");
759 fViewer1->Connect(
"Clicked(TObject*)",
"SplitGLView",
this,
"OnClicked(TObject*)");
760 fViewer[1] =
new TEveViewer(
"SplitGLViewer[1]");
762 fViewer[1]->IncDenyDestroy();
766 fViewer[1]->AddScene(s);
781 frm->SetName(
"Bottom_Center");
786 but5->Connect(
"Clicked(TGLViewerBase*)",
"SplitGLView",
this,
"SwapToMainView(TGLViewerBase*)");
788 but6->Connect(
"Clicked(TGLViewerBase*)",
"SplitGLView",
this,
"UnDock(TGLViewerBase*)");
794 fViewer2->Connect(
"MouseOver(TGLPhysicalShape*)",
"SplitGLView",
this,
"OnMouseOver(TGLPhysicalShape*)");
795 fViewer2->Connect(
"Activated()",
"SplitGLView",
this,
"OnViewerActivated()");
796 fViewer2->Connect(
"MouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)",
"SplitGLView",
this,
797 "OnMouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)");
798 fViewer2->Connect(
"Clicked(TObject*)",
"SplitGLView",
this,
"OnClicked(TObject*)");
799 fViewer[2] =
new TEveViewer(
"SplitGLViewer[2]");
801 fViewer[2]->IncDenyDestroy();
805 fViewer[2]->AddScene(s);
812 frm->SetName(
"Bottom_Right");
819 button->SetToolTipText(
"Swap to big view");
821 button->Connect(
"Clicked()",
"SplitGLView",
this,
"SwapToMainView(TGLViewerBase*=0)");
830 "ItemClicked(TGListTreeItem*, Int_t, Int_t, Int_t)");
834 Resize(GetDefaultSize());
841SplitGLView::~SplitGLView()
846 fMenuFile->Disconnect(
"Activated(Int_t)",
this,
"HandleMenu(Int_t)");
847 fMenuCamera->Disconnect(
"Activated(Int_t)",
this,
"HandleMenu(Int_t)");
848 fMenuScene->Disconnect(
"Activated(Int_t)",
this,
"HandleMenu(Int_t)");
849 fMenuHelp->Disconnect(
"Activated(Int_t)",
this,
"HandleMenu(Int_t)");
850 fViewer0->Disconnect(
"MouseOver(TGLPhysicalShape*)",
this,
"OnMouseOver(TGLPhysicalShape*)");
851 fViewer0->Disconnect(
"Activated()",
this,
"OnViewerActivated()");
852 fViewer0->Disconnect(
"MouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)",
this,
853 "OnMouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)");
854 fViewer1->Disconnect(
"MouseOver(TGLPhysicalShape*)",
this,
"OnMouseOver(TGLPhysicalShape*)");
855 fViewer1->Disconnect(
"Activated()",
this,
"OnViewerActivated()");
856 fViewer1->Disconnect(
"MouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)",
this,
857 "OnMouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)");
858 fViewer2->Disconnect(
"MouseOver(TGLPhysicalShape*)",
this,
"OnMouseOver(TGLPhysicalShape*)");
859 fViewer2->Disconnect(
"Activated()",
this,
"OnViewerActivated()");
860 fViewer2->Disconnect(
"MouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)",
this,
861 "OnMouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)");
886void SplitGLView::HandleMenu(
Int_t id)
958 case kGLOrthoRotate: ToggleOrthoRotate();
break;
959 case kGLOrthoDolly: ToggleOrthoDolly();
break;
998void SplitGLView::OnClicked(
TObject *obj)
1003 fStatusBar->SetText(
Form(
"User clicked on: \"%s\"", obj->
GetName()), 1);
1005 fStatusBar->SetText(
"", 1);
1020 TF1 *
sqroot =
new TF1(
"sqroot",
"x*gaus(0) + [3]*form1", 0, 10);
1021 sqroot->SetParameters(10, 4, 1, 20);
1023 h1f =
new TH1F(
"h1f",
"", 50, 0, 10);
1025 h1f->SetFillColor(45);
1026 h1f->SetStats(
false);
1027 h1f->FillRandom(
"sqroot", 200);
1042 Form(
"%s\n \n%s", shape->
GetLogical()->GetExternal()->IsA()->GetName(),
1043 shape->
GetLogical()->GetExternal()->GetName()),
1057 fStatusBar->SetText(
Form(
"Mouse Over: \"%s\"", shape->
GetLogical()->GetExternal()->GetName()), 0);
1059 fStatusBar->SetText(
"", 0);
1063void SplitGLView::OnViewerActivated()
1071 fActViewer->GetFrame()->ChangeBackground(GetDefaultFrameBackground());
1078 printf(
"dyncast failed ...\n");
1091 if (
fActViewer->GetOrthoXOYCamera()->GetDollyToZoom() &&
fActViewer->GetOrthoXOZCamera()->GetDollyToZoom() &&
1092 fActViewer->GetOrthoZOYCamera()->GetDollyToZoom())
1097 if (
fActViewer->GetOrthoXOYCamera()->GetEnableRotate() &&
fActViewer->GetOrthoXOYCamera()->GetEnableRotate() &&
1098 fActViewer->GetOrthoXOYCamera()->GetEnableRotate())
1105void SplitGLView::OpenFile(
const char *
fname)
1124 fPad->GetListOfPrimitives()->Delete();
1134void SplitGLView::ToggleOrthoRotate()
1144 fActViewer->GetOrthoXOYCamera()->SetEnableRotate(state);
1145 fActViewer->GetOrthoXOYCamera()->SetEnableRotate(state);
1146 fActViewer->GetOrthoXOYCamera()->SetEnableRotate(state);
1151void SplitGLView::ToggleOrthoDolly()
1161 fActViewer->GetOrthoXOYCamera()->SetDollyToZoom(state);
1162 fActViewer->GetOrthoXOZCamera()->SetDollyToZoom(state);
1163 fActViewer->GetOrthoZOYCamera()->SetDollyToZoom(state);
1180 if (
v->InheritsFrom(
"TGLEmbeddedViewer")) {
1182 gVirtualX->SetInputFocus(
ev->GetGLWidget()->GetId());
1188void SplitGLView::LoadConfig(
const char *
fname)
1236void SplitGLView::SaveConfig(
const char *
fname)
1250 env->SetValue(
"MainView.Height", (
Int_t)
frm->GetHeight());
1253 env->SetValue(
"Bottom.Left.Width", (
Int_t)
frm->GetWidth());
1256 env->SetValue(
"Bottom.Center.Width", (
Int_t)
frm->GetWidth());
1259 env->SetValue(
"Bottom.Right.Width", (
Int_t)
frm->GetWidth());
1290 while (parent && !parent->
InheritsFrom(
"TGSplitFrame")) {
1321void SplitGLView::UpdateSummary()
1333 for (i =
mgr->BeginChildren(); i !=
mgr->EndChildren(); ++i) {
1350 table->SetLabel(0,
"Momentum");
1351 table->SetLabel(1,
"P_t");
1352 table->SetLabel(2,
"Phi");
1353 table->SetLabel(3,
"Theta");
1354 table->SetLabel(4,
"Eta");
1358 table->SetValue(0, k,
p);
1360 table->SetValue(1, k,
pt);
1362 table->SetValue(2, k, phi);
1364 table->SetValue(3, k, theta);
1366 table->SetValue(4, k, eta);
1381 printf(
"This script is used via ACLiC by the macro \"alice_esd_split.C\"\n");
1382 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
bool Bool_t
Boolean (0=false, 1=true) (bool)
int Int_t
Signed integer 4 bytes (int)
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int)
float Float_t
Float 4 bytes (float)
constexpr Ssiz_t kNPOS
The equivalent of std::string::npos for the ROOT class TString.
const char Option_t
Option string (const char)
#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
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.
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.
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(const TGeoColorScheme *cs=nullptr)
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".
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.
RVec< PromoteType< T > > exp(const RVec< T > &v)
TFile * OpenFile(const TString &fin)