added libAliHLTRCU library to host RCU specific code independent of detector modules
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 15 Feb 2008 08:46:20 +0000 (08:46 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 15 Feb 2008 08:46:20 +0000 (08:46 +0000)
HLT/Makefile.am
HLT/RCU/AliHLTRCUAgent.cxx [new file with mode: 0644]
HLT/RCU/AliHLTRCUAgent.h [new file with mode: 0644]
HLT/RCU/Makefile.am [new file with mode: 0644]
HLT/configure.ac
HLT/libAliHLTRCU.pkg [new file with mode: 0644]

index 62f06df82e6486f033dfcce313d6718aa318f4c3..9232e6c749dac251a6fe57f31397fc0ed60cdda5 100644 (file)
@@ -10,6 +10,10 @@ if EN_HLT_TPC
 TPC_DIR=TPCLib
 endif
 
+if EN_HLT_RCU
+RCU_DIR=RCU
+endif
+
 if EN_HLT_PHOS
 PHOS_DIR=PHOS
 endif
@@ -36,6 +40,7 @@ SUBDIRS               = BASE \
                          shuttle \
                          $(SAMPLE_DIR) \
                          $(TPC_DIR) \
+                         $(RCU_DIR) \
                          $(PHOS_DIR) \
                          $(TRD_DIR) \
                          $(MUON_DIR) \
diff --git a/HLT/RCU/AliHLTRCUAgent.cxx b/HLT/RCU/AliHLTRCUAgent.cxx
new file mode 100644 (file)
index 0000000..83f60d1
--- /dev/null
@@ -0,0 +1,78 @@
+// $Id$
+
+//**************************************************************************
+//* This file is property of and copyright by the ALICE HLT Project        * 
+//* ALICE Experiment at CERN, All rights reserved.                         *
+//*                                                                        *
+//* Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no>        *
+//*                  for The ALICE HLT Project.                            *
+//*                                                                        *
+//* Permission to use, copy, modify and distribute this software and its   *
+//* documentation strictly for non-commercial purposes is hereby granted   *
+//* without fee, provided that the above copyright notice appears in all   *
+//* copies and that both the copyright notice and this permission notice   *
+//* appear in the supporting documentation. The authors make no claims     *
+//* about the suitability of this software for any purpose. It is          *
+//* provided "as is" without express or implied warranty.                  *
+//**************************************************************************
+
+/** @file   AliHLTRCUAgent.cxx
+    @author Matthias Richter
+    @date   
+    @brief  Agent of the libAliHLTRCU library
+*/
+
+#include <cassert>
+#include "AliHLTRCUAgent.h"
+#include "AliHLTConfiguration.h"
+
+// header files of library components
+
+/** global instance for agent registration */
+AliHLTRCUAgent gAliHLTRCUAgent;
+
+/** ROOT macro for the implementation of ROOT specific class methods */
+ClassImp(AliHLTRCUAgent)
+
+AliHLTRCUAgent::AliHLTRCUAgent()
+{
+  // see header file for class documentation
+  // or
+  // refer to README to build package
+  // or
+  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+}
+
+AliHLTRCUAgent::~AliHLTRCUAgent()
+{
+  // see header file for class documentation
+}
+
+int AliHLTRCUAgent::CreateConfigurations(AliHLTConfigurationHandler* /*handler*/,
+                                         AliRawReader* /*rawReader*/,
+                                         AliRunLoader* /*runloader*/) const
+{
+  // see header file for class documentation
+  return 0;
+}
+
+const char* AliHLTRCUAgent::GetReconstructionChains(AliRawReader* /*rawReader*/,
+                                                   AliRunLoader* /*runloader*/) const
+{
+  // see header file for class documentation
+  return NULL;
+}
+
+const char* AliHLTRCUAgent::GetRequiredComponentLibraries() const
+{
+  // see header file for class documentation
+  return NULL;
+}
+
+int AliHLTRCUAgent::RegisterComponents(AliHLTComponentHandler* pHandler) const
+{
+  // see header file for class documentation
+  assert(pHandler);
+  if (!pHandler) return -EINVAL;
+  return 0;
+}
diff --git a/HLT/RCU/AliHLTRCUAgent.h b/HLT/RCU/AliHLTRCUAgent.h
new file mode 100644 (file)
index 0000000..64a116a
--- /dev/null
@@ -0,0 +1,76 @@
+// $Id$
+
+#ifndef ALIHLTRCUAGENT_H
+#define ALIHLTRCUAGENT_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   AliHLTRCUAgent.h
+    @author Matthias Richter
+    @date   
+    @brief  Agent of the libAliHLTRCU library
+*/
+
+#include "AliHLTModuleAgent.h"
+
+/**
+ * @class AliHLTRCUAgent
+ * This is the agent for the AliHLTRCU library.
+ *
+ * @ingroup alihlt_system
+ */
+class AliHLTRCUAgent : public AliHLTModuleAgent {
+ public:
+  /**
+   * standard constructor. The agent is automatically registered in the
+   * global agent manager
+   */
+  AliHLTRCUAgent();
+  /** destructor */
+  virtual ~AliHLTRCUAgent();
+
+  /**
+   * Register all configurations belonging to this module with the
+   * AliHLTConfigurationHandler. The agent can adapt the configurations
+   * to be registered to the current AliRoot setup by checking the
+   * runloader.
+   * @param handler   [in] the configuration handler
+   * @param rawReader [in] AliRoot RawReader instance 
+   * @param runloader [in] AliRoot runloader
+   * @return neg. error code if failed
+   */
+  int CreateConfigurations(AliHLTConfigurationHandler* handler,
+                          AliRawReader* rawReader=NULL,
+                          AliRunLoader* runloader=NULL) const;
+
+  /**
+   * Get the top configurations belonging to this module.
+   * A top configuration describes a processing chain. It can simply be
+   * described by the last configuration(s) in the chain. 
+   * The agent can adapt the configurations to be registered to the current
+   * AliRoot setup by checking the runloader.
+   * @param rawReader [in] AliRoot RawReader instance 
+   * @param runloader [in] AliRoot runloader
+   * @return string containing the top configurations separated by blanks
+   */
+  const char* GetReconstructionChains(AliRawReader* rawReader=NULL,
+                                     AliRunLoader* runloader=NULL) const;
+  /**
+   * Component libraries which the configurations of this agent depend on.
+   * @return list of component libraries as a blank-separated string.
+   */
+  const char* GetRequiredComponentLibraries() const;
+
+  /**
+   * Register components for the AliHLTRCU library.
+   * @param pHandler  [in] instance of the component handler          
+   */
+  int RegisterComponents(AliHLTComponentHandler* pHandler) const;
+ protected:
+
+ private:
+  ClassDef(AliHLTRCUAgent, 0);
+};
+
+#endif
diff --git a/HLT/RCU/Makefile.am b/HLT/RCU/Makefile.am
new file mode 100644 (file)
index 0000000..51bf284
--- /dev/null
@@ -0,0 +1,63 @@
+# $Id$
+# Makefile template for the AliHLTRCU library.
+
+# be aware of the two different meanings of 'MODULE'
+# 1. AliRoot classifies each detector and main sub-package as a module
+#    so for all HLT library packages MODULE is equal HLT
+# 2. The HLT stand-alone build system knows about sub-modules
+#    e.g. for libAliHLTRCU, MODULE=AliHLTRCU
+MODULE                         = AliHLTRCU
+
+EXTRA_DIST                     =
+
+# library definition
+lib_LTLIBRARIES                        =  libAliHLTRCU.la
+
+# version info for the library
+LIBRARY_VERSION                        = '0:0:0'
+
+# MODDIR is set by the AliRoot build system and denotes the topdir
+# of the module, we must set it since the package definition libAliHLTRCU.pkg
+# includes another common configuration file
+MODDIR                         = $(top_srcdir)
+PKGDEF                         = $(MODDIR)/libAliHLTRCU.pkg
+include $(top_srcdir)/libAliHLTRCU.pkg
+
+# compiler flags
+AM_CPPFLAGS                    = -DMODULE=$(MODULE)         \
+                                 $(foreach i, $(EINCLUDE),  \
+                                       $(shell echo $(i) | sed -e "/HLT\//!d" -e "s|HLT/|-I$(top_srcdir)/|")) \
+                                 $(foreach i, $(EINCLUDE),  \
+                                       $(shell echo $(i) | sed -e "/HLT\//d" -e "s|^|-I$(ALICE_ROOT)/|"))
+
+# library sources
+libAliHLTRCU_la_SOURCES        = $(MODULE_SRCS)
+
+# library headers
+pkginclude_HEADERS             = $(MODULE_HDRS)
+
+# linker flags
+libAliHLTRCU_la_LDFLAGS                = -L@ROOTLIBDIR@ \
+                                 @ROOTLIBS@ \
+                                 @ALIROOT_LDFLAGS@ \
+                                 @ALIROOT_LIBS@ \
+                                 -version-info $(LIBRARY_VERSION)
+
+# automatic generation of data and time of library build
+COMPILE_INFO                   =  AliHLTRCUCompileInfo.cxx
+
+# set the file name for the generated root dictionary
+DICTCPP                                =  AliHLTRCU-DICT.cxx
+nodist_libAliHLTRCU_la_SOURCES =  $(COMPILE_INFO) \
+                                  $(DICTCPP)
+
+CLEANFILES                     =  $(COMPILE_INFO)
+
+include $(top_srcdir)/make.dict
+
+$(COMPILE_INFO): $(libAliHLTRCU_la_SOURCES) $(pkginclude_HEADERS) $(noinst_HEADERS) Makefile.am
+       @echo '//automatically generated compilation info' > $@
+       @echo '//!!! DO NOT EDIT THIS FILE !!!' >> $@
+       @echo '//add changes in Makefile.am' >> $@
+       @echo 'extern "C" void CompileInfo( char*& date, char*& time)' >> $@
+       @echo '{date=__DATE__; time=__TIME__; return;}' >> $@
index 28ebc67aecdc0d53d441ce06d4aeb4938e714668..2c6e7144dc4edf4864d2e7d405d022684155a2cf 100644 (file)
@@ -523,6 +523,52 @@ AC_MSG_CHECKING([whether to compile tpc library])
 AC_MSG_RESULT([$enable_module])
 AC_SUBST([ALITPC_LIBS])
 
+dnl ------------------------------------------------------------------
+AH_TEMPLATE([HLT_RCU],[hlt rcu library])
+
+CHECK_HLTMODULE([rcu],
+               [AliAltroDecoder.h], 
+               [$ALIROOT_CPPFLAGS -I$ALICE_ROOT/RAW],
+               [], [-L$ROOTLIBDIR], [$ROOTLIBS $ADD_ROOTLIBS],
+               [], [-L$ROOTLIBDIR $ALIROOT_LDFLAGS], 
+               [$ROOTLIBS $ADD_ROOTLIBS $ALIROOT_LIBS])
+
+if test "x$enable_module" = "xmissheader"; then
+  enable_module="no...missing.headers"
+  enable_rcu="no...missing.headers"
+elif test "x$have_alircu" = "xno" ; then
+  enable_module="no...requires.AliRoot.RAW.libraries"
+  enable_rcu="no...requires.AliRoot.RAW.libraries"
+elif test "x$enable_module" = "xforce"; then
+  enable_rcu="yes"
+else
+  AC_LANG_PUSH(C++)
+  save_CPPFLAGS=$CPPFLAGS
+  save_LDFLAGS=$LDFLAGS
+  save_LIBS=$LIBS
+  CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
+  LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
+  LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliAltroDecoder.h>], 
+                                  [AliAltroDecoder decoder;
+                                 decoder.CopyBackward(NULL, 0);])],
+                                  [enable_rcu=$enable_module], 
+                                 [enable_module="no...requires.AliRoot>v4-10-Release"
+                                  enable_rcu="no...requires.AliRoot>v4-10-Release"])
+  CPPFLAGS=$save_CPPFLAGS
+  LDFLAGS=$save_LDFLAGS
+  LIBS=$save_LIBS
+  AC_LANG_POP(C++)
+fi
+
+if test "x$enable_rcu" = "xyes" ; then 
+  AC_DEFINE(HLT_RCU)
+fi
+AM_CONDITIONAL(EN_HLT_RCU, test x$enable_rcu = xyes)
+AC_MSG_CHECKING([whether to compile rcu library])
+AC_MSG_RESULT([$enable_module])
+AC_SUBST([ALIRCU_LIBS])
+
 dnl ------------------------------------------------------------------
 AH_TEMPLATE([HLT_PHOS],[hlt phos library])
   
@@ -777,6 +823,7 @@ AC_CONFIG_FILES([Makefile
                 TPCLib/Makefile
                 TPCLib/mapping2array.cxx
                 TPCLib/OnlineDisplay/Makefile
+                RCU/Makefile
                 PHOS/Makefile
                 TRD/Makefile
                 MUON/Makefile
diff --git a/HLT/libAliHLTRCU.pkg b/HLT/libAliHLTRCU.pkg
new file mode 100644 (file)
index 0000000..6277f26
--- /dev/null
@@ -0,0 +1,25 @@
+#-*- Mode: Makefile -*-
+# $Id$
+
+include $(MODDIR)/hlt.conf
+
+CLASS_HDRS:=   AliHLTRCUAgent.h
+
+MODULE_SRCS=   $(CLASS_HDRS:.h=.cxx)
+
+MODULE_HDRS:=  $(CLASS_HDRS)
+
+MODULE_DHDR:=          
+
+SRCS:=$(patsubst %,BASE/RCU/%,$(MODULE_SRCS))
+CINTHDRS:=$(patsubst %,BASE/RCU/%,$(CLASS_HDRS))
+HDRS:=$(patsubst %,BASE/RCU/%,$(MODULE_HDRS))
+DHDR:=$(patsubst %,BASE/RCU/%,$(MODULE_DHDR))
+CINTAUTOLINK:= $(shell test "x$(MODULE_DHDR)" = "x" && echo 1)
+
+EDEFINE      := ${HLTDEFS}
+PACKCXXFLAGS := ${HLTCXXFLAGS}
+PACKCFLAGS   := ${HLTCLFAGS}
+PACKDCXXFLAGS:= ${HLTDCXXFLAGS}
+
+EINCLUDE := HLT/BASE RAW