This commit was generated by cvs2svn to compensate for changes in r11742,
authorcvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 14 Jun 2005 08:51:52 +0000 (08:51 +0000)
committercvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 14 Jun 2005 08:51:52 +0000 (08:51 +0000)
which included commits to RCS files with non-trunk default branches.

213 files changed:
HLT/MUON/BUGS [new file with mode: 0644]
HLT/MUON/Makefile [new file with mode: 0644]
HLT/MUON/README [new file with mode: 0644]
HLT/MUON/TODO [new file with mode: 0644]
HLT/MUON/build/Linux.platform.mk [new file with mode: 0644]
HLT/MUON/build/TriggerDDLFilePublisher.module.mk [new file with mode: 0644]
HLT/MUON/build/Win32.platform.mk [new file with mode: 0644]
HLT/MUON/build/config.mk [new file with mode: 0644]
HLT/MUON/build/gentest.module.mk [new file with mode: 0644]
HLT/MUON/build/libMUONHLT.module.mk [new file with mode: 0644]
HLT/MUON/build/libdHLT.module.mk [new file with mode: 0644]
HLT/MUON/build/printrawdata.module.mk [new file with mode: 0644]
HLT/MUON/build/pubsub_size_tag.module.mk [new file with mode: 0644]
HLT/MUON/build/rules.mk [new file with mode: 0644]
HLT/MUON/build/signalL2.module.mk [new file with mode: 0644]
HLT/MUON/build/tracker.module.mk [new file with mode: 0644]
HLT/MUON/build/triggerDDL.module.mk [new file with mode: 0644]
HLT/MUON/doc/MansoTracker_state_diagram.sxd [new file with mode: 0644]
HLT/MUON/doc/README [new file with mode: 0644]
HLT/MUON/doc/doxygen/dHLTconfig [new file with mode: 0644]
HLT/MUON/doc/doxygen/footer.html [new file with mode: 0644]
HLT/MUON/doc/doxygen/header.html [new file with mode: 0644]
HLT/MUON/doc/doxygen/style.css [new file with mode: 0644]
HLT/MUON/doc/status_matrix.sxc [new file with mode: 0644]
HLT/MUON/examples/rawdata/Config_MUON_test.C [new file with mode: 0644]
HLT/MUON/examples/rawdata/README [new file with mode: 0644]
HLT/MUON/examples/rawdata/Simulation.C [new file with mode: 0644]
HLT/MUON/examples/rawdata/dhlt_v2.C [new file with mode: 0644]
HLT/MUON/macros/DumpClusterPointFile.C [new file with mode: 0644]
HLT/MUON/macros/DumpClusterSource.C [new file with mode: 0644]
HLT/MUON/macros/DumpTrackSink.C [new file with mode: 0644]
HLT/MUON/macros/DumpTriggerRecordFile.C [new file with mode: 0644]
HLT/MUON/macros/DumpTriggerSource.C [new file with mode: 0644]
HLT/MUON/macros/MakeClusterPointFiles.C [new file with mode: 0644]
HLT/MUON/macros/MakeTriggerRecordFiles.C [new file with mode: 0644]
HLT/MUON/macros/RunMicrodHLT.C [new file with mode: 0644]
HLT/MUON/make.log [new file with mode: 0644]
HLT/MUON/scripts/extractdata.sh [new file with mode: 0644]
HLT/MUON/src/ADCStream.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/ADCStream.cxx [new file with mode: 0644]
HLT/MUON/src/AliRoot/ADCStream.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/ADCStreamSource.cxx [new file with mode: 0644]
HLT/MUON/src/AliRoot/ADCStreamSource.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/Base.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/ClusterFinderCallback.cxx [new file with mode: 0644]
HLT/MUON/src/AliRoot/ClusterFinderCallback.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/ClusterFinderInterface.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/ClusterFinderProxy.cxx [new file with mode: 0644]
HLT/MUON/src/AliRoot/ClusterFinderProxy.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/ClusterSource.cxx [new file with mode: 0644]
HLT/MUON/src/AliRoot/ClusterSource.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/MUONHLTLinkDef.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/MicrodHLT.cxx [new file with mode: 0644]
HLT/MUON/src/AliRoot/MicrodHLT.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/Point.cxx [new file with mode: 0644]
HLT/MUON/src/AliRoot/Point.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/Region.cxx [new file with mode: 0644]
HLT/MUON/src/AliRoot/Region.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/Track.cxx [new file with mode: 0644]
HLT/MUON/src/AliRoot/Track.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/TrackSink.cxx [new file with mode: 0644]
HLT/MUON/src/AliRoot/TrackSink.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/Tracker.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/TrackerCallback.cxx [new file with mode: 0644]
HLT/MUON/src/AliRoot/TrackerCallback.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/TrackerInterface.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/TrackerProxy.cxx [new file with mode: 0644]
HLT/MUON/src/AliRoot/TrackerProxy.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/TriggerRecord.cxx [new file with mode: 0644]
HLT/MUON/src/AliRoot/TriggerRecord.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/TriggerSource.cxx [new file with mode: 0644]
HLT/MUON/src/AliRoot/TriggerSource.hpp [new file with mode: 0644]
HLT/MUON/src/AliRoot/convert.cxx [new file with mode: 0644]
HLT/MUON/src/AliRoot/convert.hpp [new file with mode: 0644]
HLT/MUON/src/BCMP/EventHandler.hpp [new file with mode: 0644]
HLT/MUON/src/BCMP/EventQueue.cxx [new file with mode: 0644]
HLT/MUON/src/BCMP/EventQueue.hpp [new file with mode: 0644]
HLT/MUON/src/BCMP/Packets.cxx [new file with mode: 0644]
HLT/MUON/src/BCMP/Packets.hpp [new file with mode: 0644]
HLT/MUON/src/BCMP/Receiver.cxx [new file with mode: 0644]
HLT/MUON/src/BCMP/Receiver.hpp [new file with mode: 0644]
HLT/MUON/src/BCMP/Sender.cxx [new file with mode: 0644]
HLT/MUON/src/BCMP/Sender.hpp [new file with mode: 0644]
HLT/MUON/src/BasicTypes.hpp [new file with mode: 0644]
HLT/MUON/src/Buffers/Array.hpp [new file with mode: 0644]
HLT/MUON/src/Buffers/CountedList.hpp [new file with mode: 0644]
HLT/MUON/src/Buffers/GarbageCollector.cxx [new file with mode: 0644]
HLT/MUON/src/Buffers/GarbageCollector.hpp [new file with mode: 0644]
HLT/MUON/src/Buffers/List.hpp [new file with mode: 0644]
HLT/MUON/src/Buffers/LookupTable.hpp [new file with mode: 0644]
HLT/MUON/src/Buffers/MemoryManager.hpp [new file with mode: 0644]
HLT/MUON/src/Buffers/MessageQueue.hpp [new file with mode: 0644]
HLT/MUON/src/Buffers/QuadTree.hpp [new file with mode: 0644]
HLT/MUON/src/Buffers/Queue.hpp [new file with mode: 0644]
HLT/MUON/src/Buffers/RegionTree.hpp [new file with mode: 0644]
HLT/MUON/src/Cluster.hpp [new file with mode: 0644]
HLT/MUON/src/Clustering/CenterOfGravityFinder.cxx [new file with mode: 0644]
HLT/MUON/src/Clustering/CenterOfGravityFinder.hpp [new file with mode: 0644]
HLT/MUON/src/Clustering/ClusterFinder.hpp [new file with mode: 0644]
HLT/MUON/src/Clustering/IOInterface.hpp [new file with mode: 0644]
HLT/MUON/src/Clustering/RawDataReconstruction/Config_MUON_test.C [new file with mode: 0644]
HLT/MUON/src/Clustering/RawDataReconstruction/Reconstruction.C [new file with mode: 0644]
HLT/MUON/src/Clustering/RawDataReconstruction/display.C [new file with mode: 0644]
HLT/MUON/src/Clustering/RawDataReconstruction/rawddl4.C [new file with mode: 0644]
HLT/MUON/src/Clustering/RawDataReconstruction/rawddl5.C [new file with mode: 0644]
HLT/MUON/src/Control/ControlInterface.hpp [new file with mode: 0644]
HLT/MUON/src/DDL/ADCInputInterface.hpp [new file with mode: 0644]
HLT/MUON/src/DDL/DecisionOutputInterface.hpp [new file with mode: 0644]
HLT/MUON/src/DDL/FileList.cxx [new file with mode: 0644]
HLT/MUON/src/DDL/FileList.hpp [new file with mode: 0644]
HLT/MUON/src/DDL/L2SignalReceiver.cxx [new file with mode: 0644]
HLT/MUON/src/DDL/L2SignalReceiver.hpp [new file with mode: 0644]
HLT/MUON/src/DDL/L2SignalSender.cxx [new file with mode: 0644]
HLT/MUON/src/DDL/L2SignalSender.hpp [new file with mode: 0644]
HLT/MUON/src/DDL/RawDataFormat.hpp [new file with mode: 0644]
HLT/MUON/src/DDL/TrackOutputInterface.hpp [new file with mode: 0644]
HLT/MUON/src/DDL/TrackingRawDataMap.cxx [new file with mode: 0644]
HLT/MUON/src/DDL/TriggerInputInterface.hpp [new file with mode: 0644]
HLT/MUON/src/DDL/print.cxx [new file with mode: 0644]
HLT/MUON/src/DDL/print.hpp [new file with mode: 0644]
HLT/MUON/src/DDL/signalL2.cxx [new file with mode: 0644]
HLT/MUON/src/Debug/ClusterSource.cxx [new file with mode: 0644]
HLT/MUON/src/Debug/ClusterSource.hpp [new file with mode: 0644]
HLT/MUON/src/Debug/DataGenerator.cxx [new file with mode: 0644]
HLT/MUON/src/Debug/DataGenerator.hpp [new file with mode: 0644]
HLT/MUON/src/Debug/TriggerSource.cxx [new file with mode: 0644]
HLT/MUON/src/Debug/TriggerSource.hpp [new file with mode: 0644]
HLT/MUON/src/Debug/print.cxx [new file with mode: 0644]
HLT/MUON/src/Debug/print.hpp [new file with mode: 0644]
HLT/MUON/src/Debug/printrawdata.cxx [new file with mode: 0644]
HLT/MUON/src/Decision/DecisionMaker.hpp [new file with mode: 0644]
HLT/MUON/src/Decision/IOInterface.hpp [new file with mode: 0644]
HLT/MUON/src/DecisionRecord.hpp [new file with mode: 0644]
HLT/MUON/src/Error.cxx [new file with mode: 0644]
HLT/MUON/src/Error.hpp [new file with mode: 0644]
HLT/MUON/src/EventID.hpp [new file with mode: 0644]
HLT/MUON/src/Framework/ClusterLookupTable.hpp [new file with mode: 0644]
HLT/MUON/src/Framework/Global.cxx [new file with mode: 0644]
HLT/MUON/src/Framework/Global.hpp [new file with mode: 0644]
HLT/MUON/src/PipeIO/gentest_main.cxx [new file with mode: 0644]
HLT/MUON/src/PipeIO/tracker_main.cxx [new file with mode: 0644]
HLT/MUON/src/PipeIO/triggerDDL.cxx [new file with mode: 0644]
HLT/MUON/src/Point.hpp [new file with mode: 0644]
HLT/MUON/src/PubSub/Makefile [new file with mode: 0644]
HLT/MUON/src/PubSub/TrackerCallback.cxx [new file with mode: 0644]
HLT/MUON/src/PubSub/TrackerCallback.hpp [new file with mode: 0644]
HLT/MUON/src/PubSub/TrackerComponent.cxx [new file with mode: 0644]
HLT/MUON/src/PubSub/TrackerComponent.hpp [new file with mode: 0644]
HLT/MUON/src/PubSub/TriggerDDLFilePublisher.cxx [new file with mode: 0644]
HLT/MUON/src/PubSub/pubsub_size_tag.cxx [new file with mode: 0644]
HLT/MUON/src/RegionOfInterest.cxx [new file with mode: 0644]
HLT/MUON/src/RegionOfInterest.hpp [new file with mode: 0644]
HLT/MUON/src/System/Directory.cxx [new file with mode: 0644]
HLT/MUON/src/System/Directory.hpp [new file with mode: 0644]
HLT/MUON/src/System/Event.hpp [new file with mode: 0644]
HLT/MUON/src/System/File.cxx [new file with mode: 0644]
HLT/MUON/src/System/File.hpp [new file with mode: 0644]
HLT/MUON/src/System/Linux/Directory.cxx [new file with mode: 0644]
HLT/MUON/src/System/Linux/File.cxx [new file with mode: 0644]
HLT/MUON/src/System/Linux/Mutex.cxx [new file with mode: 0644]
HLT/MUON/src/System/Linux/MutexCondition.cxx [new file with mode: 0644]
HLT/MUON/src/System/Linux/Routines.cxx [new file with mode: 0644]
HLT/MUON/src/System/Linux/SignalHandler.cxx [new file with mode: 0644]
HLT/MUON/src/System/Linux/Socket.cxx [new file with mode: 0644]
HLT/MUON/src/System/Linux/SystemError.cxx [new file with mode: 0644]
HLT/MUON/src/System/Linux/SystemTypes.hpp [new file with mode: 0644]
HLT/MUON/src/System/Linux/Thread.cxx [new file with mode: 0644]
HLT/MUON/src/System/Mutex.cxx [new file with mode: 0644]
HLT/MUON/src/System/Mutex.hpp [new file with mode: 0644]
HLT/MUON/src/System/MutexCondition.cxx [new file with mode: 0644]
HLT/MUON/src/System/MutexCondition.hpp [new file with mode: 0644]
HLT/MUON/src/System/Routines.cxx [new file with mode: 0644]
HLT/MUON/src/System/Routines.hpp [new file with mode: 0644]
HLT/MUON/src/System/SignalHandler.cxx [new file with mode: 0644]
HLT/MUON/src/System/SignalHandler.hpp [new file with mode: 0644]
HLT/MUON/src/System/Socket.cxx [new file with mode: 0644]
HLT/MUON/src/System/Socket.hpp [new file with mode: 0644]
HLT/MUON/src/System/SystemError.cxx [new file with mode: 0644]
HLT/MUON/src/System/SystemError.hpp [new file with mode: 0644]
HLT/MUON/src/System/SystemTypes.hpp [new file with mode: 0644]
HLT/MUON/src/System/Thread.cxx [new file with mode: 0644]
HLT/MUON/src/System/Thread.hpp [new file with mode: 0644]
HLT/MUON/src/System/Win32/Directory.cxx [new file with mode: 0644]
HLT/MUON/src/System/Win32/File.cxx [new file with mode: 0644]
HLT/MUON/src/System/Win32/Mutex.cxx [new file with mode: 0644]
HLT/MUON/src/System/Win32/MutexCondition.cxx [new file with mode: 0644]
HLT/MUON/src/System/Win32/Routines.cxx [new file with mode: 0644]
HLT/MUON/src/System/Win32/SignalHandler.cxx [new file with mode: 0644]
HLT/MUON/src/System/Win32/Socket.cxx [new file with mode: 0644]
HLT/MUON/src/System/Win32/SystemError.cxx [new file with mode: 0644]
HLT/MUON/src/System/Win32/SystemTypes.hpp [new file with mode: 0644]
HLT/MUON/src/System/Win32/Thread.cxx [new file with mode: 0644]
HLT/MUON/src/Track.hpp [new file with mode: 0644]
HLT/MUON/src/Tracking/Calculations.cxx [new file with mode: 0644]
HLT/MUON/src/Tracking/Calculations.hpp [new file with mode: 0644]
HLT/MUON/src/Tracking/EventHandler.cxx [new file with mode: 0644]
HLT/MUON/src/Tracking/EventHandler.hpp [new file with mode: 0644]
HLT/MUON/src/Tracking/IODispatcher.hpp [new file with mode: 0644]
HLT/MUON/src/Tracking/IOHandler.cxx [new file with mode: 0644]
HLT/MUON/src/Tracking/IOHandler.hpp [new file with mode: 0644]
HLT/MUON/src/Tracking/IOInterface.hpp [new file with mode: 0644]
HLT/MUON/src/Tracking/MansoTracker.cxx [new file with mode: 0644]
HLT/MUON/src/Tracking/MansoTracker.hpp [new file with mode: 0644]
HLT/MUON/src/Tracking/Tracker.hpp [new file with mode: 0644]
HLT/MUON/src/TriggerRecord.hpp [new file with mode: 0644]
HLT/MUON/src/Utils.cxx [new file with mode: 0644]
HLT/MUON/src/Utils.hpp [new file with mode: 0644]
HLT/MUON/src/Version/Version.cxx [new file with mode: 0644]
HLT/MUON/src/Version/Version.hpp [new file with mode: 0644]
HLT/MUON/src/Version/major.number [new file with mode: 0644]
HLT/MUON/src/Version/minor.number [new file with mode: 0644]
HLT/MUON/src/new.cxx [new file with mode: 0644]
HLT/MUON/src/new.hpp [new file with mode: 0644]

diff --git a/HLT/MUON/BUGS b/HLT/MUON/BUGS
new file mode 100644 (file)
index 0000000..adec46f
--- /dev/null
@@ -0,0 +1,48 @@
+###############################################################################
+# This file contains the list of bugs (features) found in this software.      #
+# Any new problems should be appended to this file with a new sequential      #
+# number and current date and time, for example the output of the date        #
+# command.                                                                    #
+# Hopefully at some point these will be fixed at which point the bug listing  #
+# can be removed from this file. Please check carefully that the problem has  #
+# infact been resolved before you remove the bug listing. Rather add a tag of #
+# RESOLVED to the bug heading for a while before removing the bug if you are  #
+# not sure.                                                                   #
+###############################################################################
+===============================================================================
+
+1) Wed Nov 24 21:30:19 SAST 2004
+
+Strange segfault with triggerDDL when running:
+ > ./bin/Linux-debug/triggerDDL list <x>
+where <x> is in the range 1 to 1023 we get a SegFault.
+For <x> larger than 1023 the program runs normally.
+
+list is a file containing the line:
+"file"
+and file is a empty file.
+
+===============================================================================
+
+2) Wed Nov 24 21:30:19 SAST 2004
+
+Assertion failure in triggerDDL when running
+ > ./bin/Linux-debug/triggerDDL list
+
+Message:
+triggerDDL: /home/artur/HLT/dHLT/src/new.cpp:144: void operator delete [](void*): Assertion `checkmem.RemoveArrayAlloc(memory)' failed.
+
+list is a file containing the line:
+"file"
+and file is a empty file.
+
+===============================================================================
+
+3) Wed Nov 24 22:30:35 SAST 2004
+
+Data packets in BCMP::Receiver can be received multiple times. We need to fix
+this by adding code that checks if the packet was already received or not.
+Could use some kind of windowing algorithm like TCP uses.
+
+===============================================================================
+
diff --git a/HLT/MUON/Makefile b/HLT/MUON/Makefile
new file mode 100644 (file)
index 0000000..f2aa24b
--- /dev/null
@@ -0,0 +1,118 @@
+#/**************************************************************************
+# * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+# *                                                                        *
+# * Author: Artur Szostak                                                  *
+# * Email:  artur@alice.phy.uct.ac.za                                      *
+# *                                                                        *
+# * 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.                  *
+# **************************************************************************/
+
+include build/config.mk
+
+.PHONY : all debug verbose depend doc clean clean-all incmajor incminor incbuild dist debug-dist
+
+MODULES = $(wildcard $(BUILD_DIR)/*.module.mk)
+
+############################################################################
+
+all : $(MODULES)
+       $(VERBOSE) for MODULE in $(MODULES) ; do $(MAKE) -f $$MODULE ; done
+
+############################################################################
+
+debug :
+       @echo "---------- Entering debug build mode ----------"
+       @$(MAKE) DEBUGGING=ON all
+
+############################################################################
+
+verbose :
+       @echo "---------- Entering verbose build mode ----------"
+       @$(MAKE) VERBOSE_MAKE=ON all
+
+############################################################################
+
+depend : $(MODULES)
+       $(VERBOSE) for MODULE in $(MODULES) ; do $(MAKE) -f $$MODULE depend ; done
+
+############################################################################
+
+doc :
+ifndef VERBOSE_MAKE
+       @echo "making source code documentation"
+endif
+       $(VERBOSE) mkdir -p srcdoc/html/
+       $(VERBOSE) cp doc/doxygen/footer.html doc/doxygen/header.html doc/doxygen/style.css srcdoc/html/
+       $(VERBOSE) doxygen doc/doxygen/dHLTconfig
+
+############################################################################
+
+clean :
+ifndef VERBOSE_MAKE
+       @echo "cleaning up $(OUTPUT_DIR)"
+endif
+       $(VERBOSE) rm -f -r $(OUTPUT_DIR)
+
+############################################################################
+
+clean-all : clean
+ifndef VERBOSE_MAKE
+       @echo "cleaning up $(BIN_DIR)"
+endif
+       $(VERBOSE) rm -f -r $(BIN_DIR)
+ifndef VERBOSE_MAKE
+       @echo "cleaning up $(LIB_DIR)"
+endif
+       $(VERBOSE) rm -f -r $(LIB_DIR)
+ifndef VERBOSE_MAKE
+       @echo "cleaning up $(INCLUDE_DIR)"
+endif
+       $(VERBOSE) rm -f -r $(INCLUDE_DIR)
+       $(VERBOSE) rm -f $(TOP_DIR)/core $(BIN_DIR)/core $(MACRO_DIR)/core
+
+############################################################################
+
+incmajor :
+ifndef VERBOSE_MAKE
+       @echo Incrementing major version number.
+endif
+       $(VERBOSE) let NUM=`cat $(SRC_DIR)/Version/major.number`+1 && echo $$NUM > $(SRC_DIR)/Version/major.number
+
+############################################################################
+
+incminor :
+ifndef VERBOSE_MAKE
+       @echo Incrementing minor version number.
+endif
+       $(VERBOSE) let NUM=`cat $(SRC_DIR)/Version/minor.number`+1 && echo $$NUM > $(SRC_DIR)/Version/minor.number
+
+############################################################################
+
+incbuild : $(MODULES)
+       $(VERBOSE) for MODULE in $(MODULES) ; do \
+               $(MAKE) -q -f $$MODULE ; \
+               if test $$? -eq 1 ; then \
+                       $(MAKE) -f $$MODULE incbuild ; \
+               fi; \
+       done
+
+############################################################################
+
+dist : incbuild
+       @echo "Making distribution $(DISTRIBUTION_FILE)"
+       $(VERBOSE) mkdir -p $(DISTRIBUTION_SUBDIR)
+       $(VERBOSE) for MODULE in $(MODULES) ; do $(MAKE) -f $$MODULE create-distrib ; done
+       $(VERBOSE) cp -r $(INCLUDE_DIR) $(DISTRIBUTION_SUBDIR)/
+       $(VERBOSE) cd $(DISTRIBUTION_DIR) && tar -czf $(TOP_DIR)/$(DISTRIBUTION_FILE) $(DISTRIBUTION_DIRNAME)
+       
+############################################################################
+
+debug-dist : 
+       @$(MAKE) DEBUGGING=ON dist
+
diff --git a/HLT/MUON/README b/HLT/MUON/README
new file mode 100644 (file)
index 0000000..f22581f
--- /dev/null
@@ -0,0 +1,122 @@
+
+================================
+dHLT - Dimuon High level Trigger
+================================
+
+This module is the implementation of the dHLT algorithm.
+
+
+Building:
+=========
+
+1) To build the dHLT modules type the following command in the shell in the top
+directory of the dHLT project:
+
+> make
+
+
+2) To generate a distribution tar.gz file:
+
+> make dist
+
+The distribution archive will be found in the same directory as this readme file.
+
+
+3) To generate a distribution for debugging:
+
+> make debug-dist
+
+
+4) To compile all objects in debug mode for debugging with gdb for example:
+
+> make debug
+
+
+5) To run build process in verbose mode:
+
+> make verbose
+
+
+6) To generate source code documentation using doxygen:
+
+> make doc
+
+
+7) To remove all intermediate files generated during the build process (excluding
+binaries and libraries):
+
+> make clean
+
+
+8) To remove all files generated during the build process (including output 
+binaries and libraries):
+
+> make clean-all
+
+
+
+Directories:
+============
+
+src/ 
+       Contains all source code.
+
+examples/ 
+       Contains scripts for running certain example uses of the dHLT
+       
+
+macros/
+       Contains ROOT and AliRoot macros used to run parts of the software.
+        Can contain other scripts also.
+
+
+build/
+       Contains all files (such as make files) required to build the binaries and libraries.    
+
+
+doc/
+       Contains any specification or design documentation.
+       (BB 26/11/04) Also contains a dHLTconfig file for generating doxygen
+       documentation easily.
+
+Generated Directories:
+======================
+
+bin/
+       Contains binary executables.
+
+
+lib/
+       Contains libraries (shared objects / DLL's).
+
+
+include/
+       Contains include C++ header files required to compile against the libraries in lib/
+
+srcdoc/
+       Documentation generated from the source code using doxygen is placed into this
+       directory.
+
+output/
+       All temporary files that get generated during the build process such as .d and .o files
+       are written to this directory. The directory contains a subdirectory for every module
+       built containing that modules specific files.
+
+
+      Files:
+===================
+
+README
+       This file. Should add any general or important information to help get people started
+       with working with this module.
+
+BUGS
+       Any known bugs are described in this file. Any new bugs discovered with this module
+       should be added to this file. Please read the file header for more details.
+
+TODO
+       This is a list describing things that need to be done. It can also contain a wish list,
+       i.e. things that would be nice to implement in the future. Read the files header for
+       more details.
+
+
diff --git a/HLT/MUON/TODO b/HLT/MUON/TODO
new file mode 100644 (file)
index 0000000..74ead54
--- /dev/null
@@ -0,0 +1,135 @@
+###############################################################################
+# This file contains the list of things still to be implemented or done in    #
+# this module. Wish list items can also be described in this list.            #
+# For any features that need or you want to be implemented, add them to this  #
+# file. For each such item give it a new sequential number and write the      #
+# time/date stamp next to that. This can be the output of the date command    #
+# for example. A full description should be given of what should be           #
+# implemented and if possible, how to go about doing that.                    #
+# Any features that get implemented can then be removed from this wish list.  #
+# If something is partially implemented then update the status in this file.  #
+# If a item is referenced by an as yet unimplemented item then rather than    #
+# removing that item, leave it and just add the IMPLEMENTED tag to the item.  #
+###############################################################################
+===============================================================================
+
+1) Wed Nov 24 21:30:19 SAST 2004
+
+Integrate cluster finder with the dHLT by taking the Indian code and wrapping
+that into the CenterOfGravityFinder template.
+This might require rearranging large parts of the Indian code or even rewrites.
+--> BB adds Wed Nov 24 23:01  
+       I am working on validating the Indian code. I suggest :
+       i)      breaking up single macro into a set of functions, which will make it 
+               easier to write into a class for aliroot. 
+       ii)     macros to easily generate raw data from aliroot events  
+               and standardised Simulation macro to generate reference event.  
+--> BB adds Friday Nov 24 23:44
+       Added examples directory, where there is a raw data generation example. 
+       Currently, all LUT for raw data generation are in the examples dir.
+       These will be moved to DDL, while hit reconstruction will be implemented in
+       Clustering, soon to be renamed to "HitReconstruction". This will implement a
+       clean version of the Calcutta software hit reconstruction from raw data. 
+       
+===============================================================================
+
+2) Wed Nov 24 21:30:19 SAST 2004
+
+Create the following pipe I/O components:
+       L2 accept signal simulator - Most of the network level code is complete.
+       triggerDDL - almost done.
+       chamberDDL - Simulating DDL output from the tracking chambers.
+       trigger DDL to TriggerRecord translator.
+       dummy TriggerRecord publisher.
+       CenterOfGravityFinder - refer to item (1).
+       dummy ClusterPoint block publisher.
+       MansoTracker component - The MansoTracker algorithm is implemented but
+               everything has not yet been intergrated into a component.
+       dummy Track publisher.
+       Decision component
+       dummy Decision publisher.
+       DDL output data packer for Track data.
+       DDL output data packer for Decision data.
+       analysis tools.
+       debug tools. (utilities to dump an analyze data/signals etc as it passes
+               through the system)
+       timing tools. (Not that trivial).
+
+===============================================================================
+
+3) Wed Nov 24 21:30:19 SAST 2004
+
+Create Pub/Sub components similar to those described in item (2).
+Will need to see what code can be used in both component types. Hopefully most.
+
+===============================================================================
+
+4) Wed Nov 24 21:30:19 SAST 2004
+
+Intergrate with AliRoot. Exactly what this means is yet to be defined, but for
+now the obvious components required are:
+       GUI interface - a lot to be done here. Ideally one should be able to
+               monitor and control everything from some kind of GUI. Perhaps
+               some form of HTTP/HTML application/front end would be usefull.
+       dHLTInterface - API through which AliRoot talks to dHLT proper.
+       Driver components - Here I am talking about things like MicrodHLT. It
+               does all the dirty work behind the scenes to talk to dHLT code.
+               We will require one for a more full blow dHLT using a memory
+               resident framework (here I am thinking about Framework/Global).
+               Also one that talks to the different external implementation
+               of dHLT running on Pub/Sub etc...
+
+===============================================================================
+
+5) Wed Nov 24 21:30:19 SAST 2004
+
+Prepare tools to manage and manipulate the mappings for the chambers and trigger.
+That is: create, transform, upload, download (to the running components) etc..
+the LUTs.
+
+===============================================================================
+
+6) Wed Nov 24 21:30:19 SAST 2004
+
+Add a packet delivered event to the BCMP::Sender class so that we can tell if
+our messages get delivered or not.
+
+===============================================================================
+
+7) Fri Nov 26 23:49:41 SAST 2004
+
+Rename Clustering namespace and subdir to HitReconstruction. Refer to item (1).
+
+===============================================================================
+
+8) Fri Nov 26 23:49:41 SAST 2004
+
+Add functionality to print DDL raw data fromats (ADC and L0) to screen.
+i.e. extend the printrawdata program.
+
+===============================================================================
+
+9) Fri Nov 26 23:49:41 SAST 2004
+
+Implement all functionality behind cammand line switched added to the
+signalL2 program. (requires random number generator, might give option to build
+against ROOT's random number generator).
+
+===============================================================================
+
+10) Sun Nov 28 16:15:33 SAST 2004
+
+Perform better error checking on the triggernumber parameter of GetTrigger
+method for TriggerSource class. It currently SegFaults if this parameter
+is not correct.
+
+===============================================================================
+
+11) Sun Nov 28 22:25:54 SAST 2004
+
+Add functionality to make macros and scripts directory be added to distribution
+archive. Also have symbolic links created for scripts into the bin directory.
+For the distribution the scripts can be copied into the bin directory.
+
+===============================================================================
+
diff --git a/HLT/MUON/build/Linux.platform.mk b/HLT/MUON/build/Linux.platform.mk
new file mode 100644 (file)
index 0000000..8d6201f
--- /dev/null
@@ -0,0 +1,24 @@
+############################################################################
+#
+# Author: Artur Szostak
+# Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+#
+############################################################################
+
+CXX = g++
+INCLUDE_PREFIX   = -I
+MACRO_PREFIX     = -D
+LIBPATH_PREFIX   = -L
+LIBRARY_PREFIX   = -l
+CXX_DEBUG        = -g3 -ggdb3
+OPTIMIZATION     = -O3
+
+BINARY_CXXFLAGS  = -fexceptions -Wall
+LIBRARY_CXXFLAGS  = -fexceptions -Wall -fPIC -shared
+
+BIN_EXT = 
+LIB_EXT = .so
+LIB_PREFIX = lib
+
+MACROS += LINUX
+
diff --git a/HLT/MUON/build/TriggerDDLFilePublisher.module.mk b/HLT/MUON/build/TriggerDDLFilePublisher.module.mk
new file mode 100644 (file)
index 0000000..ade9b94
--- /dev/null
@@ -0,0 +1,37 @@
+############################################################################
+#
+# Author: Artur Szostak
+# Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+#
+############################################################################
+
+BINARY  = TriggerDDLFilePublisher
+
+SOURCES = TriggerDDLFilePublisher.cxx \
+       System/SystemError.cxx \
+       System/SignalHandler.cxx \
+       System/Socket.cxx \
+       System/Mutex.cxx \
+       System/MutexCondition.cxx \
+       System/Thread.cxx \
+       System/File.cxx \
+       System/Directory.cxx \
+       System/Routines.cxx \
+       BCMP/Packets.cxx \
+       BCMP/Receiver.cxx \
+       BCMP/EventQueue.cxx \
+       DDL/FileList.cxx \
+       Version.cxx \
+       Utils.cxx \
+       new.cxx \
+       Error.cxx
+
+MACROS = USE_GETDENTS_SYSCALL
+
+LIBRARY_PATHS = 
+LIBRARIES = pthread
+
+############################################################################
+
+include build/config.mk
+include $(BUILD_DIR)/rules.mk
diff --git a/HLT/MUON/build/Win32.platform.mk b/HLT/MUON/build/Win32.platform.mk
new file mode 100644 (file)
index 0000000..12bab60
--- /dev/null
@@ -0,0 +1,24 @@
+############################################################################
+#
+# Author: Artur Szostak
+# Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+#
+############################################################################
+
+CXX = g++
+INCLUDE_PREFIX   = -I
+MACRO_PREFIX     = -D
+LIBPATH_PREFIX   = -L
+LIBRARY_PREFIX   = -l
+CXX_DEBUG        = -g3 -ggdb3
+OPTIMIZATION     = -O3
+
+BINARY_CXXFLAGS  = -fexceptions -Wall
+LIBRARY_CXXFLAGS  = -fexceptions -Wall -fPIC -shared
+
+BIN_EXT = .exe
+LIB_EXT = .dll
+LIB_PREFIX =
+
+MACROS += WIN32
+
diff --git a/HLT/MUON/build/config.mk b/HLT/MUON/build/config.mk
new file mode 100644 (file)
index 0000000..f60a2d0
--- /dev/null
@@ -0,0 +1,153 @@
+################################################################################
+#
+# Author: Artur Szostak
+# Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+#
+################################################################################
+
+# Set the platform variable if not yet set.
+ifndef PLATFORM
+PLATFORM = $(shell uname)
+endif
+
+# Get verison numbers.
+MAJOR_VERSION = $(shell cat $(SRC_DIR)/Version/major.number)
+MINOR_VERSION = $(shell cat $(SRC_DIR)/Version/minor.number)
+
+
+.SUFFIXES: .cxx .hpp .h .o .d
+
+# Set the module name, i.e. the name of the executable / library.
+ifdef BINARY
+MODULE_NAME = $(BINARY)
+endif
+
+ifdef LIBRARY
+MODULE_NAME = $(LIBRARY)
+endif
+
+################################################################################
+# Directory layout:
+
+TOP_DIR        = $(shell pwd)
+BIN_DIR        = $(TOP_DIR)/bin
+LIB_DIR        = $(TOP_DIR)/lib
+INCLUDE_DIR    = $(TOP_DIR)/include
+OUTPUT_DIR     = $(TOP_DIR)/output
+BUILD_DIR      = $(TOP_DIR)/build
+MACRO_DIR      = $(TOP_DIR)/macros
+SRC_DIR        = $(TOP_DIR)/src
+
+# The base target directories.
+BIN_TARGET_DIR    = $(BIN_DIR)/$(PLATFORM)
+LIB_TARGET_DIR    = $(LIB_DIR)/$(PLATFORM)
+OUTPUT_TARGET_DIR = $(OUTPUT_DIR)/$(MODULE_NAME)/$(PLATFORM)
+
+# The list of source code sub directory names.
+SRC_SUBDIR_NAMES = AliRoot Buffers Clustering Control Decision PubSub PipeIO \
+       Tracking Version System System/Linux System/Win32 Debug Framework DDL \
+       BCMP
+
+# Create full source and target directory names.
+SRC_SUBDIRS    = $(addprefix $(SRC_DIR)/,$(SRC_SUBDIR_NAMES))
+OUTPUT_TARGET_SUBDIRS = $(addprefix $(OUTPUT_TARGET_DIR)/,$(SRC_SUBDIR_NAMES))
+
+# Setup the distribution file name and directory structure.
+DISTRIBUTION_DIRNAME = dHLT_v$(MAJOR_VERSION)-$(MINOR_VERSION)
+DISTRIBUTION_DIR = $(OUTPUT_DIR)/distrib/$(PLATFORM)
+DISTRIBUTION_SUBDIR = $(DISTRIBUTION_DIR)/$(DISTRIBUTION_DIRNAME)
+
+################################################################################
+
+# Set the target name, symbolic link and full distribution directory paths.
+ifdef BINARY
+TARGET_NAME = $(BIN_TARGET_DIR)/$(BINARY)$(BIN_EXT)
+SYMLINK_NAME = $(BIN_DIR)/$(BINARY)$(BIN_EXT)
+DISTRIBUTION_TARGET_DIR = $(DISTRIBUTION_SUBDIR)/bin
+endif
+
+ifdef LIBRARY
+TARGET_NAME = $(LIB_TARGET_DIR)/$(LIB_PREFIX)$(LIBRARY)$(LIB_EXT)
+SYMLINK_NAME = $(LIB_DIR)/$(LIB_PREFIX)$(LIBRARY)$(LIB_EXT)
+DISTRIBUTION_TARGET_DIR = $(DISTRIBUTION_SUBDIR)/lib
+endif
+
+################################################################################
+
+include $(BUILD_DIR)/$(PLATFORM).platform.mk
+
+################################################################################
+
+# If we want a verbose build then all the actuall commands that are executed
+# are printed to screen.
+ifdef VERBOSE_MAKE
+VERBOSE =
+else
+VERBOSE = @
+endif
+
+################################################################################
+# Setup the CXXFLAGS compiler flags and LINKFLAGS for the linker.
+
+ifdef BINARY
+CXXFLAGS = $(INCLUDES) $(MACROS) $(BINARY_CXXFLAGS)
+LINKFLAGS = $(BINARY_CXXFLAGS) $(LIBRARY_PATHS) $(LIBRARIES)
+endif
+
+ifdef LIBRARY
+CXXFLAGS = $(INCLUDES) $(MACROS) $(LIBRARY_CXXFLAGS)
+LINKFLAGS = $(LIBRARY_CXXFLAGS) $(LIBRARY_PATHS) $(LIBRARIES)
+endif
+
+ifdef DEBUGGING
+MACROS += DEBUG
+CXXFLAGS += $(CXX_DEBUG)
+LINKFLAGS += $(CXX_DEBUG)
+BIN_TARGET_DIR := $(BIN_TARGET_DIR)-debug
+LIB_TARGET_DIR := $(LIB_TARGET_DIR)-debug
+OUTPUT_TARGET_DIR := $(OUTPUT_TARGET_DIR)-debug
+DISTRIBUTION_FILE = dHLT_$(PLATFORM)-debug_v$(MAJOR_VERSION)-$(MINOR_VERSION).tar.gz
+else
+CXXFLAGS += $(OPTIMIZATION)
+LINKFLAGS += $(OPTIMIZATION)
+DISTRIBUTION_FILE = dHLT_$(PLATFORM)_v$(MAJOR_VERSION)-$(MINOR_VERSION).tar.gz
+endif
+
+################################################################################
+
+# Create a list of headers from the source file list.
+HEADERS := $(SOURCES:.cxx=.hpp)
+
+ifndef DICTIONARY_HEADERS
+DICTIONARY_HEADERS = $(HEADERS)
+endif
+
+# Add the dictionary file without adding its header to the HEADERS list.
+ifdef DICTIONARY
+SOURCES += $(DICTIONARY)
+endif
+
+# Create a list of object .o and dependancy .d files from the list of source files.
+OBJECTS = $(addprefix $(OUTPUT_TARGET_DIR)/,$(SOURCES:.cxx=.o))
+DEPENDS = $(addprefix $(OUTPUT_TARGET_DIR)/,$(SOURCES:.cxx=.d))
+
+# Make the includes search paths from the source directory and the output
+# target directory.
+INCLUDES += $(SRC_DIR) $(OUTPUT_TARGET_DIR)
+
+# The library path should also contain the lib sub directory.
+LIBRARY_PATHS += $(LIB_TARGET_DIR)
+
+# Add compiler specific flag prefices:
+INCLUDES := $(addprefix $(INCLUDE_PREFIX),$(INCLUDES))
+MACROS := $(addprefix $(MACRO_PREFIX),$(MACROS))
+LIBRARIES := $(addprefix $(LIBRARY_PREFIX),$(LIBRARIES))
+LIBRARY_PATHS := $(addprefix $(LIBPATH_PREFIX),$(LIBRARY_PATHS))
+
+################################################################################
+# Tell make where to find source files.
+# Note: this must come after the OUTPUT_TARGET_DIR is appended with -debug
+vpath %.cxx $(SRC_DIR) $(SRC_SUBDIRS) $(OUTPUT_TARGET_DIR) $(OUTPUT_TARGET_SUBDIRS)
+vpath %.hpp $(SRC_DIR) $(SRC_SUBDIRS) $(OUTPUT_TARGET_DIR) $(OUTPUT_TARGET_SUBDIRS)
+vpath %.h $(SRC_DIR) $(SRC_SUBDIRS) $(OUTPUT_TARGET_DIR) $(OUTPUT_TARGET_SUBDIRS)
+vpath %.number $(SRC_DIR)/Version $(OUTPUT_TARGET_DIR)
diff --git a/HLT/MUON/build/gentest.module.mk b/HLT/MUON/build/gentest.module.mk
new file mode 100644 (file)
index 0000000..dace43f
--- /dev/null
@@ -0,0 +1,31 @@
+############################################################################
+#
+# Author: Artur Szostak
+# Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+#
+############################################################################
+
+BINARY  = gentest
+
+SOURCES = gentest_main.cxx \
+       Version.cxx \
+       Utils.cxx \
+       Error.cxx \
+       RegionOfInterest.cxx \
+       Tracking/IOHandler.cxx \
+       Tracking/EventHandler.cxx \
+       Debug/ClusterSource.cxx \
+       Debug/TriggerSource.cxx \
+       Debug/DataGenerator.cxx \
+       Debug/print.cxx \
+       Framework/Global.cxx \
+       Buffers/GarbageCollector.cxx \
+       Tracking/MansoTracker.cxx \
+       Tracking/Calculations.cxx
+
+MACROS = 
+
+#########################################################################
+
+include build/config.mk
+include $(BUILD_DIR)/rules.mk
diff --git a/HLT/MUON/build/libMUONHLT.module.mk b/HLT/MUON/build/libMUONHLT.module.mk
new file mode 100644 (file)
index 0000000..36f3c71
--- /dev/null
@@ -0,0 +1,64 @@
+############################################################################
+#
+# Author: Artur Szostak
+# Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+#
+############################################################################
+
+LIBRARY = MUONHLT
+
+DICTIONARY_HEADERS = AliRoot/Region.hpp \
+       AliRoot/Point.hpp \
+       AliRoot/TriggerRecord.hpp \
+       AliRoot/ADCStream.hpp \
+       AliRoot/Track.hpp \
+       AliRoot/ADCStreamSource.hpp \
+       AliRoot/TriggerSource.hpp \
+       AliRoot/ClusterSource.hpp \
+       AliRoot/TrackSink.hpp \
+       AliRoot/TrackerCallback.hpp \
+       AliRoot/ClusterFinderCallback.hpp \
+       AliRoot/MicrodHLT.hpp
+
+STUB_HEADERS = AliRoot/TrackerInterface.hpp \
+       AliRoot/ClusterFinderInterface.hpp
+
+SOURCES = $(DICTIONARY_HEADERS:.hpp=.cxx)
+
+SOURCES += Utils.cxx \
+       Error.cxx \
+       Version.cxx \
+       RegionOfInterest.cxx \
+       Tracking/Calculations.cxx \
+       Tracking/MansoTracker.cxx \
+       Clustering/CenterOfGravityFinder.cxx \
+       AliRoot/TrackerProxy.cxx \
+       AliRoot/ClusterFinderProxy.cxx \
+       AliRoot/convert.cxx
+
+ifdef DEBUGGING
+SOURCES += Debug/print.cxx
+endif
+
+INCLUDE_HEADERS = $(DICTIONARY_HEADERS) AliRoot/Tracker.hpp
+
+DICTIONARY  = Dictionary.cxx
+LINKDEF     = AliRoot/MUONHLTLinkDef.hpp
+
+INCLUDES = $(ALICE_ROOT)/MUON $(ALICE_ROOT)/include/ $(ROOTSYS)/include/
+MACROS = __ROOT__
+
+# Test to see if the AliLog.h file exists in the AliRoot distribution.
+# If it does then prompt the code to use it.
+ifneq ($(findstring AliLog.h,$(shell find $$ALICE_ROOT/include -name AliLog.h)),)
+MACROS += USE_ALILOG
+endif
+
+ifndef DEBUGGING
+MACROS += LOG_NO_DEBUG
+endif
+
+#########################################################################
+
+include build/config.mk
+include $(BUILD_DIR)/rules.mk
diff --git a/HLT/MUON/build/libdHLT.module.mk b/HLT/MUON/build/libdHLT.module.mk
new file mode 100644 (file)
index 0000000..f7c2fdf
--- /dev/null
@@ -0,0 +1,20 @@
+############################################################################
+#
+# Author: Artur Szostak
+# Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+#
+############################################################################
+
+LIBRARY = dHLT
+
+SOURCES = Version.cxx
+
+INCLUDE_HEADERS = Version.hpp BasicTypes.hpp
+
+MACROS =
+
+#########################################################################
+
+include build/config.mk
+include $(BUILD_DIR)/rules.mk
+
diff --git a/HLT/MUON/build/printrawdata.module.mk b/HLT/MUON/build/printrawdata.module.mk
new file mode 100644 (file)
index 0000000..883643d
--- /dev/null
@@ -0,0 +1,24 @@
+############################################################################
+#
+# Author: Artur Szostak
+# Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+#
+############################################################################
+
+BINARY  = printrawdata
+
+SOURCES = Debug/printrawdata.cxx \
+       System/File.cxx \
+       System/SystemError.cxx \
+       RegionOfInterest.cxx \
+       Version.cxx \
+       Utils.cxx \
+       new.cxx \
+       Error.cxx
+
+MACROS =
+
+############################################################################
+
+include build/config.mk
+include $(BUILD_DIR)/rules.mk
diff --git a/HLT/MUON/build/pubsub_size_tag.module.mk b/HLT/MUON/build/pubsub_size_tag.module.mk
new file mode 100644 (file)
index 0000000..6a10920
--- /dev/null
@@ -0,0 +1,17 @@
+############################################################################
+#
+# Author: Gareth de Vaux
+# Email:  devaux@lhc.phy.uct.ac.za | dhlt@lordcow.org
+#
+############################################################################
+
+BINARY  = pubsub_size_tag
+
+SOURCES = pubsub_size_tag.cxx
+
+MACROS =
+
+############################################################################
+
+include build/config.mk
+include $(BUILD_DIR)/rules.mk
diff --git a/HLT/MUON/build/rules.mk b/HLT/MUON/build/rules.mk
new file mode 100644 (file)
index 0000000..f3c8f54
--- /dev/null
@@ -0,0 +1,136 @@
+############################################################################
+#
+# Author: Artur Szostak
+# Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+#
+############################################################################
+
+# Implementation of make rules that are common to all modules.
+
+.PHONY : all depend create-distrib symlink
+
+all : $(TARGET_NAME) symlink $(addprefix $(INCLUDE_DIR)/,$(INCLUDE_HEADERS))
+
+create-distrib : all
+       @mkdir -p $(DISTRIBUTION_TARGET_DIR)
+       $(VERBOSE) cp $(TARGET_NAME) $(DISTRIBUTION_TARGET_DIR)/
+
+depend : $(DEPENDS)
+
+symlink : $(SYMLINK_NAME)
+
+############################################################################
+
+$(TARGET_NAME) : $(OBJECTS)
+#      Create the output directory if it is missing
+       @mkdir -p $(@D)
+ifdef VERBOSE_MAKE
+       @echo -------------------------------------------------------------------------------
+else
+       @echo "linking $(^F) => $(@F)"
+endif
+       $(VERBOSE) $(CXX) $(LINKFLAGS) $^ -o $@
+       @echo "Made $@"
+
+############################################################################
+
+ifdef DICTIONARY
+
+# The following file must be generated for rootcint. Refer to the comment
+# where the command is used.
+$(OUTPUT_TARGET_DIR)/dummy.h :
+       @mkdir -p $(@D)
+       @touch $@
+
+# Note the -p, +P, -P options makes rootcint use the real C++ preprocessor
+# to preprocess the headers.
+$(OUTPUT_TARGET_DIR)/$(DICTIONARY) : $(DICTIONARY_HEADERS) $(STUB_HEADERS) $(LINKDEF) $(OUTPUT_TARGET_DIR)/dummy.h
+#      Create the output directory if it is missing
+       @mkdir -p $(@D)
+ifndef VERBOSE_MAKE
+       @echo "generating $(@F)"
+endif
+#      $(VERBOSE) rootcint -f $@ -c $(INCLUDES) $(MACROS) -p +STUB $(STUB_HEADERS) -STUB $(DICTIONARY_HEADERS) $(LINKDEF)
+# Since rootcint contains a bug and does not allow one to use -p with the
+# (+/-)STUB option but does allow (+/-)P combinations we need to run the
+# command as given bellow. Note the dummy file is there since rootcint
+# requires at least one file before the +P or +STUB options.
+       $(VERBOSE) rootcint -f $@ -c $(INCLUDES) $(MACROS) $(OUTPUT_TARGET_DIR)/dummy.h +P +STUB $(STUB_HEADERS) -STUB $(DICTIONARY_HEADERS) -P $(LINKDEF)
+
+
+endif
+
+############################################################################
+
+$(OUTPUT_TARGET_DIR)/%.d : %.cxx
+#      Create the output directory if it is missing
+       @mkdir -p $(@D)
+ifndef VERBOSE_MAKE
+       @echo "making dependancies $(<F) => $(@F)"
+endif
+#      Note the sed command replaces the target xx.o with xx.o xx.d
+       $(VERBOSE) $(CXX) $(CXXFLAGS) -MM $< | \
+               sed "s/\(.*\)\.o/$(subst /,\/,$(@D)/)\1\.o $(subst /,\/,$(@D)/)\1\.d/g" > $@
+
+############################################################################
+
+$(OUTPUT_TARGET_DIR)/%.o : %.cxx
+#      Create the output directory if it is missing
+       @mkdir -p $(@D)
+ifndef VERBOSE_MAKE
+       @echo "compiling $(<F) => $(@F)"
+endif
+       $(VERBOSE) $(CXX) $(CXXFLAGS) -c $< -o $@
+
+############################################################################
+
+$(INCLUDE_DIR)/%.hpp : %.hpp
+#      Create the output directory if it is missing
+       @mkdir -p $(@D)
+ifndef VERBOSE_MAKE
+       @echo "copying header $(@F) to include directory."
+endif
+       $(VERBOSE) cp $< $@
+
+############################################################################
+
+$(SYMLINK_NAME) : $(TARGET_NAME)
+#      Create the output directory if it is missing
+       @mkdir -p $(@D)
+ifndef VERBOSE_MAKE
+       @echo "creating symbolic link to $<"
+endif
+       $(VERBOSE) rm -f $@
+       $(VERBOSE) ln -s $< $@
+
+############################################################################
+
+incbuild : $(OUTPUT_TARGET_DIR)/build.number
+ifndef VERBOSE_MAKE
+       @echo Incrementing build version number for $(TARGET_NAME).
+endif
+       $(VERBOSE) let NUM=`cat $<`+1 && echo $$NUM > $<
+
+$(OUTPUT_TARGET_DIR)/build.number :
+       @mkdir -p $(@D)
+       @echo 0 > $@
+
+############################################################################
+
+$(SRC_DIR)/Version/Version.cxx : $(OUTPUT_TARGET_DIR)/VersionNumbers.hpp
+
+$(OUTPUT_TARGET_DIR)/VersionNumbers.hpp : major.number minor.number $(OUTPUT_TARGET_DIR)/build.number
+ifndef VERBOSE_MAKE
+       @echo Generating $(@F)
+endif
+       $(VERBOSE) echo // This file was generated with \"rules.mk\". Do not modify. > $@
+       $(VERBOSE) echo \#define MAJOR_VERSION `cat $(word 1,$^)` >> $@
+       $(VERBOSE) echo \#define MINOR_VERSION `cat $(word 2,$^)` >> $@
+       $(VERBOSE) echo \#define BUILD_NUMBER  `cat $(word 3,$^)` >> $@
+
+############################################################################
+
+ifneq ($(findstring clean, $(MAKECMDGOALS)), clean)
+-include $(DEPENDS)
+endif
+
diff --git a/HLT/MUON/build/signalL2.module.mk b/HLT/MUON/build/signalL2.module.mk
new file mode 100644 (file)
index 0000000..56d7e76
--- /dev/null
@@ -0,0 +1,35 @@
+############################################################################
+#
+# Author: Artur Szostak
+# Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+#
+############################################################################
+
+BINARY  = signalL2
+
+SOURCES = signalL2.cxx \
+       System/SystemError.cxx \
+       System/Socket.cxx \
+       System/Mutex.cxx \
+       System/MutexCondition.cxx \
+       System/Thread.cxx \
+       System/SignalHandler.cxx \
+       BCMP/Packets.cxx \
+       BCMP/Sender.cxx \
+       BCMP/EventQueue.cxx \
+       DDL/L2SignalSender.cxx \
+       Debug/print.cxx \
+       Version.cxx \
+       Utils.cxx \
+       new.cxx \
+       Error.cxx
+
+MACROS =
+
+LIBRARY_PATHS = 
+LIBRARIES = pthread
+
+############################################################################
+
+include build/config.mk
+include $(BUILD_DIR)/rules.mk
diff --git a/HLT/MUON/build/tracker.module.mk b/HLT/MUON/build/tracker.module.mk
new file mode 100644 (file)
index 0000000..86fa4ea
--- /dev/null
@@ -0,0 +1,30 @@
+############################################################################
+#
+# Author: Artur Szostak
+# Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+#
+############################################################################
+
+BINARY  = tracker
+
+SOURCES = tracker_main.cxx \
+       System/Mutex.cxx \
+       System/SystemError.cxx \
+       Version.cxx \
+       Error.cxx \
+       Utils.cxx \
+       RegionOfInterest.cxx \
+       Debug/ClusterSource.cxx \
+       Debug/print.cxx \
+       Tracking/IOHandler.cxx \
+       Tracking/EventHandler.cxx
+
+MACROS = 
+
+LIBRARY_PATHS = 
+LIBRARIES = dHLT
+
+############################################################################
+
+include build/config.mk
+include $(BUILD_DIR)/rules.mk
diff --git a/HLT/MUON/build/triggerDDL.module.mk b/HLT/MUON/build/triggerDDL.module.mk
new file mode 100644 (file)
index 0000000..a1a4529
--- /dev/null
@@ -0,0 +1,39 @@
+############################################################################
+#
+# Author: Artur Szostak
+# Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+#
+############################################################################
+
+BINARY  = triggerDDL
+
+SOURCES = triggerDDL.cxx \
+       System/SystemError.cxx \
+       System/SignalHandler.cxx \
+       System/Socket.cxx \
+       System/Mutex.cxx \
+       System/MutexCondition.cxx \
+       System/Thread.cxx \
+       System/File.cxx \
+       System/Directory.cxx \
+       System/Routines.cxx \
+       BCMP/Packets.cxx \
+       BCMP/Receiver.cxx \
+       BCMP/EventQueue.cxx \
+       DDL/FileList.cxx \
+       DDL/L2SignalReceiver.cxx \
+       Debug/print.cxx \
+       Version.cxx \
+       Utils.cxx \
+       new.cxx \
+       Error.cxx
+
+MACROS = USE_GETDENTS_SYSCALL
+
+LIBRARY_PATHS = 
+LIBRARIES = pthread
+
+############################################################################
+
+include build/config.mk
+include $(BUILD_DIR)/rules.mk
diff --git a/HLT/MUON/doc/MansoTracker_state_diagram.sxd b/HLT/MUON/doc/MansoTracker_state_diagram.sxd
new file mode 100644 (file)
index 0000000..54b6a61
Binary files /dev/null and b/HLT/MUON/doc/MansoTracker_state_diagram.sxd differ
diff --git a/HLT/MUON/doc/README b/HLT/MUON/doc/README
new file mode 100644 (file)
index 0000000..f64712b
--- /dev/null
@@ -0,0 +1,19 @@
+dHLT documentation readme.
+
+This file is the README for the documentation directory of the ALICE dHLT 
+code. 
+
+----------------------------------------------------------------------------
+26 November 23:31 - Bruce Becker - 
+Automatic documentation can be generated with doxygen. The RedHat rpms are 
+available from http://dentrassi.de/download/doxygen/ or check www.doxygen.org 
+for your distro.
+In order to generate automatic documentation, simply run
+cd <dHLT top directory>
+make doc
+
+This will generate Latex and html documentation and place it into dHLT/srcdir/
+The parameters are somewhat ad-hoc, to what i like, but reading and modifing
+dHLTconfig to your tastes is very easy. 
+----------------------------------------------------------------------------
+
diff --git a/HLT/MUON/doc/doxygen/dHLTconfig b/HLT/MUON/doc/doxygen/dHLTconfig
new file mode 100644 (file)
index 0000000..3aab74c
--- /dev/null
@@ -0,0 +1,1161 @@
+# Doxyfile 1.3.9.1
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = dHLT
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
+# This could be handy for archiving the generated documentation or 
+# if some version control system is used.
+
+PROJECT_NUMBER         = 0
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
+# base path where the generated documentation will be put. 
+# If a relative path is entered, it will be relative to the location 
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = ./srcdoc/
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
+# 4096 sub-directories (in 2 levels) under the output directory of each output 
+# format and will distribute the generated files over these directories. 
+# Enabling this option can be useful when feeding doxygen a huge amount of source 
+# files, where putting all generated files in the same directory would otherwise 
+# cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
+# documentation generated by doxygen is written. Doxygen will use this 
+# information to generate all constant output in the proper language. 
+# The default language is English, other supported languages are: 
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, 
+# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, 
+# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, 
+# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, 
+# Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE        = English
+
+# This tag can be used to specify the encoding used in the generated output. 
+# The encoding is not always determined by the language that is chosen, 
+# but also whether or not the output is meant for Windows or non-Windows users. 
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
+# forces the Windows encoding (this is the default for the Windows binary), 
+# whereas setting the tag to NO uses a Unix-style encoding (the default for 
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING   = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
+# include brief member descriptions after the members that are listed in 
+# the file and class documentation (similar to JavaDoc). 
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
+# the brief description of a member or function before the detailed description. 
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator 
+# that is used to form the text in various listings. Each string 
+# in this list, if found as the leading text of the brief description, will be 
+# stripped from the text and the result after processing the whole list, is used 
+# as the annotated text. Otherwise, the brief description is used as-is. If left 
+# blank, the following values are used ("$name" is automatically replaced with the 
+# name of the entity): "The $name class" "The $name widget" "The $name file" 
+# "is" "provides" "specifies" "contains" "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       = 
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
+# Doxygen will generate a detailed section even if there is only a brief 
+# description.
+
+ALWAYS_DETAILED_SEC    = YES
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited 
+# members of a class in the documentation of that class as if those members were 
+# ordinary class members. Constructors, destructors and assignment operators of 
+# the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
+# path before files name in the file list and in the header files. If set 
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
+# can be used to strip a user-defined part of the path. Stripping is 
+# only done if one of the specified strings matches the left-hand part of 
+# the path. The tag can be used to show relative paths in the file list. 
+# If left blank the directory from which doxygen is run is used as the 
+# path to strip.
+
+STRIP_FROM_PATH        = 
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
+# the path mentioned in the documentation of a class, which tells 
+# the reader which header file to include in order to use a class. 
+# If left blank only the name of the header file containing the class 
+# definition is used. Otherwise one should specify the include paths that 
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
+# (but less readable) file names. This can be useful is your file systems 
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
+# will interpret the first line (until the first dot) of a JavaDoc-style 
+# comment as the brief description. If set to NO, the JavaDoc 
+# comments will behave just like the Qt-style comments (thus requiring an 
+# explicit @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF      = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
+# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
+# comments) as a brief description. This used to be the default behaviour. 
+# The new default is to treat a multi-line C++ comment block as a detailed 
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member 
+# documentation.
+
+DETAILS_AT_TOP         = YES
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
+# member inherits the documentation from any documented member that it 
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
+# tag is set to YES, then doxygen will reuse the documentation of the first 
+# member in the group (if any) for the other members of the group. By default 
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts 
+# as commands in the documentation. An alias has the form "name=value". 
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
+# put the command \sideeffect (or @sideeffect) in the documentation, which 
+# will result in a user-defined paragraph with heading "Side Effects:". 
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                = 
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources 
+# only. Doxygen will then generate output that is more tailored for C. 
+# For instance, some of the names that are used will be different. The list 
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources 
+# only. Doxygen will then generate output that is more tailored for Java. 
+# For instance, namespaces will be presented as packages, qualified scopes 
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
+# the same type (for instance a group of public functions) to be put as a 
+# subgroup of that type (e.g. under the Public Functions section). Set it to 
+# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
+# documentation are documented, even if no documentation was available. 
+# Private class members and static file members will be hidden unless 
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = YES
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file 
+# will be included in the documentation.
+
+EXTRACT_STATIC         = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
+# defined locally in source files will be included in the documentation. 
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local 
+# methods, which are defined in the implementation section but not in 
+# the interface are included in the documentation. 
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
+# undocumented members of documented classes, files or namespaces. 
+# If set to NO (the default) these members will be included in the 
+# various overviews, but no documentation section is generated. 
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
+# undocumented classes that are normally visible in the class hierarchy. 
+# If set to NO (the default) these classes will be included in the various 
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
+# friend (class|struct|union) declarations. 
+# If set to NO (the default) these declarations will be included in the 
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
+# documentation blocks found inside the body of a function. 
+# If set to NO (the default) these blocks will be appended to the 
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation 
+# that is typed after a \internal command is included. If the tag is set 
+# to NO (the default) then the documentation will be excluded. 
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
+# file names in lower-case letters. If set to YES upper-case letters are also 
+# allowed. This is useful if you have classes or files whose names only differ 
+# in case and if your file system supports case sensitive file names. Windows 
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
+# will show members with their full class and namespace scopes in the 
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
+# will put a list of the files that are included by a file in the documentation 
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
+# will sort the (detailed) documentation of file and class members 
+# alphabetically by member name. If set to NO the members will appear in 
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
+# brief documentation of file, namespace and class members alphabetically 
+# by member name. If set to NO (the default) the members will appear in 
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
+# sorted by fully-qualified names, including namespaces. If set to 
+# NO (the default), the class list will be sorted only by class name, 
+# not including the namespace part. 
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the 
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or 
+# disable (NO) the todo list. This list is created by putting \todo 
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or 
+# disable (NO) the test list. This list is created by putting \test 
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or 
+# disable (NO) the bug list. This list is created by putting \bug 
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
+# disable (NO) the deprecated list. This list is created by putting 
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional 
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       = 
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
+# the initial value of a variable or define consists of for it to appear in 
+# the documentation. If the initializer consists of more lines than specified 
+# here it will be hidden. Use a value of 0 to hide initializers completely. 
+# The appearance of the initializer of individual variables and defines in the 
+# documentation can be controlled using \showinitializer or \hideinitializer 
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
+# at the bottom of the documentation of classes and structs. If set to YES the 
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories 
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
+# in the documentation.
+
+SHOW_DIRECTORIES       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text.
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  = ./src/
+
+# If the value of the INPUT tag contains directories, you can use the 
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank the following patterns are tested: 
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp 
+# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
+
+FILE_PATTERNS          = 
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
+# should be searched for input files as well. Possible values are YES and NO. 
+# If left blank NO is used.
+
+RECURSIVE              = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should 
+# excluded from the INPUT source files. This way you can easily exclude a 
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                = 
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories 
+# that are symbolic links (a Unix filesystem feature) are excluded from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the 
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
+# certain files from those directories.
+
+EXCLUDE_PATTERNS       =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or 
+# directories that contain example code fragments that are included (see 
+# the \include command).
+
+EXAMPLE_PATH           = 
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank all files are included.
+
+EXAMPLE_PATTERNS       = 
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
+# searched for input files to be used with the \include or \dontinclude 
+# commands irrespective of the value of the RECURSIVE tag. 
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or 
+# directories that contain image that are included in the documentation (see 
+# the \image command).
+
+IMAGE_PATH             = 
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should 
+# invoke to filter for each input file. Doxygen will invoke the filter program 
+# by executing (via popen()) the command <filter> <input-file>, where <filter> 
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
+# input file. Doxygen will then use the output that the filter program writes 
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
+# ignored.
+
+INPUT_FILTER           = 
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
+# basis.  Doxygen will compare the file name with each pattern and apply the 
+# filter if there is a match.  The filters are a list of the form: 
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
+# is applied to all files.
+
+FILTER_PATTERNS        = 
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
+# INPUT_FILTER) will be used to filter the input files when producing source 
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = YES
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all 
+# classes will be put under the same header in the alphabetical index. 
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = ./doc/doxygen/header.html
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            = ./doc/doxygen/footer.html
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        = ./doc/doxygen/style.css
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = YES
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse the 
+# parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or 
+# super classes. Setting the tag to NO turns the diagrams off. Note that this 
+# option is superseded by the HAVE_DOT option below. This is only a fallback. It is 
+# recommended to install and use dot, since it yields more powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = YES
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = YES
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a call dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable call graphs for selected 
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = YES
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found on the path.
+
+DOT_PATH               = /usr/bin/
+
+# he DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_WIDTH    = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT   = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
+# graphs generated by dot. A depth value of 3 means that only nodes reachable 
+# from the root by following a path via at most 3 edges will be shown. Nodes that 
+# lay further from the root node will be omitted. Note that setting this option to 
+# 1 or 2 may greatly reduce the computation time needed for large code bases. Also 
+# note that a graph may be further truncated if the graph's image dimensions are 
+# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). 
+# If 0 is used for the depth value (the default), the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = NO
diff --git a/HLT/MUON/doc/doxygen/footer.html b/HLT/MUON/doc/doxygen/footer.html
new file mode 100644 (file)
index 0000000..e047428
--- /dev/null
@@ -0,0 +1,4 @@
+<hr size="1"><address style="align: right;"><small>
+Generated on $datetime for $projectname by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> $doxygenversion</small></address>
+</body>
+</html>
diff --git a/HLT/MUON/doc/doxygen/header.html b/HLT/MUON/doc/doxygen/header.html
new file mode 100644 (file)
index 0000000..fb0fb13
--- /dev/null
@@ -0,0 +1,5 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>$title</title>
+<link href="$relpath$style.css" rel="stylesheet" type="text/css">
+</head><body>
diff --git a/HLT/MUON/doc/doxygen/style.css b/HLT/MUON/doc/doxygen/style.css
new file mode 100644 (file)
index 0000000..1d4d631
--- /dev/null
@@ -0,0 +1,271 @@
+BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
+       font-family: Geneva, Arial, Helvetica, sans-serif;
+}
+H1 {
+       text-align: center;
+}
+CAPTION { font-weight: bold }
+DIV.qindex {
+       width: 100%;
+       background-color: #eeeeff;
+       border: 1px solid #b0b0b0;
+       text-align: center;
+       margin: 2px;
+       padding: 2px;
+       line-height: 140%;
+}
+DIV.nav {
+       width: 100%;
+       background-color: #eeeeff;
+       border: 1px solid #b0b0b0;
+       text-align: center;
+       margin: 2px;
+       padding: 2px;
+       line-height: 140%;
+}
+A.qindex {
+       text-decoration: none;
+       font-weight: bold;
+       color: #1A419D;
+}
+A.qindex:visited {
+       text-decoration: none;
+       font-weight: bold;
+       color: #1A419D
+}
+A.qindex:hover {
+       text-decoration: none;
+       background-color: #ddddff;
+}
+A.qindexHL {
+       text-decoration: none;
+       font-weight: bold;
+       background-color: #6666cc;
+       color: #ffffff;
+       border: 1px double #9295C2;
+}
+A.qindexHL:hover {
+       text-decoration: none;
+       background-color: #6666cc;
+       color: #ffffff;
+}
+A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
+A.el { text-decoration: none; font-weight: bold }
+A.elRef { font-weight: bold }
+A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
+A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
+A.codeRef:link { font-weight: normal; color: #0000FF}
+A.codeRef:visited { font-weight: normal; color: #0000FF}
+A:hover { text-decoration: none; background-color: #f2f2ff }
+DL.el { margin-left: -1cm }
+.fragment {
+       font-family: monospace
+}
+PRE.fragment {
+       border: 1px solid #CCCCCC;
+       background-color: #f5f5f5;
+       margin-top: 4px;
+       margin-bottom: 4px;
+       margin-left: 2px;
+       margin-right: 8px;
+       padding-left: 6px;
+       padding-right: 6px;
+       padding-top: 4px;
+       padding-bottom: 4px;
+}
+DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
+TD.md { background-color: #F4F4FB; font-weight: bold; }
+TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }
+TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; }
+DIV.groupHeader {
+       margin-left: 16px;
+       margin-top: 12px;
+       margin-bottom: 6px;
+       font-weight: bold;
+}
+DIV.groupText { margin-left: 16px; font-style: italic; font-size: 14px }
+BODY {
+       background: white;
+       color: black;
+       margin-right: 20px;
+       margin-left: 20px;
+}
+TD.indexkey {
+       background-color: #eeeeff;
+       font-weight: bold;
+       padding-right  : 10px;
+       padding-top    : 2px;
+       padding-left   : 10px;
+       padding-bottom : 2px;
+       margin-left    : 0px;
+       margin-right   : 0px;
+       margin-top     : 2px;
+       margin-bottom  : 2px;
+       border: 1px solid #CCCCCC;
+}
+TD.indexvalue {
+       background-color: #eeeeff;
+       font-style: italic;
+       padding-right  : 10px;
+       padding-top    : 2px;
+       padding-left   : 10px;
+       padding-bottom : 2px;
+       margin-left    : 0px;
+       margin-right   : 0px;
+       margin-top     : 2px;
+       margin-bottom  : 2px;
+       border: 1px solid #CCCCCC;
+}
+TR.memlist {
+   background-color: #f0f0f0; 
+}
+P.formulaDsp { text-align: center; }
+IMG.formulaDsp { }
+IMG.formulaInl { vertical-align: middle; }
+SPAN.keyword       { color: #008000 }
+SPAN.keywordtype   { color: #604020 }
+SPAN.keywordflow   { color: #e08000 }
+SPAN.comment       { color: #800000 }
+SPAN.preprocessor  { color: #806020 }
+SPAN.stringliteral { color: #002080 }
+SPAN.charliteral   { color: #008080 }
+.mdTable {
+       border: 1px solid #868686;
+       background-color: #F4F4FB;
+}
+.mdRow {
+       padding: 8px 10px;
+}
+.mdescLeft {
+       padding: 0px 8px 4px 8px;
+       font-size: 12px;
+       font-style: italic;
+       background-color: #FAFAFA;
+       border-top: 1px none #E0E0E0;
+       border-right: 1px none #E0E0E0;
+       border-bottom: 1px none #E0E0E0;
+       border-left: 1px none #E0E0E0;
+       margin: 0px;
+}
+.mdescRight {
+       padding: 0px 8px 4px 8px;
+       font-size: 12px;
+       font-style: italic;
+       background-color: #FAFAFA;
+       border-top: 1px none #E0E0E0;
+       border-right: 1px none #E0E0E0;
+       border-bottom: 1px none #E0E0E0;
+       border-left: 1px none #E0E0E0;
+       margin: 0px;
+}
+.memItemLeft {
+       padding: 1px 0px 0px 8px;
+       margin: 4px;
+       border-top-width: 1px;
+       border-right-width: 1px;
+       border-bottom-width: 1px;
+       border-left-width: 1px;
+       border-top-color: #E0E0E0;
+       border-right-color: #E0E0E0;
+       border-bottom-color: #E0E0E0;
+       border-left-color: #E0E0E0;
+       border-top-style: solid;
+       border-right-style: none;
+       border-bottom-style: none;
+       border-left-style: none;
+       background-color: #FAFAFA;
+       font-size: 12px;
+}
+.memItemRight {
+       padding: 1px 8px 0px 8px;
+       margin: 4px;
+       border-top-width: 1px;
+       border-right-width: 1px;
+       border-bottom-width: 1px;
+       border-left-width: 1px;
+       border-top-color: #E0E0E0;
+       border-right-color: #E0E0E0;
+       border-bottom-color: #E0E0E0;
+       border-left-color: #E0E0E0;
+       border-top-style: solid;
+       border-right-style: none;
+       border-bottom-style: none;
+       border-left-style: none;
+       background-color: #FAFAFA;
+       font-size: 13px;
+}
+.memTemplItemLeft {
+       padding: 1px 0px 0px 8px;
+       margin: 4px;
+       border-top-width: 1px;
+       border-right-width: 1px;
+       border-bottom-width: 1px;
+       border-left-width: 1px;
+       border-top-color: #E0E0E0;
+       border-right-color: #E0E0E0;
+       border-bottom-color: #E0E0E0;
+       border-left-color: #E0E0E0;
+       border-top-style: none;
+       border-right-style: none;
+       border-bottom-style: none;
+       border-left-style: none;
+       background-color: #FAFAFA;
+       font-size: 12px;
+}
+.memTemplItemRight {
+       padding: 1px 8px 0px 8px;
+       margin: 4px;
+       border-top-width: 1px;
+       border-right-width: 1px;
+       border-bottom-width: 1px;
+       border-left-width: 1px;
+       border-top-color: #E0E0E0;
+       border-right-color: #E0E0E0;
+       border-bottom-color: #E0E0E0;
+       border-left-color: #E0E0E0;
+       border-top-style: none;
+       border-right-style: none;
+       border-bottom-style: none;
+       border-left-style: none;
+       background-color: #FAFAFA;
+       font-size: 13px;
+}
+.memTemplParams {
+       padding: 1px 0px 0px 8px;
+       margin: 4px;
+       border-top-width: 1px;
+       border-right-width: 1px;
+       border-bottom-width: 1px;
+       border-left-width: 1px;
+       border-top-color: #E0E0E0;
+       border-right-color: #E0E0E0;
+       border-bottom-color: #E0E0E0;
+       border-left-color: #E0E0E0;
+       border-top-style: solid;
+       border-right-style: none;
+       border-bottom-style: none;
+       border-left-style: none;
+       color: #606060;
+       background-color: #FAFAFA;
+       font-size: 12px;
+}
+.search     { color: #003399;
+              font-weight: bold;
+}
+FORM.search {
+              margin-bottom: 0px;
+              margin-top: 0px;
+}
+INPUT.search { font-size: 75%;
+               color: #000080;
+               font-weight: normal;
+               background-color: #eeeeff;
+}
+TD.tiny      { font-size: 75%;
+}
+a {
+       color: #252E78;
+}
+a:visited {
+       color: #3D2185;
+}
diff --git a/HLT/MUON/doc/status_matrix.sxc b/HLT/MUON/doc/status_matrix.sxc
new file mode 100644 (file)
index 0000000..393cb31
Binary files /dev/null and b/HLT/MUON/doc/status_matrix.sxc differ
diff --git a/HLT/MUON/examples/rawdata/Config_MUON_test.C b/HLT/MUON/examples/rawdata/Config_MUON_test.C
new file mode 100644 (file)
index 0000000..da8ca0a
--- /dev/null
@@ -0,0 +1,187 @@
+// Config file test for MUON spectormeter
+// Remember to define the directory and option
+// gAlice->SetConfigFunction("Config('$HOME','box');");
+
+void
+Config (char directory[100] = "", char option[6] = "box")
+{
+  //
+  // Config file for MUON test
+  // Gines MARTINEZ, Subatech, mai 2003, august 2003
+  // 
+
+  //=====================================================================
+  //  Libraries required by geant321
+  gSystem->Load ("libgeant321.so");
+  new TGeant3 ("C++ Interface to Geant3");
+  //=======================================================================
+  //  Create the output file    
+  Text_t filename[100];
+  sprintf (filename, "%sgalice.root", directory);
+  cout << ">>> Output file is " << filename << endl;
+  cout << ">>> Config_MUON_test.C: Creating Run Loader ..." << endl;
+  AliRunLoader *rl = 0x0;
+  rl =
+    AliRunLoader::Open (filename, AliConfig::GetDefaultEventFolderName (),
+                       "recreate");
+  if (rl == 0x0)
+    {
+      gAlice->Fatal ("Config_MUON_test.C",
+                    "Can not instatiate the Run Loader");
+      return;
+    }
+  rl->SetCompressionLevel (2);
+  rl->SetNumberOfEventsPerFile (100);
+  gAlice->SetRunLoader (rl);
+
+
+  //=======================================================================
+  // Set External decayer
+  TVirtualMCDecayer *decayer = new AliDecayerPythia ();
+  decayer->SetForceDecay (kAll);
+  decayer->Init ();
+  gMC->SetExternalDecayer (decayer);
+
+  //
+  //=======================================================================
+  // ******* GEANT STEERING parameters FOR ALICE SIMULATION *******
+  gMC->SetProcess ("DCAY", 1);
+  gMC->SetProcess ("PAIR", 1);
+  gMC->SetProcess ("COMP", 1);
+  gMC->SetProcess ("PHOT", 1);
+  gMC->SetProcess ("PFIS", 0);
+  gMC->SetProcess ("DRAY", 0);
+  gMC->SetProcess ("ANNI", 1);
+  gMC->SetProcess ("BREM", 1);
+  gMC->SetProcess ("MUNU", 1);
+  gMC->SetProcess ("CKOV", 1);
+  gMC->SetProcess ("HADR", 1);
+  gMC->SetProcess ("LOSS", 2);
+  gMC->SetProcess ("MULS", 1);
+  gMC->SetProcess ("RAYL", 1);
+
+  Float_t cut = 1.e-3;         // 1MeV cut by default
+  Float_t tofmax = 1.e10;
+
+  gMC->SetCut ("CUTGAM", cut);
+  gMC->SetCut ("CUTELE", cut);
+  gMC->SetCut ("CUTNEU", cut);
+  gMC->SetCut ("CUTHAD", cut);
+  gMC->SetCut ("CUTMUO", cut);
+  gMC->SetCut ("BCUTE", cut);
+  gMC->SetCut ("BCUTM", cut);
+  gMC->SetCut ("DCUTE", cut);
+  gMC->SetCut ("DCUTM", cut);
+  gMC->SetCut ("PPCUTM", cut);
+  gMC->SetCut ("TOFMAX", tofmax);
+  //
+  //=======================================================================
+  // ************* STEERING parameters FOR ALICE SIMULATION **************
+  // Chamber positions
+  // From AliMUONConstants class we get :
+  //   Position Z (along beam) of the chambers (in cm) 
+  //        (from AliMUONConstants class):  
+  //    533.5,  546.5,  678.5, 693.5,  964.0, 986.0, 1251.5, 1278.5, 
+  //   1416.5, 1443.5,  1610, 1625.,  1710., 1725. 
+  //   Internal Radius (in cm)   
+  //     36.4,  46.2,  66.0,  80.,  80., 100., 100.    
+  //   External Radius (in cm)
+  //    183.,  245.,  395.,  560., 563., 850., 900.  
+  //=======================================================================
+  if (!strcmp (option, "box"))
+    {
+      AliGenBox *gener = new AliGenBox (1);
+      gener->SetMomentumRange (20., 20.1);
+      gener->SetPhiRange (0.,180.);
+      gener->SetThetaRange (171.000, 178.001);
+      gener->SetPart (13);     // Muons
+      gener->SetOrigin (0., 0., 0.);   //vertex position
+      gener->SetSigma (0.0, 0.0, 0.0); //Sigma in (X,Y,Z) (cm) on IP position
+    }
+  if (!strcmp (option, "gun"))
+    {
+      //*********************************************
+      // Example for Fixed Particle Gun             *
+      //*********************************************
+      AliGenFixed *gener = new AliGenFixed (ntracks);
+      gener->SetMomentum (10);
+      gener->SetPhiRange (0.);
+      gener->SetThetaRange (0.);
+      gener->SetOrigin (30, 30, 1200); //vertex position
+      gener->SetPart (13);     //GEANT particle type  13 is muons
+    }
+  if (!strcmp (option, "scan"))
+    {
+      AliGenScan *gener = new AliGenScan (-1);
+      gener->SetMomentumRange (10, 10);
+      gener->SetPhiRange (0, 0);
+      gener->SetThetaRange (-180, -180);
+      //vertex position
+      //gener->SetSigma(1,1,0);           //Sigma in (X,Y,Z) (cm) on IP position
+      gener->SetPart (kRootino);
+      gener->SetRange (100, -300., 300., 100, -300., 300., 1, 2000, 2000);
+    }
+  if (!strcmp (option, "param"))
+    {
+      //*******************************************************
+      // Example for J/psi or Upsilon Production from  Parameterisation *
+      //*******************************************************
+      AliGenParam *gener = new AliGenParam (1, AliGenMUONlib::kUpsilon);
+      gener->SetMomentumRange (0, 999);
+      gener->SetPtRange (0, 100.);
+      gener->SetPhiRange (0., 360.);
+      gener->SetCutOnChild (1);
+      gener->SetChildPhiRange (0., 360.);
+      gener->SetChildThetaRange (171.0, 178.0);
+      gener->SetOrigin (0, 0, 0);      //vertex position    gener->SetSigma(0,0,0);           //Sigma in (X,Y,Z) (cm) on IP position
+      gener->SetForceDecay (kDiMuon);
+      gener->SetTrackingFlag (1);
+      gener->Init ();
+    }
+  //============================================================= 
+  // Field (L3 0.4 T)
+  AliMagFMaps *field =
+    new AliMagFMaps ("Maps", "Maps", 1, 1., 10., AliMagFMaps::k4kG);
+  gAlice->SetField (field);
+
+  //=================== Alice BODY parameters =============================
+  AliBODY *BODY = new AliBODY ("BODY", "Alice envelop");
+  //=================== ABSO parameters ============================
+  AliABSO *ABSO = new AliABSOv0 ("ABSO", "Muon Absorber");
+  //=================== DIPO parameters ============================
+  AliDIPO *DIPO = new AliDIPOv2 ("DIPO", "Dipole version 2");
+  //================== HALL parameters ============================
+  AliHALL *HALL = new AliHALL ("HALL", "Alice Hall");
+  //=================== PIPE parameters ============================
+  AliPIPE *PIPE = new AliPIPEv0 ("PIPE", "Beam Pipe");
+  //=================== SHIL parameters ============================
+  AliSHIL *SHIL = new AliSHILv2 ("SHIL", "Shielding Version 2");
+  //=================== MUON Subsystem ===========================
+  cout << ">>> Config_MUON_test.C: Creating AliMUONv1 ..." << endl;
+
+  // Old MUONv1 version (renamed to MUONv3)
+  //AliMUONv3 *MUON  = new AliMUONv3("MUON","default"); 
+
+  // New MUONv1 version (geometry defined via builders)
+  AliMUON *MUON = new AliMUONv1 ("MUON", "default");
+
+  //MUON->SetAlign(true);
+  // If align = true, the detection elements transformations
+  // are taken from the input files and not from the code
+
+  //MUON->SetDebug(2);
+  // To check setting of transformations from input files
+  // set align = true, debug level = 2 and run with scan generator
+
+  //MUON->AddGeometryBuilder(new AliMUONSt1GeometryBuilder(MUON));
+  MUON->AddGeometryBuilder (new AliMUONSt1GeometryBuilderV2 (MUON));
+  MUON->AddGeometryBuilder (new AliMUONSt2GeometryBuilder (MUON));
+  MUON->AddGeometryBuilder (new AliMUONSlatGeometryBuilder (MUON));
+  MUON->AddGeometryBuilder (new AliMUONTriggerGeometryBuilder (MUON));
+}
+
+Float_t
+EtaToTheta (Float_t arg)
+{
+  return (180. / TMath::Pi ()) * 2. * atan (exp (-arg));
+}
diff --git a/HLT/MUON/examples/rawdata/README b/HLT/MUON/examples/rawdata/README
new file mode 100644 (file)
index 0000000..e274936
--- /dev/null
@@ -0,0 +1,25 @@
+RAW DATA EXAMPLE 
+Bruce Becker | brucellino@gmail.com
+
+This is the directory with macros to generate digitised data with AliRoot 
+and generate binary raw data streams with the Indian code. The raw data is reconstricuted 
+
+The macros are :
+1) Config_MUON_test.C 
+       This is the basic config script with the simulation and generation 
+       parameters.
+2) Simulation.C
+       to simulate 1 muon in the spectrometer acceptance (with 
+       Config_MUON_test.C) , and simulate the digitised data. After running 
+       Simulation.C you will have MUON.Digits.root
+3) rawddl4.C and rawdl5.C
+       These macros generate the raw data DDL-wise for the stations 4 and 5 
+       respectively. The raw data reads look-up tables for each DDL (13-20) 
+       and produces the hit files DDL-wise. These are ddl<DDLn>.dat. This is 
+       unformatted binary data.
+4) dhlt_v2.C 
+       This macro reads the DDL of choice and generates reconstructed hit 
+       positions from the binary data. The files produced are separated into 
+       bending and non-bending planes - hit(n|b)<DDLn>.dat. 
+
+
diff --git a/HLT/MUON/examples/rawdata/Simulation.C b/HLT/MUON/examples/rawdata/Simulation.C
new file mode 100644 (file)
index 0000000..c7971d0
--- /dev/null
@@ -0,0 +1,11 @@
+void Simulation(char config = "Config_MUON_test.C", Int_t nevents = 100)
+{
+
+  AliSimulation MuonSim("Config_MUON_test.C");
+  MuonSim.SetMakeSDigits("MUON");
+  MuonSim.SetMakeDigits("MUON");
+  //  MuonSim.SetWriteRawData ("MUON");
+  
+  MuonSim.Run (nevents);
+
+}
diff --git a/HLT/MUON/examples/rawdata/dhlt_v2.C b/HLT/MUON/examples/rawdata/dhlt_v2.C
new file mode 100644 (file)
index 0000000..57952b6
--- /dev/null
@@ -0,0 +1,537 @@
+#define DIFFY 0.5      //5000 micron difference in Y
+#define DIFFX 1.0      //10000 micron difference in X
+#define X   56         //No. of Columns in bending plane
+#define Y   128        //No. of Rows in nonbending plane
+#define NUM 35         //Max Padhits in the column or rows
+#define C  200         //Max padhits in one ddl
+#define D  500         //Total Number of padhits in one ddl
+
+void dhlt_v2(Int_t evNumber1=0,Int_t evNumber2=0,Int_t lutNum=13,Int_t dcCut=50)
+{
+  Int_t event,dsp,hit,iqpad,header,iPx,iPy,pl,count1=0,count2=0;
+  Double_t MeanTime=0.;
+  Int_t Data[D];
+  
+  /********************************************************
+   * beginning of file reading - decide which ones and open
+   * them.
+   *******************************************************/
+
+  //Using Lookup Table
+  
+  if(lutNum==13||lutNum==14||lutNum==15||lutNum==16)
+    {
+      Int_t lineNum,xvalue[48448],yvalue[48448],plane[48448];
+      Float_t xproper[48448],yproper[48448];
+      char fnamelut[30];
+      sprintf(fnamelut,"lut%d.dat",lutNum);
+      FILE *ft = fopen(fnamelut,"r");
+      for(Int_t n=0;n<48448;n++)
+       {
+         fscanf(ft,"%d",&lineNum);
+         fscanf(ft,"%d",&xvalue[lineNum]);
+         fscanf(ft,"%d",&yvalue[lineNum]);
+         fscanf(ft,"%f",&xproper[lineNum]);
+         fscanf(ft,"%f",&yproper[lineNum]);
+         fscanf(ft,"%d",&plane[lineNum]);
+       }
+      fclose(ft);
+    }
+  else if(lutNum==17||lutNum==18||lutNum==19||lutNum==20)
+    {
+      Int_t lineNum,xvalue[59136],yvalue[59136],plane[59136];
+      Float_t xproper[59136],yproper[59136];
+      char fnamelut[30];
+      sprintf(fnamelut,"lut%d.dat",lutNum);
+      FILE *ft1 = fopen(fnamelut,"r");
+      for(Int_t n=0;n<59136;n++)
+       {
+         fscanf(ft1,"%d",&lineNum);
+         fscanf(ft1,"%d",&xvalue[lineNum]);
+         fscanf(ft1,"%d",&yvalue[lineNum]);
+         fscanf(ft1,"%f",&xproper[lineNum]);
+         fscanf(ft1,"%f",&yproper[lineNum]);
+         fscanf(ft1,"%d",&plane[lineNum]);
+       }
+      fclose(ft1);
+    }
+  //  else 
+  //    continue;
+  
+  //Declarations of arrays
+  
+  Float_t xdatab[X][NUM];      
+  Float_t ydatab[X][NUM];      
+  Float_t xdatan[Y][NUM];      
+  Float_t ydatan[Y][NUM];      
+  
+  Int_t n3=0,n4=0;
+  //Dymanic allocation of the arrays  
+  
+  Int_t *counterx;
+  counterx=(Int_t *) malloc(X*sizeof(Int_t));
+  if(counterx==NULL)exit(1);
+  Int_t *countery;
+  countery=(Int_t *) malloc(Y*sizeof(Int_t));
+  if(countery==NULL)exit(1);
+  Int_t **datab;
+  datab=(Int_t **) malloc(X*sizeof(Int_t *));
+
+  for(n3=0;n3<X;n3++)
+    {         
+      datab[n3]=(Int_t *) malloc(NUM*sizeof(Int_t));
+      if(datab[n3]==NULL)exit(1);
+    } 
+  Int_t **datan;
+  datan=(Int_t **) malloc(Y*sizeof(Int_t *));
+  for(n4=0;n4<Y;n4++)
+    {         
+      datan[n4]=(Int_t *) malloc(NUM*sizeof(Int_t));
+      if(datan[n4]==NULL)exit(1);
+    }          
+  
+  //declaration of cg arrays
+
+  // C is max padhits per ddl.
+  
+  Float_t ycgnb[C],xcgnb[C];
+  Int_t column[C],row[C],chargeb[C],chargenb[C],s1,s2;
+  Float_t ycgb[C],xcgb[C];
+  
+  //Unformatted Binary Input Files and Output Files created
+  
+  char fnameubd[30];
+  sprintf(fnameubd,"ddl%d.dat",lutNum);
+  FILE *fp = fopen(fnameubd,"r+");
+  char fnamehitb[30];
+  sprintf(fnamehitb,"hit%db.dat",lutNum);
+  FILE *fr = fopen(fnamehitb,"w+");
+  char fnamehitn[30];
+  sprintf(fnamehitn,"hit%dn.dat",lutNum);
+  FILE *fs = fopen(fnamehitn,"w+");
+  
+  for(int nev=evNumber1;nev<=evNumber2;nev++) // Start Event Loop
+    {
+      
+      // Initiallisation of the arrays
+      
+      for(Int_t m=0;m<X;m++)
+       { // loop over columns in bending plane
+         for(Int_t n=0;n<NUM;n++)      
+           { // loop over padhits in the column
+             datab[m][n]=0;
+             xdatab[m][n]=0;
+             ydatab[m][n]=0;
+           }
+       }
+      for(Int_t m1=0;m1<Y;m1++)
+       { // loop over rows in the nonbending plane
+         for(Int_t n1=0;n1<NUM;n1++)   
+           { // loop over padhits in the bending plane
+             datan[m1][n1]=0;
+             xdatan[m1][n1]=0;
+             ydatan[m1][n1]=0;
+           }
+       }
+
+      // setting counters to zero. 
+      // x counter and y counter are contained in the LUT's 
+      for(Int_t i1=0;i1<X;i1++)
+       counterx[i1]=0;
+      
+      for(Int_t j1=0;j1<Y;j1++)
+       countery[j1]=0;
+      // Data has the size of the total number of padhits in a  DDL.
+      for(Int_t h=0;h<D;h++)
+       Data[h]=0;
+      
+      // initialising  binary data c.o.g 
+      for(Int_t tsn=0;tsn<C;tsn++)
+       {
+         ycgnb[tsn]=0;
+         xcgnb[tsn]=0;
+         row[tsn]=0;
+         chargenb[tsn]=0;
+       }
+      
+      for(Int_t tsb=0;tsb<C;tsb++)
+       {       
+         ycgb[tsb]=0;
+         xcgb[tsb]=0;
+         column[tsb]=0;
+         chargeb[tsb]=0;
+       }       
+      
+      // Time Starts for the algorithm
+      
+      TStopwatch timer;
+      timer.Start();
+      
+      // Reading the unformatted data stream from ddl(DDL#).dat generated by
+      // rawddl(STATION#).C from digitized data from AliRoot.
+      
+      // this should probably be changed to case...
+      Int_t initial=0,final=0;
+      if(lutNum==13)
+       {initial=501;final=512;}
+      if(lutNum==14)
+       {initial=521;final=532;}
+      if(lutNum==15)
+       {initial=541;final=552;}
+      if(lutNum==16)
+       {initial=561;final=572;}
+      if(lutNum==17)
+       {initial=601;final=613;}
+      if(lutNum==18)
+       {initial=621;final=633;}
+      if(lutNum==19)
+       {initial=641;final=653;}
+      if(lutNum==20)
+       {initial=661;final=673;}
+      
+      for(Int_t p=initial;p<final;p++)
+       {//dsp loop start
+         fread(&dsp,2,1,fp);
+         fread(&hit,2,1,fp); // size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
+         
+         //reading unformatted binary data stream
+         
+         for(Int_t g=0;g<hit;g++)
+           { // DDL data
+             fread(&Data[g],4,1,fp);
+             iqpad = (((Data[g]<<17)>>17)&4095); // charge on pad first 12 bits
+             if(iqpad>dcCut) // threshold 
+               {
+                 header = (((Data[g])>>12)&65535);  // next 17 bits
+                 iPx = xvalue[header];                // ix (logical position)
+                 iPy = yvalue[header];                // ix (logical position)
+                 pl=plane[header];
+           if(iqpad>=4096)
+               iqpad = 4095;
+         iPx=abs(iPx);
+       if(pl==0)
+        {  
+          count1 = counterx[iPx];
+          datab[iPx][count1]=4096*iPy+iqpad;    // new data structure: column-wise
+          // in order to optimize the search
+          // for central pads
+          xdatab[iPx][count1]=xproper[header];
+          ydatab[iPx][count1]=yproper[header];
+          counterx[iPx]+=1;
+         }
+       else
+         {
+          count2 = countery[iPy];
+          datan[iPy][count2]=4096*iPx+iqpad;    // new data structure: column-wise
+          // in order to optimize the search
+          // for central pads
+          xdatan[iPy][count2]=xproper[header];
+          ydatan[iPy][count2]=yproper[header];
+          countery[iPy]+=1;  
+         }
+               }// DcCut condition
+             else continue;
+           }//dsp counter loop
+       }//dsp loop
+      
+      s1=0;s2=0;
+
+      // Reconstruction of the bending output array-streams
+
+      for(Int_t b1=0;b1<X;b1++)
+       {       //Loop on Columns
+         if(counterx[b1]>0){   // Condition on Empty Columns
+           Int_t iq=0;
+           for(Int_t a1=0;a1<counterx[b1];a1++)
+             { // A pad is obtained
+               if(datab[b1][a1]<18388608)
+                 {
+                   iq = (((*(*(datab+b1)+a1)<<10)>>10)&4095);
+                   Int_t iyc1 = ((*(*(datab+b1)+a1)>>12)&1023);
+                   
+                   // Checking Neibouring Pads of the first pad                 
+                   Int_t iq1=0,iq2=0,byp1=0,byn1=0,byp2=0,byn2=0;
+                   for(Int_t c1=0;c1<counterx[b1];c1++)
+                     {
+                       if(((*(*(datab+b1)+c1)>>12)&1023)==iyc1+1)
+                         {
+                           iq1 = (((*(*(datab+b1)+c1)<<10)>>10)&4095);
+                           byp1=c1;
+                         }
+                       if(((*(*(datab+b1)+c1)>>12)&1023)==iyc1-1)
+                         {
+                           iq2 = (((*(*(datab+b1)+c1)<<10)>>10)&4095);
+                           byn1=c1;
+                         }
+                       if(((*(*(datab+b1)+c1)>>12)&1023)==iyc1+2)
+                         {
+                           byp2=c1;
+                         }
+                       if(((*(*(datab+b1)+c1)>>12)&1023)==iyc1-2)
+                         {
+                           byn2=c1;
+                         }
+                     } //  Neibouring pads
+                   
+                   // Reconstruction of 3pad hits                      
+                   if(iq1>0 && iq2>0 && iq>=iq1 && iq>=iq2)
+                     {
+                       ycgb[s1] = funcy(ydatab[b1][a1],iq,iq1,iq2);
+                       xcgb[s1] = xdatab[b1][a1];
+                       column[s1]=b1;
+                       chargeb[s1]=iq;
+                       s1+=1;
+                       datab[b1][a1]+=18388608;
+                       datab[b1][byp1]+=18388608;
+                       datab[b1][byn1]+=18388608;
+                       if(byp2>0)
+                         datab[b1][byp2]+=18388608;
+                       if(byn2>0)
+                         datab[b1][byn2]+=18388608;
+                     }// end 3pad hits
+                   
+                   // Reconstruction of 2pad hits
+                   else if(iq2==0 && iq1>0 && iq>=iq1)
+                     {
+                       ycgb[s1] = funcy(ydatab[b1][a1],iq,iq1,iq2);
+                       xcgb[s1] = xdatab[b1][a1];
+                       column[s1]=b1;
+                       chargeb[s1]=iq;
+                       s1+=1;
+                       datab[b1][a1]+=18388608;
+                       datab[b1][byp1]+=18388608;
+                       if(byp2>0)
+                         datab[b1][byp2]+=18388608;
+                     }//end 2pad hits1
+                   else if(iq1==0 && iq2>0 && iq>=iq2)
+                     {
+                       ycgb[s1] = funcy(ydatab[b1][a1],iq,iq1,iq2);
+                       xcgb[s1] = xdatab[b1][a1];
+                       column[s1]=b1;
+                       chargeb[s1]=iq;
+                       s1+=1;
+                       datab[b1][a1]+=18388608;
+                       datab[b1][byn1]+=18388608;
+                       if(byn2>0)
+                         datab[b1][byn2]+=18388608;
+                     }//end 2pad hits2
+                   else continue;
+                 }//dccut condition
+               else continue;
+             }//loop 2
+         }//end condition1
+       }// end loop on columns
+      //Marging two consecutive columns in the bending plane
+      
+      for(Int_t z1b=0;z1b<s1;z1b++)
+       {
+         for(Int_t z2b=z1b+1;z2b<s1;z2b++)
+           {
+             if((column[z2b]==column[z1b]+1)&&(abs(ycgb[z1b]-ycgb[z2b])<=DIFFY))
+               {
+                 if(chargeb[z1b]>chargeb[z2b])
+                   {
+                     ycgb[z1b]=(ycgb[z1b]*chargeb[z1b]+ycgb[z2b]*chargeb[z2b])/(chargeb[z1b]+chargeb[z2b]);
+                     xcgb[z1b]=(xcgb[z1b]*chargeb[z1b]+xcgb[z2b]*chargeb[z2b])/(chargeb[z1b]+chargeb[z2b]);
+                     column[z2b]+=2000;
+                   }
+                 else
+                   {
+                     ycgb[z2b]=(ycgb[z1b]*chargeb[z1b]+ycgb[z2b]*chargeb[z2b])/(chargeb[z1b]+chargeb[z2b]);
+                     xcgb[z2b]=(xcgb[z1b]*chargeb[z1b]+xcgb[z2b]*chargeb[z2b])/(chargeb[z1b]+chargeb[z2b]);
+                     column[z1b]+=2000;
+                   }
+               }      
+             else if(column[z2b]>column[z1b]+1)
+               {
+                 break;
+               }
+             else continue;
+           } //2nd loop            
+       }//1st loop
+       for(Int_t z3b=0;z3b<s1;z3b++)
+        {       
+          if(column[z3b]<2000)
+            { 
+              fprintf(fr,"%4.6f\t%4.2f\n",ycgb[z3b],xcgb[z3b]); // reconstructed x and
+              // y positons for a cluster
+            }
+        }
+       
+       // Reconstruction of the non-bending output array-streams
+       
+       for(Int_t b2=0;b2<Y;b2++)
+        {      //Loop on Columns
+          if(countery[b2]>0)
+            {  // Condition on Empty Columns
+              Int_t iq=0;
+              for(Int_t a=0;a<countery[b2];a++)
+                { // A pad is obtained
+                  if(datan[b2][a]<18388608)
+                    {
+                      iq = (((*(*(datan+b2)+a)<<10)>>10)&4095);
+                      Int_t iyc = ((*(*(datan+b2)+a)>>12)&1023);
+                      
+                      // Checking Neibouring Pads of the first pad              
+                      Int_t iq1=0,iq2=0,nyp1=0,nyn1=0,nyp2=0,nyn2=0;
+                      for(Int_t c=0;c<countery[b2];c++)
+                        {
+                          if(((*(*(datan+b2)+c)>>12)&1023)==iyc+1)
+                            {
+                              iq1 = (((*(*(datan+b2)+c)<<10)>>10)&4095);
+                              nyp1=c;
+                            }
+                          if(((*(*(datan+b2)+c)>>12)&1023)==iyc-1)
+                            {
+                              iq2 = (((*(*(datan+b2)+c)<<10)>>10)&4095);
+                              nyn1=c;
+                            }
+                          if(((*(*(datan+b2)+c)>>12)&1023)==iyc+2)
+                            {
+                              nyp2=c;
+                            }
+                          if(((*(*(datan+b2)+c)>>12)&1023)==iyc-2)
+                            {
+                              nyn2=c;
+                            }
+                        }      // pads
+                      
+                      // Reconstruction of 3pad hits                   
+                      if(iq1>0 && iq2>0 && iq>=iq1 && iq>=iq2)
+                        {
+                          xcgnb[s2] = funcx(xdatan[b2][a],iq,iq1,iq2);
+                          ycgnb[s2] = ydatan[b2][a];
+                          row[s2]=b2;
+                          chargenb[s2]=iq;
+                          s2+=1;
+                          datan[b2][a]+=18388608;
+                          datan[b2][nyp1]+=18388608;
+                          datan[b2][nyn1]+=18388608;
+                          if(nyp2>0)
+                            datan[b2][nyp2]+=18388608;
+                          if(nyn2>0)
+                            datan[b2][nyn2]+=18388608;
+                        }// end 3pad hits
+                      
+                      // Reconstruction of 2pad hits
+                      else if(iq2==0 && iq1>0 && iq>=iq1)
+                        {
+                          xcgnb[s2] = funcx(xdatan[b2][a],iq,iq1,iq2);
+                          ycgnb[s2] = ydatan[b2][a];
+                          row[s2]=b2;
+                          chargenb[s2]=iq;
+                          s2+=1;
+                          datan[b2][a]+=18388608;
+                          datan[b2][nyp1]+=18388608;
+                          if(nyp2>0)
+                            datan[b2][nyp2]+=18388608;
+                        }//end 2pad hits1
+                      else if(iq1==0 && iq2>0 && iq>=iq2)
+                        {
+                          xcgnb[s2] = funcx(xdatan[b2][a],iq,iq1,iq2);
+                          ycgnb[s2] = ydatan[b2][a];
+                          row[s2]=b2;
+                          chargenb[s2]=iq;
+                          s2+=1;
+                          datan[b2][a]+=18388608;
+                          datan[b2][nyn1]+=18388608;
+                          if(nyn2>0)
+                            datan[b2][nyn2]+=18388608;
+                        }//end 2pad hits2
+                      else continue;
+                    }//dccut condition
+                  else continue;
+                }//loop 2
+            }//end condition1
+        }// end loop on rows
+       //Marging two consecutive rows in the non bending plane
+       
+       for(Int_t z1n=0;z1n<s2;z1n++)
+        {
+          for(Int_t z2n=z1n+1;z2n<s2;z2n++)
+            {
+              if((row[z2n]==row[z1n]+1)&&(abs(xcgnb[z1n]-xcgnb[z2n])<=DIFFX))
+                {
+                  if(chargenb[z1n]>chargenb[z2n])
+                    {
+                      ycgnb[z1n]=(ycgnb[z1n]+ycgnb[z2n])/2;
+                      xcgnb[z1n]=(xcgnb[z1n]+xcgnb[z2n])/2;
+                      row[z2n]+=2000;
+                    }
+                  else
+                    {
+                      ycgnb[z2n]=(ycgnb[z1n]+ycgnb[z2n])/2;
+                      xcgnb[z2n]=(xcgnb[z1n]+xcgnb[z2n])/2;
+                      row[z1n]+=2000;
+                    }
+                }      
+              else if(row[z2n]>row[z1n]+1)
+                {
+                  break;
+                }
+              else continue;
+            } //2nd loop           
+        }//1st loop
+       for(Int_t z3n=0;z3n<s2;z3n++)
+        {       
+          if(row[z3n]<2000)
+            { 
+              fprintf(fs,"%4.2f\t%4.6f\n",ycgnb[z3n],xcgnb[z3n]); // reconstructed x and
+              // y positons for a cluster
+            }
+        }
+       
+       timer.Stop();
+       Double_t tch=timer.CpuTime();
+       tch=timer.CpuTime();
+       MeanTime += tch;
+       
+    }//event
+       
+  for(n3=0;n3<X;n3++)
+    { 
+      free(datab[n3]);
+    }
+  free(datab);
+  
+  for(n4=0;n4<Y;n4++)
+    { 
+      free(datan[n4]);
+    }
+  free(datan);     
+  
+  free(counterx);
+  free(countery); 
+  
+  printf("Average processing time per event = %f s\n",(MeanTime/(evNumber2+1)));
+  
+  fclose(fp);
+  fclose(fr);
+  fclose(fs);
+}// end of funtion
+
+// Functions Calculating YCG from iy values
+
+Float_t funcy(Float_t y,Int_t q,Int_t q1,Int_t q2)
+{
+  Float_t ycg1;
+  Int_t tot_ch;
+  ycg1 = q*y + q1*(y+0.5) + q2*(y-0.5);
+  tot_ch = q + q1 + q2;
+  ycg1 /= tot_ch;
+  Float_t ycorr = 0.0255*(TMath::Sin(12.56637*((ycg1-y)-0.25)));
+  ycg1-=ycorr;
+  return(ycg1);
+}
+
+// Functions Calculating XCG from ix values
+
+Float_t funcx(Float_t x,Int_t q,Int_t q1,Int_t q2)
+{
+  Float_t xcg1;
+  Int_t tot_ch;
+  xcg1 = q*x + q1*(x+0.5) + q2*(x-0.5);
+  tot_ch = q + q1 + q2;
+  xcg1 /= tot_ch;
+  return(xcg1);
+}
diff --git a/HLT/MUON/macros/DumpClusterPointFile.C b/HLT/MUON/macros/DumpClusterPointFile.C
new file mode 100644 (file)
index 0000000..169f00c
--- /dev/null
@@ -0,0 +1,79 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#include "../src/Cluster.hpp"
+
+
+// Formated printing of floating point numbers.
+void Print(float value)
+{
+       char buffer[1024];
+       char* str = &buffer[0];
+       sprintf(str, "%f", value);
+       int length = strlen(str);
+       if (str[0] == '-')
+       {
+               cout << str;
+               for (int i = length; i < 15; i++)
+                       cout << " ";
+       }
+       else
+       {
+               cout << " " << str;
+               for (int i = length+1; i < 15; i++)
+                       cout << " ";
+       };
+};
+
+
+// TODO: fix the endian encoding of the data format.
+
+/* Reads the contents of a file generated with MakeClusterPointFiles.C
+   and prints the contents to screen.
+ */
+void DumpClusterPointFile(const char* filename)
+{
+       FILE* file = fopen(filename, "r");
+       if (file == NULL)
+       {
+               Error("DumpClusterPointFile", "Could not open file: %s", filename);
+               return;
+       };
+       
+       // Read the first 32 bits which is the size of the data structure in
+       // the file in 32bit words.
+       dHLT::UInt size;
+       fread(&size, sizeof(size), 1, file);
+       if (ferror(file))
+       {
+               Error("DumpClusterPointFile", "Could not read from file: %s", filename);
+               return;
+       };
+       cout << "Size of structure: " << size << " (4 byte) words." << endl;
+       
+       cout << " X              Y" << endl;
+       
+       // Go through all the records and dump them to screen.
+       UInt_t recordcount = size / (sizeof(dHLT::ClusterPoint) / 4);
+       for (UInt_t i = 0; i < recordcount; i++)
+       {
+               dHLT::ClusterPoint point;
+               fread(&point, sizeof(point), 1, file);
+               if (ferror(file))
+               {
+                       Error("DumpClusterPointFile", "Could not read from file: %s", filename);
+                       return;
+               };
+               
+               Print(point.x);
+               Print(point.y);
+               cout << endl;
+       };
+       
+       fclose(file);
+};
+
diff --git a/HLT/MUON/macros/DumpClusterSource.C b/HLT/MUON/macros/DumpClusterSource.C
new file mode 100644 (file)
index 0000000..61363e3
--- /dev/null
@@ -0,0 +1,46 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/* Dumps the contents of the ClusterSource 'cs' to the screen.
+ */
+void DumpClusterSource(AliMUONHLT::ClusterSource* cs)
+{
+       cout << "File  : " << cs->FileName() << endl;
+       cout << "Folder: " << cs->FolderName() << endl;
+       if (cs->GetFirstEvent())
+       {
+               do
+               {
+                       cout << "================= Event: " << cs->CurrentEvent() << " =================" << endl;
+                       if ( ! cs->GetFirstBlock() )
+                       {
+                               cout << "No blocks found." << endl;
+                               continue;
+                       };
+                       do
+                       {
+                               cout << "Block for chamber: " << cs->Chamber() << endl;
+                               if ( cs->GetFirstCluster() == NULL )
+                               {
+                                       cout << "\tNo cluster points found." << endl;
+                                       continue;
+                               };
+                               do
+                               {
+                                       Float_t x, y;
+                                       cs->FetchCluster(x, y);
+                                       cout << "\tx = " << x << ", y = " << y << endl;
+                               } while (cs->GetNextCluster());
+                       } while (cs->GetNextBlock());
+               } while (cs->GetNextEvent());
+       }
+       else
+       {
+               cout << "No events found." << endl;
+       };
+};
+
diff --git a/HLT/MUON/macros/DumpTrackSink.C b/HLT/MUON/macros/DumpTrackSink.C
new file mode 100644 (file)
index 0000000..157a445
--- /dev/null
@@ -0,0 +1,70 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/* Dumps the contents of the TrackSink 'ts' to the screen.
+ */
+void DumpTrackSink(AliMUONHLT::TrackSink* ts)
+{
+       cout << "File  : " << ts->FileName() << endl;
+       cout << "Folder: " << ts->FolderName() << endl;
+       if ( ! ts->GetFirstEvent() )
+       {
+               cout << "No events found." << endl;
+               return;
+       };
+       
+       while (ts->MoreEvents())
+       {
+               cout << "================= Event: " << ts->CurrentEvent() << " =================" << endl;
+               Int_t blocknum = 0;
+
+               if ( ! ts->GetFirstBlock() )
+               {
+                       cout << "No blocks found." << endl;
+                       ts->GetNextEvent();
+                       continue;
+               };
+
+               while (ts->MoreBlocks())
+               {
+                       cout << "Block: " << blocknum++ << endl;
+                       if ( ts->GetFirstTrack() == NULL )
+                       {
+                               cout << "\tNo tracks found." << endl;
+                               ts->GetNextBlock();
+                               continue;
+                       };
+                       
+                       while (ts->MoreTracks())
+                       {
+                               const AliMUONHLT::Track* data = ts->GetTrack();
+
+                               cout << "\tTrigger ID = " << data->TriggerID()
+                                       << ", Sign = " << data->ParticleSign()
+                                       << ", P = " << data->P()
+                                       << ", Pt = " << data->Pt()
+                                       << endl;
+                               cout << "\t\tX\tY\tLeft\tRight\tBottom\tTop" << endl;
+                               for (Int_t i = 0; i < 10; i++)
+                               {
+                                       cout << "\t\t" << data->Hit(i).fX
+                                               << "\t" << data->Hit(i).fY
+                                               << "\t" << data->RegionOfInterest(i).Left()
+                                               << "\t" << data->RegionOfInterest(i).Right()
+                                               << "\t" << data->RegionOfInterest(i).Bottom()
+                                               << "\t" << data->RegionOfInterest(i).Top()
+                                               << endl;
+                               };
+
+                               ts->GetNextTrack();
+                       };
+                       ts->GetNextBlock();
+               };
+               ts->GetNextEvent();
+       };
+};
+
diff --git a/HLT/MUON/macros/DumpTriggerRecordFile.C b/HLT/MUON/macros/DumpTriggerRecordFile.C
new file mode 100644 (file)
index 0000000..5180c07
--- /dev/null
@@ -0,0 +1,93 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#include "../src/TriggerRecord.hpp"
+
+
+// Formated printing of floating point numbers.
+void Print(float value)
+{
+       char buffer[1024];
+       char* str = &buffer[0];
+       sprintf(str, "%f", value);
+       int length = strlen(str);
+       if (str[0] == '-')
+       {
+               cout << str;
+               for (int i = length; i < 15; i++)
+                       cout << " ";
+       }
+       else
+       {
+               cout << " " << str;
+               for (int i = length+1; i < 15; i++)
+                       cout << " ";
+       };
+};
+
+
+// TODO: fix the endian encoding of the data format.
+
+/* Reads the contents of a file generated with MakeTriggerRecordFiles.C
+   and prints the contents to screen.
+ */
+void DumpTriggerRecordFile(const char* filename)
+{
+       FILE* file = fopen(filename, "r");
+       if (file == NULL)
+       {
+               Error("DumpTriggerRecordFile", "Could not open file: %s", filename);
+               return;
+       };
+       
+       // Read the first 32 bits which is the size of the data structure in
+       // the file in 32bit words.
+       dHLT::UInt size;
+       fread(&size, sizeof(size), 1, file);
+       if (ferror(file))
+       {
+               Error("DumpTriggerRecordFile", "Could not read from file: %s", filename);
+               return;
+       };
+       cout << "Size of structure: " << size << " (4 byte) words." << endl;
+       
+       // Read the Trigger ID offset.
+       dHLT::UInt triggerIDoffset;
+       fread(&triggerIDoffset, sizeof(triggerIDoffset), 1, file);
+       if (ferror(file))
+       {
+               Error("DumpTriggerRecordFile", "Could not read from file: %s", filename);
+               return;
+       };
+       cout << "Trigger ID offset: " << triggerIDoffset << endl;
+       
+       cout << "Sign\t Pt             MT1 X          MT1 Y          MT2 X          MT2 Y" << endl;
+       
+       // Go through all the records and dump them to screen.
+       UInt_t recordcount = (size - sizeof(dHLT::UInt)) / (sizeof(dHLT::TriggerRecord) / 4);
+       for (UInt_t i = 0; i < recordcount; i++)
+       {
+               dHLT::TriggerRecord record;
+               fread(&record, sizeof(record), 1, file);
+               if (ferror(file))
+               {
+                       Error("DumpTriggerRecordFile", "Could not read from file: %s", filename);
+                       return;
+               };
+               
+               cout << record.sign << "\t";
+               Print(record.pt);
+               Print(record.station1impact.x);
+               Print(record.station1impact.y);
+               Print(record.station2impact.x);
+               Print(record.station2impact.y);
+               cout << endl;
+       };
+       
+       fclose(file);
+};
+
diff --git a/HLT/MUON/macros/DumpTriggerSource.C b/HLT/MUON/macros/DumpTriggerSource.C
new file mode 100644 (file)
index 0000000..1911375
--- /dev/null
@@ -0,0 +1,54 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/* Dumps the contents of the TriggerSource 'ts' to the screen.
+ */
+void DumpTriggerSource(AliMUONHLT::TriggerSource* ts)
+{
+       cout << "File  : " << ts->FileName() << endl;
+       cout << "Folder: " << ts->FolderName() << endl;
+       if (ts->GetFirstEvent())
+       {
+               do
+               {
+                       cout << "================= Event: " << ts->CurrentEvent() << " =================" << endl;
+                       Int_t blocknum = 0;
+                       if ( ! ts->GetFirstBlock() )
+                       {
+                               cout << "No blocks found." << endl;
+                               continue;
+                       };
+                       do
+                       {
+                               cout << "Block: " << blocknum++ << endl;
+                               if ( ts->GetFirstTrigger() == NULL )
+                               {
+                                       cout << "\tNo trigger records found." << endl;
+                                       continue;
+                               };
+                               do
+                               {
+                                       AliMUONHLT::TriggerRecord* data = ts->GetTrigger();
+
+                                       cout << "\tTrigger number = " << data->TriggerNumber()
+                                               << ", Sign = " << data->ParticleSign()
+                                               << ", Pt = " << data->Pt()
+                                               << ", ST1 x = " << data->Station1Point().fX
+                                               << ", ST1 y = " << data->Station1Point().fY
+                                               << ", ST2 x = " << data->Station2Point().fX
+                                               << ", ST2 y = " << data->Station2Point().fY
+                                               << endl;
+                               } while (ts->GetNextTrigger());
+                       } while (ts->GetNextBlock());
+               } while (ts->GetNextEvent());
+       }
+       else
+       {
+               cout << "No events found." << endl;
+       };
+};
+
diff --git a/HLT/MUON/macros/MakeClusterPointFiles.C b/HLT/MUON/macros/MakeClusterPointFiles.C
new file mode 100644 (file)
index 0000000..40d5996
--- /dev/null
@@ -0,0 +1,106 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#include "../src/Cluster.hpp"
+
+
+// TODO: fix the endian encoding of the data format.
+
+/* Generates .clusters binary files with the following structure:
+      
+     Byte #   Field
+
+   // Header
+         00   size              - Size of the structure in 32-bit words (excluding this word).
+      
+   // First ClusterPoint structure
+         04   x                 - X coordinate of point.
+         08   y                 - Y coordinate of point.
+
+   // Next ClusterPoint structure
+         08   x                 - X coordinate of point.
+         12   y                 - Y coordinate of point.
+
+   // etc...
+ */
+void MakeClusterPointFiles(const char* outputpath = ".")
+{
+       //gSystem->Load("../lib/Linux-debug/libMUONHLT.so");
+       gSystem->Load("../lib/Linux/libMUONHLT.so");
+
+       using namespace AliMUONHLT;
+       
+       AliMUONDataInterface data;
+       data.SetFile();
+       
+       // Load the cluster data.
+       AliMUONHLT::ClusterSource cs;
+       cs.DataToUse(AliMUONHLT::ClusterSource::FromHits);
+       cs.FillFrom(&data);
+       
+       for (Int_t event = 0; event < cs.NumberOfEvents(); event++)
+       {
+               cs.GetEvent(event);
+               
+               for (UInt_t chamber = 0; chamber < 10; chamber++)
+               {
+                       // For every event create a new file.
+                       char buffer[1024];
+                       char* filename = &buffer[0];
+                       sprintf(filename, "%s/event%d_chamber%d.clusters", outputpath, event, chamber+1);
+                       FILE* file = fopen(filename, "w+b");
+                       if (file == NULL)
+                       {
+                               Error("MakeClusterPointFiles", "Could not create/open file: %s", filename);
+                               return;
+                       };
+
+                       // Compute and write the size of the whole data structure in 32bit words:
+                       dHLT::UInt size = 0;
+                       for (Int_t block = 0; block < cs.NumberOfBlocks(); block++)
+                       {
+                               cs.GetBlock(block);
+                               if (cs.Chamber() != chamber) continue;
+                               size += (cs.NumberOfClusters() * sizeof(dHLT::ClusterPoint)) / 4;
+                       };
+
+                       fwrite(&size, sizeof(dHLT::UInt), 1, file);
+                       if (ferror(file))
+                       {
+                               Error("MakeClusterPointFiles", "Could not write to file: %s", filename);
+                               return;
+                       };
+
+                       // Write all the TriggerRecord structures into the file.
+                       for (Int_t block = 0; block < cs.NumberOfBlocks(); block++)
+                       {
+                               cs.GetBlock(block);
+                               if (cs.Chamber() != chamber) continue;
+
+                               for (   const Point* cluster = cs.GetFirstCluster();
+                                       cs.MoreClusters();
+                                       cluster = cs.GetNextCluster()
+                               )
+                               {
+                                       dHLT::ClusterPoint point;
+                                       point.x = cluster->fX;
+                                       point.y = cluster->fY;
+
+                                       fwrite(&point, sizeof(point), 1, file);
+                                       if (ferror(file))
+                                       {
+                                               Error("MakeClusterPointFiles", "Could not write to file: %s", filename);
+                                               return;
+                                       };
+                               };
+                       };
+
+                       fclose(file);
+               };
+       };
+};
+
diff --git a/HLT/MUON/macros/MakeTriggerRecordFiles.C b/HLT/MUON/macros/MakeTriggerRecordFiles.C
new file mode 100644 (file)
index 0000000..68133cf
--- /dev/null
@@ -0,0 +1,120 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#include "../src/TriggerRecord.hpp"
+
+
+// TODO: fix the endian encoding of the data format.
+
+/* Generates .trigrec binary files with the following structure:
+      
+     Byte #   Field
+
+   // Header
+         00   size              - Size of the structure in 32-bit words (excluding this word).
+
+         04   Trigger ID offset - The offset to add to the trigger record index number
+                                  to get full trigger ID of any trigger record.
+      
+   // First TriggerRecord structure.
+         08   sign              - Signed integer, possible values: -1, 0, +1
+         12   pt                - Transverse momentum as a 32bit floating point number.
+         16   station1impact.x  - 
+         20   station1impact.y  - 
+         24   station2impact.x  -
+         28   station2impact.y  -
+
+   // Next TriggerRecord structure.
+   // ...
+ */
+void MakeTriggerRecordFiles(const char* outputpath = ".")
+{
+       //gSystem->Load("../lib/Linux-debug/libMUONHLT.so");
+       gSystem->Load("../lib/Linux/libMUONHLT.so");
+
+       using namespace AliMUONHLT;
+       
+       AliMUONDataInterface data;
+       data.SetFile();
+       
+       // Load the trigger data.
+       AliMUONHLT::TriggerSource ts;
+       ts.DataToUse(AliMUONHLT::TriggerSource::FromHits);
+       ts.FillFrom(&data);
+       
+       dHLT::UInt triggerIDoffset;
+       
+       for (Int_t event = 0; event < ts.NumberOfEvents(); event++)
+       {
+               ts.GetEvent(event);
+               
+               // For every event create a new file.
+               char buffer[1024];
+               char* filename = &buffer[0];
+               sprintf(filename, "%s/event%d.trigrec", outputpath, event);
+               FILE* file = fopen(filename, "w+b");
+               if (file == NULL)
+               {
+                       Error("MakeTriggerRecordFiles", "Could not create/open file: %s", filename);
+                       return;
+               };
+               
+               // Compute and write the size of the whole data structure in 32bit words:
+               dHLT::UInt size = 0;
+               for (Int_t block = 0; block < ts.NumberOfBlocks(); block++)
+               {
+                       ts.GetBlock(block);
+                       size += (ts.NumberOfTriggers() * sizeof(dHLT::TriggerRecord)) / 4;
+               };
+               size += sizeof(triggerIDoffset) / 4; // Add word count of triggerIDoffset.
+               
+               fwrite(&size, sizeof(size), 1, file);
+               if (ferror(file))
+               {
+                       Error("MakeTriggerRecordFiles", "Could not write to file: %s", filename);
+                       return;
+               };
+               
+               // Compute and write the trigger ID offset.
+               triggerIDoffset = 0;  // very simple case.
+               fwrite(&triggerIDoffset, sizeof(triggerIDoffset), 1, file);
+               if (ferror(file))
+               {
+                       Error("MakeTriggerRecordFiles", "Could not write to file: %s", filename);
+                       return;
+               };
+               
+               // Write all the TriggerRecord structures into the file.
+               for (Int_t block = 0; block < ts.NumberOfBlocks(); block++)
+               {
+                       ts.GetBlock(block);
+                       for (   const TriggerRecord* trigger = ts.GetFirstTrigger();
+                               ts.MoreTriggers();
+                               trigger = ts.GetNextTrigger()
+                           )
+                       {
+                               dHLT::TriggerRecord record;
+                               record.sign = trigger->ParticleSign();
+                               record.pt = trigger->Pt();
+                               record.station1impact.x = trigger->Station1Point().fX;
+                               record.station1impact.y = trigger->Station1Point().fY;
+                               record.station2impact.x = trigger->Station2Point().fX;
+                               record.station2impact.y = trigger->Station2Point().fY;
+                               
+                               fwrite(&record, sizeof(record), 1, file);
+                               if (ferror(file))
+                               {
+                                       Error("MakeTriggerRecordFiles", "Could not write to file: %s", filename);
+                                       return;
+                               };
+                       };
+               };
+               
+               fclose(file);
+       };
+};
+
diff --git a/HLT/MUON/macros/RunMicrodHLT.C b/HLT/MUON/macros/RunMicrodHLT.C
new file mode 100644 (file)
index 0000000..ddc6833
--- /dev/null
@@ -0,0 +1,128 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/* Sample macro indicating how to run the micro dHLT version.
+ */
+
+void RunMicrodHLT(Bool_t rundebug = kFALSE)
+{
+       if (rundebug)
+               gSystem->Load("../lib/Linux-debug/libMUONHLT.so");
+       else
+               gSystem->Load("../lib/Linux/libMUONHLT.so");
+       
+       cout << "dHLT Version: " << AliMUONHLT::Version() << endl;
+
+       AliMUONDataInterface data;
+       data.SetFile();
+       
+       // Load the trigger data.
+       AliMUONHLT::TriggerSource ts;
+       ts.DataToUse(AliMUONHLT::TriggerSource::FromHits);
+       ts.FillFrom(&data);
+
+       // Load the cluster data.
+       AliMUONHLT::ClusterSource cs;
+       cs.DataToUse(AliMUONHLT::ClusterSource::FromHits);
+       cs.FillFrom(&data);
+
+       // Create a Track output object.
+       AliMUONHLT::TrackSink trackout;
+
+       // Create the dHLT process object and connect it to input and output.
+       AliMUONHLT::MicrodHLT dhlt;
+       dhlt.SetTriggerSource(&ts);
+       dhlt.SetClusterSource(&cs);
+       dhlt.SetTrackSink(&trackout);
+       
+       // run the dHLT
+       cout << "running..." << endl;
+       dhlt.Run();
+       
+       // Display the output:
+       if ( ! trackout.GetFirstEvent())
+               cout << "No tracks found." << endl;
+
+       while (trackout.MoreEvents())
+       {
+               cout << "================= Event: " << trackout.CurrentEvent() << " =================" << endl;
+               Int_t blocknum = 0;
+
+               if ( ! trackout.GetFirstBlock() )
+                       cout << "No track blocks found." << endl;
+               
+               while (trackout.MoreBlocks())
+               {
+                       cout << "Block: " << blocknum++ << endl;
+                       cout << "\tReal\tReal\tHLT\tHLT\tHLT\tL0\tL0" << endl;
+                       cout << "\tP\tPt\tSign\tP\tPt\tSign\tPt" << endl;
+
+                       if ( trackout.GetFirstTrack() == NULL )
+                               cout << "\tNo tracks found." << endl;
+
+                       while (trackout.MoreTracks())
+                       {
+                               AliMUONHLT::Track* track = trackout.GetTrack();
+
+                               // Find the corresponding trigger record.
+                               AliMUONHLT::TriggerRecord* trigrec = NULL;
+                               ts.GetEvent(trackout.CurrentEvent());
+                               
+                               if (ts.GetFirstBlock())
+                               {
+                                       do
+                                       {
+                                               trigrec = ts.GetTrigger( track->TriggerID() );
+                                               if (trigrec != NULL) break;
+                                       } while (ts.GetNextBlock());
+                               };
+                               if (trigrec == NULL)
+                               {
+                                       cerr << "Error: could not find corresponding trigger record!" << endl;
+                                       continue;
+                               };
+
+                               // Find the corresponding particle in Kine.
+                               // Note: track->fTriggerID happens to be the TreeH track number when
+                               // filling from Hit objects.
+                               data.GetEvent(trackout.CurrentEvent());
+                               AliMUONHit* hit = data.Hit(track->TriggerID(), 0);
+                               if (hit == NULL)
+                               {
+                                       cerr << "Warning: Could not find hit 0 for track number = "
+                                       << track->TriggerID() << endl;
+                                       continue;
+                               };
+
+                               // Need to decode the particle index.
+                               Int_t num_primaries = data.NumberOfTracks();
+                               Int_t num_tracks = data.NumberOfParticles();
+                               Int_t particleindex;
+                               if (hit->Track() < num_primaries)
+                                       particleindex = hit->Track() + num_tracks - num_primaries;
+                               else
+                                       particleindex =  hit->Track()- num_primaries;
+
+                               TParticle* p = data.Particle(particleindex);
+
+                               // All data found, now write output:
+                               cout << "\t" << p->P()
+                                       << "\t" << p->Pt()
+                                       << "\t" << track->ParticleSign()
+                                       << "\t" << track->P()
+                                       << "\t" << track->Pt()
+                                       << "\t" << trigrec->ParticleSign()
+                                       << "\t" << trigrec->Pt()
+                                       << endl;
+
+                               trackout.GetNextTrack();
+                       };
+                       trackout.GetNextBlock();
+               };
+               trackout.GetNextEvent();
+       };
+};
diff --git a/HLT/MUON/make.log b/HLT/MUON/make.log
new file mode 100644 (file)
index 0000000..527eacd
--- /dev/null
@@ -0,0 +1,474 @@
+---------- Entering verbose build mode ----------
+gmake[1]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+for MODULE in /home/cheshkov/alice/AliRoot/HLT/MUON/build/gentest.module.mk /home/cheshkov/alice/AliRoot/HLT/MUON/build/libdHLT.module.mk /home/cheshkov/alice/AliRoot/HLT/MUON/build/libMUONHLT.module.mk /home/cheshkov/alice/AliRoot/HLT/MUON/build/printrawdata.module.mk /home/cheshkov/alice/AliRoot/HLT/MUON/build/pubsub_size_tag.module.mk /home/cheshkov/alice/AliRoot/HLT/MUON/build/signalL2.module.mk /home/cheshkov/alice/AliRoot/HLT/MUON/build/tracker.module.mk /home/cheshkov/alice/AliRoot/HLT/MUON/build/TriggerDDLFilePublisher.module.mk /home/cheshkov/alice/AliRoot/HLT/MUON/build/triggerDDL.module.mk ; do gmake -f $MODULE ; done
+gmake[2]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Tracking/Calculations.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Tracking\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Tracking\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Tracking/Calculations.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Tracking/MansoTracker.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Tracking\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Tracking\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Tracking/MansoTracker.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Buffers/GarbageCollector.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Buffers\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Buffers\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Buffers/GarbageCollector.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Framework/Global.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Framework\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Framework\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Framework/Global.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Debug/print.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Debug\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Debug\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Debug/print.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Debug/DataGenerator.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Debug\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Debug\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Debug/DataGenerator.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Debug/TriggerSource.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Debug\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Debug\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Debug/TriggerSource.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Debug/ClusterSource.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Debug\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Debug\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Debug/ClusterSource.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Tracking/EventHandler.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Tracking\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Tracking\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Tracking/EventHandler.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Tracking/IOHandler.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Tracking\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/Tracking\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Tracking/IOHandler.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/RegionOfInterest.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/RegionOfInterest.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Error.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Error.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Utils.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Utils.d
+echo // This file was generated with \"rules.mk\". Do not modify. > /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/VersionNumbers.hpp
+echo \#define MAJOR_VERSION `cat /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/major.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/VersionNumbers.hpp
+echo \#define MINOR_VERSION `cat /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/minor.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/VersionNumbers.hpp
+echo \#define BUILD_NUMBER  `cat /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/build.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/VersionNumbers.hpp
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/Version.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Version.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/PipeIO/gentest_main.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/gentest\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/gentest_main.d
+gmake[2]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+gmake[2]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/PipeIO/gentest_main.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/gentest_main.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/Version.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Version.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Utils.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Utils.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Error.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Error.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/RegionOfInterest.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/RegionOfInterest.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Tracking/IOHandler.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Tracking/IOHandler.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Tracking/EventHandler.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Tracking/EventHandler.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Debug/ClusterSource.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Debug/ClusterSource.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Debug/TriggerSource.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Debug/TriggerSource.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Debug/DataGenerator.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Debug/DataGenerator.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Debug/print.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Debug/print.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Framework/Global.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Framework/Global.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Buffers/GarbageCollector.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Buffers/GarbageCollector.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Tracking/MansoTracker.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Tracking/MansoTracker.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Tracking/Calculations.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Tracking/Calculations.o
+-------------------------------------------------------------------------------
+g++ -fexceptions -Wall -L/home/cheshkov/alice/AliRoot/HLT/MUON/lib/Linux  -O3 /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/gentest_main.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Version.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Utils.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Error.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/RegionOfInterest.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Tracking/IOHandler.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Tracking/EventHandler.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Debug/ClusterSource.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Debug/TriggerSource.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Debug/DataGenerator.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Debug/print.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Framework/Global.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Buffers/GarbageCollector.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Tracking/MansoTracker.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/gentest/Linux/Tracking/Calculations.o -o /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/gentest
+Made /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/gentest
+rm -f /home/cheshkov/alice/AliRoot/HLT/MUON/bin/gentest
+ln -s /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/gentest /home/cheshkov/alice/AliRoot/HLT/MUON/bin/gentest
+gmake[2]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+gmake[2]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+echo // This file was generated with \"rules.mk\". Do not modify. > /home/cheshkov/alice/AliRoot/HLT/MUON/output/dHLT/Linux/VersionNumbers.hpp
+echo \#define MAJOR_VERSION `cat /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/major.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/dHLT/Linux/VersionNumbers.hpp
+echo \#define MINOR_VERSION `cat /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/minor.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/dHLT/Linux/VersionNumbers.hpp
+echo \#define BUILD_NUMBER  `cat /home/cheshkov/alice/AliRoot/HLT/MUON/output/dHLT/Linux/build.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/dHLT/Linux/VersionNumbers.hpp
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/dHLT/Linux -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/Version.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/dHLT\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/dHLT\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/dHLT/Linux/Version.d
+gmake[2]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+gmake[2]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/dHLT/Linux -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/Version.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/dHLT/Linux/Version.o
+-------------------------------------------------------------------------------
+g++ -fexceptions -Wall -fPIC -shared -L/home/cheshkov/alice/AliRoot/HLT/MUON/lib/Linux  -O3 /home/cheshkov/alice/AliRoot/HLT/MUON/output/dHLT/Linux/Version.o -o /home/cheshkov/alice/AliRoot/HLT/MUON/lib/Linux/libdHLT.so
+Made /home/cheshkov/alice/AliRoot/HLT/MUON/lib/Linux/libdHLT.so
+rm -f /home/cheshkov/alice/AliRoot/HLT/MUON/lib/libdHLT.so
+ln -s /home/cheshkov/alice/AliRoot/HLT/MUON/lib/Linux/libdHLT.so /home/cheshkov/alice/AliRoot/HLT/MUON/lib/libdHLT.so
+cp /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/Version.hpp /home/cheshkov/alice/AliRoot/HLT/MUON/include/Version.hpp
+cp /home/cheshkov/alice/AliRoot/HLT/MUON/src/BasicTypes.hpp /home/cheshkov/alice/AliRoot/HLT/MUON/include/BasicTypes.hpp
+gmake[2]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+gmake[2]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/convert.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/convert.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/ClusterFinderProxy.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/ClusterFinderProxy.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/TrackerProxy.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/TrackerProxy.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Clustering/CenterOfGravityFinder.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/Clustering\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/Clustering\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Clustering/CenterOfGravityFinder.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Tracking/MansoTracker.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/Tracking\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/Tracking\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Tracking/MansoTracker.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Tracking/Calculations.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/Tracking\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/Tracking\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Tracking/Calculations.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/RegionOfInterest.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/RegionOfInterest.d
+echo // This file was generated with \"rules.mk\". Do not modify. > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/VersionNumbers.hpp
+echo \#define MAJOR_VERSION `cat /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/major.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/VersionNumbers.hpp
+echo \#define MINOR_VERSION `cat /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/minor.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/VersionNumbers.hpp
+echo \#define BUILD_NUMBER  `cat /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/build.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/VersionNumbers.hpp
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/Version.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Version.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Error.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Error.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Utils.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Utils.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/MicrodHLT.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/MicrodHLT.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/ClusterFinderCallback.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/ClusterFinderCallback.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/TrackerCallback.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/TrackerCallback.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/TrackSink.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/TrackSink.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/ClusterSource.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/ClusterSource.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/TriggerSource.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/TriggerSource.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/ADCStreamSource.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/ADCStreamSource.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/Track.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/Track.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/ADCStream.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/ADCStream.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/TriggerRecord.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/TriggerRecord.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/Point.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/Point.d
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/Region.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/AliRoot\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/Region.d
+gmake[2]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+gmake[2]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+rootcint -f /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Dictionary.cxx -c -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/dummy.h +P +STUB AliRoot/TrackerInterface.hpp AliRoot/ClusterFinderInterface.hpp -STUB AliRoot/Region.hpp AliRoot/Point.hpp AliRoot/TriggerRecord.hpp AliRoot/ADCStream.hpp AliRoot/Track.hpp AliRoot/ADCStreamSource.hpp AliRoot/TriggerSource.hpp AliRoot/ClusterSource.hpp AliRoot/TrackSink.hpp AliRoot/TrackerCallback.hpp AliRoot/ClusterFinderCallback.hpp AliRoot/MicrodHLT.hpp -P AliRoot/MUONHLTLinkDef.hpp
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Dictionary.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/MUONHLT\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Dictionary.d
+gmake[2]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+gmake[2]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/Region.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/Region.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/Point.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/Point.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/TriggerRecord.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/TriggerRecord.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/ADCStream.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/ADCStream.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/Track.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/Track.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/ADCStreamSource.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/ADCStreamSource.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/TriggerSource.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/TriggerSource.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/ClusterSource.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/ClusterSource.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/TrackSink.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/TrackSink.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/TrackerCallback.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/TrackerCallback.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/ClusterFinderCallback.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/ClusterFinderCallback.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/MicrodHLT.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/MicrodHLT.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Utils.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Utils.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Error.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Error.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/Version.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Version.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/RegionOfInterest.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/RegionOfInterest.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Tracking/Calculations.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Tracking/Calculations.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Tracking/MansoTracker.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Tracking/MansoTracker.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Clustering/CenterOfGravityFinder.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Clustering/CenterOfGravityFinder.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/TrackerProxy.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/TrackerProxy.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/ClusterFinderProxy.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/ClusterFinderProxy.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/convert.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/convert.o
+g++ -I/home/cheshkov/alice/AliRoot/MUON -I/home/cheshkov/alice/AliRoot/include/ -I/home/cheshkov/alice/root/include/ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux -D__ROOT__ -DUSE_ALILOG -DLOG_NO_DEBUG -DLINUX -fexceptions -Wall -fPIC -shared -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Dictionary.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Dictionary.o
+-------------------------------------------------------------------------------
+g++ -fexceptions -Wall -fPIC -shared -L/home/cheshkov/alice/AliRoot/HLT/MUON/lib/Linux  -O3 /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/Region.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/Point.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/TriggerRecord.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/ADCStream.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/Track.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/ADCStreamSource.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/TriggerSource.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/ClusterSource.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/TrackSink.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/TrackerCallback.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/ClusterFinderCallback.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/MicrodHLT.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Utils.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Error.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Version.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/RegionOfInterest.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Tracking/Calculations.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Tracking/MansoTracker.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Clustering/CenterOfGravityFinder.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/TrackerProxy.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/ClusterFinderProxy.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/AliRoot/convert.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/MUONHLT/Linux/Dictionary.o -o /home/cheshkov/alice/AliRoot/HLT/MUON/lib/Linux/libMUONHLT.so
+Made /home/cheshkov/alice/AliRoot/HLT/MUON/lib/Linux/libMUONHLT.so
+rm -f /home/cheshkov/alice/AliRoot/HLT/MUON/lib/libMUONHLT.so
+ln -s /home/cheshkov/alice/AliRoot/HLT/MUON/lib/Linux/libMUONHLT.so /home/cheshkov/alice/AliRoot/HLT/MUON/lib/libMUONHLT.so
+cp /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/Region.hpp /home/cheshkov/alice/AliRoot/HLT/MUON/include/AliRoot/Region.hpp
+cp /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/Point.hpp /home/cheshkov/alice/AliRoot/HLT/MUON/include/AliRoot/Point.hpp
+cp /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/TriggerRecord.hpp /home/cheshkov/alice/AliRoot/HLT/MUON/include/AliRoot/TriggerRecord.hpp
+cp /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/ADCStream.hpp /home/cheshkov/alice/AliRoot/HLT/MUON/include/AliRoot/ADCStream.hpp
+cp /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/Track.hpp /home/cheshkov/alice/AliRoot/HLT/MUON/include/AliRoot/Track.hpp
+cp /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/ADCStreamSource.hpp /home/cheshkov/alice/AliRoot/HLT/MUON/include/AliRoot/ADCStreamSource.hpp
+cp /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/TriggerSource.hpp /home/cheshkov/alice/AliRoot/HLT/MUON/include/AliRoot/TriggerSource.hpp
+cp /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/ClusterSource.hpp /home/cheshkov/alice/AliRoot/HLT/MUON/include/AliRoot/ClusterSource.hpp
+cp /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/TrackSink.hpp /home/cheshkov/alice/AliRoot/HLT/MUON/include/AliRoot/TrackSink.hpp
+cp /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/TrackerCallback.hpp /home/cheshkov/alice/AliRoot/HLT/MUON/include/AliRoot/TrackerCallback.hpp
+cp /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/ClusterFinderCallback.hpp /home/cheshkov/alice/AliRoot/HLT/MUON/include/AliRoot/ClusterFinderCallback.hpp
+cp /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/MicrodHLT.hpp /home/cheshkov/alice/AliRoot/HLT/MUON/include/AliRoot/MicrodHLT.hpp
+cp /home/cheshkov/alice/AliRoot/HLT/MUON/src/AliRoot/Tracker.hpp /home/cheshkov/alice/AliRoot/HLT/MUON/include/AliRoot/Tracker.hpp
+gmake[2]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+gmake[2]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Error.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/printrawdata\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/printrawdata\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/Error.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/new.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/printrawdata\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/printrawdata\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/new.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Utils.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/printrawdata\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/printrawdata\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/Utils.d
+echo // This file was generated with \"rules.mk\". Do not modify. > /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/VersionNumbers.hpp
+echo \#define MAJOR_VERSION `cat /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/major.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/VersionNumbers.hpp
+echo \#define MINOR_VERSION `cat /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/minor.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/VersionNumbers.hpp
+echo \#define BUILD_NUMBER  `cat /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/build.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/VersionNumbers.hpp
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/Version.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/printrawdata\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/printrawdata\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/Version.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/RegionOfInterest.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/printrawdata\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/printrawdata\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/RegionOfInterest.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/SystemError.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/printrawdata\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/printrawdata\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/System/SystemError.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/File.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/printrawdata\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/printrawdata\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/System/File.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Debug/printrawdata.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/printrawdata\/Linux\/Debug\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/printrawdata\/Linux\/Debug\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/Debug/printrawdata.d
+gmake[2]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+gmake[2]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Debug/printrawdata.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/Debug/printrawdata.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/File.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/System/File.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/SystemError.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/System/SystemError.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/RegionOfInterest.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/RegionOfInterest.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/Version.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/Version.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Utils.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/Utils.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/new.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/new.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Error.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/Error.o
+-------------------------------------------------------------------------------
+g++ -fexceptions -Wall -L/home/cheshkov/alice/AliRoot/HLT/MUON/lib/Linux  -O3 /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/Debug/printrawdata.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/System/File.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/System/SystemError.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/RegionOfInterest.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/Version.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/Utils.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/new.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/printrawdata/Linux/Error.o -o /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/printrawdata
+Made /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/printrawdata
+rm -f /home/cheshkov/alice/AliRoot/HLT/MUON/bin/printrawdata
+ln -s /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/printrawdata /home/cheshkov/alice/AliRoot/HLT/MUON/bin/printrawdata
+gmake[2]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+gmake[2]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/pubsub_size_tag/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/PubSub/pubsub_size_tag.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/pubsub_size_tag\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/pubsub_size_tag\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/pubsub_size_tag/Linux/pubsub_size_tag.d
+gmake[2]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+gmake[2]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/pubsub_size_tag/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/PubSub/pubsub_size_tag.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/pubsub_size_tag/Linux/pubsub_size_tag.o
+-------------------------------------------------------------------------------
+g++ -fexceptions -Wall -L/home/cheshkov/alice/AliRoot/HLT/MUON/lib/Linux  -O3 /home/cheshkov/alice/AliRoot/HLT/MUON/output/pubsub_size_tag/Linux/pubsub_size_tag.o -o /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/pubsub_size_tag
+Made /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/pubsub_size_tag
+rm -f /home/cheshkov/alice/AliRoot/HLT/MUON/bin/pubsub_size_tag
+ln -s /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/pubsub_size_tag /home/cheshkov/alice/AliRoot/HLT/MUON/bin/pubsub_size_tag
+gmake[2]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+gmake[2]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Error.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/Error.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/new.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/new.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Utils.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/Utils.d
+echo // This file was generated with \"rules.mk\". Do not modify. > /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/VersionNumbers.hpp
+echo \#define MAJOR_VERSION `cat /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/major.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/VersionNumbers.hpp
+echo \#define MINOR_VERSION `cat /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/minor.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/VersionNumbers.hpp
+echo \#define BUILD_NUMBER  `cat /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/build.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/VersionNumbers.hpp
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/Version.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/Version.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Debug/print.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/Debug\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/Debug\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/Debug/print.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/DDL/L2SignalSender.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/DDL\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/DDL\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/DDL/L2SignalSender.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/BCMP/EventQueue.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/BCMP\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/BCMP\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/BCMP/EventQueue.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/BCMP/Sender.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/BCMP\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/BCMP\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/BCMP/Sender.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/BCMP/Packets.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/BCMP\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/BCMP\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/BCMP/Packets.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/SignalHandler.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/System/SignalHandler.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Thread.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/System/Thread.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/MutexCondition.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/System/MutexCondition.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Mutex.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/System/Mutex.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Socket.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/System/Socket.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/SystemError.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/System/SystemError.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/DDL/signalL2.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/signalL2\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/signalL2.d
+gmake[2]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+gmake[2]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/DDL/signalL2.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/signalL2.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/SystemError.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/System/SystemError.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Socket.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/System/Socket.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Mutex.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/System/Mutex.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/MutexCondition.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/System/MutexCondition.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Thread.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/System/Thread.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/SignalHandler.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/System/SignalHandler.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/BCMP/Packets.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/BCMP/Packets.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/BCMP/Sender.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/BCMP/Sender.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/BCMP/EventQueue.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/BCMP/EventQueue.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/DDL/L2SignalSender.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/DDL/L2SignalSender.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Debug/print.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/Debug/print.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/Version.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/Version.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Utils.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/Utils.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/new.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/new.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Error.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/Error.o
+-------------------------------------------------------------------------------
+g++ -fexceptions -Wall -L/home/cheshkov/alice/AliRoot/HLT/MUON/lib/Linux -lpthread -O3 /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/signalL2.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/System/SystemError.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/System/Socket.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/System/Mutex.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/System/MutexCondition.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/System/Thread.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/System/SignalHandler.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/BCMP/Packets.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/BCMP/Sender.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/BCMP/EventQueue.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/DDL/L2SignalSender.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/Debug/print.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/Version.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/Utils.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/new.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/signalL2/Linux/Error.o -o /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/signalL2
+Made /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/signalL2
+rm -f /home/cheshkov/alice/AliRoot/HLT/MUON/bin/signalL2
+ln -s /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/signalL2 /home/cheshkov/alice/AliRoot/HLT/MUON/bin/signalL2
+gmake[2]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+gmake[2]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Tracking/EventHandler.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/Tracking\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/Tracking\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Tracking/EventHandler.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Tracking/IOHandler.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/Tracking\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/Tracking\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Tracking/IOHandler.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Debug/print.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/Debug\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/Debug\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Debug/print.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Debug/ClusterSource.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/Debug\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/Debug\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Debug/ClusterSource.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/RegionOfInterest.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/RegionOfInterest.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Utils.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Utils.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Error.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Error.d
+echo // This file was generated with \"rules.mk\". Do not modify. > /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/VersionNumbers.hpp
+echo \#define MAJOR_VERSION `cat /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/major.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/VersionNumbers.hpp
+echo \#define MINOR_VERSION `cat /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/minor.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/VersionNumbers.hpp
+echo \#define BUILD_NUMBER  `cat /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/build.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/VersionNumbers.hpp
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/Version.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Version.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/SystemError.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/System/SystemError.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Mutex.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/System/Mutex.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/PipeIO/tracker_main.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/tracker\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/tracker_main.d
+gmake[2]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+gmake[2]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/PipeIO/tracker_main.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/tracker_main.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Mutex.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/System/Mutex.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/SystemError.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/System/SystemError.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/Version.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Version.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Error.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Error.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Utils.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Utils.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/RegionOfInterest.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/RegionOfInterest.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Debug/ClusterSource.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Debug/ClusterSource.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Debug/print.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Debug/print.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Tracking/IOHandler.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Tracking/IOHandler.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Tracking/EventHandler.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Tracking/EventHandler.o
+-------------------------------------------------------------------------------
+g++ -fexceptions -Wall -L/home/cheshkov/alice/AliRoot/HLT/MUON/lib/Linux -ldHLT -O3 /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/tracker_main.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/System/Mutex.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/System/SystemError.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Version.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Error.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Utils.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/RegionOfInterest.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Debug/ClusterSource.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Debug/print.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Tracking/IOHandler.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/tracker/Linux/Tracking/EventHandler.o -o /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/tracker
+Made /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/tracker
+rm -f /home/cheshkov/alice/AliRoot/HLT/MUON/bin/tracker
+ln -s /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/tracker /home/cheshkov/alice/AliRoot/HLT/MUON/bin/tracker
+gmake[2]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+gmake[2]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Error.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/Error.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/new.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/new.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Utils.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/Utils.d
+echo // This file was generated with \"rules.mk\". Do not modify. > /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/VersionNumbers.hpp
+echo \#define MAJOR_VERSION `cat /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/major.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/VersionNumbers.hpp
+echo \#define MINOR_VERSION `cat /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/minor.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/VersionNumbers.hpp
+echo \#define BUILD_NUMBER  `cat /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/build.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/VersionNumbers.hpp
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/Version.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/Version.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/DDL/FileList.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/DDL\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/DDL\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/DDL/FileList.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/BCMP/EventQueue.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/BCMP\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/BCMP\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/BCMP/EventQueue.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/BCMP/Receiver.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/BCMP\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/BCMP\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/BCMP/Receiver.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/BCMP/Packets.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/BCMP\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/BCMP\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/BCMP/Packets.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Routines.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/Routines.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Directory.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/Directory.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/File.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/File.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Thread.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/Thread.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/MutexCondition.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/MutexCondition.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Mutex.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/Mutex.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Socket.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/Socket.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/SignalHandler.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/SignalHandler.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/SystemError.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/SystemError.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/PubSub/TriggerDDLFilePublisher.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/TriggerDDLFilePublisher\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/TriggerDDLFilePublisher.d
+gmake[2]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+gmake[2]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/PubSub/TriggerDDLFilePublisher.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/TriggerDDLFilePublisher.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/SystemError.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/SystemError.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/SignalHandler.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/SignalHandler.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Socket.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/Socket.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Mutex.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/Mutex.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/MutexCondition.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/MutexCondition.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Thread.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/Thread.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/File.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/File.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Directory.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/Directory.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Routines.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/Routines.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/BCMP/Packets.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/BCMP/Packets.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/BCMP/Receiver.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/BCMP/Receiver.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/BCMP/EventQueue.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/BCMP/EventQueue.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/DDL/FileList.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/DDL/FileList.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/Version.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/Version.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Utils.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/Utils.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/new.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/new.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Error.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/Error.o
+-------------------------------------------------------------------------------
+g++ -fexceptions -Wall -L/home/cheshkov/alice/AliRoot/HLT/MUON/lib/Linux -lpthread -O3 /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/TriggerDDLFilePublisher.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/SystemError.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/SignalHandler.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/Socket.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/Mutex.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/MutexCondition.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/Thread.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/File.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/Directory.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/System/Routines.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/BCMP/Packets.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/BCMP/Receiver.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/BCMP/EventQueue.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/DDL/FileList.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/Version.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/Utils.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/new.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/TriggerDDLFilePublisher/Linux/Error.o -o /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/TriggerDDLFilePublisher
+Made /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/TriggerDDLFilePublisher
+rm -f /home/cheshkov/alice/AliRoot/HLT/MUON/bin/TriggerDDLFilePublisher
+ln -s /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/TriggerDDLFilePublisher /home/cheshkov/alice/AliRoot/HLT/MUON/bin/TriggerDDLFilePublisher
+gmake[2]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+gmake[2]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Error.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/Error.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/new.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/new.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Utils.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/Utils.d
+echo // This file was generated with \"rules.mk\". Do not modify. > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/VersionNumbers.hpp
+echo \#define MAJOR_VERSION `cat /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/major.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/VersionNumbers.hpp
+echo \#define MINOR_VERSION `cat /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/minor.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/VersionNumbers.hpp
+echo \#define BUILD_NUMBER  `cat /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/build.number` >> /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/VersionNumbers.hpp
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/Version.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/Version.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/Debug/print.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/Debug\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/Debug\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/Debug/print.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/DDL/L2SignalReceiver.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/DDL\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/DDL\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/DDL/L2SignalReceiver.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/DDL/FileList.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/DDL\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/DDL\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/DDL/FileList.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/BCMP/EventQueue.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/BCMP\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/BCMP\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/BCMP/EventQueue.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/BCMP/Receiver.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/BCMP\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/BCMP\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/BCMP/Receiver.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/BCMP/Packets.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/BCMP\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/BCMP\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/BCMP/Packets.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Routines.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/Routines.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Directory.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/Directory.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/File.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/File.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Thread.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/Thread.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/MutexCondition.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/MutexCondition.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Mutex.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/Mutex.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Socket.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/Socket.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/SignalHandler.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/SignalHandler.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/SystemError.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/System\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/System\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/SystemError.d
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -MM /home/cheshkov/alice/AliRoot/HLT/MUON/src/PipeIO/triggerDDL.cxx | \
+       sed "s/\(.*\)\.o/\/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/\1\.o \/home\/cheshkov\/alice\/AliRoot\/HLT\/MUON\/output\/triggerDDL\/Linux\/\1\.d/g" > /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/triggerDDL.d
+gmake[2]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+gmake[2]: Entering directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/PipeIO/triggerDDL.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/triggerDDL.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/SystemError.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/SystemError.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/SignalHandler.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/SignalHandler.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Socket.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/Socket.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Mutex.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/Mutex.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/MutexCondition.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/MutexCondition.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Thread.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/Thread.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/File.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/File.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Directory.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/Directory.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/System/Routines.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/Routines.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/BCMP/Packets.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/BCMP/Packets.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/BCMP/Receiver.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/BCMP/Receiver.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/BCMP/EventQueue.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/BCMP/EventQueue.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/DDL/FileList.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/DDL/FileList.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/DDL/L2SignalReceiver.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/DDL/L2SignalReceiver.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Debug/print.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/Debug/print.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Version/Version.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/Version.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Utils.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/Utils.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/new.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/new.o
+g++ -I/home/cheshkov/alice/AliRoot/HLT/MUON/src -I/home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux -DUSE_GETDENTS_SYSCALL -DLINUX -fexceptions -Wall -O3 -c /home/cheshkov/alice/AliRoot/HLT/MUON/src/Error.cxx -o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/Error.o
+-------------------------------------------------------------------------------
+g++ -fexceptions -Wall -L/home/cheshkov/alice/AliRoot/HLT/MUON/lib/Linux -lpthread -O3 /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/triggerDDL.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/SystemError.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/SignalHandler.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/Socket.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/Mutex.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/MutexCondition.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/Thread.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/File.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/Directory.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/System/Routines.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/BCMP/Packets.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/BCMP/Receiver.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/BCMP/EventQueue.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/DDL/FileList.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/DDL/L2SignalReceiver.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/Debug/print.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/Version.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/Utils.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/new.o /home/cheshkov/alice/AliRoot/HLT/MUON/output/triggerDDL/Linux/Error.o -o /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/triggerDDL
+Made /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/triggerDDL
+rm -f /home/cheshkov/alice/AliRoot/HLT/MUON/bin/triggerDDL
+ln -s /home/cheshkov/alice/AliRoot/HLT/MUON/bin/Linux/triggerDDL /home/cheshkov/alice/AliRoot/HLT/MUON/bin/triggerDDL
+gmake[2]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
+gmake[1]: Leaving directory `/home/cheshkov/alice/AliRoot/HLT/MUON'
diff --git a/HLT/MUON/scripts/extractdata.sh b/HLT/MUON/scripts/extractdata.sh
new file mode 100644 (file)
index 0000000..5f56a42
--- /dev/null
@@ -0,0 +1,48 @@
+#!/bin/bash
+#
+# need pubsub_size_tag program visible
+
+usage="<simplefile input directory> <number of events> [<output directory> (optional, default is current)]"
+
+if [[ "$1" == "-h" || "$1" == "-help" || "$1" == "--help" ]] ; then
+  echo Usage: $0 $usage
+  exit
+fi
+
+if [ `file $1 | awk '{print $2}'` != "directory" ]; then
+  echo Error: $1 not a directory
+  echo Usage: $0 $usage
+  exit
+fi
+
+case $2 in 
+
+  *[!0-9+-]*|?*[-+]*|""|-|+)
+    echo Error: $2 not an integer
+    echo Usage: $0 $usage
+    exit
+    ;;
+
+  *)
+    if [ ! $2 -ge 0 ] ; then
+      echo Error: $2 not a positive integer
+      echo Usage: $0 $usage
+      exit
+    fi
+    ;;
+
+esac
+
+
+dir=`pwd`
+
+if [ ! -z "$3" ] ; then
+  mkdir $3
+  dir=$3
+fi
+
+for (( i = 0 ; i < $2 ; i++ ));  do
+  suffix=`EventStorageExtractor -storagetype simplefile -storagename $1 -eventnr $i -metadatadump | grep fDataType | grep fDataBlocks | awk '{print $4}' | sed s/\(// | tr A-Z a-z`
+  EventStorageExtractor -storagetype simplefile -storagename $1 -eventnr $i -datadump > $dir/event_$i.$suffix
+  ../bin/pubsub_size_tag -c $dir/event_$i.$suffix
+done
diff --git a/HLT/MUON/src/ADCStream.hpp b/HLT/MUON/src/ADCStream.hpp
new file mode 100644 (file)
index 0000000..d2463ad
--- /dev/null
@@ -0,0 +1,24 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef dHLT_ADC_STREAM_HPP
+#define dHLT_ADC_STREAM_HPP
+
+#include "BasicTypes.hpp"
+
+namespace dHLT
+{
+
+
+class ADCStream
+{
+};
+
+
+} // dHLT
+
+#endif // dHLT_ADC_STREAM_HPP
diff --git a/HLT/MUON/src/AliRoot/ADCStream.cxx b/HLT/MUON/src/AliRoot/ADCStream.cxx
new file mode 100644 (file)
index 0000000..94866df
--- /dev/null
@@ -0,0 +1,84 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#include "AliRoot/ADCStream.hpp"
+#include "TMath.h"
+#include "Utils.hpp"
+
+
+ClassImp(AliMUONHLT::ADCStream);
+
+namespace AliMUONHLT
+{
+
+
+ADCStream::ADCStream() : TObject()
+{
+       fData.Set(0);
+};
+
+
+ADCStream::ADCStream(const UInt_t* data, const UInt_t size)
+{
+       fData.Set(size, (Int_t*)data);
+};
+
+
+ADCStream::~ADCStream()
+{
+       fData.Reset();
+};
+
+
+UInt_t ADCStream::Size()
+{
+       return fData.GetSize();
+};
+
+
+void ADCStream::Size(const UInt_t size)
+{
+       fData.Set(size);
+};
+
+
+void ADCStream::Fill(const UInt_t* data, const UInt_t size)
+{
+       fData.Set(size, (Int_t*)data);
+};
+
+
+// UInt_t& ADCStream::operator [] (const UInt_t index)
+// {
+//     Assert( index < (UInt_t) fData.GetSize() );
+//     return (UInt_t) fData[index];
+// };
+
+
+UInt_t ADCStream::operator [] (const UInt_t index) const
+{
+       Assert( index < (UInt_t) fData.GetSize() );
+       return fData[index];
+};
+
+
+std::ostream& operator << (std::ostream& os, const ADCStream& s)
+{
+       os << "{ADCStream: " << (void*)s.Data() << "}";
+       os << std::endl;
+       for (Int_t i = 0; i < s.fData.GetSize(); i++)
+       {
+               char buffer[32];
+               char* str = (char*)&buffer[0];
+               sprintf(str, "0x%X", s.fData[i]);
+               os << i << "\t" << str << std::endl;
+       };
+       return os;
+};
+
+
+}; // AliMUONHLT
diff --git a/HLT/MUON/src/AliRoot/ADCStream.hpp b/HLT/MUON/src/AliRoot/ADCStream.hpp
new file mode 100644 (file)
index 0000000..45e65cd
--- /dev/null
@@ -0,0 +1,56 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef dHLT_ALIROOT_ADC_STREAM_HPP
+#define dHLT_ALIROOT_ADC_STREAM_HPP
+
+#include "TObject.h"
+#include "TArrayI.h"
+#include <ostream>
+
+
+namespace AliMUONHLT
+{
+
+
+class ADCStream : public TObject
+{
+public:
+
+       /* Default constructor initialises everything to zero.
+        */
+       ADCStream();
+       
+       ADCStream(const UInt_t* data, const UInt_t size);
+
+       virtual ~ADCStream();
+       
+       UInt_t Size();
+       void Size(const UInt_t size);
+       void Fill(const UInt_t* data, const UInt_t size);
+       
+       UInt_t* Data() { return (UInt_t*) fData.GetArray(); };
+       const UInt_t* Data() const { return (UInt_t*) fData.GetArray(); };
+       
+//     UInt_t& operator [] (const UInt_t index);
+       UInt_t operator [] (const UInt_t index) const;
+
+       // ostream operator usefull for text output.
+       friend std::ostream& operator << (std::ostream& os, const ADCStream& s);
+
+private:
+
+       // TODO: complete the ADC stream specification.
+       TArrayI fData;
+
+       ClassDef(ADCStream, 1);  // ADC stream data.
+};
+
+
+}; // AliMUONHLT
+
+#endif // dHLT_ALIROOT_ADC_STREAM_HPP
diff --git a/HLT/MUON/src/AliRoot/ADCStreamSource.cxx b/HLT/MUON/src/AliRoot/ADCStreamSource.cxx
new file mode 100644 (file)
index 0000000..bb6413b
--- /dev/null
@@ -0,0 +1,244 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#include "AliRoot/ADCStreamSource.hpp"
+#include "AliRoot/Base.hpp"
+#include "TSystem.h"
+#include "stdio.h"
+
+// TODO: Change all the Error message statements to AliError at some stage.
+
+
+ClassImp(AliMUONHLT::ADCStreamSource);
+ClassImp(AliMUONHLT::ADCStreamSource::DataBlock);
+
+namespace AliMUONHLT
+{
+
+
+ADCStreamSource::ADCStreamSource() : TObject()
+{
+       fCurrentStream = -1;
+};
+
+
+ADCStreamSource::~ADCStreamSource()
+{
+       // Everything is cleaned up implicitly.
+};
+
+
+void ADCStreamSource::FillFromFile(const TString& filename, const Int_t eventnumber)
+{
+       DebugMsg(1, "Entering FillFromFile, file = " << filename.Data()
+               << ", event number = " << eventnumber
+       );
+       FILE* file = fopen(filename, "r");
+       try
+       {
+               Long_t id = -1;
+               Long64_t size = -1;
+               Long_t flags = -1;
+               Long_t modtime = -1;
+               if ( gSystem->GetPathInfo(filename, &id, &size, &flags, &modtime) == 0 )
+               {
+                       DebugMsg(2, "Size of file: " << filename.Data() << " is " << size << " bytes");
+                       ADCStream stream;
+                       stream.Size(size/sizeof(Int_t));
+                       size_t bytesread = fread(stream.Data(), 1, size, file);
+                       if (bytesread == (size_t)size)
+                               AddStream(stream, eventnumber);
+                       else
+                               Error("FillFromFile", "Could not read from file: %s", filename.Data());
+               }
+               else
+                       Error("FillFromFile", "Could not stat the file: %s", filename.Data());
+       }
+       finally
+       (
+               fclose(file);
+       );
+       
+       DebugMsg(1, "Leaving FillFromFile");
+};
+
+
+void ADCStreamSource::FillFrom(const TString& directory, const Int_t eventnumber)
+{
+       DebugMsg(1, "Entering FillFrom, directory = " << directory.Data()
+               << ", event number = " << eventnumber
+       );
+       
+       void* dir = gSystem->OpenDirectory(directory);
+       try
+       {
+               const char* entry = gSystem->GetDirEntry(dir);
+               while (entry != NULL)
+               {
+                       TString filename = entry;
+                       if (filename.BeginsWith("MUON"))
+                               FillFromFile(filename, eventnumber);
+                       entry = gSystem->GetDirEntry(dir);
+               };
+       }
+       finally
+       (
+               gSystem->FreeDirectory(dir);
+       );
+       
+       
+       DebugMsg(1, "Leaving FillFrom");
+};
+
+
+void ADCStreamSource::FillFrom(const TString& dirprefix, const UInt_t firstevent, const UInt_t lastevent)
+{
+       DebugMsg(1, "Entering FillFrom");
+       
+       for (UInt_t i = firstevent; i <= lastevent; i++)
+       {
+               TString dirname = dirprefix;
+               dirname += i;
+               FillFrom(dirname, i);
+       };
+       
+       DebugMsg(1, "Leaving FillFrom");
+};
+
+
+void ADCStreamSource::Clear()
+{
+       fCurrentStream = -1;
+       fList.erase( fList.begin(), fList.end() );
+};
+
+
+Int_t ADCStreamSource::NumberOfStreams() const
+{
+       return fList.size();
+};
+
+
+Bool_t ADCStreamSource::GetStream(const Int_t index) const
+{
+       if ( 0 <= index and index < NumberOfStreams() )
+       {
+               fCurrentStream = index;
+               return kTRUE;
+       }
+       else
+       {
+               // The index is out of bounds so inform the user.
+               if (NumberOfStreams() > 0)
+                       Error(  "GetStream",
+                               "The ADC stream index (%d) is out of bounds. Valid range is [0, %d]",
+                               index, NumberOfStreams() - 1
+                       );
+               else
+                       Error(  "GetStream",
+                               "The ADC stream index (%d) is out of bounds. No streams found.",
+                               index
+                       );
+               return kFALSE;
+       };
+};
+
+
+Bool_t ADCStreamSource::FirstStream() const
+{
+       if (NumberOfStreams() > 0)
+       {
+               fCurrentStream = 0;
+               return kTRUE;
+       }
+       else
+               return kFALSE;
+};
+
+
+Bool_t ADCStreamSource::NextStream() const
+{
+       if ( 0 <= fCurrentStream and fCurrentStream < NumberOfStreams() - 1 )
+       {
+               fCurrentStream++;
+               return kTRUE;
+       }
+       else
+               return kFALSE;
+};
+
+
+Int_t ADCStreamSource::EventNumber() const
+{
+       if (fCurrentStream >= 0)
+       {
+               Assert( fCurrentStream < NumberOfStreams() );
+               return fList[fCurrentStream].fEventNumber;
+       }
+       else
+       {
+               Error("EventNumber", "No ADC stream selected.");
+               return -1;
+       };
+};
+
+
+Bool_t ADCStreamSource::FetchStream(ADCStream& stream) const
+{
+       if (fCurrentStream >= 0)
+       {
+               Assert( fCurrentStream < NumberOfStreams() );
+               stream = fList[fCurrentStream].fStream;
+               return kTRUE;
+       }
+       else
+       {
+               Error("FetchStream", "No ADC stream selected.");
+               return kFALSE;
+       };
+};
+
+
+Bool_t ADCStreamSource::FetchStream(const Int_t index, ADCStream& stream) const
+{
+       if ( GetStream(index) )
+               return FetchStream(stream);
+       else
+               return kFALSE;
+};
+
+
+const ADCStream* ADCStreamSource::FetchStream() const
+{
+       if (fCurrentStream >= 0)
+       {
+               Assert( fCurrentStream < NumberOfStreams() );
+               return &( fList[fCurrentStream].fStream );
+       }
+       else
+       {
+               Error("FetchStream", "No ADC stream selected.");
+               return NULL;
+       };
+};
+
+
+void ADCStreamSource::AddStream(ADCStream& stream, const UInt_t eventnumber)
+{
+       DebugMsg(1, "Entering AddStream");
+       
+       DataBlock newdata;
+       newdata.fEventNumber = eventnumber;
+       newdata.fStream = stream;
+       fList.push_back(newdata);
+       fCurrentStream = fList.size() - 1;
+       
+       DebugMsg(1, "Leaving AddStream");
+};
+
+
+}; // AliMUONHLT
diff --git a/HLT/MUON/src/AliRoot/ADCStreamSource.hpp b/HLT/MUON/src/AliRoot/ADCStreamSource.hpp
new file mode 100644 (file)
index 0000000..9ba807c
--- /dev/null
@@ -0,0 +1,122 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef dHLT_ALIROOT_ADC_STREAM_SOURCE_HPP
+#define dHLT_ALIROOT_ADC_STREAM_SOURCE_HPP
+
+#include "TROOT.h"
+#include "TObject.h"
+#include "TString.h"
+#include "AliRoot/ADCStream.hpp"
+
+#include <vector>
+
+namespace AliMUONHLT
+{
+
+
+class ADCStreamSource : public TObject
+{
+public:
+
+       ADCStreamSource();
+       virtual ~ADCStreamSource();
+
+       /* Fills the internal data structures from the specified file
+        */
+       void FillFromFile(const TString& filename, const Int_t eventnumber);
+       
+       /* Fills the internal data structures from the specified directory.
+          FillFromFile is called for every file in the directory that is
+          prefixed with MUON_ and ends in .ddl
+        */
+       void FillFrom(const TString& directory, const Int_t eventnumber);
+       
+       /* Same as the methods above except the directory name is created as
+          dirprefix + eventnumber, where eventnumber is looped from firstevent
+          to lastevent.
+        */
+       void FillFrom(const TString& dirprefix, const UInt_t firstevent, const UInt_t lastevent);
+       
+       /* Clears all the internal arrays.
+        */
+       void Clear();
+       
+       // Get methods.
+       Int_t CurrentStream()  const { return fCurrentStream; };
+       
+       /* Returns the number of ADC streams stored.
+        */
+       Int_t NumberOfStreams() const;
+       
+       /* Fetches the index'th ADC stream stored.
+          kTRUE is returned if the stream was found, kFALSE otherwise.
+        */
+       Bool_t GetStream(const Int_t index) const;
+       
+       /* Fetches the first ADC stream stored.
+          kTRUE is returned if the stream was found, kFALSE otherwise.
+        */
+       Bool_t FirstStream() const;
+       
+       /* Fetches the next ADC stream stored following the currently selected one.
+          kTRUE is returned if the stream was found, kFALSE otherwise.
+        */
+       Bool_t NextStream() const;
+       
+       /* Returns the corresponding AliRoot event number for the current stream.
+          -1 is returned if no stream is selected.
+        */
+       Int_t EventNumber() const;
+       
+       /* Returns the current ADC stream selected.
+          kFALSE is returned if there is no stream selected.
+        */
+       Bool_t FetchStream(ADCStream& stream) const;
+       
+       /* Returns the index'th ADC stream.
+          kTRUE is returned if the stream was found, kFALSE otherwise.
+        */
+       Bool_t FetchStream(const Int_t index, ADCStream& stream) const;
+       
+       /* Returns the current ADC stream selected.
+          A NULL pointer is returned if no ADC stream is selected.
+        */
+       const ADCStream* FetchStream() const;
+
+private:
+
+       /* Adds a new ADCStream object to the internal arrays.
+        */
+       void AddStream(ADCStream& stream, const UInt_t eventnumber);
+
+       mutable Int_t fCurrentStream;  //! The currently selected stream index.
+       
+
+public:  // Unfortunately ROOT requires the following to be public.
+       
+       struct DataBlock
+       {
+               virtual ~DataBlock() {};
+
+               Int_t fEventNumber;  // Event number of the stream.
+               ADCStream fStream;  // The ADC stream block.
+               
+               ClassDef(DataBlock, 1);  // Data per event.
+       };
+
+private:
+
+       std::vector<DataBlock> fList;  // List of ADC streams.
+
+       ClassDef(ADCStreamSource, 1);  // The source of ADC stream data for dHLT.
+};
+
+
+}; // AliMUONHLT
+
+#endif // dHLT_ALIROOT_ADC_STREAM_SOURCE_HPP
diff --git a/HLT/MUON/src/AliRoot/Base.hpp b/HLT/MUON/src/AliRoot/Base.hpp
new file mode 100644 (file)
index 0000000..a8e92cf
--- /dev/null
@@ -0,0 +1,27 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef dHLT_ALIROOT_BASE_HPP
+#define dHLT_ALIROOT_BASE_HPP
+
+#include "TError.h"
+#include "TMath.h"
+#include "Utils.hpp"
+
+
+// I prefer to have the option of compiling in the ROOT Assert statements.
+#ifndef COMPILE_ROOT_ASSERT
+#      ifndef DEBUG
+               // If we are not building the DEBUG version then remove the
+               // compilation of Assert.
+#              undef Assert
+#              define Assert(code) 
+#      endif // DEBUG
+#endif // COMPILE_ROOT_ASSERT
+
+
+#endif // dHLT_ALIROOT_BASE_HPP
diff --git a/HLT/MUON/src/AliRoot/ClusterFinderCallback.cxx b/HLT/MUON/src/AliRoot/ClusterFinderCallback.cxx
new file mode 100644 (file)
index 0000000..b9c2a8d
--- /dev/null
@@ -0,0 +1,10 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#include "AliRoot/ClusterFinderCallback.hpp"
+
+ClassImp(AliMUONHLT::ClusterFinderCallback);
diff --git a/HLT/MUON/src/AliRoot/ClusterFinderCallback.hpp b/HLT/MUON/src/AliRoot/ClusterFinderCallback.hpp
new file mode 100644 (file)
index 0000000..85f637d
--- /dev/null
@@ -0,0 +1,31 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef dHLT_ALIROOT_CLUSTER_FINDER_CALLBACK_HPP
+#define dHLT_ALIROOT_CLUSTER_FINDER_CALLBACK_HPP
+
+#include "TObject.h"
+
+
+namespace AliMUONHLT
+{
+
+
+class ClusterFinderCallback : public TObject
+{
+public:
+
+       virtual void FoundClusters(const UInt_t numberfound) = 0;
+       virtual void NoClustersFound() = 0;
+       
+       ClassDef(ClusterFinderCallback, 0);  // Abstract cluster finder callback class.
+};
+
+
+} // AliMUONHLT
+
+#endif // dHLT_ALIROOT_CLUSTER_FINDER_CALLBACK_HPP
diff --git a/HLT/MUON/src/AliRoot/ClusterFinderInterface.hpp b/HLT/MUON/src/AliRoot/ClusterFinderInterface.hpp
new file mode 100644 (file)
index 0000000..6e70d6b
--- /dev/null
@@ -0,0 +1,49 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef dHLT_ALIROOT_CLUSTER_FINDER_INTERFACE_HPP
+#define dHLT_ALIROOT_CLUSTER_FINDER_INTERFACE_HPP
+
+#include "Rtypes.h"
+
+
+namespace AliMUONHLT
+{
+
+class Point;
+class ADCStream;
+class ClusterFinder;
+class ClusterFinderCallback;
+
+
+class ClusterFinderInterface
+{
+public:
+       ClusterFinderInterface(ClusterFinder* clusterfinder)
+       {
+               fClusterFinder = clusterfinder;
+       };
+       
+       const ClusterFinder* GetClusterFinder() const
+       {
+               return fClusterFinder;
+       };
+       
+       void FindClusters(const ADCStream* stream);
+       UInt_t FillClusterData(Point* clusters, const UInt_t arraysize);
+       void Reset();
+       void SetCallback(ClusterFinderCallback* callback);
+
+private:
+
+       ClusterFinder* fClusterFinder;   //! Pointer to interpreted cluster finder class.
+};
+
+
+}; // AliMUONHLT
+
+#endif // dHLT_ALIROOT_CLUSTER_FINDER_INTERFACE_HPP
diff --git a/HLT/MUON/src/AliRoot/ClusterFinderProxy.cxx b/HLT/MUON/src/AliRoot/ClusterFinderProxy.cxx
new file mode 100644 (file)
index 0000000..dd69e60
--- /dev/null
@@ -0,0 +1,81 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#include "AliRoot/ClusterFinderProxy.hpp"
+#include "AliRoot/ADCStream.hpp"
+#include "AliRoot/convert.hpp"
+#include "Utils.hpp"
+#include "new.hpp"
+
+namespace dHLT
+{
+namespace AliRoot
+{
+
+
+ClusterFinderProxy::ClusterFinderProxy(AliMUONHLT::ClusterFinderInterface* client)
+       : Clustering::ClusterFinder(), AliMUONHLT::ClusterFinderCallback()
+{
+       clusterfinder = client;
+};
+
+
+void ClusterFinderProxy::FindClusters(const ADCStream* stream)
+{
+       // TODO: perform conversion
+       //AliMUONHLT::ADCStream stream = Convert(stream);
+       AliMUONHLT::ADCStream adc;
+       DebugMsg(6, "ClusterFinderProxy::FindClusters: " << adc);
+       clusterfinder->FindClusters(&adc);
+};
+
+
+UInt ClusterFinderProxy::FillClusterData(ClusterPoint* clusters, const UInt arraysize)
+{
+       UInt result;
+       AliMUONHLT::Point* points = new AliMUONHLT::Point[arraysize];
+       try
+       {
+               DebugMsg(6, "ClusterFinderProxy::FillClusterData");
+               result = clusterfinder->FillClusterData(points, arraysize);
+               for (UInt i = 0; i < arraysize; i++)
+               {
+                       clusters[i] = Convert(points[i]);
+                       DebugMsg(6, "\tpoints[" << i << "] = " << points[i] );
+               };
+       }
+       finally
+       (
+               delete [] points;
+       );
+       return result;
+};
+
+
+void ClusterFinderProxy::Reset()
+{
+       DebugMsg(6, "ClusterFinderProxy::Reset");
+       clusterfinder->Reset();
+};
+
+
+void ClusterFinderProxy::FoundClusters(const UInt_t numberfound)
+{
+       DebugMsg(6, "ClusterFinderProxy::FoundClusters");
+       Clustering::ClusterFinder::FoundClusters(numberfound);
+};
+
+
+void ClusterFinderProxy::NoClustersFound()
+{
+       DebugMsg(6, "ClusterFinderProxy::NoClustersFound");
+       Clustering::ClusterFinder::NoClustersFound();
+};
+
+
+}; // AliRoot
+}; // dHLT
diff --git a/HLT/MUON/src/AliRoot/ClusterFinderProxy.hpp b/HLT/MUON/src/AliRoot/ClusterFinderProxy.hpp
new file mode 100644 (file)
index 0000000..62cd6d4
--- /dev/null
@@ -0,0 +1,46 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef dHLT_ALIROOT_CLUSTER_FINDER_PROXY_HPP
+#define dHLT_ALIROOT_CLUSTER_FINDER_PROXY_HPP
+
+#include "Clustering/ClusterFinder.hpp"
+#include "AliRoot/ClusterFinderCallback.hpp"
+#include "AliRoot/ClusterFinderInterface.hpp"
+
+namespace dHLT
+{
+namespace AliRoot
+{
+
+
+class ClusterFinderProxy : public Clustering::ClusterFinder, public AliMUONHLT::ClusterFinderCallback
+{
+public:
+
+       ClusterFinderProxy(AliMUONHLT::ClusterFinderInterface* client);
+       virtual ~ClusterFinderProxy() {};
+
+       // inherited methods from Clustering::ClusterFinder:
+       virtual void FindClusters(const ADCStream* stream);
+       virtual UInt FillClusterData(ClusterPoint* clusters, const UInt arraysize);
+       virtual void Reset();
+
+       // inherited methods from AliMUONHLT::ClusterFinderCallback:
+       virtual void FoundClusters(const UInt_t numberfound);
+       virtual void NoClustersFound();
+
+private:
+
+       AliMUONHLT::ClusterFinderInterface* clusterfinder;  // The clusterfinder we are proxying for.
+};
+
+
+}; // AliRoot
+}; // dHLT
+
+#endif // dHLT_ALIROOT_CLUSTER_FINDER_PROXY_HPP
diff --git a/HLT/MUON/src/AliRoot/ClusterSource.cxx b/HLT/MUON/src/AliRoot/ClusterSource.cxx
new file mode 100644 (file)
index 0000000..8956392
--- /dev/null
@@ -0,0 +1,784 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#include "AliRoot/ClusterSource.hpp"
+#include "AliRoot/Base.hpp"
+#include "AliMUONConstants.h"
+#include "AliMUONHit.h"
+#include "AliMUONRawCluster.h"
+#include "AliMUONDataInterface.h"
+
+ClassImp(AliMUONHLT::ClusterSource);
+ClassImp(AliMUONHLT::ClusterSource::BlockData);
+ClassImp(AliMUONHLT::ClusterSource::EventData);
+
+namespace AliMUONHLT
+{
+
+
+ClusterSource::ClusterSource()
+       : TObject(), fEventList(ClusterSource::EventData::Class())
+{
+       fAreaToUse = FromWholePlane;
+       fDataToUse = FromRawClusters;
+       fMaxBlockSize = 0xFFFFFFFF;
+       fFilename = "";
+       fFoldername = "";
+       ResetAllPointers();
+};
+
+
+ClusterSource::ClusterSource(AliMUONDataInterface* data)
+       : TObject(), fEventList(ClusterSource::EventData::Class())
+{
+       fAreaToUse = FromWholePlane;
+       fDataToUse = FromRawClusters;
+       fMaxBlockSize = 0xFFFFFFFF;
+       fFilename = "";
+       fFoldername = "";
+       ResetAllPointers();
+       FillFrom(data);
+};
+
+
+ClusterSource::~ClusterSource()
+{
+       fEventList.Clear("C");
+};
+
+
+void ClusterSource::FillFrom(AliMUONDataInterface* data)
+{
+       DebugMsg(1, "FillFrom(AliMUONDataInterface*)");
+       
+       if (FileAndFolderOk(data))
+       {
+               for (Int_t i = 0; i < data->NumberOfEvents(); i++)
+               {
+                       AddEventFrom(data, i);
+               };
+       };
+};
+
+
+void ClusterSource::FillFrom(AliMUONDataInterface* data, const Int_t event)
+{
+       DebugMsg(1, "FillFrom(AliMUONDataInterface*, Int_t)");
+       
+       if (FileAndFolderOk(data))
+               AddEventFrom(data, event);
+};
+
+
+void ClusterSource::FillFrom(AliMUONDataInterface* data, const Int_t event, const Int_t chamber)
+{
+       DebugMsg(1, "FillFrom(AliMUONDataInterface*, Int_t)");
+       
+       if (FileAndFolderOk(data))
+       {
+               if ( data->GetEvent(event) )
+               {
+                       AddEvent(event);
+                       AddChamberFrom(data, chamber);
+               };
+       };
+};
+
+
+void ClusterSource::FillFrom(
+               AliMUONDataInterface* data,
+               const Int_t event, const Int_t chamber, const Int_t cluster,
+               const Bool_t newblock
+       )
+{
+       DebugMsg(1, "FillFrom(AliMUONDataInterface*, Int_t, Int_t, Int_t, Bool_t)");
+       
+       if (FileAndFolderOk(data))
+       {
+               data->GetEvent(event);
+
+               // Check if the current event corresponds to the event number we are
+               // attempting to add to. If they do not or no event is selected then
+               // try find the event or create a new one.
+               if ( fCurrentEvent == NULL )
+               {
+                       Bool_t found = GetEvent(event);
+                       if (not found) AddEvent(event);
+               }
+               else
+               {
+                       if (fCurrentEvent->fEventNumber != event)
+                       {
+                               Bool_t found = GetEvent(event);
+                               if (not found) AddEvent(event);
+                       };
+               };
+               
+               if ( fCurrentBlock != 0)
+               {
+                       Assert( fCurrentEvent != NULL );
+                       
+                       if ( fCurrentBlock->fChamber != chamber)
+                       {
+                               // Create a new block if the current blocks chamber number does
+                               // not correspond to the specified chamber.
+                               AddBlock(chamber);
+                       }
+                       else
+                       {
+                               // If the newblock flag is set then force a new block.
+                               if (newblock) AddBlock(chamber);
+                       };
+               }
+               else
+                       AddBlock(chamber);  // No block selected so we need to create a new block.
+
+               AddClusterFrom(data, chamber, cluster);
+       };
+};
+
+
+void ClusterSource::Clear()
+{
+       fFilename = "";
+       fFoldername = "";
+       ResetAllPointers();
+       fEventList.Clear("C");
+};
+
+
+Bool_t ClusterSource::GetEvent(const Int_t eventnumber) const
+{
+       DebugMsg(1, "ClusterSource::GetEvent(" << eventnumber << ")" );
+       
+       // Try find the corresponding event in the list of events.
+       for (Int_t i = 0; i < fEventList.GetEntriesFast(); i++)
+       {
+               EventData* current = (EventData*) fEventList[i];
+               if (current->fEventNumber == eventnumber)
+               {
+                       fEventIndex = i;
+                       fCurrentEvent = current;
+                       GetFirstBlock();
+                       DebugMsg(2, "\tfEventIndex = " << fEventIndex << " , fBlockIndex = " << fBlockIndex
+                               << " , fClusterIndex = " << fClusterIndex
+                       );
+                       return kTRUE;
+               };
+       };
+       return kFALSE;
+};
+
+
+Bool_t ClusterSource::GetFirstEvent() const
+{
+       DebugMsg(1, "ClusterSource::GetFirstEvent()");
+       if (fEventList.GetEntriesFast() > 0)
+       {
+               fEventIndex = 0;
+               fCurrentEvent = (EventData*) fEventList[0];
+               GetFirstBlock();
+               DebugMsg(2, "\tfEventIndex = " << fEventIndex << " , fBlockIndex = " << fBlockIndex
+                       << " , fClusterIndex = " << fClusterIndex
+               );
+               return kTRUE;
+       }
+       else
+       {
+               DebugMsg(2, "\tfEventIndex = " << fEventIndex << " , fBlockIndex = " << fBlockIndex
+                       << " , fClusterIndex = " << fClusterIndex
+               );
+               return kFALSE;
+       };
+};
+
+
+Bool_t ClusterSource::MoreEvents() const
+{
+       return 0 <= fEventIndex and fEventIndex < fEventList.GetEntriesFast();
+};
+
+
+Bool_t ClusterSource::GetNextEvent() const
+{
+       DebugMsg(1, "ClusterSource::GetNextEvent()");
+       if (fEventIndex < fEventList.GetEntriesFast() - 1)
+       {
+               fCurrentEvent = (EventData*) fEventList[ ++fEventIndex ];
+               GetFirstBlock();
+               DebugMsg(2, "\tfEventIndex = " << fEventIndex << " , fBlockIndex = " << fBlockIndex
+                       << " , fClusterIndex = " << fClusterIndex
+               );
+               return kTRUE;
+       }
+       else
+       {
+               ResetAllPointers();
+               return kFALSE;
+       };
+};
+
+
+Int_t ClusterSource::CurrentEvent() const
+{
+       if (fCurrentEvent != NULL)
+               return fCurrentEvent->fEventNumber;
+       else
+               return -1;
+};
+
+
+Int_t ClusterSource::NumberOfBlocks() const
+{
+       DebugMsg(1, "ClusterSource::NumberOfBlocks()");
+       if (fCurrentEvent == NULL)
+       {
+               Error("NumberOfBlocks", "No event selected.");
+               return -1;
+       }
+       else
+               return fCurrentEvent->fBlocks.GetEntriesFast();
+};
+
+
+Bool_t ClusterSource::GetBlock(const Int_t index) const
+{
+       DebugMsg(1, "ClusterSource::GetBlock(" << index << ")");
+       
+       // Note NumberOfBlocks() also checks if the event was selected.
+       Int_t numberofblocks = NumberOfBlocks();
+       if (numberofblocks < 0) return kFALSE;
+
+       if ( 0 <= index and index < numberofblocks )
+       {
+               fBlockIndex = index;
+               fCurrentBlock = (BlockData*) fCurrentEvent->fBlocks[index];
+               GetFirstCluster();
+               DebugMsg(2, "\tfEventIndex = " << fEventIndex << " , fBlockIndex = " << fBlockIndex
+                       << " , fClusterIndex = " << fClusterIndex
+               );
+               return kTRUE;
+       }
+       else
+       {
+               // The index is out of bounds so inform the user.
+               if (numberofblocks > 0)
+                       Error(  "GetBlock",
+                               "The block index (%d) is out of bounds. Valid range is [0, %d]",
+                               index, numberofblocks - 1
+                       );
+               else
+                       Error(  "GetBlock",
+                               "The block index (%d) is out of bounds. No blocks found.",
+                               index
+                       );
+               return kFALSE;
+       };
+};
+
+
+Bool_t ClusterSource::GetFirstBlock() const
+{
+       DebugMsg(1, "ClusterSource::GetFirstBlock()");
+       // Note: NumberOfBlocks() also checks if fCurrentEvent != NULL.
+       if (NumberOfBlocks() > 0)
+       {
+               fBlockIndex = 0;
+               fCurrentBlock = (BlockData*) fCurrentEvent->fBlocks[fBlockIndex];
+               GetFirstCluster();
+               DebugMsg(2, "\tfEventIndex = " << fEventIndex << " , fBlockIndex = " << fBlockIndex
+                       << " , fClusterIndex = " << fClusterIndex
+               );
+               return kTRUE;
+       }
+       else
+               return kFALSE;
+};
+
+
+Bool_t ClusterSource::MoreBlocks() const
+{
+       return 0 <= fBlockIndex and fBlockIndex < NumberOfBlocks();
+};
+
+
+Bool_t ClusterSource::GetNextBlock() const
+{
+       DebugMsg(1, "ClusterSource::GetNextBlock()");
+
+       // Note: NumberOfBlocks() checks if fCurrentEvent != NULL. If it is then it returns -1
+       // and since fBlockIndex is always >= -1 the if statement must go to the else part.
+       if (fBlockIndex < NumberOfBlocks() - 1)
+       {
+               fCurrentBlock = (BlockData*) fCurrentEvent->fBlocks[ ++fBlockIndex ];
+               GetFirstCluster();
+               DebugMsg(2, "\tfEventIndex = " << fEventIndex << " , fBlockIndex = " << fBlockIndex
+                       << " , fClusterIndex = " << fClusterIndex
+               );
+               return kTRUE;
+       }
+       else
+       {
+               ResetBlockPointers();
+               return kFALSE;
+       };
+};
+
+
+Int_t ClusterSource::Chamber() const
+{
+       if (fCurrentBlock == NULL)
+       {
+               Error("Chamber", "No block selected.");
+               return -1;
+       }
+       else
+               return fCurrentBlock->fChamber;
+};
+
+
+Int_t ClusterSource::NumberOfClusters() const
+{
+       DebugMsg(1, "ClusterSource::NumberOfClusters()");
+       if (fCurrentBlock == NULL)
+       {
+               Error("NumberOfClusters", "No block selected.");
+               return -1;
+       }
+       else
+               return fCurrentBlock->fClusters.GetEntriesFast();
+};
+
+
+const Point* ClusterSource::GetCluster(const Int_t index) const
+{
+       DebugMsg(1, "ClusterSource::GetCluster(" << index << ")");
+
+       // Note NumberOfClusters() also checks if the event and block was selected.
+       Int_t numberofclusters = NumberOfClusters();
+       if (numberofclusters < 0) return NULL;
+       
+       if ( 0 <= index and index < numberofclusters )
+       {
+               fClusterIndex = index;
+               fCurrentCluster = (Point*) fCurrentBlock->fClusters[index];
+               DebugMsg(2, "\tfEventIndex = " << fEventIndex << " , fBlockIndex = " << fBlockIndex
+                       << " , fClusterIndex = " << fClusterIndex
+               );
+               return fCurrentCluster;
+       }
+       else
+       {
+               // The index is out of bounds so inform the user.
+               if (numberofclusters > 0)
+                       Error(  "GetCluster",
+                               "The cluster index (%d) is out of bounds. Valid range is [0, %d]",
+                               index, numberofclusters - 1
+                       );
+               else
+                       Error(  "GetCluster",
+                               "The cluster index (%d) is out of bounds. No clusters found.",
+                               index
+                       );
+               return NULL;
+       };
+};
+
+
+const Point* ClusterSource::GetFirstCluster() const
+{
+       DebugMsg(1, "ClusterSource::GetFirstCluster()");
+       // Note: NumberOfClusters() also checks if fCurrentBlock != NULL.
+       if (NumberOfClusters() > 0)
+       {
+               fClusterIndex = 0;
+               fCurrentCluster = (Point*) fCurrentBlock->fClusters[0];
+               DebugMsg(2, "\tfEventIndex = " << fEventIndex << " , fBlockIndex = " << fBlockIndex
+                       << " , fClusterIndex = " << fClusterIndex
+               );
+               return fCurrentCluster;
+       }
+       else
+               return NULL;
+};
+
+
+Bool_t ClusterSource::MoreClusters() const
+{
+       return 0 <= fClusterIndex and fClusterIndex < NumberOfClusters();
+};
+
+
+const Point* ClusterSource::GetNextCluster() const
+{
+       DebugMsg(1, "ClusterSource::GetNextCluster()");
+       
+       // Note: NumberOfClusters() checks if fCurrentBlock != NULL. If it is then it returns -1
+       // and since fClusterIndex is always >= -1 the if statement must go to the else part.
+       if (fClusterIndex < NumberOfClusters() - 1)
+       {
+               fCurrentCluster = (Point*) fCurrentBlock->fClusters[ ++fClusterIndex ];
+               DebugMsg(2, "\tfEventIndex = " << fEventIndex << " , fBlockIndex = " << fBlockIndex
+                       << " , fClusterIndex = " << fClusterIndex
+               );
+               return fCurrentCluster;
+       }
+       else
+       {
+               ResetClusterPointers();
+               return NULL;
+       };
+};
+
+
+Bool_t ClusterSource::FetchCluster(Float_t& x, Float_t& y) const
+{
+       if (fCurrentCluster != NULL)
+       {
+               x = fCurrentCluster->fX;
+               y = fCurrentCluster->fY;
+               return kTRUE;
+       }
+       else
+       {
+               Error("FetchCluster", "No cluster point selected.");
+               return kFALSE;
+       };
+};
+
+
+void ClusterSource::AddEvent(const Int_t eventnumber)
+{
+       DebugMsg(1, "ClusterSource::AddEvent(" << eventnumber << ")");
+       Assert( eventnumber >= 0 );
+
+       // Assume the eventnumber does not already exist in the event list.
+       fEventIndex = fEventList.GetEntriesFast();
+       new ( fEventList[fEventIndex] ) EventData(eventnumber);
+       fCurrentEvent = (EventData*) fEventList[fEventIndex];
+       
+       // Remember to reset the other pointers because the new event is empty.
+       ResetBlockPointers();
+       
+       DebugMsg(2, "\tfEventIndex = " << fEventIndex << " , fBlockIndex = " << fBlockIndex
+               << " , fClusterIndex = " << fClusterIndex
+       );
+};
+
+
+void ClusterSource::AddBlock(const Int_t chamber)
+{
+       DebugMsg(1, "ClusterSource::AddBlock()");
+       
+       if (fCurrentEvent == NULL)
+       {
+               Error("AddBlock", "No event selected.");
+               return;
+       };
+       
+       fBlockIndex = fCurrentEvent->fBlocks.GetEntriesFast();
+       new ( fCurrentEvent->fBlocks[fBlockIndex] ) BlockData(chamber);
+       fCurrentBlock = (BlockData*) fCurrentEvent->fBlocks[fBlockIndex];
+       
+       // Remember to reset the trigger pointer because the new block is empty.
+       ResetClusterPointers();
+
+       DebugMsg(2, "\tfEventIndex = " << fEventIndex << " , fBlockIndex = " << fBlockIndex
+               << " , fClusterIndex = " << fClusterIndex
+       );
+};
+
+
+void ClusterSource::AddPoint(const Float_t x, const Float_t y)
+{
+       DebugMsg(1, "ClusterSource::AddPoint(" << x << ", " << y << ")");
+
+       if (fCurrentBlock == NULL)
+       {
+               Error("AddPoint", "No block selected.");
+               return;
+       };
+       
+       fClusterIndex = fCurrentBlock->fClusters.GetEntriesFast();
+       new ( fCurrentBlock->fClusters[fClusterIndex] ) Point(x, y);
+       fCurrentCluster = (Point*) fCurrentBlock->fClusters[fClusterIndex];
+       
+       DebugMsg(2, "\tfEventIndex = " << fEventIndex << " , fBlockIndex = " << fBlockIndex
+               << " , fClusterIndex = " << fClusterIndex
+       );
+};
+
+
+Bool_t ClusterSource::FileAndFolderOk(AliMUONDataInterface* data)
+{
+       if (fFilename == "")
+       {
+               // Nothing filled yet so set the file and folder names.
+               fFilename = data->CurrentFile();
+               fFoldername = data->CurrentFolder();
+               return kTRUE;
+       };
+
+       if ( fFilename != data->CurrentFile() )
+       {
+               Error(  "FileAndFolderOk",
+                       "The cluster source already contains data from file '%s', cannot add data from file '%s'",
+                       fFilename.Data(), data->CurrentFile().Data()
+               );
+               return kFALSE;
+       };
+       
+       if ( fFoldername != data->CurrentFolder() )
+       {
+               Error(  "FileAndFolderOk",
+                       "The cluster source already contains data from folder '%s', cannot add data from folder '%s'",
+                       fFoldername.Data(), data->CurrentFolder().Data()
+               );
+               return kFALSE;
+       };
+       
+       return kTRUE;
+};
+
+
+void ClusterSource::AddEventFrom(AliMUONDataInterface* data, const Int_t event)
+{
+       if ( data->GetEvent(event) )
+       {
+               AddEvent(event);
+               for (Int_t chamber = 0; chamber < AliMUONConstants::NTrackingCh(); chamber++)
+               {
+                       AddChamberFrom(data, chamber);
+               };
+       };
+};
+
+
+void ClusterSource::AddChamberFrom(AliMUONDataInterface* data, const Int_t chamber)
+{
+       DebugMsg(1, "Entering AddChamberFrom");
+       
+       AddBlock(chamber);
+       UInt_t currentblocksize = 0;
+       Float_t x = NAN, y = NAN;
+       
+       switch (fDataToUse)
+       {
+       case FromHits:
+               for (Int_t track = 0; track < data->NumberOfTracks(); track++)
+               {
+                       // Find the hit that corresponds to the current chamber number.
+                       Int_t i;
+                       for (i = 0; i < data->NumberOfHits(track); i++)
+                       {
+                               AliMUONHit* h = data->Hit(track, i);
+                               // Note AliMUONHit::Chamber() returns a value in the range 1..14
+                               if (h->Chamber() == chamber + 1)
+                               {
+                                       x = h->X();
+                                       y = h->Y();
+                                       break;
+                               };
+                       };
+
+                       // Continue to the next track if we could not find a hit
+                       // on the current track and chamber.
+                       if (i >= data->NumberOfHits(track))
+                       {
+                               Warning("AddChamberFrom", "Could not find hit on chamber: %d , track: %d , event: %d", 
+                                       chamber, track, data->CurrentEvent()
+                               );
+                               continue;
+                       };
+
+                       if (InFillRegion(x, y))
+                       {
+                               AddPoint(x, y);
+
+                               // Create a new block if we reached the maximum block size.
+                               if ( ++currentblocksize == fMaxBlockSize )
+                               {
+                                       AddBlock(chamber);
+                                       currentblocksize = 0;
+                               };
+                       };
+               };
+               break;
+
+       case FromRawClusters:
+               for (Int_t i = 0; i < data->NumberOfRawClusters(chamber); i++)
+               {
+                       AliMUONRawCluster* rc = data->RawCluster(chamber, i);
+                       x = rc->GetX(0);
+                       y = rc->GetY(0);
+
+                       if (InFillRegion(x, y))
+                       {
+                               AddPoint(x, y);
+
+                               // Create a new block if we reached the maximum block size.
+                               if ( ++currentblocksize == fMaxBlockSize )
+                               {
+                                       AddBlock(chamber);
+                                       currentblocksize = 0;
+                               };
+                       };
+               };
+               break;
+
+       default:
+               Error("AddChamberFrom", "fDataToUse is not set to a valid value.");
+       };
+       
+       DebugMsg(1, "Leaving AddChamberFrom");
+};
+
+
+void ClusterSource::AddClusterFrom(
+               AliMUONDataInterface* data, const Int_t chamber, const Int_t cluster
+       )
+{
+       DebugMsg(1, "Entering AddClusterFrom");
+       
+       Float_t x = NAN, y = NAN;
+
+       switch (fDataToUse)
+       {
+       case FromHits:
+               {
+               Int_t i;
+               // Note: cluster is now treated as the track number.
+               for (i = 0; i < data->NumberOfHits(cluster); i++)
+               {
+                       AliMUONHit* h = data->Hit(cluster, i);
+                       // Note AliMUONHit::Chamber() returns a value in the range 1..14
+                       if (h->Chamber() == chamber + 1)
+                       {
+                               x = h->X();
+                               y = h->Y();
+                               break;
+                       };
+               };
+
+               if (i >= data->NumberOfHits(cluster))
+               {
+                       // Could not find a hit on the specified chamber so just return.
+                       Warning("AddClusterFrom", "Could not find hit on chamber: %d , track: %d , event: %d", 
+                               chamber, cluster, data->CurrentEvent()
+                       );
+                       DebugMsg(1, "Leaving AddClusterFrom");
+                       return;
+               };
+               }
+               break;
+
+       case FromRawClusters:
+               {
+               AliMUONRawCluster* rc = data->RawCluster(chamber, cluster);
+               x = rc->GetX(0);
+               y = rc->GetY(0);
+               }
+               break;
+
+       default:
+               Error("AddClusterFrom", "fDataToUse is not set to a valid value.");
+               return;
+       };
+       
+       AddPoint(x, y);
+       
+       DebugMsg(1, "Leaving AddClusterFrom");
+};
+
+
+Bool_t ClusterSource::InFillRegion(const Float_t x, const Float_t y)
+{
+       switch (fAreaToUse)
+       {
+       case FromWholePlane:     return kTRUE;
+       case FromLeftHalfPlane:  return x <= 0;
+       case FromRightHalfPlane: return x > 0;
+
+       default:
+               Error("InFillRegion", "fAreaToUse is not set to a valid value.");
+               return kFALSE;
+       };
+};
+
+
+void ClusterSource::ResetAllPointers() const
+{
+       fEventIndex = -1;
+       fCurrentEvent = NULL;
+       fBlockIndex = -1;
+       fCurrentBlock = NULL;
+       fClusterIndex = -1;
+       fCurrentCluster = NULL;
+       DebugMsg(2, "\tfEventIndex = " << fEventIndex << " , fBlockIndex = " << fBlockIndex
+               << " , fClusterIndex = " << fClusterIndex
+       );
+};
+
+
+void ClusterSource::ResetBlockPointers() const
+{
+       fBlockIndex = -1;
+       fCurrentBlock = NULL;
+       fClusterIndex = -1;
+       fCurrentCluster = NULL;
+       DebugMsg(2, "\tfEventIndex = " << fEventIndex << " , fBlockIndex = " << fBlockIndex
+               << " , fClusterIndex = " << fClusterIndex
+       );
+};
+
+
+void ClusterSource::ResetClusterPointers() const
+{
+       fClusterIndex = -1;
+       fCurrentCluster = NULL;
+       DebugMsg(2, "\tfEventIndex = " << fEventIndex << " , fBlockIndex = " << fBlockIndex
+               << " , fClusterIndex = " << fClusterIndex
+       );
+};
+
+
+ClusterSource::BlockData::BlockData() : fClusters(Point::Class())
+{
+       fChamber = -1;
+};
+
+ClusterSource::BlockData::BlockData(const Int_t chamber) : fClusters(Point::Class())
+{
+       fChamber = chamber;
+};
+
+ClusterSource::BlockData::~BlockData()
+{
+       fClusters.Clear("C");
+};
+
+ClusterSource::EventData::EventData() : fBlocks(ClusterSource::BlockData::Class())
+{
+       fEventNumber = -1;
+};
+
+ClusterSource::EventData::EventData(const Int_t eventnumber)
+       : fBlocks(ClusterSource::BlockData::Class())
+{
+       fEventNumber = eventnumber;
+
+       // If the following is not set then we do not write the fBlocks properly.
+       fBlocks.BypassStreamer(kFALSE);
+};
+
+ClusterSource::EventData::~EventData()
+{
+       fBlocks.Clear("C");
+};
+
+
+}; // AliMUONHLT
diff --git a/HLT/MUON/src/AliRoot/ClusterSource.hpp b/HLT/MUON/src/AliRoot/ClusterSource.hpp
new file mode 100644 (file)
index 0000000..23c6602
--- /dev/null
@@ -0,0 +1,314 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef dHLT_ALIROOT_CLUSTER_SOURCE_HPP
+#define dHLT_ALIROOT_CLUSTER_SOURCE_HPP
+
+#include "TROOT.h"
+#include "TObject.h"
+#include "TString.h"
+#include "TClonesArray.h"
+#include "AliRoot/Point.hpp"
+
+class AliMUONDataInterface;
+
+namespace AliMUONHLT
+{
+
+
+class ClusterSource : public TObject
+{
+public:
+
+       enum AreaType
+       {
+               FromWholePlane,
+               FromLeftHalfPlane,
+               FromRightHalfPlane
+       };
+       
+       enum SourceType
+       {
+               FromHits,
+               FromRawClusters
+       };
+
+       ClusterSource();
+       ClusterSource(AliMUONDataInterface* data);
+       
+       virtual ~ClusterSource();
+       
+       /* Get and set methods to specify how the FillFrom methods should fill the
+          internal data structures.
+        */
+       void AreaToUse(const AreaType value) { fAreaToUse = value; };
+       AreaType AreaToUse() const { return fAreaToUse; };
+       void DataToUse(const SourceType value) { fDataToUse = value; };
+       SourceType DataToUse() const { return fDataToUse; };
+       void MaxBlockSize(const UInt_t value) { fMaxBlockSize = value; };
+       UInt_t MaxBlockSize() const { return fMaxBlockSize; };
+
+       /* Fills the internal data structures from the specified data interface
+          for all the events found in AliMUONDataInterface.
+        */
+       void FillFrom(AliMUONDataInterface* data);
+       
+       /* Fills the internal data structures from the specified data interface
+          for the given event.
+        */
+       void FillFrom(AliMUONDataInterface* data, const Int_t event);
+       
+       /* Fills the internal data structures from the specified data interface
+          for the given event and chamber.
+        */
+       void FillFrom(AliMUONDataInterface* data, const Int_t event, const Int_t chamber);
+       
+       /* Fills the internal data structures from the specified data interface
+          for the given event, chamber and cluster number.
+          If 'newblock' is set to true then the new cluster point is added to 
+          a new block. Otherwise the point is added to the current block.
+          Note: This method ignores the fAreaToUse and fMaxBlockSize flags.
+          This is very usefull for custom cluster source filling.
+          For the case of adding data from AliMUONHit objects the 'cluster' parameter
+          becomes the track number in TreeH and not the index of the AliMUONRawCluster
+          object.
+        */
+       void FillFrom(
+                       AliMUONDataInterface* data, 
+                       const Int_t event, const Int_t chamber, const Int_t cluster,
+                       const Bool_t newblock = kFALSE
+               );
+       
+       /* Clears all the internal arrays.
+        */
+       void Clear();
+       
+       // Get methods.
+       TString FileName()   const { return fFilename; };
+       TString FolderName() const { return fFoldername; };
+       
+       /* Returns the number of events stored.
+        */
+       Int_t NumberOfEvents() const { return fEventList.GetEntriesFast(); };
+       
+       /* Fetches the specified event number stored in this ClusterSource.
+          Sets the current block and cluster point to the first block and cluster
+          point respectively. If there are no blocks or clusters then these pointers
+          are set to NULL.
+          kTRUE is returned if the event was found, kFALSE otherwise.
+        */
+       Bool_t GetEvent(const Int_t eventnumber) const;
+       
+       /* Fetches the first event stored in this ClusterSource.
+          Sets the current block and cluster point to the first block and cluster
+          point respectively. If there are no blocks or clusters then these pointers
+          are set to NULL.
+          kTRUE is returned if the event was found, kFALSE otherwise.
+        */
+       Bool_t GetFirstEvent() const;
+       
+       /* Returns kTRUE if there are more events to interate over.
+        */
+       Bool_t MoreEvents() const;
+       
+       /* Fetches the next event stored following the currently selected one.
+          kTRUE is returned if the event was found, kFALSE otherwise.
+        */
+       Bool_t GetNextEvent() const;
+       
+       /* Returns the corresponding AliRoot event number for the current event.
+          -1 is returned if no event is selected.
+        */
+       Int_t CurrentEvent() const;
+       
+       /* Returns the number of cluster blocks in the current event.
+          -1 is returned if no event is selected.
+        */
+       Int_t NumberOfBlocks() const;
+       
+       /* Fetches the index'th block in the current event.
+          Sets the current cluster point to the first cluster point in the block.
+          If there are no cluster points then this pointer is set to NULL.
+          kTRUE is returned if the block was found, kFALSE otherwise.
+        */
+       Bool_t GetBlock(const Int_t index) const;
+       
+       /* Fetches the first block in the current event.
+          Sets the current cluster point to the first cluster point in the block.
+          If there are no cluster points then this pointer is set to NULL.
+          kTRUE is returned if the block was found, kFALSE otherwise.
+        */
+       Bool_t GetFirstBlock() const;
+       
+       /* Returns kTRUE if there are more blocks to interate over.
+        */
+       Bool_t MoreBlocks() const;
+       
+       /* Fetches the next block in the current event.
+          kTRUE is returned if the block was found, kFALSE otherwise.
+        */
+       Bool_t GetNextBlock() const;
+       
+       /* Returns the current block intex number.
+          -1 is returned if no block is selected.
+        */
+       Int_t CurrentBlock() const { return fBlockIndex; };
+       
+       /* Returns the chamber number of the current block.
+          -1 is returned if no block is selected.
+        */
+       Int_t Chamber() const;
+       
+       /* Returns the number of cluster points in the current block.
+          -1 is returned if no block is selected.
+        */
+       Int_t NumberOfClusters() const;
+       
+       /* Fetches the index'th cluster point in the current block.
+          kTRUE is returned if the point was found, kFALSE otherwise.
+        */
+       const Point* GetCluster(const Int_t index) const;
+       
+       /* Fetches the first cluster point in the current block.
+          NULL is returned if the point was not found.
+        */
+       const Point* GetFirstCluster() const;
+       
+       /* Returns kTRUE if there are more cluster points to interate over.
+        */
+       Bool_t MoreClusters() const;
+       
+       /* Fetches the next cluster point in the current block.
+          NULL is returned if the point was not found.
+        */
+       const Point* GetNextCluster() const;
+       
+       /* Returns the x and y coordinate of the current cluster point.
+          kFALSE is returned if there is no cluster point selected.
+        */
+       Bool_t FetchCluster(Float_t& x, Float_t& y) const;
+       
+       /* Returns the current cluster point.
+          NULL is returned if no cluster point is selected.
+        */
+       const Point* GetCluster() const { return fCurrentCluster; };
+
+private:
+
+       /* Adds a new EventData block to the fEventList and updates the fCurrentEvent,
+          fCurrentBlock and fCurrentCluster pointers.
+        */ 
+       void AddEvent(const Int_t eventnumber);
+       
+       /* Adds a new block to the current event and updates fCurrentBlock and fCurrentCluster.
+          The chamber number is assigned to the blocks fChamber value.
+        */
+       void AddBlock(const Int_t chamber);
+       
+       /* Adds a new cluster point to the current event and block.
+          The fCurrentCluster is updated appropriately.
+        */
+       void AddPoint(const Float_t x, const Float_t y);
+       
+       /* Checks if the file and folder names correspond to this ClusterSource's 
+          file and folder names. kTRUE is returned if they do.
+          If the file and folder names are empty then they are assigned the names
+          as found in the data interface and kTRUE is returned.
+        */
+       Bool_t FileAndFolderOk(AliMUONDataInterface* data);
+       
+       /* Adds the whole event from the data interface to the internal data structures.
+          It is assumed that FileAndFolderOk(data) returns true just before calling
+          this method.
+        */
+       void AddEventFrom(AliMUONDataInterface* data, const Int_t event);
+       
+       /* Adds all cluster points found on the given chamber from the specified data
+          interface. The data interface should be initialised correctly, that is the
+          event should already be selected before calling this method.
+        */
+       void AddChamberFrom(AliMUONDataInterface* data, const Int_t chamber);
+       
+       /* Adds the cluster point from the specified data interface.
+          The data interface should be initialised correctly, that is the event
+          should already be selected before calling this method.
+        */
+       void AddClusterFrom(AliMUONDataInterface* data, const Int_t chamber, const Int_t cluster);
+       
+       /* Checks to see if the x and y coordinate of the cluster point are in the
+          chamber region we want to fill from.
+          kTRUE is returned if (x, y) is in the region, and kFALSE otherwise.
+        */
+       Bool_t InFillRegion(const Float_t x, const Float_t y);
+
+       /* Sets all the current pointers to NULL and indices to -1.
+        */
+       void ResetAllPointers() const;
+       
+       /* Sets the block and trigger pointers to NULL and indices to -1.
+        */
+       void ResetBlockPointers() const;
+       
+       /* Sets just the current cluster point pointer to NULL and index to -1.
+        */
+       void ResetClusterPointers() const;
+       
+
+public:  // Unfortunately ROOT requires the following to be public.
+       
+       class BlockData : public TObject
+       {
+       public:
+               BlockData();
+               BlockData(const Int_t chamber);
+               virtual ~BlockData();
+
+               Int_t fChamber;  // The chamber number this block of clusters came from.
+               TClonesArray fClusters;  // The cluster points in this block.
+               
+               ClassDef(BlockData, 1);  // Data per block.
+       };
+       
+       class EventData : public TObject
+       {
+       public:
+               EventData();
+               EventData(const Int_t eventnumber);
+               virtual ~EventData();
+
+               Int_t fEventNumber;  // Event number in AliMUONDataInterface from which the clusters were taken.
+               TClonesArray fBlocks;  // The list of cluster blocks for this event.
+               
+               ClassDef(EventData, 1);  // Data per event.
+       };
+
+
+private:
+
+       AreaType fAreaToUse;    //! The part of the chamber to fill from.
+       SourceType fDataToUse;  //! The type of raw AliRoot data to fill from.
+       UInt_t fMaxBlockSize;   //! The maximum block size to create in the fill methods.
+
+       TString fFilename;    // The file from which the cluster data was taken.
+       TString fFoldername;  // The folder name from which cluster data was taken.
+       
+       mutable Int_t fEventIndex;             //! The index number of the currently selected event.
+       mutable EventData* fCurrentEvent;      //! Pointer to the currently selected event.
+       mutable Int_t fBlockIndex;             //! The index number of the currently selected block.
+       mutable BlockData* fCurrentBlock;      //! Pointer to the currently selected block.
+       mutable Int_t fClusterIndex;           //! The index number of the currently selected cluster point.
+       mutable Point* fCurrentCluster;        //! Pointer to the currently selected cluster point.
+
+       TClonesArray fEventList;  // List of clusters per event.
+
+       ClassDef(ClusterSource, 1);  // The source of cluster point blocks for dHLT.
+};
+
+
+}; // AliMUONHLT
+
+#endif // dHLT_ALIROOT_CLUSTER_SOURCE_HPP
diff --git a/HLT/MUON/src/AliRoot/MUONHLTLinkDef.hpp b/HLT/MUON/src/AliRoot/MUONHLTLinkDef.hpp
new file mode 100644 (file)
index 0000000..060d1bb
--- /dev/null
@@ -0,0 +1,58 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#ifdef __CINT__
+
+#pragma link off all globals;
+#pragma link off all classes;
+#pragma link off all functions;
+#pragma link off all typedefs;
+
+#pragma link C++ nestedclass;    // Makes the namespaces work properly.
+#pragma link C++ nestedtypedef;  // Makes the namespaces work properly.
+#pragma link C++ nestedfunction; // Makes the namespaces work properly.
+
+#pragma link C++ namespace AliMUONHLT;
+
+#pragma link C++ function AliMUONHLT::Version;
+#pragma link C++ function AliMUONHLT::MajorVersion;
+#pragma link C++ function AliMUONHLT::MinorVersion;
+#pragma link C++ function AliMUONHLT::BuildNumber;
+
+#pragma link C++ class AliMUONHLT::Region+;
+#pragma link C++ class AliMUONHLT::Point+;
+#pragma link C++ class AliMUONHLT::TriggerRecord+;
+#pragma link C++ class AliMUONHLT::ADCStream+;
+#pragma link C++ class AliMUONHLT::Track+;
+
+#pragma link C++ class AliMUONHLT::MicrodHLT+;
+
+#pragma link C++ class AliMUONHLT::ADCStreamSource+;
+#pragma link C++ struct AliMUONHLT::ADCStreamSource::DataBlock+;
+
+#pragma link C++ class AliMUONHLT::TriggerSource+;
+#pragma link C++ enum AliMUONHLT::TriggerSource::AreaType+;
+#pragma link C++ enum AliMUONHLT::TriggerSource::SourceType+;
+#pragma link C++ class AliMUONHLT::TriggerSource::EventData+;
+
+#pragma link C++ class AliMUONHLT::ClusterSource+;
+#pragma link C++ enum AliMUONHLT::ClusterSource::AreaType+;
+#pragma link C++ enum AliMUONHLT::ClusterSource::SourceType+;
+#pragma link C++ class AliMUONHLT::ClusterSource::BlockData+;
+#pragma link C++ class AliMUONHLT::ClusterSource::EventData+;
+
+#pragma link C++ class AliMUONHLT::TrackSink+;
+#pragma link C++ class AliMUONHLT::TrackSink::EventData+;
+
+#pragma link C++ class AliMUONHLT::TrackerInterface+;
+#pragma link C++ class AliMUONHLT::TrackerCallback+;
+
+#pragma link C++ class AliMUONHLT::ClusterFinderInterface+;
+#pragma link C++ class AliMUONHLT::ClusterFinderCallback+;
+
+#endif // __CINT__
+
diff --git a/HLT/MUON/src/AliRoot/MicrodHLT.cxx b/HLT/MUON/src/AliRoot/MicrodHLT.cxx
new file mode 100644 (file)
index 0000000..001d9ca
--- /dev/null
@@ -0,0 +1,380 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Author: Artur Szostak
+// Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#include "AliRoot/MicrodHLT.hpp"
+
+#include "TMethodCall.h"
+
+#include "Version/Version.hpp"
+#include "Clustering/ClusterFinder.hpp"
+#include "Clustering/CenterOfGravityFinder.hpp"
+#include "Tracking/Tracker.hpp"
+#include "Tracking/MansoTracker.hpp"
+#include "Decision/DecisionMaker.hpp"
+#include "AliRoot/convert.hpp"
+#include "AliRoot/ClusterFinderProxy.hpp"
+#include "AliRoot/TrackerProxy.hpp"
+
+#include "Utils.hpp"
+#include "new.hpp"
+
+
+namespace dHLT
+{
+
+using namespace dHLT::AliRoot;
+
+
+class MicroFramework : public Tracking::TrackerCallback
+{
+public:
+
+       virtual void RequestClusters(
+                       Tracking::Tracker* tracker, 
+                       const Float left, const Float right, const Float bottom, const Float top,
+                       const ChamberID chamber, const void* tag
+               )
+       {
+               Assert( 0 <= chamber and chamber <= 10 );
+               DebugMsg(2, "RequestClusters: tag = " << tag);
+               register void* ctag = const_cast<void*>(tag);  // We never modify tag so this is OK.
+               if (clusters[chamber] != NULL)
+                       tracker->ReturnClusters(ctag, clusters[chamber], clustercount[chamber]);
+               tracker->EndOfClusters(ctag);
+       };
+
+       
+       virtual void EndOfClusterRequests(Tracking::Tracker* tracker)
+       {
+               DebugMsg(2, "EndOfClusterRequests");
+               // We can ignore this. Nothing special to do here.
+       };
+
+       
+       virtual void FoundTrack(Tracking::Tracker* tracker)
+       {
+               DebugMsg(2, "FoundTrack");
+               
+               // Fetch the track data from the tracker.
+               dHLT::Track newtrack;
+               tracker->FillTrackData(newtrack);
+               
+               // Don't forget to fill the trigger ID number, this is not done by the tracker.
+               newtrack.triggerid = currenttriggernumber;
+
+               *trackoutput->AddTrack() = Convert(newtrack);
+       };
+       
+       
+       virtual void NoTrackFound(Tracking::Tracker* tracker)
+       {
+               DebugMsg(2, "NoTrackFound");
+               // Again nothing special to do here. The allocated memory is released
+               // in the Run method.
+       };
+
+
+       void Run(
+                       const AliMUONHLT::TriggerSource* triggersource,
+                       const AliMUONHLT::ClusterSource* clustersource,
+                       AliMUONHLT::TrackSink* tracksink,
+                       Tracking::Tracker* tracker
+               )
+       {
+               if (not triggersource->GetFirstEvent()) return;
+               while (triggersource->MoreEvents())
+               {
+                       Run(triggersource, clustersource, tracksink, tracker, triggersource->CurrentEvent());
+                       triggersource->GetNextEvent();
+               };
+       };
+
+
+       void Run(
+                       const AliMUONHLT::TriggerSource* triggersource,
+                       const AliMUONHLT::ClusterSource* clustersource,
+                       AliMUONHLT::TrackSink* tracksink,
+                       Tracking::Tracker* tracker, const Int eventnumber
+               )
+       {
+               // Tell the tracker to make callbacks to this framework object.
+               tracker->SetCallback(this);
+               trackoutput = tracksink;
+               trackoutput->SetNames(triggersource);  // Want the file and folder names to correspond.
+               
+               CreateClusterBlocks(clustersource, eventnumber);
+               try
+               {
+                       trackoutput->AddEvent(eventnumber);
+                       trackoutput->AddBlock();
+                       ProcessTriggers(triggersource, tracker);
+               }
+               finally
+               (
+                       FreeClusterBlocks();
+               );
+       };
+
+
+private:
+
+       void CountClusterPoints(const AliMUONHLT::ClusterSource* cs)
+       {
+               for (Int i = 0; i < 10; i++)
+                       clustercount[i] = 0;
+
+               cs->GetFirstBlock();
+               while (cs->MoreBlocks())
+               {
+                       Int chamber = cs->Chamber();
+                       if (0 <= chamber and chamber < 10)
+                       {
+                               clustercount[chamber] += cs->NumberOfClusters();
+                       };
+                       cs->GetNextBlock();
+               };
+       };
+       
+
+       void CreateClusterBlocks(const AliMUONHLT::ClusterSource* cs, const Int eventnumber)
+       {
+               // Must select the proper event before counting or filling the arrays.
+               if ( not cs->GetEvent(eventnumber) ) return;
+               
+               CountClusterPoints(cs);
+               
+               UInt currentcount[10];
+               for (Int i = 0; i < 10; i++)
+               {
+                       // Initialise currentcount.
+                       currentcount[i] = 0;
+
+                       // Allocate arrays.
+                       if (clustercount[i] > 0)
+                               clusters[i] = new ClusterPoint[ clustercount[i] ];
+                       else
+                               clusters[i] = NULL;
+               };
+
+               // Copy all the cluster data into arrays.
+               cs->GetFirstBlock();
+               while (cs->MoreBlocks())
+               {
+                       Int chamber = cs->Chamber();
+                       if (0 <= chamber and chamber < 10)
+                       {
+                               cs->GetFirstCluster();
+        &nb