170 likes | 260 Views
Athena/POOL integration. AthenaPOOL components are components of the Athena framework. From the Atlas “Athena” framework point of view the POOL provides just a new kind of I/O technology.
E N D
Athena/POOL integration Valeri Fine fine@bnl.gov
AthenaPOOL components are components of the Athena framework • From the Atlas “Athena” framework point of view the POOL provides just a new kind of I/O technology. • This means the “integration” within Athena means a concrete implementation of Athena Conversion service for POOL-technology first of all. • The implementation project was present collaboration http://www.usatlas.bnl.gov/~dladams/poolint/design.html Valeri Fine fine@bnl.gov
Conversion Process See: Athena. Chapter 15 Converters AthenaPoolConverter AthenaPoolCnv<T> AthenaPoolCnv<T> AthenaPoolCnvSvc AthenaPoolCnv<T> AthenaPoolAddress Valeri Fine fine@bnl.gov
POOL I/O for Athena algorithm File Catalog (XML) POOL Collection EventHeader (MySQL) Athena Algorithm jobOptions StoreGate C++ class headers AthenaPoolCnvSvc PoolSvc POOL SEAL POOL Db files (ROOT) IService Valeri Fine fine@bnl.gov
AtlasPOOL CVS repository Valeri Fine fine@bnl.gov
AtlasPOOL example package Valeri Fine fine@bnl.gov
AthenaPOOL MySQL “collecton” - EventHeader Valeri Fine fine@bnl.gov
Example of the AtlasPOOL collection Valeri Fine fine@bnl.gov
Job option to read /write via POOL One needs to remember very few things: • Define the Athena Conversion service for POOL I/O technology. To do that it is sufficient to include in the jobOption file: #include "$ATHENAPOOLCNVSVCROOT/share/WriteAthenaPool_jobOptions.txt" This is to load and define two POOL-related Athena services: ApplicationMgr.DLLs += { "PoolSvc", "AthenaPoolCnvSvc" }; ApplicationMgr.ExtSvc += { "PoolSvc", "AthenaPoolCnvSvc" }; • Define the Athena Converter for each package involved ApplicationMgr.DLLs += { "AthenaPoolExampleLcgDictionaryX" }; where AthenaPoolExampleLcgDictionaryX name of the package user-provided converter share library • Provide the StoreGate Stream and the list of the class StoreGate ID’s for those instances of the classes one wants to be written out Stream1.ItemList += {"9876#*" }; • Define the POOL Db collection to keep the track about the stored events PoolSvc.Collection = "NewPoolTry"; where "NewPoolTry" is a unique name of the current session in the MySQL Db. and the name of the ROOT file to write these events out. PoolSvc.Output = "SimplePoolFile.root"; POOL collection factory should be provided with the several parameters to describe the various type collections Valeri Fine fine@bnl.gov
Read the objects from the POOL To read the events backone has to load a special implementation of the Athena EventSelector class and the name of the input Db collection. • To define the POOL event Selector implementation one can add the include statement #include $ATHENAPOOLCNVSVCROOT/share/ReadAthenaPool_jobOptions.txt" to his/her jobOptions. • To define the POOL input collection the statement: EventSelector.InputCollection = "NewPoolTry"; where "NewPoolTry" is a name of the collection one wants to read the events from. The file ID is stored in the Db. By this reason one needs to provide NO file name to read the events back. Valeri Fine fine@bnl.gov
Quick Db check The named collection can be seen via from MySql Db. To see the browse the Atlas default Db http://atlassw1.phy.bnl.gov/phpMyAdmin/index.php select "pool_collection" from the drop-down "(databases)" menu and the select the name of your collection. Valeri Fine fine@bnl.gov
Conclusion At the moment the fundamental problem of providing a tool to build the class dictionary and object Athena converters automatically solved. The Atlas user can try it and the developer group can assist them to collect the valuable feedback, and provide the feedback to the POOL developers. Even though we may focus on other directions some problems should have been anticipated. Valeri Fine fine@bnl.gov
C++ class serialization problem • There are two anticipated problems to be resolved: • Not enough SEAL/POOL capability to serialize some particular Athena C++ class: • Can be resolved by class redesign • Fix SEAL/POOL • Internal Athena class design problem caused its transient nature. The original I/O Gaudi paradigm came from the “Objectivity” that implied two hand-written classes, namely persistent class and class converter per each user data-class. Using ROOT-approach, generating automatically the class dictionary directly from its C++ definition eliminates those hand–written classes . However the classes originally were not design to be persistent that may have caused the problem. • Can be resolved by class redesign Valeri Fine fine@bnl.gov
How to find the “broken” class • One has to try. It is a simplest way to find out the classes to be adjusted. • Conclusion: • The current level of implementation allows us to seek the collaboration-wide trial. Valeri Fine fine@bnl.gov
Three ways to evolve • C++ class serialization problem (I/O and dictionary) – needs the collaboration participation. • It is not clear why one is required to provide the list of the class data-members. The LCG OO dictionary is in possession of this infomrstion. Required the user to change “selection.xml” as soon as his /her class evolves. This would have tremendously simplified the user life. • POOL Db related problem – just next Athena/POOL integration step to be done. • Athena/Pool Optimization • Removing the duplicated functionality • Selection the proper combination of the Db options POOL provides. These cause no immediate problem. We have time to work out Atlas own proper solution or wait POOL Data Service evolves. Valeri Fine fine@bnl.gov
User doesn’t play with any file. The file name is an internal POOL unit and available through the POOL file catalog. The user defines the object he wants to be written out (in term of StoreGate) and the type Db to keep the “event track” (for example MySQL collection name) Questions to be addressed yet: Who allocates the POOL file space and where? How to choose the Db collection name to avoid clashes? Such kind of questions are not new for the Athena. It the same problem we faced to select and assign a unique class id for each class kept in StoreGate. POOL is an OO Db Valeri Fine fine@bnl.gov
Thank you. ATLAS team: POOL/LCG team • David Adams (BNL) Dirk Dulleman • Christian Arnault Markus Frank • Hong Ma (BNL) Ioannis • David Melon Torre Wenaus • David Quarrie • RD Schaffer • Alex Undrus Valeri Fine fine@bnl.gov