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

#ifndef ALIHLTDAQ_H
#define ALIHLTDAQ_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   AliHLTDAQ.h
/// @author Matthias Richter
/// @date   24.10.2008
/// @brief  Virtual Interface to the AliDAQ class.
///

#include "Rtypes.h"
#include <string>

/**
 * Virtual interface to the AliDAQ class.
 * In order to keep the libHLTbase free of AliRoot dependencies, the
 * implementation has been separated from libHLTbase.
 * Implementation in libHLTrec.
 *
 * @author Matthias.Richter@ift.uib.no
 * @ingroup alihlt_system
 */
class AliHLTDAQ {
 public:
  AliHLTDAQ();
  virtual ~AliHLTDAQ();
  static  Int_t       NumberOfDetectors();

  static  Int_t       DetectorID(const char *detectorName);
  static  const char *DetectorName(Int_t detectorID);
  // Note: use specific number instead of kAliHLTComponentDataTypefOriginSize to avoid including AliHLTDataTypes.h
  static  Int_t       DetectorIDFromHLTOrigin(const char dataorigin[4]);
  static  const char *DetectorName(const char dataorigin[4]);

  static  Int_t       DdlIDOffset(const char *detectorName);
  static  Int_t       DdlIDOffset(Int_t detectorID);

  static  const char *DetectorNameFromDdlID(Int_t ddlID, Int_t &ddlIndex);
  static  Int_t       DetectorIDFromDdlID(Int_t ddlID, Int_t &ddlIndex);

  static  Int_t       DdlID(const char *detectorName, Int_t ddlIndex);
  static  Int_t       DdlID(Int_t detectorID, Int_t ddlIndex);
  static  const char *DdlFileName(const char *detectorName, Int_t ddlIndex);
  static  const char *DdlFileName(Int_t detectorID, Int_t ddlIndex);

  static  Int_t       NumberOfDdls(const char *detectorName);
  static  Int_t       NumberOfDdls(Int_t detectorID);

  static const char *ListOfTriggeredDetectors(UInt_t detectorPattern);
  static UInt_t      DetectorPattern(const char *detectorList);

  static const char *OfflineModuleName(const char *detectorName);
  static const char *OfflineModuleName(Int_t detectorID);

  static const char *OnlineName(const char *detectorName);
  static const char *OnlineName(Int_t detectorID);

  static std::string HLTOrigin(const char *detectorName);
  static std::string HLTOrigin(Int_t detectorID);
  
  static std::string HLTSpecificationFromDdlID(Int_t ddlID);
  // Note: use specific number instead of kAliHLTComponentDataTypefOriginSize to avoid including AliHLTDataTypes.h
  static Int_t       DdlIDFromHLTBlockData(const char dataorigin[4], UInt_t specification);

  static AliHLTDAQ* GetInstance();

 private:
  virtual  Int_t       VirtNumberOfDetectors()=0;

  virtual  Int_t       VirtDetectorID(const char *detectorName)=0;
  virtual  const char *VirtDetectorName(Int_t detectorID)=0;

  virtual  Int_t       VirtDdlIDOffset(const char *detectorName)=0;
  virtual  Int_t       VirtDdlIDOffset(Int_t detectorID)=0;

  virtual  const char *VirtDetectorNameFromDdlID(Int_t ddlID, Int_t &ddlIndex)=0;
  virtual  Int_t       VirtDetectorIDFromDdlID(Int_t ddlID, Int_t &ddlIndex)=0;

  virtual  Int_t       VirtDdlID(const char *detectorName, Int_t ddlIndex)=0;
  virtual  Int_t       VirtDdlID(Int_t detectorID, Int_t ddlIndex)=0;
  virtual  const char *VirtDdlFileName(const char *detectorName, Int_t ddlIndex)=0;
  virtual  const char *VirtDdlFileName(Int_t detectorID, Int_t ddlIndex)=0;

  virtual  Int_t       VirtNumberOfDdls(const char *detectorName)=0;
  virtual  Int_t       VirtNumberOfDdls(Int_t detectorID)=0;

  virtual  const char *VirtListOfTriggeredDetectors(UInt_t detectorPattern)=0;
  virtual  UInt_t      VirtDetectorPattern(const char *detectorList)=0;

  virtual  const char *VirtOfflineModuleName(const char *detectorName)=0;
  virtual  const char *VirtOfflineModuleName(Int_t detectorID)=0;

  virtual  const char *VirtOnlineName(const char *detectorName)=0;
  virtual  const char *VirtOnlineName(Int_t detectorID)=0;

  /** global instance */
  static AliHLTDAQ* fgpInstance; //!

  /** the name of the actual implementation */
  static const char* fgkImplName; //!

  /** the library of the implementation */
  static const char* fgkImplLibrary; //!

  /// mapping between HLT data origin and AliDAQ detector number
  static const char* fgkOriginMapping[]; //!
};

#endif //AliHLTDAQ
 AliHLTDAQ.h:1
 AliHLTDAQ.h:2
 AliHLTDAQ.h:3
 AliHLTDAQ.h:4
 AliHLTDAQ.h:5
 AliHLTDAQ.h:6
 AliHLTDAQ.h:7
 AliHLTDAQ.h:8
 AliHLTDAQ.h:9
 AliHLTDAQ.h:10
 AliHLTDAQ.h:11
 AliHLTDAQ.h:12
 AliHLTDAQ.h:13
 AliHLTDAQ.h:14
 AliHLTDAQ.h:15
 AliHLTDAQ.h:16
 AliHLTDAQ.h:17
 AliHLTDAQ.h:18
 AliHLTDAQ.h:19
 AliHLTDAQ.h:20
 AliHLTDAQ.h:21
 AliHLTDAQ.h:22
 AliHLTDAQ.h:23
 AliHLTDAQ.h:24
 AliHLTDAQ.h:25
 AliHLTDAQ.h:26
 AliHLTDAQ.h:27
 AliHLTDAQ.h:28
 AliHLTDAQ.h:29
 AliHLTDAQ.h:30
 AliHLTDAQ.h:31
 AliHLTDAQ.h:32
 AliHLTDAQ.h:33
 AliHLTDAQ.h:34
 AliHLTDAQ.h:35
 AliHLTDAQ.h:36
 AliHLTDAQ.h:37
 AliHLTDAQ.h:38
 AliHLTDAQ.h:39
 AliHLTDAQ.h:40
 AliHLTDAQ.h:41
 AliHLTDAQ.h:42
 AliHLTDAQ.h:43
 AliHLTDAQ.h:44
 AliHLTDAQ.h:45
 AliHLTDAQ.h:46
 AliHLTDAQ.h:47
 AliHLTDAQ.h:48
 AliHLTDAQ.h:49
 AliHLTDAQ.h:50
 AliHLTDAQ.h:51
 AliHLTDAQ.h:52
 AliHLTDAQ.h:53
 AliHLTDAQ.h:54
 AliHLTDAQ.h:55
 AliHLTDAQ.h:56
 AliHLTDAQ.h:57
 AliHLTDAQ.h:58
 AliHLTDAQ.h:59
 AliHLTDAQ.h:60
 AliHLTDAQ.h:61
 AliHLTDAQ.h:62
 AliHLTDAQ.h:63
 AliHLTDAQ.h:64
 AliHLTDAQ.h:65
 AliHLTDAQ.h:66
 AliHLTDAQ.h:67
 AliHLTDAQ.h:68
 AliHLTDAQ.h:69
 AliHLTDAQ.h:70
 AliHLTDAQ.h:71
 AliHLTDAQ.h:72
 AliHLTDAQ.h:73
 AliHLTDAQ.h:74
 AliHLTDAQ.h:75
 AliHLTDAQ.h:76
 AliHLTDAQ.h:77
 AliHLTDAQ.h:78
 AliHLTDAQ.h:79
 AliHLTDAQ.h:80
 AliHLTDAQ.h:81
 AliHLTDAQ.h:82
 AliHLTDAQ.h:83
 AliHLTDAQ.h:84
 AliHLTDAQ.h:85
 AliHLTDAQ.h:86
 AliHLTDAQ.h:87
 AliHLTDAQ.h:88
 AliHLTDAQ.h:89
 AliHLTDAQ.h:90
 AliHLTDAQ.h:91
 AliHLTDAQ.h:92
 AliHLTDAQ.h:93
 AliHLTDAQ.h:94
 AliHLTDAQ.h:95
 AliHLTDAQ.h:96
 AliHLTDAQ.h:97
 AliHLTDAQ.h:98
 AliHLTDAQ.h:99
 AliHLTDAQ.h:100
 AliHLTDAQ.h:101
 AliHLTDAQ.h:102
 AliHLTDAQ.h:103
 AliHLTDAQ.h:104
 AliHLTDAQ.h:105
 AliHLTDAQ.h:106
 AliHLTDAQ.h:107
 AliHLTDAQ.h:108
 AliHLTDAQ.h:109
 AliHLTDAQ.h:110
 AliHLTDAQ.h:111
 AliHLTDAQ.h:112
 AliHLTDAQ.h:113
 AliHLTDAQ.h:114