2 // @(#) $Id: AliRawHLTManager.h 23318 2008-01-14 12:43:28Z hristov $
4 #ifndef ALIRAWHLTMANAGER_H
5 #define ALIRAWHLTMANAGER_H
6 //* This file is property of and copyright by the ALICE HLT Project *
7 //* ALICE Experiment at CERN, All rights reserved. *
8 //* See cxx source for full Copyright notice *
10 /** @file AliRawHLTManager.h
11 @author Matthias Richter
13 @brief dynamic generation of HLT RAW readers and streams
16 // see below for class documentation
18 // refer to README to build package
20 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
26 * @class AliRawHLTManager
27 * The class gives dynamic access to creater methods for HLT RAW readers and
28 * streams without any library dependencies to HLT libraries.
30 class AliRawHLTManager {
33 virtual ~AliRawHLTManager();
36 * Create an instance of the AliRawReaderHLT.
37 * The AliRawReaderHLT instance needs the parent RAW reader and a list
38 * of detectors for which it should access data from the HLT stream.
40 static AliRawReader* CreateRawReaderHLT(AliRawReader* pParent, const char* detectors);
43 * Create an instance of a RAW stream.
44 * There is no common base class for RAW streams due to the different nature of the
45 * detectors and the data. The least common class is the TObject. The calling code
46 * should check if the right class has been created by
48 * TObject pObject=AliRawHLTManager::CreateRawStream("MyClass");
49 * MyClass* pClass=dynamic_cast<MyClass*>(pObject)
52 * \b NOTE: The function redirects the request to the HLT framework, a handler
53 * to actually create the RAW stream must be implemented in the corresponding
56 static TObject* CreateRawStream(const char* className);
59 enum {kUnloaded=0, kLoaded, kUnavailable};
62 * Load the HLT interface library
64 static int LoadLibrary();
66 /** status of the loading of the HOMER library */
67 static int fLibraryStatus; //!transient
69 /** entry in the HOMER library */
70 static void* fFctCreateRawReaderHLT; //!transient
72 /** entry in the HOMER library */
73 static void* fFctCreateRawStream; //!transient
75 ClassDef(AliRawHLTManager, 0)
78 // those definitions have been copied one to one from rec/AliRawReaderHLT.h
79 // to avoid including this header file
80 #define ALIHLTREC_LIBRARY "libHLTrec.so"
81 #define ALIHLTREC_LIBRARY_VERSION 0
82 #define ALIRAWREADERHLT_CREATE_INSTANCE "AliRawReaderHLTCreateInstance"
87 typedef AliRawReader* (*AliRawReaderHLTCreateInstance_t)(AliRawReader* pParentReader, const char* options);
90 #endif //ALIRAWHLTMANAGER_H