Valeri Fine (BNL, STAR) Whether it is feasible to benefit just from the two best technologies Using the Qt framework to create GUI.

Slides:



Advertisements
Similar presentations
Physicist Interfaces Project an overview Physicist Interfaces Project an overview Jakub T. Moscicki CERN June 2003.
Advertisements

Valeri Fine (BNL, STAR) Qt/QtRoot in STAR and EventDisplay development.
9/28/2005 ROOT 2005 Workshop CERN 1 Qt and ROOT by Valeri Fine STAR Brookhaven National Laboratory.
June ACAT2002, Moscow Cross-Platform Qt-Based Implementation of Low Level GUI Layer of ROOT V.Fine BNL, Upton.
Quicktime Howell Istance School of Computing De Montfort University.
Linux GUI X-Windows System. X-Windows System A stable and extremely powerful GUI system that provides a complete Client/Server framework. The X-org foundation.
Cambodia-India Entrepreneurship Development Centre - : :.... :-:-
QT Intro. 김기형
Cross-platform approach to create the interactive application based on ROOT and Qt GUI libraries Rene Brun (CERN) Valeri Fine (BNL,
Types of software. Sonam Dema..
Oct ROOT 2002, CERN, Geneva Qt-Based Implementation of Low Level ROOT Graphical Layer By V.Fine.
Qt Igor November 8, 2002 Friday’s HENP Group Meeting.
Learning Outcomes At the end of this lesson, students should be able to: State the types of system software – Operating system – Utility system Describe.
A Free sample background from © 2001 By Default!Slide 1.NET Overview BY: Pinkesh Desai.
Linux GUI Chapter 5. Graphical User Interface GUI vs. CLI Easier and more intuitive More popular and advanced Needed for graphics, web browsing Linux.
Linux Operations and Administration
Fundamentals of Networking Discovery 1, Chapter 2 Operating Systems.
V.Fine The STAR “Integrated" Geometry Browser. 12/6/2006 STAR BNL S&C STAR weekly meeting. V.Fine
Evolution of GUI approach, the research and commercial paradigms by V.Fine.
Click to edit Master title style 21 st Nov, 2003 Valeri Fine (BNL) ROOT and ROOT4STAR framework V. Fine or Software for “C++ speaking” people.
Zubanov Alexei, 2006 Aug 07 – Sep 28 QtROOT package extension with Coin3D lib.
Zhonghua Qu and Ovidiu Daescu December 24, 2009 University of Texas at Dallas.
Introduction CIS 136 Building Mobile Apps 1. What is a mobile app? 2  Computer program  Designed for small devices  Smartphones  Tablets  Other handhelds.
Java applet
 Chapter 6 Architecture 1. What is Architecture?  Overall Structure of system  First Stage in Design process 2.
Software Quality Assurance
Remote Access Using Citrix Presentation Server December 6, 2006 Matthew Granger IT665.
1 Planning for Reuse (based on some ideas currently being discussed in LHCb ) m Obstacles to reuse m Process for reuse m Project organisation for reuse.
ACAT 2005 Workshop, May UAL Interactive Analysis Environment Interactive Analysis Environment of Unified Accelerator Libraries V. Fine, N. Malitsky,
Copyright © 2006 by The McGraw-Hill Companies, Inc. All rights reserved. McGraw-Hill Technology Education Copyright © 2006 by The McGraw-Hill Companies,
H.G.Essel: Go4 - J. Adamczewski, M. Al-Turany, D. Bertini, H.G.Essel, S.Linev CHEP 2003 GSI Online Offline Object Oriented Go4.
The Object Model to Construct the Mixed “Open Inventor” / ROOT 3D scenes by Valeri Fine, Jerome Lauret STAR Brookhaven National Laboratory.
Using the Qt to create complex interactive HENP applications at STAR by V.Fine, J.Lauret, V.Perevoztchikov.
. The ideas behind Qt and a live demo Qt in Education.
Franco Carbognani, EGO LSC-Virgo Meeting May 2007 Status and Plans LIGO-G Z Software Management.
GLAST LAT Offline SoftwareCore review, Jan. 17, 2001 Review of the “Core” software: Introduction Environment: THB, Thomas, Ian, Heather Geometry: Joanne.
H.G.Essel: Go4 - J. Adamczewski, M. Al-Turany, D. Bertini, H.G.Essel, S.Linev ROOT 2002 GSI Online Offline Object Oriented Go4.
GUIs Basic Concepts. GUI GUI : Graphical User Interface Window/Frame : a window on the screen Controls/Widgets : GUI components.
ROOT Users Workshop September 2005 Ilka Antcheva GUI Status and Development.
Chapter 1 Basic Concepts of Operating Systems Introduction Software A program is a sequence of instructions that enables the computer to carry.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
A computer contains two major sets of tools, software and hardware. Software is generally divided into Systems software and Applications software. Systems.
Predrag Buncic (CERN/PH-SFT) Software Packaging: Can Virtualization help?
Geant4 User Workshop 15, 2002 Lassi A. Tuura, Northeastern University IGUANA Overview Lassi A. Tuura Northeastern University,
David Adams ATLAS ATLAS Distributed Analysis (ADA) David Adams BNL December 5, 2003 ATLAS software workshop CERN.
CHEP06, Mumbai, India February 2006 General Status of ROOT GUI Ilka Antcheva, Bertrand Bellenot, René Brun, Valeriy Onuchin *, Fons Rademakers CERN,
LCG AA Meeting 30 June 2004 Ilka Antcheva Graphics User Interface in ROOT.
Online Software November 10, 2009 Infrastructure Overview Luciano Orsini, Roland Moser Invited Talk at SuperB ETD-Online Status Review.
OPERATING SYSTEMS (OS) By the end of this lesson you will be able to explain: 1. What an OS is 2. The relationship between the OS & application programs.
LCG AA Meeting 26 April 2006 User Interface Developments in ROOT Ilka Antcheva on behalf of ROOT GUI Work Package.
CHAPTER 2 COMPUTER SOFTWARE. LEARNING OUTCOMES At the end of this class, students should be able to:  Explain the significance of software  Define and.
Fermilab Scientific Computing Division Fermi National Accelerator Laboratory, Batavia, Illinois, USA. Off-the-Shelf Hardware and Software DAQ Performance.
LCG AA Internal Review 30 March 2005 ROOT Graphical User Interface Ilka Antcheva, Bertrand Bellenot, Valeri Fine, Valeriy Onuchin, Fons Rademakers.
APACHE Apache is generally recognized as the world's most popular Web server (HTTP server). Originally designed for Unix servers, the Apache Web server.
1. 2 Qt Toolkit ● C++ toolkit for cross-platform GUI application development – GUI functions (GUI = graphical user interface) – Data access components,
Go4 v2.2 Status & Overview CHEP 2003
CSC227: Operating Systems
QtRoot project status and examples of its use at STAR
Computer Software Digital Literacy.
QT graphical user interface framework
Mobile Application Development with MeeGo™ - Programming with SDK
Qt Programming.
.NET and .NET Core Foot View of .NET Pan Wuming 2017.
Chapter 2: System Structures
Chapter 2: The Linux System Part 1
User Interface Classes Signals / Slots
Outline Chapter 2 (cont) OS Design OS structure
Go4 GUI and GSI's QtROOT interface
Go4 GUI and GSI's QtROOT interface
Presentation transcript:

Valeri Fine (BNL, STAR) Whether it is feasible to benefit just from the two best technologies Using the Qt framework to create GUI for the complex interactive HENP applications

11/22/2004 BNL technology meeting 2 Abstract This talk presents the overview of the main components of the unique technology creating the complex data- analysis and the computer simulation interactive software packages and problem-oriented applications based on Qt and ROOT frameworks. The system has been under development for last 4 years. It is developed mainly within STAR (and at some point it was supported by US Atlas) and it is included in the regular distribution of the ROOT package. The later is a “de facto” standard of the HENP OO frameworks for the modern HENP experiments

11/22/2004 BNL technology meeting 3 Batch and interactive stages GUI is not the first concern of the HENP frameworks. We worry whether we are capable to collect, preserve, re-distribute our hard-earned TBytes. However the final stages of the job are mainly interactive. The very first steps of the data-taking in the “control rooms” are interactive also

11/22/2004 BNL technology meeting 4 Operating system “model” for HENP cross-platform applications “pro” It is not unusual when the life cycle of the major HENP applications last for dozens years. In other words it is much more then the life cycle of any known “system components” like operating system, file system, GUI etc. and hardware as well. To survive the sophisticated and expansive HENP applications must be in possession of some (tiny) layer to separate the HENP applications and the concrete system environment evolvement. It is possible by introducing some sort of the “virtual operating system model” the applications rely on; and providing the implementation of that model as soon as operating environment evolves.

11/22/2004 BNL technology meeting 5 Even though it does allow to prolong the life cycle of the software package that comes for the price. One is still required to learn and maintain the specific pieces of the code for many different platforms, and the different versions of one and the same platform for the entire application life. That sometimes entails the narrowing the number of different platforms the package is available for. On the other hand many features one has to deal with are not application specific. This implies that the good layer can be ''borrowed'' from some third party dedicated packag Operating system “model” for HENP cross-platform applications “cons”

11/22/2004 BNL technology meeting 6 ROOT low level GUI interface TVirtualX TGX11TGWIN32TGWin32GDK ROOT (TG ROOT (TVirtualPad) 3 different implementations to develop and support

11/22/2004 BNL technology meeting 7 Why Qt? The present model has been serving ROOT and ROOT users very well for 9 years soon. On the other hand, most tasks to be performed and implement have no ROOT specific and have been successfully solved by other packages. Qt package from TrollTech AS was especially attractive not only due to its superior quality and high level technical support but because it comes with the source code and tools to build it in place (including a commercial version for Windows). The rich set of Qt documentation can be found on Web and available from the leading publishers as well. Qt is a multi-platform C++ application framework that developers can use to write single-source applications that run-natively-on Windows, Linux, Unix, Mac OS X and embedded Linux. Qt has been used to build thousands of successful commercial applications worldwide, and is the basis of the open source KDE desktop environment.

11/22/2004 BNL technology meeting 8 Why Qt (cont.) Cross platforms Documentation Open Source (including Win32) The “native” development tool integration “Native” GUI (Win32, Mac) integration Free (for x11 and Mac) “non-commercial” for Win32 Microsoft Foundation classes migration Motif migration Embedded platform The review of the more then 100 different GUI packages named Qt “the best GUI packages”

11/22/2004 BNL technology meeting 9 Qt – “softgate” to 3d party applications Qt – rich itself, but there is nothing up with that. All modern GUI system (GDK, MFC, Motif etc) are in possession more/less the same functionality. Qt authors addressed many hot issues and the main one is how to connect the different packages within one application seamlessly?

11/22/2004 BNL technology meeting 10 Qt cornerstones Signal / Slot C++ object communication mechanism OO model: Qt uses the named generic container of the named generic containers. In other words Qt basic OO model is a the tree-like structure These allow significantly simply the 3d- party interactive libraries integration. They made it possible at last!

11/22/2004 BNL technology meeting 11 Why now? Qt and ROOT timeline QtROOT 1994: Trolltech founded in Oslo, Norway 1996: First sale of Qt (to European Space Agency) 1998: Created the KDE Free Qt Foundation 1998: Released Qt/X11 under the QPL 1999: Qt 2 released 1999: Opened Australian office 1999: Received first-round funding 2000: Released Qt/Embedded 2000: Opened US office 2000: Released Qt/X11 under the GPL 2001: First Qtopia adoption (by Sharp Electronics) 2001: Qt 3 released 2002: Teambuilder released 2003: QSA released 2003: Released Qt/Mac under the GPL 2003: Introduces Qt Solutions 2004: Released Qtopia Phone Edition Jan 95: Thinking/writing/rewriting/??? November 95: Public seminar, show Root 0.5 Spring 96: decision to use CINT Jan 97: Root version 1.0 Jan 98: Root version 2.0 – STAR ROOT-based offline framework Mar 99: Root version 2.21/08 (1st Root workshop FNAL) Feb 00: Root version 2.23/12 (2nd Root workshop CERN) Mar 01: Root version 3.00/06 Jun 01: Root version 3.01/05 (3rd Root workshop FNAL) Jan 02: Root version 3.02/07 (LCG project starts: RTAGs) Oct 02: Root version 3.03/09 (4th Root workshop CERN) Dec 03: Root version 3.10/02 (last PRO release) Feb 04: Towards version 4.00 (5th Root workshop SLAC) OT2004/files/brun.ppt OT2004/files/brun.ppt

11/22/2004 BNL technology meeting 12 Approaching Qt Qt “alone” - LHC++ (CERN)LHC++ (CERN) Qt “outside”- GO4 approach (GSI)GO4 approach (GSI) Qt “just inside”- Acat2002 (STAR)Acat2002 (STAR) Qt “side by side”- Qt CINT approach (Masa Goto, HP Japan)Qt CINT approach Qt “deep inside”- Acat2003 (STAR)Acat2003 (STAR) Goals: Immediate man-power conservation – “experiment target” Insure the package long healthy life (25 years?) – “developer target”

11/22/2004 BNL technology meeting 13 LHC++ LHC++ about QT

11/22/2004 BNL technology meeting 14 ROOT Qt-based GUI interface TVirtualX TGQt ROOT only one (!) implementation

11/22/2004 BNL technology meeting 15 ROOT GUI class library and Qt layer The above Qt layer first was present last year on Moscow and has the significant drawback. Event though it solves the problem of combining the ROOT Canvas and Qt widgets within one single application it was not compatible with the ROOT GUI class library and the compatibility with the conventional ROOT development.

TVirtualX TGQt QObject TQtClientFilter TGQt::CreateWindow(…) TGQt::Init(…) QWidget::installEventFilter QFrame TQtClientWidget QWidget QPtrQueue fRootEventQueue TGQt::NextEvent() TGClient::ProcessOneEvent Event_tQEvent Transformation the QEvent Q-object into the ROOT Event_t structure QWidget TQtWidget TGQt::InitWindow(…) method “Clear boxes” show the overloaded methods of the TVirtualX interface Class name “Gray boxes” show the Classes inheritance diagram

11/22/2004 BNL technology meeting 17 ROOT Qt-based GUI interface TVirtualX TGQt ROOT TCanvas/TPad ROOT Gui class library

11/22/2004 BNL technology meeting 18 ROOT vs Qt To run ROOT –Create TApplication –Enter ROOT event loop TApplication::Run To run Qt –Create QApplication –Enter Qt event loop QApplication::exec() This implementation: TApplicationQApplication TApplication::Run() QApplication::exec() Bottom line: No need to deal with QApplication!

11/22/2004 BNL technology meeting 19 Qt Root “Hello Word” 2. QtROOT “Hello Word” source file 1. Qt “Hello Word” source file #include int main( int argc, char **argv ) { QApplication a( argc, argv );// to be replaced QPushButton hello( "Hello world!", 0 ); hello.resize( 100, 30 ); a.setMainWidget( &hello ); // to be removed hello.show(); return a.exec(); // to be replaced } #include int main( int argc, char **argv ) { // Create an interactive ROOT application TRint *theApp = new TRint("Rint", &argc, argv); QPushButton hello( "Hello world!", 0 ); hello.resize( 100, 30 ); hello.show(); theApp->Run(); // and enter the event loop... }

11/22/2004 BNL technology meeting 20 How to make ROOT application Qt- aware Copy the custom version of ".rootrc" file into your working directory".rootrc" Unix: Gui.Backend: qt Gui.Factory: qtgui Plugin.TGuiFactory: qtgui TQtGUIFactory QtGui "TQtGUIFactory()" Gui.Backend: qt Gui.Factory: qt Windows: Gui.Backend: qtwin32 Gui.Factory: qtguiwin32 No correction of the user code!

11/22/2004 BNL technology meeting 21 Additional resource parameters Plugin.TVirtualPadEditor: Ged TQtGedEditor QtGed "TQtGedEditor(TCanvas*)" # GUI specific settings Gui.Style: windows Plugin.TPaletteEditor: * TQtPaletteEditor QtImage "TQtPaletteEditor(TAttImage*,UInt_t,UInt_t)“ Plugin.TImage: * TQtImage QtImage "TQtImage()" Qt-base “Pad” Editor TImage class Qt-based implementation Customize “look and fell”

11/22/2004 BNL technology meeting 22 Benefits One can include Qt-based GUI components and packages into ROOT based applications Coin3D GO4 Qwt QGLViewer

11/22/2004 BNL technology meeting 23 A test application to combine ROOT and Qt Widget

11/22/2004 BNL technology meeting 24 ROOT QtGLWidget A fragment of STAR “Event Display” QtGLViewer class based viewer see: )

11/22/2004 BNL technology meeting 25 High resolution OpenGL pictures (fragment STAR detector at RHIC

11/22/2004 BNL technology meeting 26 Qt-based ROOT geometry browser

11/22/2004 BNL technology meeting 27 STAR reconstructed events It is also possible to use the Coin3D package to visualize ROOT objects STAR Detector with real tracks

11/22/2004 BNL technology meeting 28 How to make Qt application ROOT- aware That’s easy!!! One needs a few standard and well defined by Qt documentation steps, namely: 1.Launch the Qt “designer” 2.Load the TQtWidget.cw file which is a Qt designer definition of the “custom widget” 3.Add the list of ROOT libraries and header file to your Qt project 4.That’s all 5.Use Qt desinger the why Qt prescribes No correction of the Qt documentation

11/22/2004 BNL technology meeting 29 amples/ex1/README wget t.tar.gz" qmake tqrootexample.pro make tqrootexample [-style=windows | platinum | motif ]

11/22/2004 BNL technology meeting 30 How to make ROOT application Qt-aware 1.Install the ROOT with the Qt layer. 2.Use any Qt widgets as prescribed. No need to worry about Qt initilization and qt event loop. ROOT Qt layer takes carre about this. That’s simple nowadays!!!

11/22/2004 BNL technology meeting 31 Where to get Qt-ROOT from?

11/22/2004 BNL technology meeting 32 Qt-ROOT FAQ

11/22/2004 BNL technology meeting 33 How to install

11/22/2004 BNL technology meeting 34 Conclusion There are enough evidences the present approach allows the ROOT developers as well as ROOT users to work with code that has no X11 / WIN32 graphics subsystem dependencies and at the same time opens unrestricted access to a rich set of ready-to-use commercial and free GUI Qt-based widgets and interactive applications. Qt layer is provided as the standard ROOT “plug-in” share library. That allows user to turn the layer on/off at run time with no change of recompilation of the user’s code. At the moment the project consists of two large pieces. The core part called “Root Qt layer” had been adopted by ROOT team and it is included since ROOT release in the standard ROOT CERN distribution and available from ROOT CVS CERN. The second part is a set of the Qt-based application built on the top of the “Qt layer”. It is called “ROOT Qt extensions” and available from BNL CVS repository (provided by Information about progress can be found on BNL Web site:

11/22/2004 BNL technology meeting 35 Qt framework + Qt GUI + ROOT Data-Analysis and Visualization facility = New generation of the powerful interactive applications

11/22/2004 BNL technology meeting 36 References CINT status, Masa Goto Cross-platform approach to create the interactive application based on ROOT and Qt GUI libraries. ROOT in GO4, Joern Adamczewski Cross-platform Qt-based implementation of low level GUI layer of ROOT Cross-platform approach to create the interactive application based on ROOT and Qt GUI libraries Visualization of the ROOT 3D class objects with Open Inventor-like viewers C++ GUI Programming with Qt3