ROOT logo
//-*- Mode: C++ -*-
// @(#) $Id: AliRawHLTManager.h 23318 2008-01-14 12:43:28Z hristov $

#ifndef ALIRAWHLTMANAGER_H
#define ALIRAWHLTMANAGER_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   AliRawHLTManager.h
    @author Matthias Richter
    @date   
    @brief  dynamic generation of HLT RAW readers and streams
*/

// see below for class documentation
// or
// refer to README to build package
// or
// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
 
class AliRawReader;
#include "TObject.h"

extern "C" {
  typedef AliRawReader* (*AliRawReaderHLTCreateInstance_t)(AliRawReader* pParentReader, const char* options);
}
                        
/**
 * @class AliRawHLTManager
 * The class gives dynamic access to creater methods for HLT RAW readers and
 * streams without any library dependencies to HLT libraries.
 */
class AliRawHLTManager {
 public:
  AliRawHLTManager();
  virtual ~AliRawHLTManager();

  /**
   * Create an instance of the AliRawReaderHLT.
   * The AliRawReaderHLT instance needs the parent RAW reader and a list
   * of detectors for which it should access data from the HLT stream.
   */
  static AliRawReader* CreateRawReaderHLT(AliRawReader* pParent, const char* detectors);

  /**
   * Create an instance of a RAW stream.
   * There is no common base class for RAW streams due to the different nature of the
   * detectors and the data. The least common class is the TObject. The calling code
   * should check if the right class has been created by
   * <pre>
   * TObject pObject=AliRawHLTManager::CreateRawStream("MyClass");
   * MyClass* pClass=dynamic_cast<MyClass*>(pObject)
   * </pre>
   *
   * \b NOTE: The function redirects the request to the HLT framework, a handler
   * to actually create the RAW stream must be implemented in the corresponding
   * component library.
   */
  static TObject* CreateRawStream(const char* className);
 protected:
 private:
  enum {kUnloaded=0, kLoaded, kUnavailable};

  /**
   * Load the HLT interface library
   */
  static int LoadLibrary();

  /** status of the loading of the HOMER library */
  static int fLibraryStatus; //!transient

  /** entry in the HOMER library */
  static AliRawReaderHLTCreateInstance_t fFctCreateRawReaderHLT; //!transient

  /** entry in the HOMER library */
  static void* fFctCreateRawStream; //!transient

  ClassDef(AliRawHLTManager, 0)
};

// those definitions have been copied one to one from rec/AliRawReaderHLT.h
// to avoid including this header file
#define ALIHLTREC_LIBRARY                   "libHLTrec.so"
#define ALIHLTREC_LIBRARY_VERSION           0
#define ALIRAWREADERHLT_CREATE_INSTANCE     "AliRawReaderHLTCreateInstance"


#endif //ALIRAWHLTMANAGER_H
 AliRawHLTManager.h:1
 AliRawHLTManager.h:2
 AliRawHLTManager.h:3
 AliRawHLTManager.h:4
 AliRawHLTManager.h:5
 AliRawHLTManager.h:6
 AliRawHLTManager.h:7
 AliRawHLTManager.h:8
 AliRawHLTManager.h:9
 AliRawHLTManager.h:10
 AliRawHLTManager.h:11
 AliRawHLTManager.h:12
 AliRawHLTManager.h:13
 AliRawHLTManager.h:14
 AliRawHLTManager.h:15
 AliRawHLTManager.h:16
 AliRawHLTManager.h:17
 AliRawHLTManager.h:18
 AliRawHLTManager.h:19
 AliRawHLTManager.h:20
 AliRawHLTManager.h:21
 AliRawHLTManager.h:22
 AliRawHLTManager.h:23
 AliRawHLTManager.h:24
 AliRawHLTManager.h:25
 AliRawHLTManager.h:26
 AliRawHLTManager.h:27
 AliRawHLTManager.h:28
 AliRawHLTManager.h:29
 AliRawHLTManager.h:30
 AliRawHLTManager.h:31
 AliRawHLTManager.h:32
 AliRawHLTManager.h:33
 AliRawHLTManager.h:34
 AliRawHLTManager.h:35
 AliRawHLTManager.h:36
 AliRawHLTManager.h:37
 AliRawHLTManager.h:38
 AliRawHLTManager.h:39
 AliRawHLTManager.h:40
 AliRawHLTManager.h:41
 AliRawHLTManager.h:42
 AliRawHLTManager.h:43
 AliRawHLTManager.h:44
 AliRawHLTManager.h:45
 AliRawHLTManager.h:46
 AliRawHLTManager.h:47
 AliRawHLTManager.h:48
 AliRawHLTManager.h:49
 AliRawHLTManager.h:50
 AliRawHLTManager.h:51
 AliRawHLTManager.h:52
 AliRawHLTManager.h:53
 AliRawHLTManager.h:54
 AliRawHLTManager.h:55
 AliRawHLTManager.h:56
 AliRawHLTManager.h:57
 AliRawHLTManager.h:58
 AliRawHLTManager.h:59
 AliRawHLTManager.h:60
 AliRawHLTManager.h:61
 AliRawHLTManager.h:62
 AliRawHLTManager.h:63
 AliRawHLTManager.h:64
 AliRawHLTManager.h:65
 AliRawHLTManager.h:66
 AliRawHLTManager.h:67
 AliRawHLTManager.h:68
 AliRawHLTManager.h:69
 AliRawHLTManager.h:70
 AliRawHLTManager.h:71
 AliRawHLTManager.h:72
 AliRawHLTManager.h:73
 AliRawHLTManager.h:74
 AliRawHLTManager.h:75
 AliRawHLTManager.h:76
 AliRawHLTManager.h:77
 AliRawHLTManager.h:78
 AliRawHLTManager.h:79
 AliRawHLTManager.h:80
 AliRawHLTManager.h:81
 AliRawHLTManager.h:82
 AliRawHLTManager.h:83
 AliRawHLTManager.h:84
 AliRawHLTManager.h:85
 AliRawHLTManager.h:86
 AliRawHLTManager.h:87
 AliRawHLTManager.h:88
 AliRawHLTManager.h:89