Last Modified: 25-Oct-1998
Reviewed: 29-Oct-1998
Application Manager (ApplicationMgr)
Purpose and Functionality
The main purpose of the Application Manager (ApplicationMgr) is to steer any
data processing application. This includes all data processing applications for LHCb data
in all stages: simulation, reconstruction, analysis, high level triggers, etc. Specific
implementations of the ApplicationMgr will be developed to cope with the
different environments (on-line, off-line, interactive, batch, etc.). The ApplicationMgr
implements the following functionality:
- The event loop. For traditional batch processing applications it
implements the so called "event loop". It initializes all the components and
services of the application. In particular it initializes the event selector
component with a selection criteria for the current job (which events need to be
processed). After that, it requests the processing services of all the relevant
processing elements (algorithms) for each event. Finally, it informs all the components
when the job is done to allow them to perform the necessary actions at the end of job
(saving histograms, job statistics, etc.).
- Bootstrapping the application. The ApplicationMgr is in charge
of creating all the services and processing components (algorithms) needed to provide the
desired functionality. The concrete type of those components depending on the persistent
object store, user interface system, etc. is selected at run time based on the job
options.
- Information center. It maintains a directory of the major services and
algorithms which have been created by him. It allows other components to locate the
requested service based on a name.
Interfaces
The ApplicationMgr provides the following interfaces:
- Service locator. Algorithms and services may ask the ApplicationMgr
for references to existing services on the application. For example, to get a reference to
the MessageService which is needed by the Algorithm in order to output
an error message.
- UserInterface interface. Interface to the user interface to allow the
user to interact with the application. This interface is necessary for non-batch oriented
applications.
Dependencies
The ApplicationMgr depends on the following services provided by other
components of the architecture:
- JobOptionsServer. The JobOptions service provides to the ApplicationMgr
the new values for the its properties in case the user would like to overwrite the default
ones. These properties may driven the choice of the persistent mechanism, the algorithms
which need to be instantiated, the output stream for error messages, etc.
- MessageService. The ApplicationMgr uses the MessageService to
report errors and informational messages to the end user.
- AlgorithmFactory. The ApplicationMgr uses the AlgorithmFactory
service to create (instantiated) the concrete implementations of the algorithm. In that
way, the ApplicationMgr do not need to be changed when new algorithms are
introduced into the system.
- Algorithms. Algorithms do the real physics data processing work.
Without them the application will not produce any results.
- Other services like PersistecySvc, EventSelector, etc. are initialized by the
ApplicationMgr in order to provide the correct functionality for the specific type of job.