adding helper functions to convert between DAQ detector name and HLT data origin
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 30 Aug 2010 07:31:00 +0000 (07:31 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 30 Aug 2010 07:31:00 +0000 (07:31 +0000)
HLT/BASE/AliHLTDAQ.cxx
HLT/BASE/AliHLTDAQ.h

index 8a89f2e..dd0d3a4 100644 (file)
 //* provided "as is" without express or implied warranty.                  *
 //**************************************************************************
 
-/** @file   AliHLTDAQ.cxx
-    @author Matthias Richter
-    @date   24.10.2008
-    @brief  Virtual Interface to the AliDAQ class.
-*/
+/// @file   AliHLTDAQ.cxx
+/// @author Matthias Richter
+/// @date   24.10.2008
+/// @brief  Virtual Interface to the AliDAQ class.
+///
 
 #include "AliHLTDAQ.h"
 #include "AliHLTLogging.h"
+#include "AliHLTDataTypes.h"
 #include "TClass.h"
 #include "TSystem.h"
 
@@ -42,6 +43,28 @@ AliHLTDAQ::AliHLTDAQ()
 AliHLTDAQ* AliHLTDAQ::fgpInstance=NULL;
 const char* AliHLTDAQ::fgkImplName="AliHLTDAQInterfaceImplementation";
 const char* AliHLTDAQ::fgkImplLibrary="libHLTrec.so";
+const char* AliHLTDAQ::fgkOriginMapping[] = {
+  kAliHLTDataOriginITSSPD,  
+  kAliHLTDataOriginITSSDD,
+  kAliHLTDataOriginITSSSD,
+  kAliHLTDataOriginTPC,
+  kAliHLTDataOriginTRD,
+  kAliHLTDataOriginTOF,
+  kAliHLTDataOriginHMPID,
+  kAliHLTDataOriginPHOS,
+  kAliHLTDataOriginCPV,
+  kAliHLTDataOriginPMD,
+  kAliHLTDataOriginMUON,
+  "", // MUONTRG
+  kAliHLTDataOriginFMD,
+  kAliHLTDataOriginT0,
+  kAliHLTDataOriginVZERO,
+  kAliHLTDataOriginZDC,
+  kAliHLTDataOriginACORDE,
+  kAliHLTDataOriginTRG,
+  kAliHLTDataOriginEMCAL,
+  NULL
+};
 
 AliHLTDAQ::~AliHLTDAQ()
 {
@@ -72,6 +95,18 @@ const char *AliHLTDAQ::DetectorName(Int_t detectorID)
   return NULL;
 }
 
+const char *AliHLTDAQ::DetectorName(const char dataorigin[4])
+{
+  // see header file for class documentation
+  for (int i=0; fgkOriginMapping[i]!=NULL; i++) {
+    if (strncmp(fgkOriginMapping[i], dataorigin, kAliHLTComponentDataTypefOriginSize)==0) {
+      return DetectorName(i);
+    }
+  }
+
+  return NULL;
+}
+
 Int_t       AliHLTDAQ::DdlIDOffset(const char *detectorName)
 {
   // see header file for class documentation
@@ -198,6 +233,22 @@ const char *AliHLTDAQ::OnlineName(Int_t detectorID)
   return NULL;
 }
 
+string AliHLTDAQ::HLTOrigin(const char *detectorName)
+{
+  // get HLT origin from detector name
+  return HLTOrigin(DetectorID(detectorName));
+}
+
+string AliHLTDAQ::HLTOrigin(Int_t detectorID)
+{
+  // get HLT origin from detector ID
+  string origin;
+  if (detectorID>=0 && detectorID<(int)sizeof(fgkOriginMapping)/sizeof(const char*)) {
+    origin.append(fgkOriginMapping[detectorID], kAliHLTComponentDataTypefOriginSize);
+  }
+  return origin;
+}
+
 AliHLTDAQ* AliHLTDAQ::GetInstance()
 {
   // see header file for class documentation
index 2fea4f4..37ea3d6 100644 (file)
@@ -7,19 +7,23 @@
 //* 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.
-*/
+/// @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:
@@ -29,6 +33,7 @@ class AliHLTDAQ {
 
   static  Int_t       DetectorID(const char *detectorName);
   static  const char *DetectorName(Int_t detectorID);
+  static  const char *DetectorName(const char dataorigin[4]);
 
   static  Int_t       DdlIDOffset(const char *detectorName);
   static  Int_t       DdlIDOffset(Int_t detectorID);
@@ -53,6 +58,9 @@ class AliHLTDAQ {
   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 AliHLTDAQ* GetInstance();
 
  private:
@@ -92,6 +100,9 @@ class AliHLTDAQ {
 
   /** the library of the implementation */
   static const char* fgkImplLibrary; //!
+
+  /// mapping between HLT data origin and AliDAQ detector number
+  static const char* fgkOriginMapping[]; //!
 };
 
 #endif //AliHLTDAQ