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 5
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 14
3.3 Changes between releases 16
3.4 Availability 19
3.5 Using the framework 19
3.6 Working with development releases 21
3.7 Installation of the framework outside CERN 22
Chapter 4
Getting started 25
4.1 Overview 25
4.2 Creating a job 25
4.3 The main program 26
4.4 Configuring the job 27
4.5 Algorithms 30
4.6 Job execution 32
4.7 Examples distributed with Gaudi 34
4.8 Additional LHCb specific examples 35
Chapter 5
Writing algorithms 37
5.1 Overview 37
5.2 Algorithm base class 37
5.3 Derived algorithm classes 40
5.4 Nesting algorithms 43
5.5 Algorithm sequences, branches and filters 44
Chapter 6
Accessing data 47
6.1 Overview 47
6.2 Using the data stores 47
6.3 Using data objects 49
6.4 Object containers 50
6.5 Using object containers 51
6.6 Data access checklist 53
6.7 Defining Data Objects 53
6.8 The SmartDataPtr/SmartDataLocator utilities 55
6.9 Smart References and Smart Reference Vectors 56
6.10 Persistent storage of data 57
Chapter 7
Modelling Event Data 59
Chapter 8
Detector Description 61
8.1 Overview 61
8.2 Detector Description Database 61
8.3 Detector Data Transient Store 63
8.4 General features of the detector description 69
8.5 Persistent representation based on XML files 73
8.6 Persistent storage in a Conditions Database 87
Chapter 9
Histogram facilities 93
9.1 Overview 93
9.2 The Histogram service. 93
9.3 Using histograms and the histogram service 94
9.4 Persistent storage of histograms 95
Chapter 10
N-tuple and Event Collection facilities 97
10.1 Overview 97
10.2 N-tuples and the N-tuple Service 97
10.3 Event Collections 102
10.4 Known Problems 109
Chapter 11
Framework services 111
11.1 Overview 111
11.2 Requesting and accessing services 111
11.3 The Job Options Service 113
11.4 The Standard Message Service 120
11.5 The Particle Properties Service 123
11.6 The Chrono & Stat service 126
11.7 The Auditor Service 129
11.8 The Random Numbers Service 131
11.9 The Incident Service 134
11.10 The GiGa Service 135
11.11 The Gaudi Introspection Service 135
11.12 Developing new services 136
Chapter 12
Tools and ToolSvc 139
12.1 Overview 139
12.2 Tools and Services 139
12.3 The ToolSvc 145
12.4 GaudiTools 147
Chapter 13
Converters 153
13.1 Overview 153
13.2 Persistency converters 153
13.3 Collaborators in the conversion process 154
13.4 The conversion process 156
13.5 Converter implementation - general considerations 158
13.6 Storing Data using the ROOT I/O Engine 158
13.7 The Conversion from Transient Objects to ROOT Objects 159
13.8 Storing Data using other I/O Engines 160
Chapter 14
Scripting and Interactivity 161
14.1 Overview 161
14.2 How to enable Python scripting 161
14.3 Current functionality 163
14.4 Physics Analysis Environment 167
Chapter 15
Visualization Facilities 169
15.1 Overview 169
15.2 The data visualization model 169
15.3 VisSys - the Gaudi visualisation services 170
15.4 Panoramix - the LHCb event display 172
Chapter 16
Framework packages, interfaces and libraries 173
16.1 Overview 173
16.2 Gaudi Package Structure 173
16.3 Interfaces in Gaudi 176
16.4 Libraries in Gaudi 179
Chapter 17
Analysis utilities 185
17.1 Overview 185
17.2 CLHEP 185
17.3 HTL 185
17.4 NAG C 186
17.5 ROOT 186
Chapter 18
Accessing SICB facilities 187
18.1 Overview 187
18.2 Reading tapes 187
18.3 Populating the GAUDI transient data store: SICB Converters 188
18.4 Access to the Magnetic Field 190
18.5 Accessing the SICB detector Geometry from Gaudi 191
18.6 Using FORTRAN code in Gaudi 192
18.7 Handling pile up in Gaudi. 193
18.8 Handling SpillOver in Gaudi 195
18.9 Increasing the size of the ZEBRA COMMON block 196
Appendix A
References 197
Appendix B
Options for standard components 199
Appendix C
Job Options Grammar and Error Codes 207
Appendix D
Design considerations 213