ROOT logo
//-*- Mode: C++ -*-
// $Id$

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

/// @file   AliHLTComponentHandler.h
/// @author Matthias Richter, Timm Steinbeck
/// @date   
/// @brief  Global handling of HLT processing components
/// @note   The handler is part of the interface and both used in the
///         Online (PubSub) and Offline (AliRoot) context.

#include <vector>
#include "AliHLTDataTypes.h"
#include "AliHLTLogging.h"

using std::vector;

class AliHLTComponent;
class AliHLTModuleAgent;
struct AliHLTAnalysisEnvironment;
struct AliHLTComponentDataType;

/**
 * @class AliHLTComponentHandler
 * The component handler controls all the processing components available in
 * the system. It also controls the component shared libraries.
 * @ingroup alihlt_component
 */
class AliHLTComponentHandler : public AliHLTLogging {
 public:
  /** standard constructor */
  AliHLTComponentHandler();
  /** constructor */
  AliHLTComponentHandler(AliHLTAnalysisEnvironment* pEnv);
  /** destructor */
  virtual ~AliHLTComponentHandler();

  /**
   * Create an instance from the global sigleton.
   * Instance has to be destroyed by the Destroy function
   */
  static AliHLTComponentHandler* CreateHandler();

  /**
   * Destroy an instance of the global singleton retrieved by
   * AliHLTComponentHandler::CreateHandler()
   */
  int Destroy();

  /**
   * Library mode.
   * - kDynamic: library can be unloaded (unload forced at termination of the
   *             handler
   * - kStatic:  library persistent, once loaded it stays
   */
  enum TLibraryMode {kDynamic, kStatic};

  /**
   * Set the environment for the HLT framework.
   * The environment mainly consists of function pointers for the integration
   * of the HLT framework into a system like the PubSub online system or
   * AliRoot offline system.
   * @param pEnv    pointer to @ref AliHLTAnalysisEnvironment structure
   * @return none
   */
  void SetEnvironment(AliHLTAnalysisEnvironment* pEnv);

  /**
   * Get the current environment.
   */
  const AliHLTAnalysisEnvironment* GetEnvironment() const {return &fEnvironment;}

  /**
   * Set library mode.
   * The mode effects all loaded libraries until another mode is set.
   * @param mode             persistent library or not
   * @return previous mode
   */
  TLibraryMode SetLibraryMode(TLibraryMode mode);

  /**
   * Load a component shared library.
   * The component library needs to be loaded from the ComponentHanler in order
   * to automatically register all components in the library.
   * Registration is done by passing a sample object of the component to the
   * handler. The object has to be valid during the whole runtime and should
   * thus be a global object which is ONLY used for the purpose of registration.
   * This also ensures automatically registration at library load time.
   * @param libraryPath      const char string containing the library name/path
   * @param bActivateAgents  activate agents after loading (@ref ActivateAgents)
   * @return 0 if succeeded, neg. error code if failed
   */
  int LoadLibrary( const char* libraryPath, int bActivateAgents=1);

  /**
   * Find a symbol in a dynamically loaded library.
   * @param library      library
   * @param symbol       the symbol to find
   * @return void pointer to function
   */
  AliHLTfctVoid FindSymbol(const char* library, const char* symbol);

  /**
   * Unload a component shared library.
   * All components will be de-registered when the last instance of the
   * library was unloaded.
   * @param libraryPath  library name as specified to @ref LoadLibrary
   * @return 0 if succeeded, neg. error code if failed
   */
  int UnloadLibrary( const char* libraryPath );

  /**
   * Schedule a component for registration.
   * Full registration will be done after successfull loading of the shared
   * library.
   * @param pSample  a sample object of the component
   * @return neg. error code if failed
   */
  int ScheduleRegister(AliHLTComponent* pSample );

  /**
   * Register a component.
   * Registration is done by passing a sample object of the component to the
   * handler. The object has to be valid during the whole runtime and should
   * thus be a global object which is ONLY used for the purpose of registration.
   * @param pSample   a sample object of the component
   * @return neg. error code if failed
   */
  int RegisterComponent(AliHLTComponent* pSample);

  /**
   * Add a component and leave control of the sample object to the handler.
   * Exactly the same functionality as @ref RegisterComponent but deletes
   * the sample object at clean-up of the handler.
   * @param pSample   a sample object of the component
   * @return neg. error code if failed
   */
  int AddComponent(AliHLTComponent* pSample);

  /**
   * Registers all scheduled components.
   */
  int RegisterScheduledComponents();

  /**
   * Deregister a component.
   * @param componentID   ID of the component
   * @return neg. error code if failed
   */
  int DeregisterComponent( const char* componentID );

  /**
   * Add standard components
   * The standard components are part of the libHLTbase library and
   * need therefore a special handling.
   */
  int AddStandardComponents();

  /**
   */
  int DeleteOwnedComponents();

  /**
   * Find the ID of a component with the given output data.
   * @param dtype     data type descriptor
   * @param prevType  can be used to iterate if there are multiple components
   *                  with the same output data type.
   * @return component id
   */
  //const char* FindComponentType( AliHLTComponentDataType dtype,
  //                               const char* prevType = NULL )
  //  { return NULL;}

  /**
   * Create a component of the given name (ID).
   * The method tries to find a registerd component of id \em componentID and
   * calls the \em Spawn method of the template component. After successful
   * creation of a new object, the Init method is called in order to initialize
   * the environment and the component arguments. <br>
   * The environment is the same for all components, but each component can
   * have an additional private parameter \em pEnvParam.<br>
   * The component arguments consist of an array of strings and the array size
   * in the usual manner of the main() function.
   * @param componentID  ID of the component to create
   * @param pEnvParam    environment parameter for the component
   * @param argc         number of arguments in argv
   * @param argv         argument array like in main()
   * @param component    reference to receive the create component instance
   * @return component pointer in component, neg. error code if failed
   */
  int CreateComponent( const char* componentID, void* pEnvParam, 
		       int argc, const char** argv, AliHLTComponent*& component);

  /**
   * Create component without initializing it.
   * @param componentID  ID of the component to create
   * @param component    reference to receive the create component instance
   */
  int CreateComponent(const char* componentID, AliHLTComponent*& component );

  /**
   * Create a component of the given name (ID).
   * Introduced for backward compatibility.
   * @param componentID  ID of the component to create
   * @param pEnvParam    environment parameter for the component
   * @param component    reference to receive the create component instance
   * @return component pointer in component, neg. error code if failed
   */
  int CreateComponent( const char* componentID, void* pEnvParam, 
		       AliHLTComponent*& component ) 
    {
    return CreateComponent( componentID, pEnvParam, 0, NULL, component );
    }

  /**
   * Set the run description.
   * The run description is set globally for all components. Each component
   * is initialized from the global run description after creation and before
   * call of AliHLTComponent::Init().
   *
   * @param desc    run descriptor, currently only the run no member is used
   * @param runType originally, run type was supposed to be a number and part
   *                of the run descriptor. But it was defined as string later
   */
  int SetRunDescription(const AliHLTRunDesc* desc, const char* runType);

  /**
   * Check if a registered component has output data, e.g. is of type
   * kSource or kProcessor (see @ref AliHLTComponent::TComponentType).
   * @param componentID  ID of the component to create
   * @return 1 if component has output data, 0 if not                 <br>
   *         -ENOENT     if component does not exist
   */
  int HasOutputData( const char* componentID);

  /**
   * Print registered components to stdout.
   * @return none
   */
  void List();

  /**
   * Announce version and compilation info of the base library.
   */
  int AnnounceVersion();

  /**
   * Find a component.
   * @param componentID  ID of the component to find
   * @return index, neg. error code if failed
   */
  int FindComponentIndex(const char* componentID);

 protected:

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

  /**
   * Find a component.
   * @param componentID  ID of the component to find
   * @return descriptor
   */
  AliHLTComponent* FindComponent(const char* componentID);

  /**
   * Insert component to the list
   * @param pSample      sample object of the component
   * @return neg. error code if failed
   */
  int InsertComponent(AliHLTComponent* pSample);

  /**
   * Close all libraries.
   * @return neg. error code if failed
   */
  int UnloadLibraries();

  /**
   * Activate all module agents with this component handler.
   * The function loops over all available module agents and activates
   * each agent with this component handler. During activation, the
   * dynamic component registration is carried out by the agents version
   * of @ref AliHLTModuleAgent::RegisterComponents
   *
   * Agents are identified by an id which is a string containing the
   * module name. Libraries follow the naming scheme libAliHLT<MOD>.so
   * If the library name is provided and the specific agent found in the
   * list, only that one is activated. All pending agents otherwize.
   * @param library       library to activate the agent for
   * @param blackList     blank separated list of module ids
   */
  int ActivateAgents(const char* library=NULL, const char* blackList=NULL);

  /**
   * Loop through all the agents and deregister this instance if neccessary.
   */

  int DeactivateAgents() const;

public:
  /**
   * Compound descriptor for component libraries - must be public 
   */
  struct AliHLTLibHandle {
    AliHLTLibHandle() : fHandle(NULL), fName(NULL), fMode(kDynamic) {}
    /** dlopen handle */
    void* fHandle;                                                 //! transient
    /** name of the library, casted to TString* before use */
    void* fName;                                                   //! transient
    /** library mode: kStatic means never unloaded */
    TLibraryMode fMode;                                            //! transient
  };
private:
  /**
   * Find a specific library among the loaded libraries.
   * @param library     library name/path
   * @return pointer to AliHLTLibHandle
   */
  AliHLTLibHandle* FindLibrary(const char* library);

  /**
   * Unload a component shared library.
   * All components will be de-registered when the last instance of the
   * library was unloaded.
   * @param handle       handle to the library to unload
   * @return 0 if succeeded, neg. error code if failed
   */
  int UnloadLibrary(AliHLTComponentHandler::AliHLTLibHandle &handle);

  /** list of registered components */
  vector<AliHLTComponent*> fComponentList;                         // see above 
  /** list of scheduled components */
  vector<AliHLTComponent*> fScheduleList;                          // see above 
  /** list of libraries */
  vector<AliHLTLibHandle> fLibraryList;                            // see above 
  /** running environment for the component */
  AliHLTAnalysisEnvironment fEnvironment;                         // see above 
  /** list of owned components, deleted at termination of the handler */
  vector<AliHLTComponent*> fOwnedComponents;                       // see above 
  /** library mode effects all loaded libraries until a new mode is set */
  TLibraryMode fLibraryMode;                                       // see above 

  /** run descriptor */
  AliHLTRunDesc fRunDesc;                                          //!transient 
  /** run type string */
  char* fRunType;                                                  //!transient 

  /** the global singleton */
  static AliHLTComponentHandler* fgpInstance;                      //!transient
  /** number of used instances of the global singleton */
  static int fgNofInstances;                                       //!transient 

  ClassDef(AliHLTComponentHandler, 2);

};
#endif

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