This report discusses the investigation done by Joy Kyriakopulos and Philippe Canal for the Run II Physics Analysis Software Recommendations Group (PASSREC) on the following aspects of the ROOT Physics Analysis System:
The major portion of this report concerns the GUI. The last two topics will be be discussed in the last section of this report.
ROOT has been an aggressive project for its limited number of developers. ROOT contains some very impressive functionality, and some of it is readily useable and integrated nicely. Yet, it is our opinion that ROOT's GUI and visualization functionality still needs careful attention, enhancement, and some redesign.
We have categorized the areas of concern for the ROOT GUI as follows:
Some of the functionality that is available in the GUI is hard to find. For example, we could not find a GUI window for files or Ntuples that displays what items are in a file or the variables in an Ntuple and allows the user to select items or variables and the kind of plot to generate. After asking Rene he showed us how the TBrowser class (available from a canvas menu) has most of these features in it, but we had to look at the bottom of the TBrowser file folder list to see the file folder and know to click on it to open it. Also, the meaning of some buttons and other GUI adornments are either confusing or a complete mystery (e.g. "gStyle" button).
It is possible to add features and menu items to the GUI through macros while you're running. This is a way for users to customize their GUI and make it easier for them to do things they want readily accessible.
As it stands today, the GUI would be usable for experienced users who have their set of CINT macros at hand and know their way around if #3 and #5 above were solved.
** NOTE **
The ROOT GUI most probably will be a moving target for at least two reasons. First of all, Rene has mentioned the that they have reworked the implementation of the look and feel. They admit that how the panels are put togther in the GUI still could benefit from major enhancement. (He is hoping a co-author of PAW++ will be transferred to the ROOT team to free himself and Fons to work on other things besides the GUI.) Secondly, as more functionality is implemented into the ROOT system, most of these new features will require changes or additions to the graphical user interface. For these two reasons it will be very difficult to estimate the work that will be required for ROOT's GUI. Therefore a closer collaboration between ROOT and Fermilab on the ROOT GUI deserves consideration as a possible best plan of action. Rene welcomes this and has told us that he would like to see one person at CERN and one from Fermilab working closely together with clearly defined functional responsibilities set aside for each developer. Since Rene knows ROOT better than we do, his estimation of the amount of work that could/should be done with the GUI should be considered.
First, Fermilab needs to come to some agreement with Rene about what direction the GUI will take, and which parts will be done by CERN and which by Fermilab. It is probably too being too hasty for Fermilab to decide this today without further discussions of collaboration.
Therefore the assumptions we used in listing our recommendations below is that of making the ROOT GUI useable, not perfect or even wonderful. GUI's generally can take up great amounts of time in up-front design and polishing the implementation based on user experiments and user input. But there is much grey area between barely usable and perfect, and for these recommendations we have taken the approach of defining usability as having the following attributes: fairly intuitive to use, online help to guide the user (of the GUI), robust execution and recovery from common user errors without loss of work or data, functional completeness, and effectiveness/efficiency in accomplishing analysis tasks (it should take less time to do something in the GUI than to write a program to do the same thing). Lastly, the physicist user should be able to concentrate on his/her physics while using the ROOT GUI, not on how to use the software. (This is a very important question to ask when designing changes and enhancements to the ROOT GUI. Can the physicist user concentrate on his/her analysis while using the present GUI? The answer to this question should come from physicists, not computing professionals.)
Noting the assumptions above, we make the following recommendations to address the above areas of concern:
Before listing the estimated costs, we need to note that because of the many variables and uncertainty surrounding some these issues, the following estimates are only guesses made with imperfect knowledge of ROOT's current and future functionality:
It is possible that a better idea would be to write a test suite rather than always depending on manual testing. This would involve more up-front cost, but be a benefit in the long term.
Thus, we expect at least the equivalent of 1.1 experienced full-time C++ programmer(s) will be needed to address concerns with the current ROOT GUI plus one month per ROOT major release for integration, testing, bug fixing, and certification.
When passing these estimations past Rene, he suggested that two people (one from CERN and one from Fermilab) could work on the ROOT GUI. Thus we conclude that there are many more things he would like to see in the GUI than were apparent to us in a couple of days of studying ROOT. For example, Rene would like to see Java based GUI classes with a C++ backend, which is probably a very good idea.Thus we believe there is merit in further examining how GUI collaboration should proceed.
Initially, the question of integrating Nirvana products seemed important; however as we began thinking about it more, the question seemed somewhat absurd. Admittedly the Nirvana products do not have the broadness of functionality that ROOT has. Some of the best attributes of the Nirvana products and GUIs are the built-in good design, robustness, consistency, and quality. Functionally, however, Nirvana users really like the interactivity of the plotting widgets, the rich functioning of the two-dimensional histogram (LEGO) plot, and the interactive browsing of data as it is being generated. Also, NEdit is clearly the best free GUI editor around and is already usable as the default editor in ROOT by setting an environment variable.
ROOT's best attributes seem to be the broadness of functionality and its current availability. For example, ROOT currently has a neat graphical editor that allows annotation of plots and even more general, hierarchical graphical editing. This functionality does not exist currently in the Nirvana suite (although it was planned as the unimplemented NDraw product). Histograms are very flexible and easy to create, fill, save, and draw (from CINT). Some work on Ntuple browsing and plot options from the ROOT GUI still needs to be done. ROOT also has integrated fitting, where at the flick of the GUI, or from some C++ code, MINUIT is called and the fit drawn on top of the plot. Nirvana's fitting package (NFit) is a separate product, and is not integrated with the Histo-Scope browser (by design). NFIT contains some fitting functionality that is not currently accessible from the ROOT GUI. ROOT also has graphical display of surfaces, contours, bar charts, and detector objects, which do not exist in the Nirvana products.
ROOT currently does not support a time-series plot but hopes to have one in the future. One is available in the Nirvana Plotting Widgets package and from Histo-Scope. We also prefer many of the interactive features of the Nirvana plotting widgets when compared to the ROOT way of interacting with plots. For example, you can either drag on an axis to scale a Histo-Scope plot or quickly bring up a background menu which allows entering the numeric limits of the plot. We also found the sliders used in ROOT to set values difficult to use (perhaps we're just used to Histo-Scope sliders). One feature of ROOT we did like is the ability of to pick points on the plot and drag them around which is not currently implemented in Histo-Scope or the widgets (nice for composing pictures, but less useful for real data display). Also, ROOT provides many data formats for saving plots (.ps, .eps, .gif, .C) which is a clear benefit over the Nirvana widgets which provide only X-Display and Postscript.
There are a few reasons why users might want some functional level of integration of Nirvana products with ROOT:
The majority of Histo-Scope users are using the product for its dynamic data browsing capabilities (from other running processes) rather than just for browsing files. ROOT does have a program called "rootd.exe" (standing for ROOT Daemon) that runs in the background on a computer and works as a server to carry out ROOT commands given over a local area network. It also supports web-based access. Rene claims that ROOT has all the dynamic functionality currently used by Histo-Scope users through local shared memory or sockets and has macros available on his tutorials web pages that can be run to accomplish this. However ROOT does not run on online VxWorks systems as the Histo-Scope API currently does. Thus, there probably is still a need to use Histo-Scope in such situations. If such experiments will also be using ROOT, there may be the need for file interchange or conversion from one file format to the other. It is debatable whether there is a need to call the Histo-Scope API from a ROOT application so the data could be browsed on another system by Histo-Scope. In this case, a shareable image of the current Histo-Scope API library could be made available to make it easier for ROOT users to include the library from CINT (on those systems that support shareable libraries).
If it turns out that Run II users need some of the graphical capabilities
offered by the Nirvana widgets but not offered by ROOT, it is conceivable
that a ROOT application could link with the Histo-Scope plotting widgets
and open a separate window to display a Nirvana plot widget.
However, unless the widget is integrated into the ROOT system, or at least
callback hooks provided by ROOT, this display would be outside of the ROOT
display event loop and would have to begin and end before the ROOT displays
do any further work or updating. The nice graphical editor would also not
be available to that window. Thus before evaluating how to proceed on this
area of concern, it is important to evaluate the level of need in Run II
to design an appropriate solution. For integration into ROOT, a Nirvana
plotting widget would probably have to be modified slightly to remove the
Motif dependency currently inherent in the widgets. Since the Nirvana widgets
use Motif primarily for window shading and other minor considerations,
the modifications to the widget itself are expected to be straightforward
(assuming internal widget data formats are preserved).
If you have comments or suggestions, email Joy Kyriakopulos or Philippe Canal.
This page created with Netscape Navigator Gold