Presentation is loading. Please wait.

Presentation is loading. Please wait.

OO-Design in PHENIX PHENIX, a BIG Collaboration A Liberal Data Model

Similar presentations


Presentation on theme: "OO-Design in PHENIX PHENIX, a BIG Collaboration A Liberal Data Model"— Presentation transcript:

1 OO-Design in PHENIX PHENIX, a BIG Collaboration A Liberal Data Model
Simple (and fast) DST I/O Design Patterns OO-Database, an example for the abstract extreme Does it really work? Ergo. . . CHEP-2000 Matthias Messer, BNL

2 Under Construction . . . Software infrastructure CHEP-2000
Matthias Messer, BNL

3 From RAW to DST Official Language is C++
FORTRAN legacy now only in simulation (GEANT 3) 200,000 lines of code and still growing fast Limited manpower and financial resources How unusual, what? Usage of many free open-source packages Linux, automake, Root, Bonsai, CVS, CLHEP (well, sort of) many more Good experience as compared to commercial software Maintenance(!), upgrades, necessary modifications CHEP-2000 Matthias Messer, BNL

4 PHENIXians Picture shows only a third of the collaboration
Many developers Ideas Strong opinions about programming Software infrastructure has to integrate them all CHEP-2000 Matthias Messer, BNL

5 A Liberal OO Model Old OO: Everything is one grand song
Have a (preferably) complete design before you start coding Work done by experienced OO-programmers Well . . . Liberal OO: Have it your way Data-objects with some methods method-collections (functors) with some data-members shallow inheritance structures for modularity Independently designed packages work on one data-structure Composite Objects: A node-tree to hold (and share) data CHEP-2000 Matthias Messer, BNL

6 PHOOL, The PHENIX OO Library
Composite Objects: A node-tree to hold (and share) data Composite Nodes Data Node CHEP-2000 Matthias Messer, BNL

7 PHNode the Data-Classes
Data node is template type-safe But all inherit from PHNode Navigation class PHNodeIterator uses Polymorphism PHNodeIterator Unix-like navigation cd(“ . . .”) find(“ . . .”) Can use abstract strategies for_each(PHStrategy) CHEP-2000 Matthias Messer, BNL

8 PHModule the Functor Classes
Method-container class common interface or entry-point, the event() function Can be used with a PHModuleManager PHDataNode<PHModule> for implementation of strategies CHEP-2000 Matthias Messer, BNL

9 Abstract Strategies Used in Node tree Used in Module Manager
apply a method to all nodes of a branch Used in Module Manager call event() function of all Modules in the collection: the event-loop CHEP-2000 Matthias Messer, BNL

10 OODBs in PHENIX Two autonomous partitions Counting House
RCF (RHIC Computing Facility) Robust against the ‘bulldozer incident’ The picture shows a subset Pdbcal is only one of many DB applications, but The one most of all used in reconstruction code The biggest data volume order of Tbyte/Year CHEP-2000 Matthias Messer, BNL

11 Pdbcal a user-friendly database-application
small set of wrapped control-classes start, end transactions easily expandable by the user himself provide a storage class (e.g. a hardware-channel) gets picked up by code-generators for integration into the DB-package you handle only a very abstract (2.5 layers) bank-class applications do not depend on later generated code transparent low-level activity Open a new DB-file when 2 Gbyte limit is reached traverse from Tag-DB to calibration-DB CHEP-2000 Matthias Messer, BNL

12 Data-Storage in Objy/Root
No need for elaborate design of the base classes concentrate on functionality and on ONE application (objy) for now add Root I/O later by way of inheritance transparent for the user interface CHEP-2000 Matthias Messer, BNL

13 Useful (and used) Design-Patterns
singletons database application manager a classmap hash-table (STL-map) abstract base-classes and factories change low-level applications without changing interfaces Objectivity Root protect the user from implementation details (and vice versa) composite objects flexible, yet type-safe node-tree abstract strategies standardized operations on no-tree-data great flexibility in choosing analysis methods CHEP-2000 Matthias Messer, BNL

14 The Very Real Life . . . . . . of simulated data processing
MDC: Mock Data Challenge two weeks of simultaneous data sinking into HPSS data mining from HPSS parallel data processing using the PHOOL environment the new reconstruction software is fast: 30s / event is factor two faster than with old data-model (STAF) is reliable: few crashes, none related to memory-management in the reconstruction code no memory leaks (non trivial in such a liberal data-model) CHEP-2000 Matthias Messer, BNL

15 In Somma . . . The relaxed OO-philosophy (PHOOL)
has: slightly more separation between data and methods shallow inheritance trees you buy what you want, or “I don’t want a three-vector that can send me ” can: integrate many peoples software efforts allow flexible usage of outside-packages The approach of the abstract extreme (Pdbcal) shields user, prevents fear of first contact maintains flexibility in usage of low-level software Contact more info: CHEP-2000 Matthias Messer, BNL


Download ppt "OO-Design in PHENIX PHENIX, a BIG Collaboration A Liberal Data Model"

Similar presentations


Ads by Google