Open PAW A reimplementation of PAW with Open

  • Slides: 2
Download presentation
Open. PAW A reimplementation of PAW with Open. Scientist tools. G. Barrand, permanent debugger

Open. PAW A reimplementation of PAW with Open. Scientist tools. G. Barrand, permanent debugger of CERN software at CNRS / IN 2 P 3 / LAL http: //www. lal. in 2 p 3. fr/Open. Scientist Motivated from a brainstorming lunch at the Vancouver Geant 4 workshop : “What is AIDA ? We want PAW !!!” Ok, then let us do what should have been done at CERN for long : migrate a well known and heavily used tool to new technologies. Open. PAW could be seen as a PAW interactive front end to an AIDA implementation. Or AIDA could be seen as the C++ API to Open. PAW. Why “open” ? • Because using a maximum things from elsewhere (use human resources of the web). • Follow the “software least action principle” : reach maximum functionalities by minimizing the size of home made code. • Have a very modular architecture through the usage of pure abstract interfaces. This permits to integrate various technologies (various languages, interpreters, IO system, native GUIs ) in a very clean way (without the knotty design of some). • That’s right that today the whole set of PAW commands (and options !) is not recover ; but, on various aspect, someone has already much more than in the past. • We want also demonstrate to some, that we can offer a continuity to physicists at the same time that, behind the scene, software engineers has the freedom to move toward new technologies. Commands : • Today the C part of KUIP extracted from old CERNLIBS. But a C++ rewriting of KUIP would be welcome (Any volunteer ? No one, as usual). • pawcdf. cdf taken from old CERNLIBS, then SAME command syntax than PAW. • Obviously not all commands and options yet implemented, but things are underway… • pawex 1. kumac up to pawex 24. kumac already emulated with quite same rendering than PAW. GUI done with On. X, then : • Native GUI (Cocoa, Windows, Qt, gtk, Motif) produced with On. X from an XML description of the GUI. Then the best speed that we can get on a local desktop. • GUI described in XML with interpreted callbacks : <widget class=“Push. Button”> <activate exec=“kuip”> h/plot the_awful_10</activate> </widget> • “Operating. System> opaw “ to start with a PAW-like GUI (one prompt and one viewer). • “OS> opaw -gui “ to start with a more complete and compact GUI “a la Power. Point”. Pawex 1. kumac with default simple GUI : Operating. System> opaw pawex 1. kumac The viewer can refresh itself ! (Yeahhhh) Graphic done with : • Open. GL as a rendering layer (then very fast on most local machines (especially on Macs)). • Open Inventor as a scene manager. Coin 3 D implementation of SIM is used. • HEPVis / So. Axis, So. Plotter nodekits to handle a “plotting” scene with axes. • XY, Lego, function, contour plotting are here. • Obviously with better rendering (especially 3 D) than PAW. • PS production done with gl 2 ps (ok ok, big files, but WYSIWYG (especially with 3 D)). • Remote X 11 ruled out : too slow (especially on crowded central systems). USE YOUR LAPTOP. “opaw -gui” over pawex 10. kumac. A more complete GUI “a la Power. Point”. Here on a Mac by using the native Cocoa (Next. Step). Note that the GUI being described in XML, someone can easily customize everything ; in particular the menu bar. OS> opaw pawex 9. kumac. Contour done with some code borrowed from Microsoft Code. Project. Operating. System> opaw -gui -Xt pawex 9. kumac. Xt/Open. Motif version of the GUI (Motif still faster than gtk and Qt on a Linux !!!) Someone can easily switch on the “Inventor viewer decoration” and manipulate a 3 D (or even 2 D) scene with the famous Inventor thumbwheels. Someone can move and resize “zones” (AIDA: : IPlotter. Region) with the mouse and pick bins.

Open. PAW A reimplementation of PAW with Open. Scientist tools. G. Barrand, permanent debugger

Open. PAW A reimplementation of PAW with Open. Scientist tools. G. Barrand, permanent debugger of CERN software at CNRS / IN 2 P 3 / LAL COMIS replaced by “on the fly compilation and loading” of FORTRAN, C, C++. • Full language available at full speed. • Avoid the burden of interpreters, but Python, CINT could be plugged in too. http: //www. lal. in 2 p 3. fr/Open. Scientist The AIDA-3. 2. 1 implementation is the Open. Scientist-13. 0 C++ one with : • histogram done with HCL is 20 % faster than the ROOT TH* (because inner std: : vector<double> is faster than the reinvented TArray. D). • fitting done with the SEAL / C++ Minuit. • tuple done with the column wise Lab: : Tuple done with buckets of std: : vectors. Vector handling and SIGMA done with : • Lib: : Vector template class. A multidimensional vector template over std: : vector (then fast). • SIGMA command done with the little Lib: : Processor algebra interpreter. Done with lex and yacc and aware of the Lib: : Vector. Something like V 1 *V 2 loops directly within std: : vectors. Fast. OS> opaw pawex 16. kumac. Creating tuple, reading data from a file, doing some projections. Note that the NTUPLE/PRINT has same look and feel than PAW. OS> opaw pawex 6. kumac. Fitting over a vector. Fitter is the SEAL / C++ Minuit. The painfully question of the IO : • In batch, use the AIDA: : ITRee of Open. Scientist to put AIDA/Lab objects in a file at ROOT format by using the light Rio package. • Someone can also use various AIDA implementations to produce AIDA xml files with histograms and tuples. • From the “opaw” program : • opaw> h/file 2 my_file. root • opaw> h/plot 10 • opaw> close 2 • Note that Open. PAW can read ROOT 3 files containing TH* and simple TTree containing real numbers. (This probably does not work anymore on ROOT 4 files, since the tribe passes its time to change basic things). (What is a file at the ROOT format ? ) (When are we going to have an open source appealing IO system and OO database ? ) (In ten years, when I shall finally have time to write Rio. Grande ? ). • Open. PAW can read ascii hippodraw tuple files. • If the “Zebra” driver is reconstructed in Open. Scientist/Lab, someone can read hbook files. But it needs to link against the old CERNLIB. (Any volunteer to write a Zebra reader in C++? No one, as usual) OS> opaw pawex 11. kumac PAW> function/fun 1 100 htfun 1. f 100 0 1 The htfun 1. f file is “on the fly” compiled, put in a DLL and loaded The same can be done with C and an “extern C” C++ function. OS> opaw pawe 3. kumac Manipulation of vectors OS> opaw pawex 8. kumac OS> opaw pawex 24. kumac OS> opaw pawex 8. kumac SIGMA manipulation of vectors