An advantage of such analysis packages is the ability to make the definitions of histograms, cuts and parameters more concise. Furthermore, since these definitions are separated from the data acquisition source code, users who are not familiar with the details of the analysis code can make changes without the risk of introducing bugs while an experiment is in progress. A major disadvantage however, is that histogram, test and parameter packages typically access data internal to the analysis code through specific large arrays. In order to make the analysis code more readable, equivalence statements are typically used, making maintenance of a large experiment analyzer cumbersome.
In the CEBAF Test Package (CTP), the same variable names are used in both the source code and in the CTP definition files. This is accomplished by requiring the analyzer developer to ``register'' each variable and array that is to be accessible to CTP. Once a variable has been registered, its value(s) can be set through a CTP parameter definition file. For registered variables that are calculated each event, the variable may be used in histogram or test definitions. Since the definition files refer to variables by the same names as used in the analysis software, they can be made readable when sensible variable names are chosen by the programmer.
Any registered variable as well as the test and histogram definitions may be dynamically read and modified by tasks that communicate via standard networking calls. As this package is implemented in C and uses SUN RPC networking, it is portable. This package works with CODA[], but may be used with other data acquisition systems with stand alone offline analysis codes.