GLAST Gaudi Review T. Burnett H.Kelly 10 Sept 02 Gaudi code review

Slides:



Advertisements
Similar presentations
Introduction to C++ An object-oriented language Unit - 01.
Advertisements

Mantid Architecture Straw man proposal Nick Draper 24 th August 2007.
March 24-28, 2003Computing for High-Energy Physics Configuration Database for BaBar On-line Rainer Bartoldus, Gregory Dubois-Felsmann, Yury Kolomensky,
15 March, 2000LHCb Computing1 Software Review Panel LHCb Answers to Architecture, Data Model and Program Infrastructure Pere Mato for the LHCb Collaboration.
Gaudi Framework Tutorial, April Introduction.
Overview of LHCb applications and software environment LHCb software tutorial - March
GLAST CHEP 03 March R.Dubois1/17 GLAST Large Area Telescope: Overview of GLAST Offline Software Richard Dubois Stanford Linear Accelerator Center.
CERN Tutorial, September Job Options and Printing.
Job Options and Printing 1 LHCb software tutorial - September 2011.
The report on the current situation of the BESIII framework zhangxiaomei maqiumei 10/3/2004.
GLAST Gaudi Code Review, 10 Sept. 2002, H. Kelly, 2-1 GLAST Event Data Model and Persistency.
Introduction to Gaudi LHCb software tutorial - September
M.Frank LHCb/CERN Using Shared Libraries ã The traditional way ã How to build shared images? ã Benefits ã Process configuration ã Fortran.
9 Associators How to relate objects to each other Create relations Save relations Use relations: Associators.
Use of Gaudi in Reconstruction Weidong Li 23/06/2004.
GLAST CHEP 03 March T.Burnett1/12 User-friendly tools for Managing Software Development Projects User-friendly tools for Managing Software Development.
Gaudi Framework Tutorial, April Algorithm Tools: what they are, how to write them, how to use them.
Gaudi Framework Tutorial, April Job Options and Printing.
National Center for Supercomputing ApplicationsNational Computational Science Grid Packaging Technology Technical Talk University of Wisconsin Condor/GPT.
Apr. 8, 2002Calibration Database Browser Workshop1 Database Access Using D0OM H. Greenlee Calibration Database Browser Workshop Apr. 8, 2002.
GLAST LAT Offline SoftwareCore review, Jan. 17, 2001 Review of the “Core” software: Introduction Environment: THB, Thomas, Ian, Heather Geometry: Joanne.
Copyright © 2007 InSTech Joint Laboratory All rights reserved. 1 Consideration on Persistence of WiseMan FuDan-Hitachi InSTech (Innovative Software Technology)
G.Govi CERN/IT-DB 1 September 26, 2003 POOL Integration, Testing and Release Procedure Integration  Packages structure  External dependencies  Configuration.
23/2/2000Status of GAUDI 1 P. Mato / CERN Computing meeting, LHCb Week 23 February 2000.
By Mr. Muhammad Pervez Akhtar
Bologna Tutorial, April Job Options and Printing.
GLAST LAT Project Science Tools - 12 June 2002 T. Burnett 1 The Science Analysis Software Development Environment -- for tools too! T. Burnett.
CERN Tutorial, February Introduction to Gaudi.
INFSO-RI Enabling Grids for E-sciencE Using of GANGA interface for Athena applications A. Zalite / PNPI.
CERN Tutorial, September Overview of LHCb applications and software environment.
Introduction to the Athena Software Hong Ma BNL Athena Tutorial USATLAS Software Workshop.
N ATIONAL E NERGY R ESEARCH S CIENTIFIC C OMPUTING C ENTER Charles Leggett Prototype GEANT4 Service for ATHENA framework ATLAS Software Workshop Dec 3.
Execution ways of program References: www. en.wikipedia.org/wiki/Integrated_development_environment  You can execute or run a simple java program with.
Bologna Tutorial, June Overview of LHCb applications and software environment.
9 Associators How to relate objects to each other Create relations Save relations Use relations: Associators.
Athena StoreGate Tutorial: May 30, Objectives Learn how to access data objects using StoreGate How to record/retrieve by TYPE Optionally using keys.
Elements of LCG Architecture Application Architecture Blueprint RTAG 8 th June 2002 P. Mato / CERN.
Solvency II Tripartite template V2 and V3 Presentation of the conversion tools proposed by FundsXML France.
Use of CMT in LHCb CMT Workshop, LAL (Orsay) 28 th February - 1 st March 2002 P. Mato / CERN.
David Adams ATLAS Hybrid Event Store Integration with Athena/StoreGate David Adams BNL March 5, 2002 ATLAS Software Week Event Data Model and Detector.
LHCb Software Week 25/11/99 Gonzalo Gracia Abril 1 r Status of Geant4 in LHCb. r Ideas on how to populate the LHCb Detector Description Data Base (LHCb.
Root I/O and the Gaudi Framework
Muen Policy & Toolchain
“Algorithm Tools” what they are, how to get them and how to use them
Introduction to Visual Basic 2008 Programming
Data Virtualization Tutorial… CORS and CIS
Using Shared Libraries
A C++ generic model for the GLAST Geometric Description
Distributed object monitoring for ROOT analyses with Go4 v.3
Writing Physics Tools Schedule: Timing Topic 20 minutes Lecture
Singleton Pattern Command Pattern
LHCb Software Tutorial
Server-Side Application and Data Management IT IS 3105 (Spring 2010)
A brief introduction to doxygen
SW Architecture SG meeting 22 July 1999 P. Mato, CERN
Cmake Primer.
Packages and Interfaces
Various News From Detector Description
Exploring the Power of EPDM Tasks - Working with and Developing Tasks in EPDM By: Marc Young XLM Solutions
Software Installation
What’s new in version 5 of GAUDI
GAUSS - GEANT4 based simulation for LHCb
Raw Event Conversion Service in BOSS framework
Simulation and Physics
Introduction to javadoc
Software Installation, release 4.0
2 Getting Started.
Use Of GAUDI framework in Online Environment
Planning next release of GAUDI
Plug-In Architecture Pattern
Presentation transcript:

GLAST Gaudi Review T. Burnett H.Kelly 10 Sept 02 Gaudi code review

Purposes of the review: Trigger a comprehensive review of how we are using Gaudi Improve, for us and the reviewers, the documentation Generate a list of TODOs for improving usage and documentation Get feedback from our external reviewer!!! Gaudi code review 10 Sept 02

Outline Introduction: how we build Gaudi and GLAST software Gaudi design summary: what we use and how it works Glast executable building strategy Our primary package: Gleam Temporary and Persistent storage: Event and RootIo packages GlastSvc: converters and services for Glast Gaudi code review 10 Sept 02

Building Gaudi and Gleam We use cvs and CMT to manage source and packages. Use CMT interface packages for external code Mandate imbedded doxygen comments for documentation No distinction between GLAST and Gaudi packages: allows tuning requirement files Frozen versions: CMT v1r10p20011126 Gaudi v9  requires egcs 2.91.66 (VC++ 6.0 on windows) Gaudi code review 10 Sept 02

The Glast Package file layout Header files if package has interface Release Package version Package requirements file cmt fragments CMTPATH points here like: v8r9p11 Not in CMT, but represents value of a tag Documentation Files (release.notes) doc images Source Code files src test xml files xml Gaudi code review 10 Sept 02

Gaudi design: DLLs, Abstract interfaces Code compiled, prelinked into shareables (DLL’s) How does the Client connect? Compile time dependency: must have common abstract header. How about run time? IAbstractService Dll_A Dll_B ? Gaudi code review 10 Sept 02

Gaudi design II: Factories Runtime: So how does the code in the Client method in DLL_A find out about the object in DLL_B? And how is it instantiated? must happen at runtime. (If one big object, could have used Singlet Pattern) Answer: A FactoryTable Gaudi code review 10 Sept 02

Gaudi Factories Gaudi code review 10 Sept 02

Gaudi design: the interface ID ISvcFactory.h: // Declaration of the interface ID ( interface id, major version, minor version) static const InterfaceID IID_ISvcFactory(106, 1 , 0); class ISvcFactory : virtual public IFactory { public: /// Retrieve interface ID static const InterfaceID& interfaceID() { return IID_ISvcFactory; } [...] Notes: Two uses of C++ “static” keyword: file-scope defined symbol and class variable. Compiled into the DLL. Service.cpp //--- IInterface::queryInterface StatusCode Service::queryInterface(const IID& riid, void** ppvInterface) { if ( IID_IInterface.versionMatch(riid) ) { *ppvInterface = (IInterface*)this; } else if ( IID_IService.versionMatch(riid) ) { *ppvInterface = (IService*)this; else if ( IID_IProperty.versionMatch(riid) ) { *ppvInterface = (IProperty*)this; else { return NO_INTERFACE; addRef(); return SUCCESS; Notes: versionMatch requires interface and major major ids the same, minor must be <= local value. Gaudi code review 10 Sept 02

Interfaces and Factories we use IAlgorithm (30 concrete) all Algorithms (initialize, execute, finalize) Instantiated by AppManager or Sequencer IService (12 concrete) Instantiated by AppManager if in ExtSvc list. Used for geometry, flux, Gui IAlgTool (6 interfaces, 20 concrete) Created on demand IConverter (2 concrete) Created when found Gaudi code review 10 Sept 02

Gaudi execution model Executable has only Gaudi kernel code, simple main Expect CMT setup runs first to create env vars, especially PackageShr with paths to all shareables GaudiSvcShr=/u/ek/burnett/myground/Gleam/GaudiSvc/v7r0p1/Linux-i686/libGaudiSvc Sequence: Use bootstrap code to load ApplicationMgr from GlastSvc dll Start basic services (job options, message, histograms, …) Find and read job options file Load specified dll’s from list in ApplicationMgr.DLLs. Instantiate all Services in ApplicationMgr.ExtSvc. Instantiate all Algorithms in ApplicationMgr.TopAlg. Start event loop, calling list in TopAlg. Gaudi code review 10 Sept 02

Gleam – package managing the GLAST sim/recon program Actually two executables, build from code in GlastPolicy and GuiSvc By contrast, largest DLLs are G4Generator ( 12.3 MB) and TkrRecon(10.9 MB). Contains joboptions to define several configurations. ROOT scripts for detailed tests Heavy use of Sequence algorithm Special GUI/event display mode, using IRunnable interface Type External Symbols Size (MB) Gui 1980 2.3 non-Gui 178 0.2   Job options files (in src) basicOptions.txt guiOptions.txt jobOptions.txt readdigi.txt gamma_1_gev_normal.txt Gaudi code review 10 Sept 02

Program Flow: basicOptions.txt Sequencer/Top Sequencer/Generator FluxAlg   G4Generator Sequencer/Digitization TkrSimpleDigiAlg CalDigiAlg AcdDigiAlg Sequencer/EventDisplay Sequencer/Triggered TriggerAlg Sequencer/Reconstruction Sequencer/Cal1 CalXtalRecAlg CalClustersAlg/first Sequencer/Tkr TkrReconAlg Sequencer/Cal2 CalClustersAlg/second Sequencer/Acd AcdReconAlg Sequencer/RecoDisplay Sequencer/Output mcRootWriterAlg digiRootWriterAlg reconRootWriterAlg Gaudi code review 10 Sept 02

GUI/event display configuration: GuiSvc Implemented by special joboptions, guiOptions.txt, should be included after basicOptions. ApplicationMgr.ExtSvc += {"GuiSvc"}; ApplicationMgr.Runable = "GuiSvc"; Service with factory in executable (requires special link options). Implements IRunnable interface to control event loop. During initialization, locates all tool factory instances for IGuiTool tools: creates each and have them set up GUI objects. (Currently two: FluxMenu and DetectorDisplay.) Gaudi code review 10 Sept 02

The Event and detector model; I/O Event model: DataObject classes in Event. Detector model: GlastDetSvc Service. Converters: EventHeader and MCEvent. I/O: ROOT conversion algorithms Now, to Heather for the details Gaudi code review 10 Sept 02