# Presentation: 528514

## Athena/POOL integration

- David Adams
- BNL
- March 4, 2003

- ATLAS Software Workshop
- Database Session

## Contents

- Goal
- Design
- Plan
- Phase 1
- Phase 1 status
- Issues
- Longer term issues
- Schedule
- Conclusions

- Event Data History           David Adams   BNL

- December 2001

## Goal

- Integrated Athena/POOL will enable:
- Writing event data from StoreGate to POOL
- Reading event data from POOL into StoreGate
- User interface similar to that for Oby and AthenaRoot
- Event data organized into ADB EventHeader
- Access via POOL Collection<EventHeader>
- Type definitions in SEAL dictionary
- POOL conversions based on this dictionary

- Event Data History           David Adams   BNL

- December 2001

## Design

- See _[http://www.usatlas.bnl.gov/~dladams/poolint/](http://www.usatlas.bnl.gov/~dladams/poolint/)_

- Identify systems and their dependencies 
- Color coded
- Sequence diagrams show interactions between components
- Class diagram illustrates dependencies between components

- Event Data History           David Adams   BNL

- December 2001

## Slide 5

- Event Data History           David Adams   BNL

- December 2001

## Slide 6

- Event Data History           David Adams   BNL

- December 2001

## Slide 7

- Event Data History           David Adams   BNL

- December 2001

## Slide 8

- Event Data History           David Adams   BNL

- December 2001

## Slide 9

- Event Data History           David Adams   BNL

- December 2001

## Plan

- Development has three phases
- Write and read simple event data
- See following
- Full dictionary
- Automatic population in ATLAS
- Support complicated types
- Automatic conversion
- Support references between data objects

- Event Data History           David Adams   BNL

- December 2001

## Phase 1

- Phase 1 is to first deliver the ability to write and read back
- Collection<EventHeader>
- Including “EventInfo”
- One or two very simple data objects/event
- Do not require
- Complicated objects
- Automatic dictionary population
- References between objects

- Event Data History           David Adams   BNL

- December 2001

## Phase 1 status (cont)

- Design – DONE
- 4 access sequence diagrams – DONE
- Initialization sequence diagrams – SKIP?
- Class diagram – DONE
- Event Header classes
- EventHeader
- EventHeaderIterator

- Event Data History           David Adams   BNL

- December 2001

## Phase 1 status (cont)

- Integration classes
- PoolAddress - STARTED
- PoolSvc - STARTED
- PoolCnvSvc - STARTED
- BasePoolCnv - STARTED
- PoolCnv<T> - STARTED
- EventInfoPoolCnv

- Event Data History           David Adams   BNL

- December 2001

## Phase 1 status (cont)

- Example/demo programs
- Write POOL file from Athena with one simple object/event - SOON
- Write Collection<SimpleClass>
- Write and read Collection<EventHeader>
- Previous with one data object in event
- Previous with multiple objects taken from StoreGate (Phase 1 complete)

- Event Data History           David Adams   BNL

- December 2001

## Issues

- POOL documentation
- Difficult to understand how to use POOL
- Example programs are a great help
- (after you find them)
- GCC 3.2 required for POOL
- E.g. StoreGate compiles but does not work properly
- Xerces 2.1 required for POOL

- Event Data History           David Adams   BNL

- December 2001

## Issues (cont)

- CMT version 13
- Required for GCC 3.2
- Problems working in tcsh
- ROOT
- Where to initialize?
- POOL or ATLAS bridge package
- Can AthenaRoot and AthenaPool be used together?
- Which ROOT libraries to link?
- At present AthenaPool has explicit ROOT dependency

- Event Data History           David Adams   BNL

- December 2001

## Issues (cont)

- Providing access to POOL in ATLAS releases
- Alex has created AtlasPool package
- Will need update for POOL 0.4
- Also need SEAL
- Same strategy (AtlasSeal)?
- EventHeader
- We will write this. OK?

- Event Data History           David Adams   BNL

- December 2001

## Issues (cont)

- POOL
- library dependencies
- Need all (including test and example)?
- Collection<T>
- Typed collection not present in 0.3
- Present in 0.4?
- Use untyped collection as workaround
- POOL 0.4
- Switch right away or after phase 1?

- Event Data History           David Adams   BNL

- December 2001

## Longer term issues

- Dictionary integration (phase 2)
- References between objects (phase 3)
- POOL ROOT file format
- Data directly accessible in ROOT?
- Without POOL?
- Or other non-athena applications?

- Event Data History           David Adams   BNL

- December 2001

## Longer term issues

- Long term data storage
- When do we require that data written to POOL be accessible in the far future?
- Conditions data
- Can/should we store this data in POOL?

- Event Data History           David Adams   BNL

- December 2001

## Schedule

- Difficult to estimate
- GCC 3.2 problems
- And other problems not yet encountered
- Try to get most or all of examples/tests working by the end of this month.
- Working release without all our local patches and workarounds may take longer

- Event Data History           David Adams   BNL

- December 2001

## Conclusions

- POOL appears to offer a sensible persistence strategy for ATLAS
- Share development and maintenance effort with other experiments
- Meets all ATLAS requirements
- No insurmountable problems yet
- Phase 2 (dictionary integration)
- discussed by David Q yesterday
- Phase 3 (references)
- Needs discussion

- Event Data History           David Adams   BNL

- December 2001