Download presentation
Presentation is loading. Please wait.
Published byAugustine Young Modified over 9 years ago
1
CERN Tutorial, February 2010 2 Introduction to Gaudi
2
2-2 CERN Tutorial, February 2010 LHCb Software Strategy Develop an Architecture (‘blueprint’) and a Framework (real code) to be used at all stages of LHCb data processing HLT, simulation, reconstruction, analysis Avoid fragmentation and duplication of computing efforts Transparent use of third-party components wherever possible Applications are developed by customizing the Framework
3
2-3 CERN Tutorial, February 2010 What is a Framework? Framework Definition [1,2] An architectural pattern that codifies a particular domain. It provides the suitable knobs, slots and tabs that permit clients to use and adapt to specific applications within a given range of behavior. In practice A skeleton of an application into which developers plug in their code and provides most of the common functionality. Framework Definition [1,2] An architectural pattern that codifies a particular domain. It provides the suitable knobs, slots and tabs that permit clients to use and adapt to specific applications within a given range of behavior. In practice A skeleton of an application into which developers plug in their code and provides most of the common functionality. [1] G. Booch, “Object Solutions”, Addison-Wesley 1996 [2] E. Gamma, et al., “Design Patterns”, Addison-Wesley 1995
4
2-4 CERN Tutorial, February 2010 Framework Benefits Common vocabulary, better specifications of what needs to be done, better understanding of the system. Low coupling between concurrent developments. Smooth integration. Organization of the development. Robustness, resilient to change (change-tolerant). Fostering code re-use Common vocabulary, better specifications of what needs to be done, better understanding of the system. Low coupling between concurrent developments. Smooth integration. Organization of the development. Robustness, resilient to change (change-tolerant). Fostering code re-use
5
2-5 CERN Tutorial, February 2010 Software Organization Frameworks Toolkits ReconstructionSimulation Analysis Foundation Libraries High level triggers One framework for basic services + various specialized frameworks: detector description, visualization, persistency, interactivity, simulation, etc. A series of widely used basic libraries: Boost, GSL, Root etc. Applications built on top of frameworks and implementing the required algorithms.
6
2-6 CERN Tutorial, February 2010 Gaudi Architecture GAUDI is an architecture and framework for event- processing applications (simulation, reconstruction, etc.) Initially developed for LHCb, it has been adopted and extended by ATLAS and adopted by several other experiments including Fermi Space Telescope, HARP, Minerva, Daya Bay Main Design Choices best illustrated by looking at the Gaudi Object diagram A snapshot of the components in memory, once the job is initialized and running
7
2-7 CERN Tutorial, February 2010 Gaudi Object Diagram Converter Algorithm Event Data Service Persistency Service Data Files Algorithm 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 Event Selector Transient Event Store
8
2-8 CERN Tutorial, February 2010 Separation between “data” and “algorithms” Converter Algorithm Event Data Service Persistency Service Data Files Algorithm 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 Event Selector Transient Event Store
9
2-9 CERN Tutorial, February 2010 Three basic categories of data characterized by their “lifetime” in the job Converter Algorithm Event Data Service Persistency Service Data Files Algorithm 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 Event Selector Transient Event Store
10
2-10 CERN Tutorial, February 2010 Separation between “transient” and “persistent” representations of the data Converter Algorithm Event Data Service Persistency Service Data Files Algorithm 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 Event Selector Transient Event Store
11
2-11 CERN Tutorial, February 2010 Data store-centered (“blackboard”) architectural style Converter Algorithm Event Data Service Persistency Service Data Files Algorithm 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 Event Selector Transient Event Store
12
2-12 CERN Tutorial, February 2010 “User code” encapsulated in few specific places Converter Algorithm Event Data Service Persistency Service Data Files Algorithm 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 Event Selector Transient Event Store
13
2-13 CERN Tutorial, February 2010 Well defined component “interfaces” Converter Algorithm Event Data Service Persistency Service Data Files Algorithm 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 Event Selector Transient Event Store
14
2-14 CERN Tutorial, February 2010 Gaudi Interface model Concrete Algorithm EventDataSvc IDataProviderSvc IHistogramSvc IMessageSvc IAlgorithm IProperty Obj_B DetectorDataSvc HistogramSvc MessageSvc ToolSvc IToolSvc ApplicationMgr ISvcLocator Obj_A
15
2-15 CERN Tutorial, February 2010 Laptop Interface Model IDVIConnector IWiFiPort IKeyboard IUSBConnector Each interface is specialized in a domain. Interfaces are independent of concrete implementations. You can mix devices from several constructors. Application built by composing. Standardizing on the interfaces gives us big leverage. IVGAConnector
16
2-16 CERN Tutorial, February 2010 Electrical plug interface model Don’t define too many interfaces for the same job!
17
2-17 CERN Tutorial, February 2010 Interfaces in Practice class IMyInterface: virtual public IAlgTool { virtual double doSomething( int a, double b ) = 0; } class IMyInterface: virtual public IAlgTool { virtual double doSomething( int a, double b ) = 0; } IMyInterface.h #include “IMyInterface.h” class MyDoSomethingTool : public GaudiTool, virtual public IMyInterface { inline double doSomething( int a, double b ) { return b * (double)a; } } #include “IMyInterface.h” class MyDoSomethingTool : public GaudiTool, virtual public IMyInterface { inline double doSomething( int a, double b ) { return b * (double)a; } } MyDoSomethingTool.h
18
2-18 CERN Tutorial, February 2010 #include “IMyInterface.h” ClientAlgorithm::myMethod() { // Declare the interface IMyInterface* myInterface; // Get the interface from somewhere myInterface = tool (“MyDoSomethingTool”); // Use the interface double result = myInterface->doSomething( 10, 100.5); } #include “IMyInterface.h” ClientAlgorithm::myMethod() { // Declare the interface IMyInterface* myInterface; // Get the interface from somewhere myInterface = tool (“MyDoSomethingTool”); // Use the interface double result = myInterface->doSomething( 10, 100.5); } ClientAlgorithm.cpp
19
2-19 CERN Tutorial, February 2010 Gaudi Component Model Algorithms, Converters, Services and Tools are known as Components –Self contained objects with behaviour –Loaded at run time from component libraries (“plugins”) –Interact with the framework and with each other via Interfaces –Behaviour controlled by Properties (“Job options”) Properties –Control and data parameters for Algorithms, Services and Tools
20
2-20 CERN Tutorial, February 2010 Algorithm Users write Concrete Algorithms – Most of the tutorial will be devoted to that It is called once per physics event Implements three methods in addition to the constructor and destructor – initialize(), execute(), finalize()
21
2-21 CERN Tutorial, February 2010 Data Data Object –Atomic data unit (visible and managed by transient data store) –No algorithmic code Transient Data Store –Central service and repository for data objects –Manages data location, life cycle, load on demand, … Data Converter –Provides explicit/implicit conversion from/to persistent data format to/from transient data
22
2-22 CERN Tutorial, February 2010 Algorithm & Transient Store Algorithm A Algorithm B Algorithm C Transient Event Data Store Data T1 Data T2, T3 Data T2 Data T3, T4 Data T4 Data T5 Data T1 Data T5 Real dataflow Apparent dataflow
23
2-23 CERN Tutorial, February 2010 Services and Tools – Services –Globally available software components providing framework functionality JobOptions Service, Message Service, Particle Properties Service, Event Data Service, Histogram Service, N-tuple Service, Detector Data Service, Magnetic Field Service, Random Number Service, Chrono Service, (Persistency Services), (User Interface & Visualization Services), (Geant4 Services) – Tools –Globally or locally available components providing algorithmic functionality –Callable many times per event, through specific interface and with arguments IBdlTool, IDistanceCalculator, IHltSummaryTool, IMassVertexFit, IProtoParticleFilter, ISTReadoutTool, ITrackFitter….
24
2-24 CERN Tutorial, February 2010 Gaudi Product Sheet Current release – v21r7 (Jan 2010) Supported Platforms – Scientific Linux (CERN) 5 & gcc 4.3 – Scientific Linux (CERN) 4 & gcc 3.4 – Windows XP & VisualC++ 7.1 – (gcc 4.3 with OSX 10.5) Web address. – http://cern.ch/proj-gaudi/ http://cern.ch/proj-gaudi/
25
2-25 CERN Tutorial, February 2010 Documentation Gaudi User Guide – A 220 pages document targeted to end-users FAQ: Mixture of Gaudi and LHCb specific topics –https://twiki.cern.ch/twiki/bin/view/LHCb/FAQ/LHCbFAQhttps://twiki.cern.ch/twiki/bin/view/LHCb/FAQ/LHCbFAQ C++ Documentation (generated from code) – Doxygen: –Uses special comments in code, e.g. Tutorial solutions –http://cern.ch/proj-gaudi/releases/GAUDI/doc/html/index.htmlhttp://cern.ch/proj-gaudi/releases/GAUDI/doc/html/index.html – Lbglimpse: indexed search within released code –Lbglimpse Lbglimpse IJobOptionsSvc Gaudi v21r7 Self help mailing lists: –lhcb-soft-talk@cern.ch, gaudi-talk@lists.bnl.govlhcb-soft-talk@cern.chgaudi-talk@lists.bnl.gov
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.