5 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
6 * See cxx source for full Copyright notice */
8 /** @file AliHLTSystem.h
9 @author Matthias Richter
11 @brief Global HLT module management and AliRoot integration.
12 @note The class is used in Offline (AliRoot) context
16 * @defgroup alihlt_system HLT integration into AliRoot
17 * This section describes the HLT integration into AliRoot.
20 #include "AliL3RootTypes.h"
21 #include "AliHLTLogging.h"
24 class AliHLTComponentHandler;
25 class AliHLTConfiguration;
26 class AliHLTConfigurationHandler;
31 * Main class for the HLT integration into AliRoot.
32 * The class handles a list of configurations. Configurations are translated
33 * into task lists which can be executed.
35 * @note This class is only used for the @ref alihlt_system.
37 * @ingroup alihlt_system
39 class AliHLTSystem : public AliHLTLogging {
41 /** default constructor */
44 virtual ~AliHLTSystem();
47 * Pointer to an instance of @ref AliHLTComponentHandler.
49 AliHLTComponentHandler* fpComponentHandler;
52 * Pointer to an instance of @ref AliHLTConfigurationHandler.
54 AliHLTConfigurationHandler* fpConfigurationHandler;
57 * Add a configuration to the end of the list.
58 * @param pConf pointer to configuration to add
60 int AddConfiguration(AliHLTConfiguration* pConf);
63 * Insert a configuration to the end of the list after the specified configuration.
64 * @param pConf pointer to configuration to insert
65 * @param pPrec pointer to configuration to insert the new one after
67 int InsertConfiguration(AliHLTConfiguration* pConf, AliHLTConfiguration* pPrec);
70 * Remove a configuration from the list.
71 * @param pConf pointer to configuration to delete
73 int DeleteConfiguration(AliHLTConfiguration* pConf);
76 * Build a task list from a configuration object.
77 * This method is used to build the tasks from the 'master' configuration
78 * objects which are added to the HLT system handler. This is an iterative
79 * process since the task might depend upon other configurations. For each
80 * configuration object which has not yet been converted into a task, the
81 * method will be called iteratively. Finally, after building all tasks which
82 * the current one depends on have been created, the task is inserted to the
83 * list of tasks with the InsertTask method.
84 * @param pConf pointer to configuration to build the task list from
86 int BuildTaskList(AliHLTConfiguration* pConf);
89 * Clean the list of tasks and delete all the task objects.
94 * Insert a task to the task list.
95 * The method first checks whether all dependencies are resolved (i.e. exist
96 * already in the task list). During this iteration the cross links between the
97 * tasks are set as well. If all dependencies are resolved, the task is added
98 * at the end of the list.
99 * @param pTask pointer to task to add
101 int InsertTask(AliHLTTask* pTask);
104 * Find a task with an id.
105 * @param id CONFIGURATION id (not a COMPONENT id!)
107 AliHLTTask* FindTask(const char* id);
110 * Print the task list.
112 void PrintTaskList();
131 ClassDef(AliHLTSystem, 0);