# Presentation: 224394

## Athena Prototype:Status and Current Work

**P. Calafiura**
***Architecture Review***
***July 10, 2000***

## What’s going on?

**“****Early adopters”  activities**
**Gaudi Kernel development**
**EDM design and prototyping**
**Scripting**
**Longer term discussions**

## Athena Tutorial Activities *

**ZebraTDRCnv**
**Read existing SLUG simulation data. Done. Needs some polishing**
**Tutorial Examples**
**(at least) 8 available**
**Web-based instructions (self-training)**
**Installation and tools**
**recently rewritten, “site-independent”**
**fully integrated into SRT and our cvs tree**

## Early Adopters Activities

**Liquid Argon Reconstruction port**
**done. 1st attempt, went remarkably well!**
**Tile Cal Reconstruction**
**done, similar to LAr**
**TileCal TestBeam**
**starting, Data Views**
**Generators integration**
**ongoing, what is an “Event”?**
**Graphics Integration**
**XKalman++**
**1st cut done**
**AtlFast**
**ongoing, several EDM and scheduling issues**

## Gaudi Extensions

**Abstract Event Iterator (done)**
**Auditors(ongoing)**
**algo monitoring, pre-/post- conditions**
**Bounded Properties (done)**
**e.g. accept only  **RCUT>0
**Particle Property Service (ongoing, meeting tomorrow morning)**
**Root Histogram Conversion Service(starting)**
**Algo Sequencing/Filtering (done)**

## Data Model  Discussions

## Data Model Integration (from May Workshop)

- We more or less agree on
**Helpers to support multiple logical “views” **
**Typed access (compile or run-time)**
**WORM store: can only add to it**
**ATLFast annotations, extend collections**
**DataObject relationships: no “forward pointers”**
**very interesting discussion on atlas-sw-architecture**
**We have to converge on**
**What is returned? STL-like iterator, Handle, plain C++ pointer/ref**
**How do modules define what they want?**
** ****(Default) Keys, Selectors**

## Views, Handles, Proxies,.... 

**Views, Handles, Proxies,.... **

**View: client view of the stores, updated by the stores**
**StoreGate: type-safe store access, implements cache policy**
**THandle: smart ptr & iterators, basic client interface**
**DataProxi: access control, build the DataObject on demand**
**DBProxi, ReconProxi, ...: concrete DataProxies**

- DataObject

- T

- Represents

- DataProxi

- DBProxi

- ReconProxi

- StoreGate

- DataView

- 0..n

- 1..n

- DataStore

- Owns

- Refers to

- Updates

- indexes

- Access

- Dictionary

- Memory Mgmt

- THandle

## Data Models side-by-side *

## StoreGate Prototype

**Focus on Interface. Use Gaudi TDS to implement it**
**Key****: optional,  distinguish data objects of same type**** **  Identifier id = at_id.lar_em();LArCellContainer::Key key(id);
**Selector****: optional, selection based on DataObject content** LArCellSelector* sel = new LArCellSelector(100);
**THandle****: smart pointer, provide iterator access as well**THandle<LArCellContainer> myhandle(sel);
**StoreGateSvc****: type-safe access to Gaudi TDS**StatusCode sc =  storeGateSvc()->retrieveObject(key, myhandle);cout << ”No of Cells=" << myhandle->size() << endl;LArCellContainer::const_iterator first =      myhandle->begin();LArCellContainer::const_iterator last =      myhandle->end();for (; first != last; ++first)    float energy= (*first)->energy();

**STOREGATE    2000**

**Srini  on guard at the**
**transient store gate**

## Scripting Language Interface

**May 2000 - **_**Much lower priority**_**. However, we have significant experience and available tools.**
**SWIG (Simplified Wrapper & Interface Generator) binds C++ to scripting language**
**Tcl, PERL, Python (Java, Eiffel, Guile)**
**JavaCC IDL compiler generates SWIG input files from IDL**
**Proof of principle level interface (ie. setting simple properties & running event loop).**
**Sept 2000 - Expect to fully implement:**
**IAlgorithm, IProperty, JobOptions functionality, others**

## Proof of Principle SWIG/Tkcon Scripting Interface

**Dynamically load Athena and Algorithm packages**
**Set Simple Properties**
**int, float, string, etc.**
**scalars, vectors**
**Athena commands**
**init, start, run <n>, stop**
**iTcl (object-oriented Tcl) attributes used to drive accessor & mutator methods of Algorithm**
**Tcl interface allows use of:**
**eg. tkcon (Tk Console) -auto help, history, etc.**
**Not completely debugged**

## Longer Term Design Discussions

**Integration with analysis tools**
**event display (prototype)**
**Aravis, XML files(Wired, Atlantis, GraXML)**
**PAW, ROOT, JAS etc**
**explicit invocation, shared memory, multiple threads?**
**Kernel**
**Application Mgr, Algorithms, Services, Tools and all that**
**extensible FSM (prototype) **
**reconstruction on-demand**
**data-driven processing**

## Longer Term Design (cont’d) 

**Algorithm Configuration Manager**
**keep a record of Algo ****instances ****used to create a DataObject**
**similar to D0 RCP manager**
**1st implementation will be file-based (as in D0). Will use Algos and jobOptions (or script) files cvs tags**

## GAUDI object diagram *

**Converter**

**Algorithm**

**Event Data**
**Service**

**Persistency**
**Service**

**Data**
**Files**

**Algorithm**

**Algorithm**

**Transient Event Store**

**Detec. Data**
**Service**

**Persistency**
**Service**

**Data**
**Files**

**Transient Detector **
**Store**

**Message**
**Service**

**JobOptions**
**Service**

**Particle Prop.**
**Service**

**Other**
**Services**

**Histogram**
**Service**

**Persistency**
**Service**

**Data**
**Files**

**Transient**
**Histogram Store**

**Application**
**Manager**

**Converter**

**Converter**

## Conclusions

**As anticipated, bulk of the effort went into porting and packaging**
**everything has been a moving target: Physics Software, Red Hat, SRT/CMT and Gaudi itself**
**We are having a good time discussing, designing and prototyping, in particular in the scheduling, the scripting and EDM areas...**
**... ****but we are not forgetting the burgeoning user community, the tutorials and the reviews ...**