ROOT logo
//-*- Mode: C++ -*-
// @(#) $Id$

#ifndef ALIHLTMODULEAGENT_H
#define ALIHLTMODULEAGENT_H
/* This file is property of and copyright by the ALICE HLT Project        * 
 * ALICE Experiment at CERN, All rights reserved.                         *
 * See cxx source for full Copyright notice                               */

/** @file   AliHLTModuleAgent.h
    @author Matthias Richter
    @date   
    @brief  Agent helper class for component libraries.
    @note   The class is used in Offline (AliRoot) context
*/

// see below for class documentation
// or
// refer to README to build package
// or
// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   

#include <string>
#include <TObject.h>
#include <TList.h>
#include <TString.h>
#include "AliHLTLogging.h"
#include "AliHLTConfiguration.h"
#include "AliHLTConfigurationHandler.h"
#include "AliHLTComponentHandler.h"

class AliRunLoader;
class AliRawReader;
class AliRawStream;
class AliHLTOUTHandler;
class AliHLTOUT;
class AliHLTModulePreprocessor;

/**
 * @class AliHLTModuleAgent
 * @brief Agent helper class for HLT sub modules, e.g. PHOS, TPC, Trigger
 *
 * This class implements the agent base class for the HLT sub modules.
 * The agent of a library gives information on the features of the library/
 * components, like the configurations to run and other component libraries
 * it depends on.
 * @note There must not be more than one agent per module/library.
 *
 * If a run loader is available, reconstruction is performed on simulated
 * data as part of <tt>AliSimulation</tt>, if only the raw reader is present,
 * on raw data as part of <tt>AliReconstruction</tt>. The configurations
 * can adapt to the two cases.
 *
 * All HLT component libraries are loaded on demand through the HLT steering
 * instance (@ref AliHLTSystem). A library can implement an agent derived 
 * from this base class, and has to define one global object of this agent
 * in the code. The agent will be registered automatically, and the features
 * can be queried when required.
 *
 * This is usually done during running the AliRoot reconstruction (see AliRoot
 * documentation on <tt> AliSimulation </tt> and <tt> AliReconstruction </tt>).
 * The HLT implemets the @ref AliHLTSimulation and @ref
 * AliHLTReconstructor which hold the HLT steering object. Several flags can
 * be specified as options via the <tt>SetRunHLT</tt> method of
 * <tt>AliSimulation</tt> and the <tt>SetOption</tt> method of 
 * <tt>AliReconstruction</tt>, including the component libraries to be loaded.
 *
 * @section alihltmoduleagent_interface Agent interface
 * The child can implement the following functions:
 * - @ref GetDetectorMask                                                   <br>
 *       DetectorMask for which reconstruction is run.
 *
 * - @ref CreateConfigurations                                              <br>
 *       Create HLT configuration forming an HLT analysis chain.            <br>
 *       Reconstruction of raw data or simulated data from digits needs
 *       usually different configurations. If a run loader is available,
 *       reconstruction is performed on simulated data, on raw data if Run
 *       loader is NULL and only the raw reader present.
 *
 * - @ref GetReconstructionChains                                           <br>
 *       Configurations run during event reconstruction.                    <br>
 *       Define chains to be run during the recunstruction step,
 *       Depending on the availability of AliRoot run loader or raw reader
 *                                                                          <br>
 *
 * - @ref GetRequiredComponentLibraries                                     <br>
 *       can indicate further libraries which are required for running the
 *       chains (e.g. if components of another library are used).
 *
 * - @ref RegisterComponents                                                <br>
 *       register componens, this can be used to avoid the component
 *       registration via global objects 
 *       @see @ref alihltcomponent-handling
 *                                                                          <br>
 * - @ref GetHandlerDescription                                             <br>
 *       the agent can announce which part of the HLTOUT data can be treated
 *       by the library and through which method. Different types of handlers
 *       are defined to fit the various formats of the HLTOUT data.
 *       @see AliHLTOUTHandlerType
 *
 * - @ref GetOutputHandler                                                  <br>
 *       Return AliHLTOUTHandler for a given data type and specification.
 *       This is mainly intended to treat detector proprietary data.
 *
 * @section alihltmoduleagent_references References
 * @see @ref AliHLTReconstructor interface to the AliRoot reconstruction
 * @see @ref AliHLTAgentSample agent for the libAliHLTSample library
 *
 * @ingroup alihlt_system
 */
class AliHLTModuleAgent : public TObject, public AliHLTLogging {
 public:
  /**
   * standard constructor. The agent is automatically registered in the
   * global agent manager
   */
  AliHLTModuleAgent(const char* id);
  /** destructor */
  virtual ~AliHLTModuleAgent();

  /**
   * Get module id.
   * The module id is a string specifying the detector, or module. The
   * library must follow the naming scheme \em libAliHLTModule.so, e.g.
   * \em libAliHLTTPC.so if the module is 'TPC'
   */
  const char* GetModuleId() const;

  /**
   * Print status info.
   * Short summary on registered agents. This function acts globally on the
   * list of agents if no specific agent is specified.
   */
  static void PrintStatus(const char* agent=NULL);

  /**
   * Get the first agent in the list
   * @return  pointer to first agent in the list, NULL if empty
   */
  static AliHLTModuleAgent* GetFirstAgent();

  /**
   * Get the next agent in the list
   * @return  pointer to next agent in the list, NULL if end of list
   */
  static AliHLTModuleAgent* GetNextAgent();

  /**
   * Get string of blank separated Module Ids
   */
  static string GetAgentIds();

  /**
   * Activate a component handler for this agent.
   * The @ref RegisterComponents method will be called in order to allow
   * the agent to register components. Once activated, the function can
   * be called repeatedly with the same handler and gently ignores the
   * invocation. In the current stage of development, only one handler
   * can be activated per agent. This is sufficient for the current
   * operation, but can be extended.
   * @param [in] pHandler  the component handler instance
   */
  int ActivateComponentHandler(AliHLTComponentHandler* pHandler);

  /**
   * Return detector mask for which reconstruction is run in this module.
   */
  virtual UInt_t GetDetectorMask() const;

  /**
   * Register all configurations belonging to this module with the
   * AliHLTConfigurationHandler. The agent can adapt the configurations
   * to be registered to the current AliRoot setup by checking the
   * runloader and the raw reader. <br>
   * The presence of Run loader and raw reader determines the mode of the
   * HLT reconstruction. If a run loader is available, reconstruction is
   * performed on simulated data, a raw reader might be available in that
   * case also. When running embedded into AliReconstruction, the Run loader
   * is always NULL and the raw gives access to data. The configurations
   * can adapt to the two cases.
   *
   * @param [in] handler   the configuration handler
   * @param [in] rawReader AliRoot RawReader instance 
   * @param [in] runloader AliRoot runloader
   * @return neg. error code if failed
   */
  virtual int CreateConfigurations(AliHLTConfigurationHandler* handler,
				   AliRawReader* rawReader=NULL,
				   AliRunLoader* runloader=NULL) const;

  /**
   * Get the top configurations for event reconstruction.
   * A top configuration describes a processing chain. It can simply be
   * described by the last configuration(s) in the chain. 
   * The agent can adapt the configurations to be registered to the current
   * AliRoot setup by checking the run loader and the raw reader.
   * @param [in] rawReader AliRoot RawReader instance 
   * @param [in] runloader AliRoot runloader
   * @return string containing the top configurations separated by blanks
   */
  virtual const char* GetReconstructionChains(AliRawReader* rawReader=NULL,
					      AliRunLoader* runloader=NULL) const;

  /**
   * Component libraries which the configurations of this agent depend on. <br>
   * @note This is not the right place to specify libraries which this component
   * library depends. Dependencies must be linked or loaded before.
   * @return list of component libraries as a blank-separated string.
   */
  virtual const char* GetRequiredComponentLibraries() const;

  /**
   * Register components.
   * This method can be used to register components for the module instead
   * of the 'static object approach'. Registration is done by passing a
   * sample object to the AliHLTComponentHandler via
   * - @ref AliHLTComponentHandler::RegisterComponent                      <br>
   *        The sample object is owned by the agent, make sure to delete it.
   * - @ref AliHLTComponentHandler::AddComponent                           <br>
   *        Same functionality but handler deletes the object at the end.
   *
   * @param [in] pHandler  instance of the component handler          
   */
  virtual int RegisterComponents(AliHLTComponentHandler* pHandler) const;

  /**
   * Define QA plugins
   * @return blank separated list of class names
   */
  virtual const char* GetQAPlugins() const;

  /**
   * IDs for output handlers.
   * The agent can provide output handlers in order to treat the output
   * data coming from the HLTOUT nodes.
   */
  enum AliHLTOUTHandlerType {
    kUnknownOutput =0,

    /** output is in ESD format */
    kEsd,

    /** agent provides data for a RawReader
     * From the data block one or more output blocks can be
     * created idenditcal to the ddl format. The blocks are
     * provided to subsequent analysis by a RawReader instance.
     * The data block can be processed in order to provide the
     * raw data, e.g. in case of lossless compression.
     */
    kRawReader,

    /** agent can create a raw stream
     * The agent directly generates a detector specific RawStream
     * object. This is used for pre-analyzed data which will not
     * be converted back to the raw format.
     */
    kRawStream,

    /** agent provides a chain
     * The data block is fed into an analysis chain, the treatment
     * depends on the components in the chain.
     */
    kChain,

    /** agent provides detector specific handler */
    kProprietary,
    kLastOutputHandler
  };

  /**
   * Output handler description.
   * \em fModule: module name specific for the handler type
   *              - kRawReader: DDL no printed in ascii format
   *              - kRawStream: class name of the RawStream class
   *              - kChain:     blank separated list of chains
   *              - kProprietary: name of the handler class
   */
  class AliHLTOUTHandlerDesc {
  public:
    AliHLTOUTHandlerDesc() : fHType(kUnknownOutput), fDt(kAliHLTVoidDataType), fModule() {}

    AliHLTOUTHandlerDesc(AliHLTOUTHandlerType handlerType, AliHLTComponentDataType dt, const char* module) 
      : fHType(handlerType), fDt(dt), fModule(module) {}

    AliHLTOUTHandlerDesc(const AliHLTOUTHandlerDesc& src) 
      : fHType(src.fHType), fDt(src.fDt), fModule(src.fModule) {}

    AliHLTOUTHandlerDesc& operator=(const AliHLTOUTHandlerDesc& src) {
      if (this==&src) return *this;
      fHType=src.fHType; fDt=src.fDt; fModule=src.fModule; return *this;
    }

    ~AliHLTOUTHandlerDesc() {}

    bool operator==(const AliHLTOUTHandlerType handlerType) const {
      return fHType==handlerType;
    }
    /**
     * Two descriptors are equal if all members match.
     */
    bool operator==(const AliHLTOUTHandlerDesc& desc) const {
      return fDt==desc.fDt && fHType==desc.fHType && fModule==desc.fModule;
    }

    operator AliHLTOUTHandlerType() {return fHType;}
    operator AliHLTComponentDataType() {return fDt;}

  private:
    /** type of the handler */
    AliHLTOUTHandlerType    fHType;                          //!transient
    /** data type treated by the handler */
    AliHLTComponentDataType fDt;                             //!transient
    /** class or chain name */
    TString                 fModule;                         //!transient
  };

  static const AliHLTOUTHandlerDesc fgkVoidHandlerDesc; //! initializer

  /**
   * Get handler description for a data block.
   * Depending on the data type and data specification the handler must
   * provide information
   * - if it can handle the data block, and
   * - details how it will handle it, mainly the type of the handler
   *   @ref AliHLTOUTHandlerType
   * 
   * @param [in] dt        data type of the block
   * @param [in] spec      specification of the block
   * @param [out] desc      handler description
   * @return 1 if the agent can provide a handler, 0 if not
   */
  virtual int GetHandlerDescription(AliHLTComponentDataType dt,
				    AliHLTUInt32_t spec,
				    AliHLTOUTHandlerDesc& desc) const;

  /**
   * Get handler for a data block of the HLTOUT data.
   * The agent can also provide an overloaded @ref DeleteOutputHandler
   * function to implement customized clean up. It is also possible to
   * return the same instance of a handler for different data blocks.<br>
   *
   * The framework first collects the handlers for all data blocks, and
   * calls the @ref AliHLTOUTHandler::ProcessData method afterwords for
   * each handler.
   * @param [in] dt        data type of the block
   * @param [in] spec      specification of the block
   * @return pointer to handler
   */
  virtual AliHLTOUTHandler* GetOutputHandler(AliHLTComponentDataType dt,
					     AliHLTUInt32_t spec);

  /**
   * Delete an HLTOUT handler.
   * This is the final cleanup. The framwork makes sure that the handler is
   * not used any further outside the agent. Even if the agent returned the
   * same handler several times, cleanup is invoked only once. The default
   * implementation just deletes the object.
   * @param pInstance      pointer to handler
   */
  virtual int DeleteOutputHandler(AliHLTOUTHandler* pInstance);

  /**
   * Get raw stream for a data block.
   * @param [in] dt        data type of the block
   * @param [in] spec      specification of the block
   * @param [in] pData     data control object
   * @return Rawstream object, NULL if no Rawstream available for data type/spec
   */
  // this method is likely to be moved to a specific implementation
  // of AliHLTOUTHandler
//   virtual AliRawStream* GetRawStream(AliHLTComponentDataType dt,
// 				     AliHLTUInt32_t spec,
// 				     const AliHLTOUT* pData);

  /**
   * Get the preprocessor for this component library.
   * Create an instance of the preprocessor for this component library.
   * The caller will delete it after useage.
   * @return pointer to AliHLTModulePreprocessor object.
   */
  virtual AliHLTModulePreprocessor* GetPreprocessor();

  /**
   * Old method kept for backward compatibility, redirected to @ref
   * GetReconstructionChains.
   */
  const char* GetTopConfigurations(AliRunLoader* runloader=NULL) const {
    return GetReconstructionChains(NULL,runloader);
  }

  /**
   * Get current component handler
   */
  AliHLTComponentHandler* GetComponentHandler() const {
    return fpComponentHandler;
  }

 protected:

 private:
  /** standard constructor prohibited */
  AliHLTModuleAgent();
  /** copy constructor prohibited */
  AliHLTModuleAgent(const AliHLTModuleAgent&);
  /** assignment operator prohibited */
  AliHLTModuleAgent& operator=(const AliHLTModuleAgent&);

  /**
   * Register agent in the global list.
   * @return neg. error code if failed
   */
  static int Register(AliHLTModuleAgent* pAgent);

  /**
   * Unregister agent in the global list.
   * @return neg. error code if failed
   */
  static int Unregister(AliHLTModuleAgent* pAgent);

  /** the list of active agents */
  static AliHLTModuleAgent* fgAnchor;                               //! transient

  /** next element in the list */
  AliHLTModuleAgent* fpNext;                                       //! transient

  /** the current object link (list position) */
  static AliHLTModuleAgent* fgCurrent;                              //! transient

  /** number of agents */
  static int fgCount;                                               //! transient

  /** instance of the active component handler */
  AliHLTComponentHandler* fpComponentHandler;                      //! transient

  /** id of the module */
  TString fModuleId;                                               //! transient

  ClassDef(AliHLTModuleAgent, 3);
};

#endif
 AliHLTModuleAgent.h:1
 AliHLTModuleAgent.h:2
 AliHLTModuleAgent.h:3
 AliHLTModuleAgent.h:4
 AliHLTModuleAgent.h:5
 AliHLTModuleAgent.h:6
 AliHLTModuleAgent.h:7
 AliHLTModuleAgent.h:8
 AliHLTModuleAgent.h:9
 AliHLTModuleAgent.h:10
 AliHLTModuleAgent.h:11
 AliHLTModuleAgent.h:12
 AliHLTModuleAgent.h:13
 AliHLTModuleAgent.h:14
 AliHLTModuleAgent.h:15
 AliHLTModuleAgent.h:16
 AliHLTModuleAgent.h:17
 AliHLTModuleAgent.h:18
 AliHLTModuleAgent.h:19
 AliHLTModuleAgent.h:20
 AliHLTModuleAgent.h:21
 AliHLTModuleAgent.h:22
 AliHLTModuleAgent.h:23
 AliHLTModuleAgent.h:24
 AliHLTModuleAgent.h:25
 AliHLTModuleAgent.h:26
 AliHLTModuleAgent.h:27
 AliHLTModuleAgent.h:28
 AliHLTModuleAgent.h:29
 AliHLTModuleAgent.h:30
 AliHLTModuleAgent.h:31
 AliHLTModuleAgent.h:32
 AliHLTModuleAgent.h:33
 AliHLTModuleAgent.h:34
 AliHLTModuleAgent.h:35
 AliHLTModuleAgent.h:36
 AliHLTModuleAgent.h:37
 AliHLTModuleAgent.h:38
 AliHLTModuleAgent.h:39
 AliHLTModuleAgent.h:40
 AliHLTModuleAgent.h:41
 AliHLTModuleAgent.h:42
 AliHLTModuleAgent.h:43
 AliHLTModuleAgent.h:44
 AliHLTModuleAgent.h:45
 AliHLTModuleAgent.h:46
 AliHLTModuleAgent.h:47
 AliHLTModuleAgent.h:48
 AliHLTModuleAgent.h:49
 AliHLTModuleAgent.h:50
 AliHLTModuleAgent.h:51
 AliHLTModuleAgent.h:52
 AliHLTModuleAgent.h:53
 AliHLTModuleAgent.h:54
 AliHLTModuleAgent.h:55
 AliHLTModuleAgent.h:56
 AliHLTModuleAgent.h:57
 AliHLTModuleAgent.h:58
 AliHLTModuleAgent.h:59
 AliHLTModuleAgent.h:60
 AliHLTModuleAgent.h:61
 AliHLTModuleAgent.h:62
 AliHLTModuleAgent.h:63
 AliHLTModuleAgent.h:64
 AliHLTModuleAgent.h:65
 AliHLTModuleAgent.h:66
 AliHLTModuleAgent.h:67
 AliHLTModuleAgent.h:68
 AliHLTModuleAgent.h:69
 AliHLTModuleAgent.h:70
 AliHLTModuleAgent.h:71
 AliHLTModuleAgent.h:72
 AliHLTModuleAgent.h:73
 AliHLTModuleAgent.h:74
 AliHLTModuleAgent.h:75
 AliHLTModuleAgent.h:76
 AliHLTModuleAgent.h:77
 AliHLTModuleAgent.h:78
 AliHLTModuleAgent.h:79
 AliHLTModuleAgent.h:80
 AliHLTModuleAgent.h:81
 AliHLTModuleAgent.h:82
 AliHLTModuleAgent.h:83
 AliHLTModuleAgent.h:84
 AliHLTModuleAgent.h:85
 AliHLTModuleAgent.h:86
 AliHLTModuleAgent.h:87
 AliHLTModuleAgent.h:88
 AliHLTModuleAgent.h:89
 AliHLTModuleAgent.h:90
 AliHLTModuleAgent.h:91
 AliHLTModuleAgent.h:92
 AliHLTModuleAgent.h:93
 AliHLTModuleAgent.h:94
 AliHLTModuleAgent.h:95
 AliHLTModuleAgent.h:96
 AliHLTModuleAgent.h:97
 AliHLTModuleAgent.h:98
 AliHLTModuleAgent.h:99
 AliHLTModuleAgent.h:100
 AliHLTModuleAgent.h:101
 AliHLTModuleAgent.h:102
 AliHLTModuleAgent.h:103
 AliHLTModuleAgent.h:104
 AliHLTModuleAgent.h:105
 AliHLTModuleAgent.h:106
 AliHLTModuleAgent.h:107
 AliHLTModuleAgent.h:108
 AliHLTModuleAgent.h:109
 AliHLTModuleAgent.h:110
 AliHLTModuleAgent.h:111
 AliHLTModuleAgent.h:112
 AliHLTModuleAgent.h:113
 AliHLTModuleAgent.h:114
 AliHLTModuleAgent.h:115
 AliHLTModuleAgent.h:116
 AliHLTModuleAgent.h:117
 AliHLTModuleAgent.h:118
 AliHLTModuleAgent.h:119
 AliHLTModuleAgent.h:120
 AliHLTModuleAgent.h:121
 AliHLTModuleAgent.h:122
 AliHLTModuleAgent.h:123
 AliHLTModuleAgent.h:124
 AliHLTModuleAgent.h:125
 AliHLTModuleAgent.h:126
 AliHLTModuleAgent.h:127
 AliHLTModuleAgent.h:128
 AliHLTModuleAgent.h:129
 AliHLTModuleAgent.h:130
 AliHLTModuleAgent.h:131
 AliHLTModuleAgent.h:132
 AliHLTModuleAgent.h:133
 AliHLTModuleAgent.h:134
 AliHLTModuleAgent.h:135
 AliHLTModuleAgent.h:136
 AliHLTModuleAgent.h:137
 AliHLTModuleAgent.h:138
 AliHLTModuleAgent.h:139
 AliHLTModuleAgent.h:140
 AliHLTModuleAgent.h:141
 AliHLTModuleAgent.h:142
 AliHLTModuleAgent.h:143
 AliHLTModuleAgent.h:144
 AliHLTModuleAgent.h:145
 AliHLTModuleAgent.h:146
 AliHLTModuleAgent.h:147
 AliHLTModuleAgent.h:148
 AliHLTModuleAgent.h:149
 AliHLTModuleAgent.h:150
 AliHLTModuleAgent.h:151
 AliHLTModuleAgent.h:152
 AliHLTModuleAgent.h:153
 AliHLTModuleAgent.h:154
 AliHLTModuleAgent.h:155
 AliHLTModuleAgent.h:156
 AliHLTModuleAgent.h:157
 AliHLTModuleAgent.h:158
 AliHLTModuleAgent.h:159
 AliHLTModuleAgent.h:160
 AliHLTModuleAgent.h:161
 AliHLTModuleAgent.h:162
 AliHLTModuleAgent.h:163
 AliHLTModuleAgent.h:164
 AliHLTModuleAgent.h:165
 AliHLTModuleAgent.h:166
 AliHLTModuleAgent.h:167
 AliHLTModuleAgent.h:168
 AliHLTModuleAgent.h:169
 AliHLTModuleAgent.h:170
 AliHLTModuleAgent.h:171
 AliHLTModuleAgent.h:172
 AliHLTModuleAgent.h:173
 AliHLTModuleAgent.h:174
 AliHLTModuleAgent.h:175
 AliHLTModuleAgent.h:176
 AliHLTModuleAgent.h:177
 AliHLTModuleAgent.h:178
 AliHLTModuleAgent.h:179
 AliHLTModuleAgent.h:180
 AliHLTModuleAgent.h:181
 AliHLTModuleAgent.h:182
 AliHLTModuleAgent.h:183
 AliHLTModuleAgent.h:184
 AliHLTModuleAgent.h:185
 AliHLTModuleAgent.h:186
 AliHLTModuleAgent.h:187
 AliHLTModuleAgent.h:188
 AliHLTModuleAgent.h:189
 AliHLTModuleAgent.h:190
 AliHLTModuleAgent.h:191
 AliHLTModuleAgent.h:192
 AliHLTModuleAgent.h:193
 AliHLTModuleAgent.h:194
 AliHLTModuleAgent.h:195
 AliHLTModuleAgent.h:196
 AliHLTModuleAgent.h:197
 AliHLTModuleAgent.h:198
 AliHLTModuleAgent.h:199
 AliHLTModuleAgent.h:200
 AliHLTModuleAgent.h:201
 AliHLTModuleAgent.h:202
 AliHLTModuleAgent.h:203
 AliHLTModuleAgent.h:204
 AliHLTModuleAgent.h:205
 AliHLTModuleAgent.h:206
 AliHLTModuleAgent.h:207
 AliHLTModuleAgent.h:208
 AliHLTModuleAgent.h:209
 AliHLTModuleAgent.h:210
 AliHLTModuleAgent.h:211
 AliHLTModuleAgent.h:212
 AliHLTModuleAgent.h:213
 AliHLTModuleAgent.h:214
 AliHLTModuleAgent.h:215
 AliHLTModuleAgent.h:216
 AliHLTModuleAgent.h:217
 AliHLTModuleAgent.h:218
 AliHLTModuleAgent.h:219
 AliHLTModuleAgent.h:220
 AliHLTModuleAgent.h:221
 AliHLTModuleAgent.h:222
 AliHLTModuleAgent.h:223
 AliHLTModuleAgent.h:224
 AliHLTModuleAgent.h:225
 AliHLTModuleAgent.h:226
 AliHLTModuleAgent.h:227
 AliHLTModuleAgent.h:228
 AliHLTModuleAgent.h:229
 AliHLTModuleAgent.h:230
 AliHLTModuleAgent.h:231
 AliHLTModuleAgent.h:232
 AliHLTModuleAgent.h:233
 AliHLTModuleAgent.h:234
 AliHLTModuleAgent.h:235
 AliHLTModuleAgent.h:236
 AliHLTModuleAgent.h:237
 AliHLTModuleAgent.h:238
 AliHLTModuleAgent.h:239
 AliHLTModuleAgent.h:240
 AliHLTModuleAgent.h:241
 AliHLTModuleAgent.h:242
 AliHLTModuleAgent.h:243
 AliHLTModuleAgent.h:244
 AliHLTModuleAgent.h:245
 AliHLTModuleAgent.h:246
 AliHLTModuleAgent.h:247
 AliHLTModuleAgent.h:248
 AliHLTModuleAgent.h:249
 AliHLTModuleAgent.h:250
 AliHLTModuleAgent.h:251
 AliHLTModuleAgent.h:252
 AliHLTModuleAgent.h:253
 AliHLTModuleAgent.h:254
 AliHLTModuleAgent.h:255
 AliHLTModuleAgent.h:256
 AliHLTModuleAgent.h:257
 AliHLTModuleAgent.h:258
 AliHLTModuleAgent.h:259
 AliHLTModuleAgent.h:260
 AliHLTModuleAgent.h:261
 AliHLTModuleAgent.h:262
 AliHLTModuleAgent.h:263
 AliHLTModuleAgent.h:264
 AliHLTModuleAgent.h:265
 AliHLTModuleAgent.h:266
 AliHLTModuleAgent.h:267
 AliHLTModuleAgent.h:268
 AliHLTModuleAgent.h:269
 AliHLTModuleAgent.h:270
 AliHLTModuleAgent.h:271
 AliHLTModuleAgent.h:272
 AliHLTModuleAgent.h:273
 AliHLTModuleAgent.h:274
 AliHLTModuleAgent.h:275
 AliHLTModuleAgent.h:276
 AliHLTModuleAgent.h:277
 AliHLTModuleAgent.h:278
 AliHLTModuleAgent.h:279
 AliHLTModuleAgent.h:280
 AliHLTModuleAgent.h:281
 AliHLTModuleAgent.h:282
 AliHLTModuleAgent.h:283
 AliHLTModuleAgent.h:284
 AliHLTModuleAgent.h:285
 AliHLTModuleAgent.h:286
 AliHLTModuleAgent.h:287
 AliHLTModuleAgent.h:288
 AliHLTModuleAgent.h:289
 AliHLTModuleAgent.h:290
 AliHLTModuleAgent.h:291
 AliHLTModuleAgent.h:292
 AliHLTModuleAgent.h:293
 AliHLTModuleAgent.h:294
 AliHLTModuleAgent.h:295
 AliHLTModuleAgent.h:296
 AliHLTModuleAgent.h:297
 AliHLTModuleAgent.h:298
 AliHLTModuleAgent.h:299
 AliHLTModuleAgent.h:300
 AliHLTModuleAgent.h:301
 AliHLTModuleAgent.h:302
 AliHLTModuleAgent.h:303
 AliHLTModuleAgent.h:304
 AliHLTModuleAgent.h:305
 AliHLTModuleAgent.h:306
 AliHLTModuleAgent.h:307
 AliHLTModuleAgent.h:308
 AliHLTModuleAgent.h:309
 AliHLTModuleAgent.h:310
 AliHLTModuleAgent.h:311
 AliHLTModuleAgent.h:312
 AliHLTModuleAgent.h:313
 AliHLTModuleAgent.h:314
 AliHLTModuleAgent.h:315
 AliHLTModuleAgent.h:316
 AliHLTModuleAgent.h:317
 AliHLTModuleAgent.h:318
 AliHLTModuleAgent.h:319
 AliHLTModuleAgent.h:320
 AliHLTModuleAgent.h:321
 AliHLTModuleAgent.h:322
 AliHLTModuleAgent.h:323
 AliHLTModuleAgent.h:324
 AliHLTModuleAgent.h:325
 AliHLTModuleAgent.h:326
 AliHLTModuleAgent.h:327
 AliHLTModuleAgent.h:328
 AliHLTModuleAgent.h:329
 AliHLTModuleAgent.h:330
 AliHLTModuleAgent.h:331
 AliHLTModuleAgent.h:332
 AliHLTModuleAgent.h:333
 AliHLTModuleAgent.h:334
 AliHLTModuleAgent.h:335
 AliHLTModuleAgent.h:336
 AliHLTModuleAgent.h:337
 AliHLTModuleAgent.h:338
 AliHLTModuleAgent.h:339
 AliHLTModuleAgent.h:340
 AliHLTModuleAgent.h:341
 AliHLTModuleAgent.h:342
 AliHLTModuleAgent.h:343
 AliHLTModuleAgent.h:344
 AliHLTModuleAgent.h:345
 AliHLTModuleAgent.h:346
 AliHLTModuleAgent.h:347
 AliHLTModuleAgent.h:348
 AliHLTModuleAgent.h:349
 AliHLTModuleAgent.h:350
 AliHLTModuleAgent.h:351
 AliHLTModuleAgent.h:352
 AliHLTModuleAgent.h:353
 AliHLTModuleAgent.h:354
 AliHLTModuleAgent.h:355
 AliHLTModuleAgent.h:356
 AliHLTModuleAgent.h:357
 AliHLTModuleAgent.h:358
 AliHLTModuleAgent.h:359
 AliHLTModuleAgent.h:360
 AliHLTModuleAgent.h:361
 AliHLTModuleAgent.h:362
 AliHLTModuleAgent.h:363
 AliHLTModuleAgent.h:364
 AliHLTModuleAgent.h:365
 AliHLTModuleAgent.h:366
 AliHLTModuleAgent.h:367
 AliHLTModuleAgent.h:368
 AliHLTModuleAgent.h:369
 AliHLTModuleAgent.h:370
 AliHLTModuleAgent.h:371
 AliHLTModuleAgent.h:372
 AliHLTModuleAgent.h:373
 AliHLTModuleAgent.h:374
 AliHLTModuleAgent.h:375
 AliHLTModuleAgent.h:376
 AliHLTModuleAgent.h:377
 AliHLTModuleAgent.h:378
 AliHLTModuleAgent.h:379
 AliHLTModuleAgent.h:380
 AliHLTModuleAgent.h:381
 AliHLTModuleAgent.h:382
 AliHLTModuleAgent.h:383
 AliHLTModuleAgent.h:384
 AliHLTModuleAgent.h:385
 AliHLTModuleAgent.h:386
 AliHLTModuleAgent.h:387
 AliHLTModuleAgent.h:388
 AliHLTModuleAgent.h:389
 AliHLTModuleAgent.h:390
 AliHLTModuleAgent.h:391
 AliHLTModuleAgent.h:392
 AliHLTModuleAgent.h:393
 AliHLTModuleAgent.h:394
 AliHLTModuleAgent.h:395
 AliHLTModuleAgent.h:396
 AliHLTModuleAgent.h:397
 AliHLTModuleAgent.h:398
 AliHLTModuleAgent.h:399
 AliHLTModuleAgent.h:400
 AliHLTModuleAgent.h:401
 AliHLTModuleAgent.h:402
 AliHLTModuleAgent.h:403
 AliHLTModuleAgent.h:404
 AliHLTModuleAgent.h:405
 AliHLTModuleAgent.h:406
 AliHLTModuleAgent.h:407
 AliHLTModuleAgent.h:408
 AliHLTModuleAgent.h:409
 AliHLTModuleAgent.h:410
 AliHLTModuleAgent.h:411
 AliHLTModuleAgent.h:412
 AliHLTModuleAgent.h:413
 AliHLTModuleAgent.h:414
 AliHLTModuleAgent.h:415
 AliHLTModuleAgent.h:416
 AliHLTModuleAgent.h:417
 AliHLTModuleAgent.h:418
 AliHLTModuleAgent.h:419
 AliHLTModuleAgent.h:420
 AliHLTModuleAgent.h:421
 AliHLTModuleAgent.h:422
 AliHLTModuleAgent.h:423
 AliHLTModuleAgent.h:424
 AliHLTModuleAgent.h:425
 AliHLTModuleAgent.h:426
 AliHLTModuleAgent.h:427
 AliHLTModuleAgent.h:428
 AliHLTModuleAgent.h:429
 AliHLTModuleAgent.h:430
 AliHLTModuleAgent.h:431
 AliHLTModuleAgent.h:432
 AliHLTModuleAgent.h:433
 AliHLTModuleAgent.h:434
 AliHLTModuleAgent.h:435
 AliHLTModuleAgent.h:436
 AliHLTModuleAgent.h:437
 AliHLTModuleAgent.h:438
 AliHLTModuleAgent.h:439
 AliHLTModuleAgent.h:440
 AliHLTModuleAgent.h:441