Speaker
Description
Summary
The ATLAS first-level calorimeter trigger (L1Calo) is a hardware-based system with a high degree of adaptability provided by widespread use of FPGAs. The real-time path of the trigger is subdivided into a Preprocessor which takes analogue signals from the calorimeters and digitizes them, followed by two digital processor systems working in parallel: the Jet/Energy-sum processor and the Cluster Processor. The design necessitates over 300 VME modules of about 10 different types, each of which has a unique register and memory map. The most complex of these modules contains around 2000 individually programmable registers, as well as many kBytes of look-up table memory.
It is clear that the software needed to control a system on this scale needs to be sophisticated enough to manage the different properties of each module, but also modular enough to be maintainable over the long period of commissioning and running of the ATLAS experiment. The L1Calo software is primarily written in C++ with some Java libraries included. Alongside the module control, there is also a safety monitoring system implemented via a Finite State Model operating over CANbus.
There are several distinct areas of software that can be clearly separated, but must have some means of interaction. For example, the configuration parameters must be stored in a common database framework which is independent of the rest of the software, but many of the other software components (e.g. configuration, monitoring) will need access to this information. The software framework must also fit into the existing ATLAS online software environment to be successfully integrated into a standard integrated run. Some of the design choices and implementations used in the L1Calo software framework will be described.
One of the most fundamental areas are the underlying VME access libraries, which were designed so that they could be used in several ways: under the control of run-control to configure modules at run start, using standalone programs or using an interactive GUI for expert intervention at the VME register level. Another large body of the software is dedicated to a detailed simulation of the hardware at the level of data that can be probed at each level of the trigger processing. This is again driven by the database settings to closely model the behaviour of each module. An exact match between the hardware and simulation results provides a rigorous test of the correct performance of the hardware.
There are several different libraries dedicated to calibration, both of signal timing and of energy of input signals. These are based around a common calibration strategy which extends the run concept to encompass multi-step runs, where parameters are adjusted between each run. Finally, and most recently, a set of libraries dedicated to monitoring and event-by-event analysis has been developed. These will be used to ensure that the trigger is operating correctly during normal data taking, immediately flagging up errors, inconsistencies or merely unusual features to the shift crew.
All of these areas of software will be described, with an overview of how they fit together in the L1Calo software architecture.