Table of Contents
Document Control Sheet ii
Document Status Sheet ii
Chapter 1
Introduction
1
1.1 Purpose of the document 1
1.2 Conventions 2
1.3 Reporting problems 4
1.4 Editor's note 5
Chapter 2
The framework architecture
7
2.1 Overview 7
2.2 Why architecture? 7
2.3 Data versus code 8
2.4 Main components 9
2.5 Controlling and Scheduling 11
Chapter 3
Release notes and software installation
13
3.1 Release History 13
3.2 Current Functionality 13
3.3 Changes in the new release 15
3.4 Availability 17
3.5 Using the framework 17
3.6 Working with development releases 19
Chapter 4
Getting started
21
4.1 Overview 21
4.2 Creating a job 21
4.3 The main program 22
4.4 Configuring the job 23
4.5 Algorithms 26
4.6 Job execution 28
4.7 Examples distributed with Gaudi 30
4.8 Additional LHCb specific examples 31
Chapter 5
Writing algorithms
33
5.1 Overview 33
5.2 Algorithm base class 33
5.3 Derived algorithm classes 35
5.4 Nesting algorithms 39
5.5 Algorithm sequences, branches and filters 40
Chapter 6
Scripting
43
6.1 Overview 43
6.2 Python scripting service 43
6.3 Python overview 43
6.4 How to enable Python scripting 43
6.5 Prototype functionality 45
6.6 Property manipulation 46
6.7 Synchronization between Python and Gaudi 47
6.8 Controlling job execution 48
Chapter 7
Accessing data
51
7.1 Overview 51
7.2 Using the data stores 51
7.3 Using data objects 53
7.4 Object containers 54
7.5 Using object containers 55
7.6 Data access checklist 57
7.7 Defining new data types 57
7.8 The SmartDataPtr/SmartDataLocator utilities 58
7.9 Smart references and Smart reference vectors 59
7.10 Saving data to a persistent store 60
Chapter 8
LHCb Event Data Model
63
8.1 Glossary 63
8.2 Top level event data structures 64
8.3 Lower level structures 64
8.4 Association to Monte Carlo truth 65
Chapter 9
Detector Description
67
9.1 Overview 67
9.2 Detector Description Database 67
9.3 Detector Data Transient Store 69
9.4 General features of the geometry tree 72
9.5 Persistent representation 74
Chapter 10
Histogram facilities
91
10.1 Overview 91
10.2 The Histogram service. 92
10.3 Using histograms and the histogram service 93
10.4 Persistent storage of histograms 94
Chapter 11
N-tuple and Event Collection facilities
95
11.1 Overview 95
11.2 N-tuples and the N-tuple Service 95
11.3 Event Collections 101
11.4 Interactive Analysis using N-tuples 104
11.5 Known Problems 106
Chapter 12
Framework services
107
12.1 Overview 107
12.2 Requesting and accessing services 107
12.3 The Job Options Service 109
12.4 The Standard Message Service 115
12.5 The Particle Properties Service 118
12.6 The Chrono & Stat service 121
12.7 The Auditor Service 124
12.8 The Random Numbers Service 126
12.9 The Incident Service 129
12.10 The GiGa Service 130
12.11 Developing new services 131
Chapter 13
Tools and ToolSvc
135
13.1 Overview 135
13.2 Tools and Services 135
13.3 The ToolSvc 140
13.4 GaudiTools 142
Chapter 14
Converters
149
14.1 Overview 149
14.2 Persistency converters 149
14.3 Collaborators in the conversion process 150
14.4 The conversion process 152
14.5 Converter implementation - general considerations 154
14.6 Storing Data using the ROOT I/O Engine 155
14.7 The Conversion from Transient Objects to ROOT Objects 156
14.8 Storing Data using other I/O Engines 158
Chapter 15
Visualization Facilities
159
15.1 Overview 159
15.2 The data visualization model 159
15.3 The GaudiLab service 160
Chapter 16
Framework packages, interfaces and libraries
167
16.1 Overview 167
16.2 Gaudi Package Structure 167
16.3 Interfaces in Gaudi 170
16.4 Libraries in Gaudi 173
Chapter 17
Analysis utilities
179
17.1 Overview 179
17.2 CLHEP 179
17.3 HTL 179
17.4 NAG C 180
17.5 ROOT 180
Chapter 18
Accessing SICB facilities
181
18.1 Overview 181
18.2 Reading tapes 181
18.3 Populating the GAUDI transient data store: SICB Converters 183
18.4 Access to the Magnetic Field 184
18.5 Accessing the SICB detector Geometry from Gaudi 185
18.6 Using FORTRAN code in Gaudi 186
18.7 Handling pile up in Gaudi. 187
18.8 Handling SpillOver in Gaudi 189
18.9 Increasing the size of the ZEBRA COMMON block 190
Appendix A
References
191
Appendix B
Options for standard components
193
Appendix C
Job Options Grammar and Error Codes
201
Appendix D
Design considerations
207