To be an experiment-independent framework, two pieces of information must be supplied to YODA by the user at runtime:
The answer to the first question is read from a plain text file called the Selector Database. For every piece of data which is to be investigated, there must be an entry which gives the data a name, declares its datatype (e.g. floating point or integer), specifies the ''tag'', which identifies the data in the incoming datastream, and defines the maximum size of the expected values.
This file has to be created new or at least modified for each specific experimental setup. To create one from scratch, you need to know a little about YODA's event format, so detailed information is postponed here.
The answer to the second question is given by the user tasks, which contain the analysis steps written in the YODA interpreter language, later referred to as the hoc language. Once the selector database is set up for a given experiment, many different user tasks can operate on the data, investigating different aspects of the experiment. These tasks can be loaded, unloaded, edited, en- or disabled freely during the running analysis. More than one task, probably operating on different types of events can run independently at the same time.
Each user task contains code for initialization, code to be processed whenever an appropriate event comes in, and optionally code which is executed when YODA is stopped or all events have been processed.
These files are created or modified during the analysis process. See chapter 5 for a complete description of the interpreter language. Some examples for ''hoc-files'' can also be found in section 5.