ROOT Math Libraries development
==============================
The candidate will be integrated in the team of the Math work package
of the ROOT project. This team has the responsibility of providing
the basic mathematical libraries to physicists developing reconstruction
and analysis programs and give support to them.
The main task of the student will be to design and implement new C++ classes for new algorithms and statical methods which are planned for inclusion in the ROOT math libraries. An example of these, are classes for non-parametric density estimation or new classes based on the GNU Scientific Library and providing functionality like wavelet transforms or smoothing using splines. In addition, the student will work on providing validation tests of the new implementations and contribute to the improving of the online documentation and tutorials which will be published on the Web site.
Main Supervisor: Lorenzo Moneta
Second Supervisor: David Gonzalez Maline
Student Profile: Mathematician/Physicist/Computing Scientist
Skills required: some basic knowledge of C++, applied mathematics and/or
statistics.
Training value:
learn numerical computation and statistical methods and improve the
knowledge of object oriented languages like C++
User Interface for an LLVM base C++ interpreter
===============================================
ROOT's interpreter is the primary means of interaction with ROOT. We are
planning on replacing it with a completely new interpreter which will be based
on an exciting new compiler infrastructure project (llvm.org). One of the key
ingredients will again be the user interaction - and for that we need a prompt.
In the end, that prompt will allow users to write C++, copy and paste, have a
history, do tab-completion, highlight matching parentheses and whatever else
might be possible to do at a prompt! It has to work on Linux, Windows, MacOS,
Solaris, and any other platform that ROOT and LLVM support. Nothing like this
exists - and the summer student's project will be to implement the basic
infrastructure for this at least on Linux, starting from a proof of concept
that is already available.
It will be used by almost every single ROOT user and thus by almost every
single LHC physicist. This project is thus guaranteed to have a huge impact.
Because this project is so unique, and because prompt-based user interaction is
a frequent problem, this project will almost certainly also evoke outside
interest as a multi-platform readline replacement.
Skills: computer scientist with very good knowledge of C and C++!
Supervisor: Axel Naumann
Second supervisor:Bertrand Bellenot
GUI
===
The candidate will be working for the ROOT project in the Graphical User
Interface (GUI) work package to participate in the development of the
ROOT
GUI Builder. The ROOT GUI classes support an extensive and rich set of
widgets. The widget classes interface to the underlying graphics system
via a single abstract class. Concrete versions of this abstract class
have
been implemented for X11 and Win32, thereby making the ROOT GUI fully
cross-platform.
The ROOT GUI builder provides graphical user-interface (GUI) tools for
developing user interfaces based on the ROOT GUI classes. It includes
over 30 advanced widgets and has as a goal to offer the complete set of
features needed for developing the GUI projects.
It gives developers an effective object-oriented development environment
and accelerates the GUI development life cycles.
The assignment of the candidate will be to extend the palette of widgets
already available in the GUI Builder and to consolidate/improve its
usability.
Improvements of the GUI builder 'look and feel' is also foreseen.
Programming skills in high-level languages such as C++ is required.
Knowledge and experience of programming under Linux/Unix and Windows is
highly desirable.
ROOT Graphics
=============
The ROOT's graphical libraries provide many functions including
basic graphics, high-level visualization techniques, output on files, 3D
viewing etc. They use well-known world standards to render graphics on
screen (X11, GDK, Qt, and OpenGL), to produce high-quality output files
(PostScript, PDF), and to generate images for Web publishing (SVG, GIF,
JPEG, etc.). Many techniques allow visualization of all the basic ROOT
data types.
This year we can propose two subjects of work:
1) Some physics plots use a reference system (luminosity, magnitudes) which is
reversed. Therefore, some ROOT users require to make a plots in which
one or both of the axes are reversed. The implementation requires changes
in the graphics kernel.
The AITOFF, MERCATOR etc, projections are available for some type of
representation but are still missing for COLor plots for instance.
Specific axis for this projection should be also implemented.
2) Retrieve the data from a binary image using a simple "pattern
recognition" technique.
Sometimes the data files used to produce an image have been lost and
what remains only is a binary image (gif, png etc). It would be nice to
have a tool which automatically retrieve the data points, axis etc ...
from the binary image. The functionnality provided by the
libAfterimage library should help implementing this tool.
Other specific requirement:
The candidates should be familiar with the C++ programming language.
Some knowledge in computer graphics would be also useful.
Supervisor: Olivier Couet
Second supervisor:
Student: computer scientist