Status of SEAL LCG Applications Area Meeting 22 July 2003 P. Mato / CERN Contents Overview Work Packages Status Summary.

Slides:



Advertisements
Similar presentations
Seal Dictionary Applications Area Internal Review 20 October 2003 Stefan Roiser / CERN.
Advertisements

OOP in Java Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Advanced Object-Oriented Programming Features
Automated Tests in NICOS Nightly Control System Alexander Undrus Brookhaven National Laboratory, Upton, NY Software testing is a difficult, time-consuming.
CVSQL 2 The Design. System Overview System Components CVSQL Server –Three network interfaces –Modular data source provider framework –Decoupled SQL parsing.
SPI Software Process & Infrastructure GRIDPP Collaboration Meeting - 3 June 2004 Jakub MOSCICKI
SEAL V1 Status 12 February 2003 P. Mato / CERN Shared Environment for Applications at LHC.
M. Gallas IT-API LCG SPI project: testing1 Software Testing Infrastructure status LCG Software Process & Infrastructure (CERN, 10/23/02)
SPI Software Process & Infrastructure EGEE France - 11 June 2004 Yannick Patois
M Gallas CERN EP-SFT LCG-SPI: SW-Testing1 LCG-SPI: SW-Testing LCG Applications Area GridPP 7 th Collaboration Meeting LCG/SPI LCG.
Nightly Releases and Testing Alexander Undrus Atlas SW week, May
K. Harrison CERN, 20th April 2004 AJDL interface and LCG submission - Overview of AJDL - Using AJDL from Python - LCG submission.
A. Aimar - EP/SFT LCG - Software Process & Infrastructure1 Software Process panel SPI GRIDPP 7 th Collaboration Meeting 30 June – 2 July 2003 A.Aimar -
SEAL Project Status and Plans LHCC Comprehensive Review of LCG-AA November 2003 P. Mato / CERN.
CERN Tutorial, September Job Options and Printing.
Job Options and Printing 1 LHCb software tutorial - September 2011.
SEAL: Core Libraries and Services Project CERN/IT After-C5 Meeting 6 June 2003 P. Mato / CERN.
Copyright © 2010 Certification Partners, LLC -- All Rights Reserved Perl Specialist.
Copyright © Curt Hill Generic Classes Template Classes or Container Classes.
Introduction to Gaudi LHCb software tutorial - September
LCG-SPI: SW-Testing LCG AppArea internal review (20/10/03)
The SEAL C++ Reflection System Stefan Roiser (for the LCG/SEAL Dictionary work package) CHEP 2004, 27. Sept Oct., Interlaken.
SEAL Project Overview Lorenzo Moneta/ CERN-EP on behalf of the SEAL team ACAT03 IX International Workshop on Advanced Computing and Analysis Techniques.
Gaudi Framework Tutorial, April Job Options and Printing.
Feedback from the POOL Project User Feedback from the POOL Project Dirk Düllmann, LCG-POOL LCG Application Area Internal Review October 2003.
Python/Tango Client Binding Swig ( Vs Boost (
SEAL: Common Core Libraries and Services for LHC Applications CHEP’03, March 24-28, 2003 La Jolla, California J. Generowicz/CERN, M. Marino/LBNL, P. Mato/CERN,
SEAL Core Libraries and Services CLHEP Workshop 28 January 2003 P. Mato / CERN Shared Environment for Applications at LHC.
Introduction to c++ programming - object oriented programming concepts - Structured Vs OOP. Classes and objects - class definition - Objects - class scope.
SEAL Project Core Libraries and Services 18 December 2002 P. Mato / CERN Shared Environment for Applications at LHC.
LC Software Workshop, May 2009, CERN P. Mato /CERN.
GDB Meeting - 10 June 2003 ATLAS Offline Software David R. Quarrie Lawrence Berkeley National Laboratory
Copyright © 2003 ProsoftTraining. All rights reserved. Perl Fundamentals.
SEAL Framework & Services LCG AA Internal Review 20 October, 2003 Radovan Chytracek / CERN on behalf of SEAL team.
Feedback from LHC Experiments on using CLHEP Lorenzo Moneta CLHEP workshop 28 January 2003.
Digging into the GAT API Comparing C, C++ and Python API‘s Hartmut Kaiser
SEAL and PI Project Status LHCC Comprehensive Review of LCG November 2004 P. Mato / CERN.
9/12/99R. Moore1 Level 2 Trigger Software Interface R. Moore, Michigan State University.
Gaudi Framework Tutorial, Interfacing Gaudi with Python.
G.Govi CERN/IT-DB 1 September 26, 2003 POOL Integration, Testing and Release Procedure Integration  Packages structure  External dependencies  Configuration.
SEAL Project Overview LCG-AA Internal Review October 2003 P. Mato / CERN.
23/2/2000Status of GAUDI 1 P. Mato / CERN Computing meeting, LHCb Week 23 February 2000.
A. Aimar - EP/SFT LCG - Software Process & Infrastructure1 SPI Software Process & Infrastructure for LCG Project Overview LCG Application Area Internal.
K. Harrison CERN, 3rd March 2004 GANGA CONTRIBUTIONS TO ADA RELEASE IN MAY - Outline of Ganga project - Python support for AJDL - LCG analysis service.
Bologna Tutorial, April Job Options and Printing.
1 Classes II Chapter 7 2 Introduction Continued study of –classes –data abstraction Prepare for operator overloading in next chapter Work with strings.
Copyright © 2009 – Curt Hill Standard Template Library An Introduction.
Java Programming: Advanced Topics1 Introduction to Advanced Java Programming Chapter 1.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
D. Duellmann - IT/DB LCG - POOL Project1 The LCG Dictionary and POOL Dirk Duellmann.
The SEAL Component Model Radovan Chytracek CERN IT/DB, LCG AA On behalf of LCG/SEAL team This work received support from Particle Physics and Astronomy.
SEAL Project Status SC2 Meeting 16th April 2003 P. Mato / CERN.
A. Aimar - EP/SFT LCG - Software Process & Infrastructure1 SPI Infrastructure for LCG Software Projects Status and work plan for H July 2003 A.Aimar.
Gaudi Framework Tutorial, Algorithm Tools: what they are and how to use them.
Project Work Plan SEAL: Core Libraries and Services 7 January 2003 P. Mato / CERN Shared Environment for Applications at LHC.
SPI Software Process & Infrastructure Project Plan 2004 H1 LCG-PEB Meeting - 06 April 2004 Alberto AIMAR
JRA1 Meeting – 09/02/ Software Configuration Management and Integration EGEE is proposed as a project funded by the European Union under contract.
Generating ADL Descriptions ADL Module for Together 6.x Massimo Marino Lawrence Berkeley National Laboratory.
Comments on SPI. General remarks Essentially all goals set out in the RTAG report have been achieved. However, the roles defined (Section 9) have not.
Elements of LCG Architecture Application Architecture Blueprint RTAG 8 th June 2002 P. Mato / CERN.
Use of CMT in LHCb CMT Workshop, LAL (Orsay) 28 th February - 1 st March 2002 P. Mato / CERN.
POOL Based CMS Framework Bill Tanenbaum US-CMS/Fermilab 04/June/2003.
SEAL: Common Core Libraries and Services for LHC Applications
SEAL Project Overview Lorenzo Moneta/ CERN-EP ACAT03
Geant4 Geometry Objects Persistency using ROOT
POOL persistency framework for LHC
Object-Orientated Programming
User Feedback from SEAL
SEAL Project Core Libraries and Services
Programming to Interfaces
Presentation transcript:

Status of SEAL LCG Applications Area Meeting 22 July 2003 P. Mato / CERN Contents Overview Work Packages Status Summary

22 July 2003SEAL Project StatusP. Mato/CERN2 SEAL Versions Road Map ReleaseDateStatusDescription (goals) V /02/03internal  Establish dependency between POOL and SEAL  Dictionary generation from header files V /03/03public  Essential functionality sufficient for the other existing LCG projects (POOL)  Foundation library, system abstraction, etc.  Plugin management V /05/03internal  Improve functionality required by POOL  Basic framework base classes V /06/03public  Essential functionality sufficient to be adopted by experiments  Collection of basic framework services  Scripting support Released 04/04/03 Released 14&26/02/03 Released 23/05/03 Released 18/07/03

22 July 2003SEAL Project StatusP. Mato/CERN3 SEAL Team (credits)  Christian Arnault(Dictionary)  Radovan Chytracek(Foundation, Framework)  Jacek Generowicz(Scripting, Framework, Documentation)  Fred James(MathLibs)  Wim Lavrijsen(Scripting)  Massimo Marino(Foundation, Framework)  Pere Mato(Framework, Dictionary, Scripting)  Lorenzo Moneta(Foundation, Framework)  Stefan Roiser(Dictionary)  RD Schaffer(Dictionary)  Lassi Tuura(Foundation, Framework, Infrastructure)  Matthias Winkler(MathLibs)  Zhen Xie(Dictionary)

22 July 2003SEAL Project StatusP. Mato/CERN4 Work Packages 1. Foundation and Utility libraries 2. Math Libraries 3. Component Model 4. LCG Object Dictionary 5. Basic Framework Services 6. Scripting Services 7. Grid Services 8. Education and Documentation

22 July 2003SEAL Project StatusP. Mato/CERN5 1. Foundation and Utility Libraries  Foundation Packages –SealPlatformPlatform dependent config.h file –SealBase~80 foundation classes –SealIOTools~30 I/O classes –SealUtil~5 utility classes –SealZipCompression utility classes –PluginManagerLow level plug-in management classes –PluginDumperProgram to dump the plug-in repository  Boost Library –In use in SEAL itself (utilities, shared pointers, format,…)  CLHEP –Packages split ready to be released –New CVS repository (SPI provided)

22 July 2003SEAL Project StatusP. Mato/CERN6 2. Math Libraries  MINUIT –API: adding user interfaces for parameters, migrad, minos –design: separate user parameters and user function, including change of function interface (FCN) to a minimal required interface –fixing/releasing of user parameters is now supported –the number of calls to the user function is counted –two examples added: MigradGaussSim.cpp, MinosGaussSim.cpp  GSL –Not yet a public report of the evaluation. Agreement in recommending GSL to be used by experiments.

22 July 2003SEAL Project StatusP. Mato/CERN7 3. Component Model  Designed a hierarchy of bases classes to support the component model  Each Component is in a Context  Tree of Contexts  Support for locating components –If not in local context, look in parent  A Service provides its own local Context –Components of a Service are scoped in its own Context  User classes inherit from Component or Service –Plug-in functionality for free  FEEDBACK REQUESTED !! Component Service MyComponentMyService Context RefCounted * * 1 Component Factory Component Loader 1

22 July 2003SEAL Project StatusP. Mato/CERN8 Context Hierarchy  Any Component may attempt to locate another Component in the running application (collaboration network) –By “type” or by “key” –If the not found in the current context, the parent context is searched is recursively Context Application C1 C2 Component Svc2 C1C6C1C7 Svc1 C1C3C1C4C1C5 Svc1 Service C1C7

22 July 2003SEAL Project StatusP. Mato/CERN9 Component Model: How-To (1) #ifndef MYCOMPONENT_H #define MYCOMPONENT_H 1 #include "SealKernel/Component.h“ class MyComponent : public seal::Component{ DECLARE_SEAL_COMPONENT; public: MyComponent (seal::Context* context); MyComponent (seal::Context* context, const std::string & label); // implicit copy constructor // implicit assignment operator // implicit destructor //.....component member functions.. void doSomething(); }; #endif // MYCOMPONENT_H MyComponent.h

22 July 2003SEAL Project StatusP. Mato/CERN10 Component Model: How-To (2) #include "MyComponent.h“ #include DEFINE_SEAL_COMPONENT (MyComponent, "seal/example/MyComponent"); MyComponent::MyComponent (seal::Context* context) : Component (context, classContextKey ()){} MyComponent::MyComponent (seal::Context* context, const std::string & label) : Component (context, label){} // member function implementations void MyComponent::doSomething() { std::cout << "MyComponent: Hello World ! " << std::endl; } #include "MyComponent.h“ #include "SealKernel/ComponentFactory.h“ #include "PluginManager/ModuleDef.h“ DEFINE_SEAL_MODULE (); DEFINE_SEAL_PLUGIN (seal::ComponentFactory, MyComponent, MyComponent::classContextLabel ()); MyComponent.cpp Module.cpp

22 July 2003SEAL Project StatusP. Mato/CERN11 Component Model: How-To (3) #include “SealKernel/ComponentLoader.h” #include “MyComponent.h” Handle handle = component (); handle->doSomething(); OtherComponent.cpp

22 July 2003SEAL Project StatusP. Mato/CERN12 4. Object Dictionary  Reflection packages –Some minor bug fixes and improvements were applied to Reflection and ReflectionBuilder  Dictionary generation –The lcgdict command for generating the dictionary sources issues some new warnings. Minor bug fixes.  New Common Dictionaries –SealCLHEP. Dictionary for the Random and Vector subsystems of CLHEP (more dictionaries will be generated on request) –SealDict. Dictionary information of the Reflection package itself. Useful for working with the dictionary information with the python binding –SealSTL. Dictionaries for std::string and some instantiations of fundamental types for std::vector and std::list (more will be generated on request)

22 July 2003SEAL Project StatusP. Mato/CERN13 5. Basic Framework Services  Developed the first set of Basic Services based on the new Component Model  Application –Defines the top level Context –Possibility to set the initial set of Components to be loaded in the application  Message Service –Message composition, filtering and reporting  Configuration Service –Management of Component properties and loading configurations

22 July 2003SEAL Project StatusP. Mato/CERN14 Application  Establishes the “top” Context –But, it can be inserted in an exiting Context  Instantiates a basic number of Components (or Services) useful to all applications –ComponentLoaded (interface to Plug-in manager) –PropertyManager (application level configuration parameters) –MessageService –ConfigurationService int main(int,char**) { Application theApp; //----Get Loader Handle loader = theApp.component (); //----Instantiate the plug-in loader->load("SEAL/Kernel/Test/Loadable"); //----Get a handle to it Handle loadable = theApp.component (); } main.cpp

22 July 2003SEAL Project StatusP. Mato/CERN15 Message Service  The user instantiates a MessageStream to compose messages. It reports to the MessageService when message is completed  MessageService dispatches and filters all messages of the application #include “SealKernel/MessageStream.h” MessageStream info( this,”MyName”, MSG::INFO); info << “Hello world” << flush; MessageStream log( this, “OtherName”); log(MSG::ERROR) << “This is an error” << flush; OtherComponent.cpp MyName INFO Hello World OtherName ERROR This is an error output

22 July 2003SEAL Project StatusP. Mato/CERN16 Configuration Service  A Component may declare its own Properties –Templated Property instances (any type with a stream operator<<) –References to data members (any type with a stream operator<<) –Possibility to associate “callback” update function –Properties have a “name” (scoped) and a “description”  The PropertyCatalogue is the repository of all properties of the application –It is filled from the “configuration file” (Gaudi JobOptions format currently) struct callObj { operator()(const Propertybase&) {…} }; int m_int; Property m_double(“double”, 0.0,”descr”, callObj); propertyManager()->declareProperty(“int”, m_int, 0, “descr”); propertyManager()->declareProperty(m_double); Component.cpp

22 July 2003SEAL Project StatusP. Mato/CERN17 6. Scripting Services  Guidelines for developing Python bindings –Evaluated existing options: SWIG, Boost.Python, SIP, and raw Python C-API » report.html  PyLCGDict: Python binding to the LCG Dictionary –It allows the user to interact with any C++ class for which the LCG Dictionary has been generated –With this module, there is no need to generate specialized Python bindings or wrapper code to interact with C++ classes

22 July 2003SEAL Project StatusP. Mato/CERN18 PyLCGDict: Supported Features  Loading LCG dictionaries  C++ classes –Mapped to Python classes and loaded on demand.  C++ namespaces –Mapped to python scopes. The "::" separator is replaced by the python "." separator  Class methods –Static and non static class methods are supported –Method arguments are passed by value or by reference –The return values are converted into python types and new python classes are created if required. –Method overloading works by dispatching sequentially to the available methods with the same name until a match with the provided arguments is successful.  Class data members –Public data members are accessible as python properties  Emulation of python containers –Container C++ classes (currently only std::vector like) are given the behavior of the python collections to be use in iterations and slicing operations.  Operator overloading –Standard C++ operators are mapped to the corresponding python overloading operators

22 July 2003SEAL Project StatusP. Mato/CERN19 PyLCGDict: Example (1) #include namespace Example { class MyClass { public: MyClass() : m_value(0) {} MyClass(const MyClass& m ) : m_value(m.m_value) {} ~MyClass() {} int doSomething(const std::string& something ) { std::cout << “I am doing something with “ << something << std::endl; return something.size(); } int value() { return m_value; } void setValue(int v) { m_value = v; } private: int m_value; public: float fprop; std::string sprop; }; } MyClass.h

22 July 2003SEAL Project StatusP. Mato/CERN20 PyLCGDict: Example (2) > python2.2 Python (#1, Feb , 12:11:31) [GCC 3.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import PyLCGDict >>> PyLCGDict.loadDict('MyClassDict') >>> m = Example.MyClass() >>> dir(m) ['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__nonzero__', '__reduce__', '__repr__', '__setattr__', '__str__', '__weakref__', '__zero__', '_theObject', 'doSomething', 'fprop', 'setValue', 'sprop', 'value'] >>> m.doSomething('care') I am doing something with care 4 >>> m.setValue(99) >>> print m.value() 99 >>> n = Example.MyClass(m) # copy constructor >>> print n.value() 99 >>> n.fprop = 1.2 >>> n.sprop = 'String property' >>> print n.sprop, n.fprop String property 1.2

22 July 2003SEAL Project StatusP. Mato/CERN21 PyLCGDict: Example (3) #!/usr/bin/env python2 import sys, string, PyLCGDict PyLCGDict.loadDict('SealDictDict') reflect = PyLCGDict.makeNamespace('seal::reflect') # def dumpdict(dict = None): if dict : PyLCGDict.loadDict(dict) for c in reflect.Class.forNames() : print 'class',c.fullName() bases = c.superClasses() if len(bases) : print ' inherits: ', string.join(map(reflect.Class.fullName, bases),', ') fields = c.fields(0) for f in fields : print ' ', f.typeAsString(), f.name() print ' '  Little script to dump the contents of a LCG dictionary

22 July 2003SEAL Project StatusP. Mato/CERN22 8. Education/Documentation  Existing documentation –Currently still limited to a number of topical How-To pages  Python course –Originally prepared for ATLAS, is now part of CERN technical training program –First given in July, scheduled another one for August

22 July 2003SEAL Project StatusP. Mato/CERN23 Software Process  Testing –Many more Unit Tests have been introduced in release –Not yet all of them CppUnit or PyUnit  Nightly Builds –Just started with NICOS (output already available)  Platforms –Released platform: Linux RedHat 7.3/gcc-3.2 optimize and debug –Actively working on icc and windows releases  Effort is being put to “standardize” tool usage and conventions –Avoiding divergences between LCG projects –Adaptation of tools to “LCG proper” working models  Release procedures –Automation of the process is essential (rotating release manager role)

22 July 2003SEAL Project StatusP. Mato/CERN24 Next Immediate Steps  Get feedback (from experiments + POOL+…) about Component model and Framework services –Corrections and re-designs are still possible  Increase the number of supported platforms –Windows is urgent for LHCb –ICC and ECC  Adapt SEAL to new SPI conventions and tools  New Functionality –Framework:Start designing and implementing the Whiteboard service and Dictionary service –Scripting:Completion of PyLCGDict (more C++ features) –Dictionary:New design of the reflection model (complete C++ types)

22 July 2003SEAL Project StatusP. Mato/CERN25 Summary  SEAL is out with some delay (3 weeks) –Takes always longer than foreseen –Combining existing designs into a “common” one is not trivial  The Highlights of are: –First design and implementation of the SEAL component model (base classes to support the model provided) –First set of basic Framework services –New packages providing dictionaries for standard libraries –Python bindings for LCG dictionaries  Ready to be used (tested) by experiments frameworks –LHCb is planning to do so in September