19
Athena/POOL integration

Valeri Fine Athena/POOL integration

Embed Size (px)

DESCRIPTION

Valeri Fine History Athena 5.2.0; POOL pre-release Athena 5.3.0; POOL pre-release Athena 6.1.0; POOL first public release (AthenaPOOL-17 public release) Athena 6.2.0; POOL 1.0.0; AthenaPOOL-22 Athena 6.3.0; POOL 1.0.0; AthenaPOOL-39 Athena 6.4.0; POOL 1.1.0; AthenaPOOL-45 Athena 6.5.0; POOL 1.1.0; AthenaPOOL-51 Athena 6.6.0; POOL 1.2.0; AthenaPOOL-58 Athena 7.0.0; POOL 1.2.0; AthenaPOOL-62 Athena ; POOL 1.3.0; coming soon With 3 weeks Athena release pace, and 1 week to freeze the core package requirement, and 1 week to make release up we have 1 “effective development” week per release.

Citation preview

Page 1: Valeri Fine Athena/POOL integration

Athena/POOL integration

Page 2: Valeri Fine 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.

• 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

Page 3: Valeri Fine Athena/POOL integration

History• Athena 5.2.0; POOL 0.3.0 pre-release• Athena 5.3.0; POOL 0.3.0 pre-release• Athena 6.1.0; POOL 0.5.0 first public release

(AthenaPOOL-17 public release)• Athena 6.2.0; POOL 1.0.0; AthenaPOOL-22• Athena 6.3.0; POOL 1.0.0; AthenaPOOL-39• Athena 6.4.0; POOL 1.1.0; AthenaPOOL-45• Athena 6.5.0; POOL 1.1.0; AthenaPOOL-51• Athena 6.6.0; POOL 1.2.0; AthenaPOOL-58• Athena 7.0.0; POOL 1.2.0; AthenaPOOL-62• Athena 7.1.0 ; POOL 1.3.0; coming soon

With 3 weeks Athena release pace, and 1 week to freeze the core package requirement, and 1 week to make release up we have

1 “effective development” week per release.

Page 4: Valeri Fine Athena/POOL integration

AtlasPOOL CVS repository

Page 5: Valeri Fine Athena/POOL integration

AtlasPOOL example package

Page 6: Valeri Fine Athena/POOL integration

Conversion ProcessSee: Athena. Chapter 15 Converters

AthenaPoolConverter

AthenaPoolAddress

AthenaPoolCnvSvc

AthenaPoolCnv<T>

AthenaPoolCnv<T>

AthenaPoolCnv<T>

Page 7: Valeri Fine Athena/POOL integration

POOL I/O for Athena algorithm

AthenaPoolCnvSvc PoolSvc

IService

POOL

POOLDb

files(ROOT)

Athena Algorithm

StoreGate

FileCatalog(XML)

POOL Collection

EventHeader(MySQL)

jobOptions

SEAL

C++ class headers

File ID

The user should provide 2 things:1. Collection to store /retrieve the object2. Object pointer / token

LCG dictionaryAthena converter

POOL token

Page 8: Valeri Fine Athena/POOL integration

How to prepare your data object and algorithm for POOL I/O

• Athena “Algorithm” is not affected• One extra step is required for the “data

object” – prepare LCG dictionary• Prepare Athena “converter”• Prepare job options• Run “athena”

Page 9: Valeri Fine Athena/POOL integration

AthenaPOOL MySQL “collecton” - EventHeader

Page 10: Valeri Fine Athena/POOL integration

Example of the AtlasPOOL collection

Page 11: Valeri Fine Athena/POOL integration

Job option to read /write via POOLOne 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 += { "AthenaPoolExampleConverter" }; where AthenaPoolExampleConverter name of the 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 = “MyCollectionPoolTry"; where " MyCollectionPoolTry " is a unique name of the current session in the

MySQL Db.• Define (temporary) the name of the ROOT file to write these events out. PoolSvc.Output = "SimplePoolFile.root"; • PoolSvc may be provided with the optional POOL collection factory parameters to

describe the various type collections

Page 12: Valeri Fine Athena/POOL integration

Read the objects from the POOL To read the events back one 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. In fact the file name is the POOL Db parameter rather the user-

provided attribute

Page 13: Valeri Fine Athena/POOL integration

Quick Db check

The named collection can be seen via from MySql Db. To 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.

Page 14: Valeri Fine Athena/POOL integration

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.

Page 15: Valeri Fine Athena/POOL integration

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

Page 16: Valeri Fine Athena/POOL integration

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.

Page 17: Valeri Fine Athena/POOL integration

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.

Page 18: Valeri Fine Athena/POOL integration

POOL is an OO Db• 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.

Page 19: Valeri Fine Athena/POOL integration

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