ROOT Team Meeting

→ Europe/Zurich
32-1-A24

32-1-A24

    • 11:00 → 11:05
      News 5m
      Speaker: Rene Brun
      Many people on holidays. Nikolai Gagunashvili visit for 4 weeks. Nikolai working on improvements of the Chi2Test and comparisons with Kolmogorov tests. Very good results. an Howto page will be produced. Welcome to Daniel Hartl, summer student. Thanks to Anna for taking care of him. Expected visitors in the coming weeks: -Timur: August 21 -> september 5 -Miroslav: September 25 -Josef Leybold/Vienna Unuran -Valeriy O. September? 4 weeks Printed Users Guide: a success (thanks Ilka) Thanks to Axel for simple but nice improvements to THtml pages layout. See the new Reference Guide. If you have plans to attend a workshop/conference or a trip till December, let me know asap.
    • 11:05 → 11:15
      Pro Release 5.12 status 10m
      A review of problems reported so far. First patch release summary: Fons 5'
      The version 5.12a has been released. see http://root.cern.ch/root/Version51200-patches.news.html Changes in version 5.12/00a Increase of some internal CINT tables to accommodate very large dictionaries (ATLAS request). Fix in TMapFile that caused it not to be able to connect to a shared memory segment. Fix in TChain the case of a missing file and the new TTreeChache. Fix problem with printing very long branch names in TBranch::Print(). Insure that in TTree::MakeClass()/MakeSelector() we consistently use the same name for the branch pointer variables. Fix in Makefile to build the CINT stdfunc.ddl and to fix parallel make. Fix in TRFIOFile and TCastorFile to be able to build with old Castor 1 libraries.
    • 11:15 → 11:40
      Plans for coming development release(30 August) and PRo release (15 December) 25m
      -BASE: Fons 5' -DICT/I/O: Philippe 5' -PROOF: Fons 5' -MATH: Lorenzo 0' -GRAPHICS: Rene for Olivier 1' -GUI: Rene for Ilka 1'
      pictures
      ---------------------------LORENZO---------------------------------------- Unfortunatly, no information received from Lorenzo ---------------------------PHILIPPE---------------------------------------- see attached ppt file ---------------------------OLIVIER---------------------------------------- Graphics ======== * Embedded GL in TPad (T.Pocheptsov): - Complete the GL histogram painter by introducing TGLSurfacePainter, TGLBoxPainter, TGLTF3Painter, TGLStackPainter and possibly TGLTGraph2DPainter. * Longer term GL viewer's developments (T.Pocheptsov ideas): - Graphical User Interface (GUI): a) Multiple Document Interface (MDI) for the GL viewer. b) More interactivity: A new fast selection for TGLHistPainter, is already implemented in TGLLegoPainter, but it can surely it can be also used in the GL-viewer to allow the object's highlighting under the mouse cursor, to show (somehow) any info about the object, etc. c) More navigation facilities: What we have now TBrowser/TGLViewer is not very user-friendly for end users. d) Viewer's GUI: the editor machinery, is sometimes a bit restrictive and do not offer full flexibility to develop the best GUI for the GL-Viewer some solution should be fine to combine the two approaches (automatic GUI with the editors and Ad-Hoc intuitive GUI). - Graphics part: a) Smooth normals when possible. b) Better outlines (cylinders do not require outlines for their segments). c) Better 2D projections. d) Animation. * M.Tadel contributions: - Short term: a) Picking/Sub-picking. Communication between viewer and producer (A.Tadel implemented this, but points b) and c) need to be added before submitting it) b) Optimize the redraw requests to viewer when the direct rendering is used and no scene rebuild is required. c) Have a special update request for repositioning the camera in order to view the entire scene (now the camera is repositioned on each update). - Longer term: a) Make an intermediate TGLViewerWindow class, somewhere between TGLViewer and TGLSAViewer, to allow an easier construction of custom GL-viewers. In particular, different camera-controls (fly and walk mode) and different scene interaction tools are needed. b) Add generalized scene markup classes/tools (text labels, rulers). * Basic graphics (O.Couet): - Integration of the M.Demaret (summer student) work on TGraphPolar in 5.13/02. If he manage to achieve an other project (spider plots ?), it will be also included. - Implement the case with variable size bins in TH3::FitSlicesZ. - Investigate the possibility to translate the GS (PostScript) fonts file into TTF file to replace those in $ROOTSYS/fonts. Hopefully this might simplify the introduction of new symbols in TLatex. It may also help to extend the list of available fonts in TText. - The current implementation (done by E.Offermann) of TGraph::Paint in case of low resolution (option L) is, as expected, much faster that the high resolution one (option L9), but has many drawing problems. A preliminary new version has been written (by O.Couet). It works better and is even a bit faster. It is now being tested by the people who reported the problem (D.Buskulic and D.Verkindt). We are waiting their feed-back. This new version need to be consolidated before being put in CVS. In particular the PS output is not yet possible. The consolidation phase will start when we will have the green light from D.Buskulic and D.Verkindt. ---------------------------ILKA---------------------------------------- GUI === * GUI Builder (V. Onuchin) - Add missing important widgets: listview, menu bar, tool bar etc. - Create attribute editors for listbox, combobox, tab, tree view, listview etc. - Revision of application functionality (allow GUI building without keyboard interactions) - Include more complex layout managers in the builder - Tooltip support for all widgets - Start imlementing undo/redo management - GUI Builder stress testing (Bertrand, Ilka) - GUI Builder tutorials and help (Valeriy, Ilka) * Drag & drop from TBrowser to the canvas (Valeriy, Bertrand) (during the Valeriy's visit at CERN in September) * GUI Classes - integration of summer student work (D. Gonzales-Maline) - Improvements in TGFileDialog: ~ Multiple files selection in Open file dialog ~ Make the button for creating a new system directory functional ~ Improve the way files are displayed in the dialog, etc. - Improvements in detailed TGListView * Editors - Include more functionality in TF1Editor - TF2/3Editor development (Ilka) * Fit Panel - work in collaboration with Lorenzo (Ilka) * Revision/Extension of the TreeViewer GUI (Ilka) ---------------------------FONS---------------------------------------- BASE ==== End of August release --------------------- Nothing special foreseen except removal of a number of compiler warnings showing up with gcc 4.1.1. End of year release ------------------- - Implementation of plugin manager extensions as discussed last year. Main idea is to make the plugins fully self describing (no need for entry in rootrc). - Extension of TSystem to provide platform information (sysinfo style), number of CPU's/core, RAM, load, etc. This is heavily machine dependent. - Support for atomic basic operations need to make the TRefCnt class thread safe. - Making gFile/gDirectory thread-safe. - A.O.B. PROOF Development Plans and Priorities -------------------------------------- The following people are involved in the core PROOF development and responsible for the tasks outlined below: - Gerri Ganis (100%) - Jan Iwaszkiewicz (100%) - Bertrand Bellenot (20%) - Fons Rademakers (50%) - Leandro Franco (100% per 1/4/06 for 2 years as Marie Curie fellow) In addition Jan is a doctoral student who must start work on his thesis topic. The list below is in order of priority (in case the same person is responsible for more than one item). For end of August release ------------------------- No special developments except fixing as many open Savannah bugs as possible. With very high priority for all show-stoppers involving the ALICE benchmarking effort. Continue writing the installation and user guide on the TWiki. To be done by all. For end of year release ----------------------- 1) Robustness With the introduction of the xrootd based client/server infrastructure we can start work on making the system robust. With robust we mean the PROOF client session should never hang in an unknown state and we never should suffer from run away or deadlocked daemons. The xrootd based front-end daemons allow for monitoring the state of the proofservs and the unsolicited xrootd protocol allows for the warning of clients in case there are problems with the proofservs. Using timeouts we can take-out daemons that are way too slow or that don't respond. By making selectors that generate random segvs or go into infinite loops, etc we can simulate these catastrophic circumstances. To be done by Gerri. 2) Packetizer updates The current main packetizer does not use variable packet sizes. To avoid startup and tail effects during a query we need to make the packet size variable. At the beginning we should start with a packet size that will return in a fairly short time so we can use it to estimate the relative performance of the worker nodes and at the end of the query we need to fall back to smaller packets to avoid that some slower nodes will delay the final result too much (tail-effect). We don't want too small packets during during the entire query though as that might reduce the parallel efficiency of the system To be done by Jan 3) Resource scheduling To operate PROOF in a multi-user environment we need to interface with a scheduler that will ensure efficient and fair usage of the available cluster resources. This is especially important now that PROOF supports long-running queries. The scheduler interface should tell PROOF the number of workers a user can use and change the set of worker nodes depending on changing load and usage of the cluster. If resource become available more workers can be assigned to a user and vice versa if resources get heavier loaded. Initially we can change the number of workers per query, i.e. change the number of workers before the query starts. Later we can even change the number of workers during a query, especially important during long running queries. We should have one implementation using our own scheduler based on the xrootd/olbd infrastructure as started by Guenter and we can also interface to third party schedulers like LSF, Condor and Maui following up on the work started by Paul Nilsson. To be done by Jan. 4) More TTree and xrootd read optimizations using parallel sockets and async I/O's To continue the Tree read optimizations successfully started with the multi-buffer read implementation we want to further optimize the reading by using async reading and parallel sockets. This work will be done together with the xrootd developers. To be done by Leandro Franco 5) Session Management and PROOF GUI - Implement local session management interface in GUI. - Follow new PROOF features in GUI, like file upload facility, log file retrieval and browsing - Implement selection of user histograms for dynamic feedback. - Another important feature is to be able to reflect in the GUI a session that was started outside the GUI To be done by Bertrand.
    • 11:40 → 12:00
      Code generator for Reflex 20m
      Speaker: Antti Hahto
      pictures
    • 12:00 → 12:05
      Reflex developments 5m
      Stefan has written an interesting note describing plans to extend Reflex. See attachement
      Forthcoming REFLEX and CINTEX developments ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This document contains a list of developments foreseen in the ROOT Reflex package. The different issues are ordered by precedence in the categories > > REFLEX/CINT integration > > Other REFLEX development > > CINTEX developments >> >> REFLEX/CINT integration: >> >> ======================== >>>> >>>> Unloading of Reflex data The unloading of Reflex data is crucial for the integration with CINT. So far Reflex data was loaded once into memory for a given task and never unloaded. CINT nevertheless will require this feature. The API for unloading dictionary information is available (Type::Unload) but the implementation is missing. The unloading of dictionary infomration has to be checked closely with tools for memory leak checking. >>>> >>>> Finish Namelookup The simple name lookups for types is done which accomodates the current status of the REFLEX/CINT integration. Missing bits are lookup of members, overload resolution and access control. The type namelookup will also need improvements for templated types. Finally the integration of a tokenizer for C++ is an option. >>>> >>>> FinalType, RawType -- done Another feature request for the REFLEX/CINT integration. RawType of a type shall return the underlying "raw" type. E.g. (int*** -> int, int*[10][5] -> int) which is easy to implement. FinaType shall return a type without any typedefs inside. This is also easy to implement for non templated types. (e.g. typedef int MYINT; typedef const MYINT* MYINT2; MYINT2 -> const int*). >>>> >>>> Fast Properties Properties can be attached to Type, Scope and Member objects. At the moment the content of a property is looked up through a hash_map. The idea is to make the lookup of a property key even faster by using an array of enums and accessing properties directly, rather than map lookup. >>>> >>>> Scope::SubTypeByName (equally for subscopes, etc. ) -- done A scope (e.g. class) can define several sub types (e.g. enum, union, class). The container for these sub types is part of Reflex and can be looped over. The request for the REFLEX/CINT integration was to have a lookup of such a sub type by name, rather than looping over it and finding the correct one. A Scope can also define other sub scopes, members, etc, which all can be looped (iterated) over. For consistence in the API this lookup shall be also developed for these other containers. Nevertheless the request for these will come sooner or later :-) >>>> >>>> FundamentalType -- done Reflex defines a specialisation of Type which is called Fundamental which contains all fundamental types declared in the C++ standard (plus variations of them (e.g. "unsigned long int" == "long unsigned int"). The request for the REFLEX/CINT integration was to be able to distinguish those fundamental types by a fast lookup e.g. through enum values. >>>> >>>> Class::SetSize With genreflex generated dictionaries the size of a Class is known at load time of the dictionary. When CINT parses a class it will calculate it's size while parsing and can only set the size at the very end of this parsing process. For this reason we will need a Class::SetSize function to allow post setting of the class size (trivial) >>>> >>>> Load on demand CINT supports late loading of dictionary information. At the moment Reflex will load and initialize all dictionary information which is available. >>>> >>>> Support for friends, using def. Some containers have been added already in the Reflex data structs (e.g. for using directives of a scope). Some more are missing. So far support for friendship and using declarations was detected to be missing for CINT which will be added with their corresponding API functions. >>>> >>>> Make Typedefs Scopes So far a Typedef "Type" inherited only from TypeBase, but Typedefs can also be Scopes, so a double inheritance from TypeBase and ScopeBase is necessary. This is a flaw in the architecture of Reflex. >> >> Other REFLEX developments: >> >> ========================== >>>> >>>> Ownership model The current ownership model needs to be modified. API objects are also used inside the Reflex model, which can cause problems e.g. on unloading or persistence of Reflex objects. >>>> >>>> ROOT persistence of Reflex objects The possibility to write Reflex objects via ROOT I/O into files. This will allow persistenc of Reflex information. Possible pitfalls are missing default constructors (trivial), and the fact that the setup of Reflex information is done via logic inside constructors. We can try to load information (without complete initialisation) into a seperate instance and later "merge" the information into Reflex. >>>> >>>> Move TYPETYPE/SCOPETYPE up to TypeName The type of a type/scope shall be known also if it is only "declared" and no dictionary information is available. At the moment the information of a type/scope is stored in the Type/ScopeBase, so only if the full dictionary is loaded. >>>> >>>> Thread safety of Reflex For forthcoming architectures it will be benefitial to test Reflex in multi threaded environments where several clients are producing information into a single Reflex memory instance. Singletons in Reflex are already protected. Testing needs to be done. >>>> >>>> Memory leak check Minor memory leaks have been observed in the builder interface which need to be removed. Memory leak check will become even more important once the unloading of dictionary information is implemented. >>>> >>>> Move to new version of gccxml (requested by ATLAS) At the moment a version of gccxml which includes several patches (the last one from Nov. '04) is used for dictionary generation via genreflex.py, which is not very convenient if gccxml has to be built from source. In order to accommodate the build of gccxml also for outside LHC users it will be benefitial to move to a version which can be easily taken from the offical cvs repository. Binary versions of gccxml should be made available for the most common platforms together with a source tarball, via the ROOT web page. >>>> >>>> Support for bitfields (requested by CMS) At the moment C++ bitfields are not supported for access via Reflex. The access to bitfields will require calculation of offsets at runtime and probably knowledge about compiler padding. >>>> >>>> Support for references to data members Currently Reflex does not support references to data members, which is not an issue for persistence of objects. This can be enhanced in the future. All the ingredients are there. >>>> >>>> Documentation (wiki, THtml, doxygen) A first version of THtml compliant documentation was committed for ROOT 5.12.00. As THtml also understands doxygen it will be nice to support both THtml and doxygen documentation within the same text. >>>> >>>> Improvements for stub functions At the moment each function points to one stub function related to it. Ideas of how to optimize to fewer stub functions (or none) shall be investigated. >>>> >>>> Return references - done At the moment API functions return objects of API classes. These can return const references to those, sparing one construction and deletion. This change is trivial but requires a lot of work. >>>> >>>> TypeTemplate, MemberTemplate ::ByName It is possible to get from a template instance to it's template family but not to lookup a template family directly (like for types and scopes) >>>> >>>> Declaration info for types The information where a type is declared (file, line no) is available through gccxml. This info will be helpful for producing dictionary information with the new dictionary generator, done by Antti. The way the file names are stored has to be done in a proper way so we are not duplicating too much information. >>>> >>>> MemberTemplates don't work gccxml gives information about a templated member function only via the mangled name (not through the attributes). This is true for version 0.6.0_patch3, later versions of gccxml demangle the mangled name and give this information. So this fix is related to the move to a new gccxml. >>>> >>>> scons for standalone build At the moment Reflex in standalone mode is buildable with GNU autotools. The idea is to move to scons at some stage for better maintenance and the ability to build easily on windows. >> >> CINTEX developments: >> >> ==================== >>>> >>>> Investigate Cintex on Mac OS (ppc) We still observe a problem with Cintex on the PowerPC under MacOs which needs to be investigated more closely. It is related to the generic stub function invocation.
    • 12:05 → 12:06
      Wiki page status 1m
      Speaker: Fons Rademakers
      Fons being absent, this item is postponed to next meeting
    • 12:08 → 12:10
      Have fun with TGeo 2m
      Inkyu Park professor at Seoul University has used ROOT to teach students. Among other very interesting things they have created some funny geometries with TGeo. See the attachements. Inkyu will document the student scripts an they will become tutorials.
    • 12:10 → 12:20
      Tour de table 10m