Various contributions by Jochen
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 5 Mar 2008 08:28:36 +0000 (08:28 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 5 Mar 2008 08:28:36 +0000 (08:28 +0000)
# Added new classes for event/run statistics/summary ( as well as
their producer components )
* in BASE :
** AliHLTRunSummary and AliHLTEventSummary as base classes
** added 4 new DataTypes to AliHLTDataTypes for event/run statistics/summary
* in TPCLib
** AliHLTTPCEventStatistics and AliHLTTPCEventStatisticsProducerComponent
** AliHLTTPCRunStatistics and AliHLTTPCRunStatisticsProducerComponent
* in trigger
** AliHLTEventSummary and AliHLTEventSummaryProducerComponent
** AliHLTRunSummary and AliHLTRunSummaryProducerComponent

# Including trigger in doxygen, creation of 3 groups for trigger,
event statistics and homer

# fixed 2 warnings in class trigger/AliHLTTriggerSelectiveReadoutComponent

# Fix of segfault in class BASE/AliHLTHOMERBlockDesc

# Code cleanup in BASE/AliHLTHOMERBlockDesc and BASE/AliHLTHOMERSourceDesc

# Adding all HOMER related classes to doxygen group alihlt_homer

# changed static const to const in AliHLTDataType.h

33 files changed:
HLT/BASE/AliHLTDataTypes.cxx
HLT/BASE/AliHLTDataTypes.h
HLT/BASE/AliHLTEventStatistics.cxx [new file with mode: 0644]
HLT/BASE/AliHLTEventStatistics.h [new file with mode: 0644]
HLT/BASE/AliHLTHOMERBlockDesc.cxx
HLT/BASE/AliHLTHOMERBlockDesc.h
HLT/BASE/AliHLTHOMERLibManager.h
HLT/BASE/AliHLTHOMERSourceDesc.h
HLT/BASE/AliHLTRunStatistics.cxx [new file with mode: 0644]
HLT/BASE/AliHLTRunStatistics.h [new file with mode: 0644]
HLT/BASE/HOMER/AliHLTHOMERReader.h
HLT/BASE/HOMER/AliHLTHOMERWriter.h
HLT/TPCLib/AliHLTTPCEventStatistics.cxx [new file with mode: 0644]
HLT/TPCLib/AliHLTTPCEventStatistics.h [new file with mode: 0644]
HLT/TPCLib/AliHLTTPCEventStatisticsProducerComponent.cxx [new file with mode: 0644]
HLT/TPCLib/AliHLTTPCEventStatisticsProducerComponent.h [new file with mode: 0644]
HLT/TPCLib/AliHLTTPCRunStatistics.cxx [new file with mode: 0644]
HLT/TPCLib/AliHLTTPCRunStatistics.h [new file with mode: 0644]
HLT/TPCLib/AliHLTTPCRunStatisticsProducerComponent.cxx [new file with mode: 0644]
HLT/TPCLib/AliHLTTPCRunStatisticsProducerComponent.h [new file with mode: 0644]
HLT/doc/doxygen.conf.in
HLT/libAliHLTTPC.pkg
HLT/libAliHLTTrigger.pkg
HLT/libHLTbase.pkg
HLT/trigger/AliHLTEventSummary.cxx [new file with mode: 0644]
HLT/trigger/AliHLTEventSummary.h [new file with mode: 0644]
HLT/trigger/AliHLTEventSummaryProducerComponent.cxx [new file with mode: 0644]
HLT/trigger/AliHLTEventSummaryProducerComponent.h [new file with mode: 0644]
HLT/trigger/AliHLTRunSummary.cxx [new file with mode: 0644]
HLT/trigger/AliHLTRunSummary.h [new file with mode: 0644]
HLT/trigger/AliHLTRunSummaryProducerComponent.cxx [new file with mode: 0644]
HLT/trigger/AliHLTRunSummaryProducerComponent.h [new file with mode: 0644]
HLT/trigger/AliHLTTriggerSelectiveReadoutComponent.cxx

index bdf9bbb..f71ea5e 100644 (file)
@@ -111,11 +111,38 @@ const AliHLTComponentDataType kAliHLTDataTypeHwAddr16 = (AliHLTComponentDataType
   kAliHLTDataOriginAny
 };
 
+/** Event statistics */
+const AliHLTComponentDataType kAliHLTDataTypeEventStatistics = (AliHLTComponentDataType) {
+  sizeof(AliHLTComponentDataType),
+  kAliHLTEventStatisticsDataTypeID,
+  kAliHLTDataOriginAny
+};
+
+/** Event summary */
+const AliHLTComponentDataType kAliHLTDataTypeEventSummary = (AliHLTComponentDataType) {
+  sizeof(AliHLTComponentDataType),
+  kAliHLTEventSummaryDataTypeID,
+  kAliHLTDataOriginAny
+}|kAliHLTDataOriginOut;
+
+/** Run statistics */
+const AliHLTComponentDataType kAliHLTDataTypeRunStatistics = (AliHLTComponentDataType) {
+  sizeof(AliHLTComponentDataType),
+  kAliHLTRunStatisticsDataTypeID,
+  kAliHLTDataOriginAny
+};
+
+/** Run summary */
+const AliHLTComponentDataType kAliHLTDataTypeRunSummary = (AliHLTComponentDataType) {
+  sizeof(AliHLTComponentDataType),
+  kAliHLTRunSummaryDataTypeID,
+  kAliHLTDataOriginAny
+}|kAliHLTDataOriginOut;
 
 
 //////////////////////////////////////////////////////////////////////////
 //
-// Data urigin variables, to be used with the operator|
+// Data origin variables, to be used with the operator|
 //
 // AliHLTComponentDataType dt;
 // dt = kAliHLTDataTypeDDLRaw | gkAliHLTDataOriginTPC;
index 643d116..ba6ce63 100644 (file)
@@ -148,6 +148,30 @@ const int kAliHLTComponentDataTypefIDsize=8;
  */
 # define kAliHLTHwAddr16DataTypeID     {'H','W','A','D','D','R','1','6'}
 
+/** Event Statistics
+ * - event statistics for given detectors
+ * - varying origin
+ */
+# define kAliHLTEventStatisticsDataTypeID     {'E','V','_','S','T','A','T','I'}
+
+/** Event Summary
+ * - event summary
+ * - origin : kAliHLTDataOriginOut ( HLT )
+ */
+# define kAliHLTEventSummaryDataTypeID        {'E','V','_','S','U','M','M','A'}
+
+/** Run Statistics
+ * - run statistics for given detectors
+ * - varying origin
+ */
+# define kAliHLTRunStatisticsDataTypeID       {'R','U','N','S','T','A','T','I'}
+
+/** Run Summary
+ * - run summary
+ * - origin : kAliHLTDataOriginOut ( HLT )
+ */
+# define kAliHLTRunSummaryDataTypeID          {'R','U','N','S','U','M','M','A'}
+
 using namespace std;
 
 extern "C" {
@@ -316,13 +340,16 @@ extern "C" {
   //////////////////////////////////////////////////////////////////////////
 
   /** field size of fAttribute */
-  static const int gkAliHLTBlockDAttributeCount = 8;
+  const int gkAliHLTBlockDAttributeCount = 8;
 
   /** field size of fCommonHeader */
-  static const int gkAliHLTCommonHeaderCount = 8;
+   const int gkAliHLTCommonHeaderCount = 8;
 
   /** size of the DDL list */
-  static const int gkAliHLTDDLListSize = 30;
+  const int gkAliHLTDDLListSize = 30;
+
+  /** Number of Trigger Classes of CTP in CDH */
+  const int gkNCTPTriggerClasses = 50;
 
   /**
    * @struct AliHLTEventDDL
@@ -368,27 +395,27 @@ extern "C" {
   //////////////////////////////////////////////////////////////////////////
 
   /** Unknown eventType specification */
-  static const AliHLTUInt32_t gkAliEventTypeUnknown = ~(AliHLTUInt32_t)0;
+  const AliHLTUInt32_t gkAliEventTypeUnknown = ~(AliHLTUInt32_t)0;
   /** SOR eventType specification */ 
-  static const AliHLTUInt32_t gkAliEventTypeStartOfRun=1;
+  const AliHLTUInt32_t gkAliEventTypeStartOfRun=1;
   /** Data eventType specification */
-  static const AliHLTUInt32_t gkAliEventTypeData=2;
+  const AliHLTUInt32_t gkAliEventTypeData=2;
   /** EOR eventType specification */ 
-  static const AliHLTUInt32_t gkAliEventTypeEndOfRun=4;
+  const AliHLTUInt32_t gkAliEventTypeEndOfRun=4;
   /** Corrupt eventType specification */
-  static const AliHLTUInt32_t gkAliEventTypeCorruptID=8;
+  const AliHLTUInt32_t gkAliEventTypeCorruptID=8;
   /** Calibration eventType specification */ 
-  static const AliHLTUInt32_t gkAliEventTypeCalibration=16;
+  const AliHLTUInt32_t gkAliEventTypeCalibration=16;
   /** DataReplay eventType specification */
-  static const AliHLTUInt32_t gkAliEventTypeDataReplay=32;
+  const AliHLTUInt32_t gkAliEventTypeDataReplay=32;
   /** Configuration eventType specification */
-  static const AliHLTUInt32_t gkAliEventTypeConfiguration=34;
+  const AliHLTUInt32_t gkAliEventTypeConfiguration=34;
   /** Update DCS eventType specification */
-  static const AliHLTUInt32_t gkAliEventTypeReadPreprocessor=35;
+  const AliHLTUInt32_t gkAliEventTypeReadPreprocessor=35;
   /** Tick eventType specification */ 
-  static const AliHLTUInt32_t gkAliEventTypeTick=64;
+  const AliHLTUInt32_t gkAliEventTypeTick=64;
   /** Max eventType specification */ 
-  static const AliHLTUInt32_t gkAliEventTypeMax=64;
+  const AliHLTUInt32_t gkAliEventTypeMax=64;
 
   //////////////////////////////////////////////////////////////////////////
   //
@@ -462,15 +489,27 @@ extern "C" {
   /** 16 bit Hardware address selection data specification, origin is 'any' */
   extern const AliHLTComponentDataType kAliHLTDataTypeHwAddr16;
 
+  /** Event statistics */
+  extern const AliHLTComponentDataType kAliHLTDataTypeEventStatistics;
+
+  /** Event summary */
+  extern const AliHLTComponentDataType kAliHLTDataTypeEventSummary;
+
+  /** Event statistics */
+  extern const AliHLTComponentDataType kAliHLTDataTypeRunStatistics;
+
+  /** Event summary */
+  extern const AliHLTComponentDataType kAliHLTDataTypeRunSummary;
+
   //////////////////////////////////////////////////////////////////////////
   //
   // FXS subscriber meta information
   //
   //////////////////////////////////////////////////////////////////////////
 
-  static const int gkAliHLTFXSHeaderfOriginSize = 4;
-  static const int gkAliHLTFXSHeaderfFileIDSize = 128;
-  static const int gkAliHLTFXSHeaderfDDLNumberSize = 64;
+  const int gkAliHLTFXSHeaderfOriginSize = 4;
+  const int gkAliHLTFXSHeaderfFileIDSize = 128;
+  const int gkAliHLTFXSHeaderfDDLNumberSize = 64;
 
   /** Header in front of the data payload, in order to sent data to the FXS. */
   struct AliHLTFXSHeader
diff --git a/HLT/BASE/AliHLTEventStatistics.cxx b/HLT/BASE/AliHLTEventStatistics.cxx
new file mode 100644 (file)
index 0000000..fa7a099
--- /dev/null
@@ -0,0 +1,50 @@
+//-*- Mode: C++ -*-
+// $Id$
+/**************************************************************************
+ * This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ *                                                                        *
+ * Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de>        *
+ *                  for The ALICE HLT Project.                            *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/** @file   AliHLTEventStatistics.cxx
+    @author Jochen Thaeder
+    @date   
+    @brief  Base class for event statistics, for all detectors
+*/
+
+// see header file for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#if __GNUC__ >= 3
+using namespace std;
+#endif
+
+#include "AliHLTEventStatistics.h"
+
+ClassImp(AliHLTEventStatistics)
+    
+AliHLTEventStatistics::AliHLTEventStatistics() :
+  fDetectorName() {
+  // see header file for class documentation
+  // or
+  // refer to README to build package
+  // or
+  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+}
+
+AliHLTEventStatistics::~AliHLTEventStatistics() {
+  // see header file for class documentation
+}
diff --git a/HLT/BASE/AliHLTEventStatistics.h b/HLT/BASE/AliHLTEventStatistics.h
new file mode 100644 (file)
index 0000000..d0487cb
--- /dev/null
@@ -0,0 +1,90 @@
+//-*- Mode: C++ -*-
+// $Id$
+#ifndef ALIHLTEVENTSTATISTICS_H
+#define ALIHLTEVENTSTATISTICS_H
+
+/* This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ * See cxx source for full Copyright notice                               */
+
+/** @file   AliHLTEventStatistics.h
+    @author Jochen Thaeder
+    @date   
+    @brief  Base class for event statistics, for all detectors
+*/
+
+// see below for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+/**
+ * @defgroup alihlt_run_statistics Event and run statistics for the HLT
+ * This section describes the event and run statistics as well as the 
+ * event and run summary handling for the HLT chain.
+ */
+
+/**
+ * @defgroup alihlt_trigger Trigger components for the HLT.
+ * This section describes the handling of different triggers of the HLT.
+ */
+
+#include "TObject.h"
+#include "TString.h"
+
+#include "AliHLTDataTypes.h"
+
+/**
+ * @class  AliHLTEventStatistics
+ * @brief  Base class for event statistics, for all detectors
+ *
+ * The event statistic classes hold information about certain characteristica 
+ * of the processed events. They are devided into 3 parts. A base class 
+ * @see AliHLTEventStatistics for general Information, detector specific
+ * classes like @see AliHLTTPCEventStatistics for the TPC and a summary class
+ * @see AliHLTEventStatisticsSummary which can hold several detector classes.
+ *
+ * This is the base class.
+ *
+ * Currently implemented detecor classes<BR/>
+ * * @see AliHLTTPCEventStatistics<BR/>
+ *
+ * @ingroup alihlt_run_statistics alihlt_trigger
+ */
+
+class AliHLTEventStatistics : public TObject {
+  
+public:
+  
+  /** constructor */
+  AliHLTEventStatistics();
+  /** destructor */
+  virtual ~AliHLTEventStatistics();
+
+  /** Get detector name
+   *  @return name of detector
+   */
+  TString GetDetectorName()                              { return fDetectorName; }
+
+  /** Set Total number of tracks 
+   *  @param s  number of tracks
+   */
+  void SetDetectorName( TString s )                      { fDetectorName = s; }
+
+private:
+
+  /** copy constructor prohibited */
+  AliHLTEventStatistics (const AliHLTEventStatistics&);
+
+  /** assignment operator prohibited */
+  AliHLTEventStatistics& operator= (const AliHLTEventStatistics&);
+
+  /** Detector Name */
+  TString fDetectorName;                       // see above
+
+  ClassDef(AliHLTEventStatistics, 0);
+
+};
+#endif
+
index adfffb7..3a3559c 100644 (file)
@@ -45,6 +45,7 @@ AliHLTHOMERBlockDesc::AliHLTHOMERBlockDesc() :
   fIsTObject(kFALSE),
   fIsRawData(kFALSE),
   fMessage(NULL),
+  fTObject(NULL),
   fClassName(),
   fDetector(),
   fSubDetector(),
@@ -68,6 +69,7 @@ AliHLTHOMERBlockDesc::AliHLTHOMERBlockDesc( void * data, ULong_t size, TString o
   fIsTObject(kFALSE),
   fIsRawData(kFALSE),
   fMessage(NULL),
+  fTObject(NULL),
   fClassName(),
   fDetector(origin),
   fSubDetector(),
@@ -90,6 +92,7 @@ AliHLTHOMERBlockDesc::~AliHLTHOMERBlockDesc() {
   if ( fMessage != NULL )
     delete fMessage;
   fMessage = NULL;
+
 }
 
 //##################################################################################
@@ -228,7 +231,11 @@ Bool_t AliHLTHOMERBlockDesc::CheckIfTObject() {
   if ( fMessage->What() == kMESS_OBJECT ) {
     fClassName = fMessage->GetClass()->GetName();
     fIsTObject = kTRUE;
+    
+    fTObject = fMessage->ReadObject( fMessage->GetClass() );
   }
+  
+  fMessage->Reset();
 
   return fIsTObject;
 }
@@ -242,16 +249,4 @@ Bool_t AliHLTHOMERBlockDesc::CheckIfRawData() {
 
   return fIsRawData;
 }
-//##################################################################################
-TObject* AliHLTHOMERBlockDesc::GetTObject() {
-  // see header file for class documentation
-  
-  if ( fMessage ) {
-    TObject* obj = fMessage->ReadObject( fMessage->GetClass() );
-    fMessage->Reset();
-    return obj;
-  }
- else
-   return NULL;
-}
+
index 85a5200..fd355f5 100644 (file)
@@ -82,10 +82,10 @@ public:
   /** Returns if block contains a TObject
    * @return           Returns kTRUE if block contains a TObject, kFALSE otherwise.
    */
-  Bool_t IsTObject() { return fIsTObject;} 
+  Bool_t IsTObject()              { return fIsTObject;} 
 
   /** Returns Pointer to TObject */
-  TObject* GetTObject();
+  TObject* GetTObject()           { return fTObject;   }
 
   /*
    * ---------------------------------------------------------------------------------
@@ -96,60 +96,60 @@ public:
   /** Returns if block contains a raw data, fClassName is not set in this case.
    * @return           Returns kTRUE if block contains raw data, kFALSE otherwise.
    */
-  Bool_t IsRawData() { return fIsRawData;} 
+  Bool_t IsRawData()              { return fIsRawData;} 
 
   /** Get pointer to data 
    * @return           Pointer to data
    */
-  void* GetData() { return fData; }
+  void* GetData()                 { return fData; }
 
   /** Get size of data 
    * @return           Size of data
    */
-  ULong_t GetSize() { return fSize; }
+  ULong_t GetSize()               { return fSize; }
 
   /** Get detector of this block 
    * @return           Detector name
    */
-  TString GetDetector() { return fDetector; }
+  TString GetDetector()           { return fDetector; }
   
   /** Get HLT data type of this block 
    * @return           HLT data type
    */
-  TString GetDataType() { return fDataType; }
+  TString GetDataType()           { return fDataType; }
   
   /** Get HLT specification of this block 
    * @return           HLT specification
    */
-  ULong_t GetSpecification() { return fSpecification; }
+  ULong_t GetSpecification()      { return fSpecification; }
 
   /** Get class name of this block 
    * @return           class name
    */
-  TString GetClassName() { return fClassName; }
+  TString GetClassName()          { return fClassName; }
 
   /** Get sub detector of this block 
    * @return           subdetector
    */
-  TString GetSubDetector() { return fSubDetector; }
+  TString GetSubDetector()        { return fSubDetector; }
 
   /** Get sub sub detector of this block
    * @return           subsubdetector
    */
-  TString GetSubSubDetector() { return fSubSubDetector; }
+  TString GetSubSubDetector()     { return fSubSubDetector; }
 
   /** Returns kTRUE if HLT specification indicates a subdetector range
    * @return           kTRUE if subdetector range
    */
-  Bool_t HasSubDetectorRange() { return fHasSubDetectorRange; }
+  Bool_t HasSubDetectorRange()    { return fHasSubDetectorRange; }
 
   /** Returns kTRUE if HLT specification indicates a subsubdetector range
    * @return           kTRUE if subsubdetector range
    */
   Bool_t HasSubSubDetectorRange() { return fHasSubSubDetectorRange; }
 
-
 private:
+
   /** copy constructor prohibited */
   AliHLTHOMERBlockDesc(const AliHLTHOMERBlockDesc&);
 
@@ -170,6 +170,7 @@ private:
    * @return           fIsRawData
    */
   Bool_t CheckIfRawData();
+
   /*
    * ---------------------------------------------------------------------------------
    *                            Members - private
@@ -177,37 +178,40 @@ private:
    */
 
   /** Pointer to data of the block */
-  void* fData;                 //! transient
+  void* fData;                      //! transient
              
   /** Size of data */
-  ULong_t fSize;               // see above
+  ULong_t fSize;                    // see above
 
   /** States if block contains a TObject */
-  Bool_t fIsTObject;           // see above
+  Bool_t fIsTObject;                // see above
 
   /** States if block contains a raw data */
-  Bool_t fIsRawData;           // see above
+  Bool_t fIsRawData;                // see above
+
+  /** @ref AliHTMessage object containg a TObject */
+  AliHLTMessage* fMessage;          //! transient
 
-  /** AliHTMessage object containg a TObject */
-  AliHLTMessage* fMessage;     //! transient
+  /** TObject extracted out of @see AliHLTMessage */
+  TObject* fTObject;                //! transient
 
   /** Class Name of the block */
-  TString fClassName;          // see above
+  TString fClassName;               // see above
 
   /** Detector Name, e.g. PHOS */
-  TString fDetector;           // see above
+  TString fDetector;                // see above
 
   /** SubDetector Name e.g. MODULE */
-  TString fSubDetector;        // see above
+  TString fSubDetector;             // see above
 
   /** SubSubDetector Name e.g. PARTITION */
-  TString fSubSubDetector;     // see above
+  TString fSubSubDetector;          // see above
 
   /** HLT Specification */
-  ULong_t fSpecification;      // see above
+  ULong_t fSpecification;           // see above
 
   /** HLT DataType */
-  TString fDataType;           // see above 
+  TString fDataType;                // see above 
 
   /** States id block has a subdetector range */
   Bool_t fHasSubDetectorRange;      // see above
index abd65f5..68d4211 100644 (file)
@@ -1,3 +1,4 @@
+
 //-*- Mode: C++ -*-
 // @(#) $Id$
 
@@ -56,6 +57,8 @@ class AliHLTHOMERWriter;
  * The manager does not not provide methods to create a HOMER reader on
  * basis of shared memory. This is most likely a depricated functionality,
  * although kept for the sake of completeness.
+ *
+ * @ingroup alihlt_homer
  */
 class AliHLTHOMERLibManager {
  public:
index f1078c1..275c2a6 100644 (file)
 // or
 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
 
+/**
+ * @defgroup alihlt_homer HOMER handling for AliROOT
+ * This section describes the handling of HOMER Sources, Blocks 
+ * and the HOMER Reader inside the HLT and AliROOT
+ */
+
 #include "TString.h"
 #include "TNamed.h"
 
@@ -57,13 +63,13 @@ public:
   /** Checks if Source is selected to readout 
    * @return           returns state, either kTRUE or kFALSE
   */
-  Bool_t IsSelected() { return fSelected; }
+  Bool_t IsSelected()           { return fSelected; }
 
   /** Select this source */
-  void Select() { fSelected = kTRUE; }
+  void Select()                 { fSelected = kTRUE; }
 
   /** Deselect this source */
-  void Deselect() { fSelected = kFALSE; }
+  void Deselect()               { fSelected = kFALSE; }
 
   // -- SETTER --
 
@@ -71,13 +77,13 @@ public:
    * @param hostname   hostname of the source
    * @param port       port of the source
    */
-   void SetHostnamePort( TString hostname, Int_t port ) { fHostname = hostname; fPort = port; }
+   void SetHostnamePort( TString hostname, Int_t port )   { fHostname = hostname; fPort = port; }
 
   /** Set name/obj name of this source 
    *  @param s1        source name
    *  @param s2        source class name, default is ""
    */
-  void SetSourceName( TString s1, TString s2="" ) { fSourceName = s1; fClassName = s2; }
+  void SetSourceName( TString s1, TString s2="" )         { fSourceName = s1; fClassName = s2; }
 
   /** Set detector, sub detector and sub sub detector of this source 
    *  @param s1        detector name
@@ -90,39 +96,39 @@ public:
    *  @param ul        HLT specification
    *  @param s         HLT data type
    */
-  void SetSourceType( ULong_t ul, TString s ) { fSpecification = ul, fDataType = s; }
-
+  void SetSourceType( ULong_t ul, TString s )             { fSpecification = ul, fDataType = s; }
   // -- GETTER --
 
   /** Get node name of this source 
    * @return           hostname
    */
-  TString GetHostname() { return fHostname; }
+  TString GetHostname()       { return fHostname; }
 
   /** Get node name of this source 
    * @return           port
    */
-  Int_t GetPort() { return fPort; }
+  Int_t GetPort()             { return fPort; }
 
   /** Get name of this source 
    * @return           name
    */
-  TString GetSourceName() { return fSourceName; }
+  TString GetSourceName()     { return fSourceName; }
 
   /** Get object name of this source
    * @return           class name
    */
-  TString GetClassName() { return fClassName; }
+  TString GetClassName()      { return fClassName; }
 
   /** Get detector of this source 
    * @return           detector
    */
-  TString GetDetector() { return fDetector; }
+  TString GetDetector()       { return fDetector; }
 
   /** Get sub detector of this source 
    * @return           subdetector
    */
-  TString GetSubDetector() { return fSubDetector; }
+  TString GetSubDetector()    { return fSubDetector; }
 
   /** Get sub sub detector of this source 
    * @return           subsubdetector
@@ -132,12 +138,12 @@ public:
   /** Get HLT data type of this source
    * @return           HLT data type
    */
-  TString GetDataType() { return fDataType; }
+  TString GetDataType()       { return fDataType; }
 
   /** Get HLT specification of this source
    * @return           HLT specification
    */
-  ULong_t GetSpecification() { return fSpecification; }
+  ULong_t GetSpecification()  { return fSpecification; }
 
 
 private:
diff --git a/HLT/BASE/AliHLTRunStatistics.cxx b/HLT/BASE/AliHLTRunStatistics.cxx
new file mode 100644 (file)
index 0000000..d2bf53b
--- /dev/null
@@ -0,0 +1,51 @@
+//-*- Mode: C++ -*-
+// $Id$
+/**************************************************************************
+ * This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ *                                                                        *
+ * Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de>        *
+ *                  for The ALICE HLT Project.                            *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/** @file   AliHLTRunStatistics.cxx
+    @author Jochen Thaeder
+    @date   
+    @brief  Base class for run statistics, for all detectors
+*/
+
+// see header file for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#if __GNUC__ >= 3
+using namespace std;
+#endif
+
+#include "AliHLTRunStatistics.h"
+
+ClassImp(AliHLTRunStatistics)
+    
+AliHLTRunStatistics::AliHLTRunStatistics() :
+  fDetectorName(),
+  fNEvents(0) {
+  // see header file for class documentation
+  // or
+  // refer to README to build package
+  // or
+  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+}
+
+AliHLTRunStatistics::~AliHLTRunStatistics() {
+  // see header file for class documentation
+}
diff --git a/HLT/BASE/AliHLTRunStatistics.h b/HLT/BASE/AliHLTRunStatistics.h
new file mode 100644 (file)
index 0000000..318942a
--- /dev/null
@@ -0,0 +1,97 @@
+//-*- Mode: C++ -*-
+// $Id$
+#ifndef ALIHLTRUNSTATISTICS_H
+#define ALIHLTRUNSTATISTICS_H
+
+/* This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ * See cxx source for full Copyright notice                               */
+
+/** @file   AliHLTRunStatistics.h
+    @author Jochen Thaeder
+    @date   
+    @brief  Base class for run statistics, for all detectors
+*/
+
+// see below for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#include "TObject.h"
+#include "TString.h"
+
+#include "AliHLTDataTypes.h"
+
+/**
+ * @class  AliHLTRunStatistics
+ * @brief  Base class for run statistics, for all detectors
+ *
+ * The run statistic classes hold information / histograms about certain 
+ * characteristica of the processed events. They are devided into 3 parts. 
+ * A base class  @see AliHLTRunStatistics for general Information, detector 
+ * specific classes like @see AliHLTTPCRunStatistics for the TPC and a summary 
+ * class @see AliHLTRunStatisticsSummary which can hold several detector classes.
+ *
+ * This is the base class.
+ *
+ * Currently implemented detecor classes<BR/>
+ * * @see AliHLTTPCRunStatistics<BR/>
+ *
+ * @ingroup alihlt_run_statistics alihlt_trigger
+ */
+
+class AliHLTRunStatistics : public TObject {
+  
+public:
+  
+  /** constructor */
+  AliHLTRunStatistics();
+  /** destructor */
+  virtual ~AliHLTRunStatistics();
+
+  /** Get detector name
+   *  @return name of detector
+   */
+  TString GetDetectorName()              { return fDetectorName; }
+
+  /** Set Total number of tracks 
+   *  @param s name of detector
+   */
+  void SetDetectorName( TString s )      { fDetectorName = s; }
+
+  // -- event parameters ------------------------
+
+  /** Set Number of events 
+   *  @param i number of events
+   */
+  void SetNEvents( ULong_t i )           { fNEvents = i; }
+
+  /** Add events */
+  void AddNEvents()                      { fNEvents++; }
+
+  /** Get number of events
+   *  @return number of events
+   */
+  ULong_t GetNEvents()                   { return fNEvents; }
+
+private:
+
+  /** copy constructor prohibited */
+  AliHLTRunStatistics (const AliHLTRunStatistics&);
+
+  /** assignment operator prohibited */
+  AliHLTRunStatistics& operator= (const AliHLTRunStatistics&);
+
+  /** Detector Name */
+  TString fDetectorName;                         // see above
+
+  /** Number of events */
+  ULong_t fNEvents;                              // see above
+
+  ClassDef(AliHLTRunStatistics, 0);
+
+};
+#endif
+
index 2a8dd0d..aa981ca 100644 (file)
@@ -31,6 +31,8 @@
  * Used for dynamic generation of HOMER readers and dynamic loading of
  * the libAliHLTHOMER library.
  * @see AliHLTHOMERLibManager
+ * 
+ * @ingroup alihlt_homer
  */
 class AliHLTMonitoringReader
     {
index 166c1c3..38f3156 100644 (file)
@@ -52,6 +52,8 @@
 /**
  * @class AliHLTMonitoringWriter
  * A pure virtual interface definition for HLT monitoring writers.
+ * 
+ * @ingroup alihlt_homer
  */
 class AliHLTMonitoringWriter
     {
diff --git a/HLT/TPCLib/AliHLTTPCEventStatistics.cxx b/HLT/TPCLib/AliHLTTPCEventStatistics.cxx
new file mode 100644 (file)
index 0000000..5f5c126
--- /dev/null
@@ -0,0 +1,62 @@
+//-*- Mode: C++ -*-
+// $Id$
+/**************************************************************************
+ * This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ *                                                                        *
+ * Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de>        *
+ *                  for The ALICE HLT Project.                            *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/** @file   AliHLTTPCEventStatistics.cxx
+    @author Jochen Thaeder
+    @date   
+    @brief  TPC class for event statistics, derived from @see AliHLTEventStatistics
+*/
+
+// see header file for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#if __GNUC__ >= 3
+using namespace std;
+#endif
+
+#include "AliHLTTPCEventStatistics.h"
+
+ClassImp(AliHLTTPCEventStatistics)
+    
+  AliHLTTPCEventStatistics::AliHLTTPCEventStatistics() :
+    fNTotalTracks(0),
+    fNTracksAboveClusterThreshold(0),
+    fNMaxTracksPerSector(0),
+    fNMinTracksPerSector(9999),
+    fNAvgTracksPerSector(0),
+    fClusterThreshold(0),
+    fNTotalCluster(0),
+    fNUsedCluster(0),
+    fAvgClusterPerTrack(0) {
+  // see header file for class documentation
+  // or
+  // refer to README to build package
+  // or
+  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+
+
+}
+
+AliHLTTPCEventStatistics::~AliHLTTPCEventStatistics() {
+  // see header file for class documentation
+}
+
+
diff --git a/HLT/TPCLib/AliHLTTPCEventStatistics.h b/HLT/TPCLib/AliHLTTPCEventStatistics.h
new file mode 100644 (file)
index 0000000..31e4c59
--- /dev/null
@@ -0,0 +1,224 @@
+//-*- Mode: C++ -*-
+// $Id$
+#ifndef ALIHLTTPCEVENTSTATISTICS_H
+#define ALIHLTTPCEVENTSTATISTICS_H
+
+/* This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ * See cxx source for full Copyright notice                               */
+
+/** @file   AliHLTTPCEventStatistics.cxx
+    @author Jochen Thaeder
+    @date   
+    @brief  TPC class for event statistics, derived from @see AliHLTEventStatistics
+*/
+
+// see below for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#include "TObject.h"
+#include "TString.h"
+
+#include "AliHLTEventStatistics.h"
+
+/**
+ * @class  AliHLTEventStatistics
+ * @brief  TPC class for event statistics, derived from @see AliHLTEventStatistics
+ *
+ * The event statistic classes hold information about certain characteristica 
+ * of the processed events. They are devided into 3 parts. A base class 
+ * @see AliHLTEventStatistics for general Information, detector specific
+ * classes like @see AliHLTTPCEventStatistics for the TPC and a summary class
+ * @see AliHLTEventStatisticsSummary which can hold several detector classes.
+ *
+ * This is the detector class for the TPC.
+ *
+ * See base class @see AliHLTEventStatistics for further information.
+ *
+ * 
+ * @ingroup alihlt_run_statistics alihlt_trigger
+ */
+
+class AliHLTTPCEventStatistics : public AliHLTEventStatistics {
+  
+public:
+  
+  /** constructor */
+  AliHLTTPCEventStatistics();
+  /** destructor */
+  virtual ~AliHLTTPCEventStatistics();
+
+  // -- Tracks --
+
+  /** Get Total number of tracks 
+   *  @return number of tracks
+   */
+  Int_t GetNTotalTracks()                              { return fNTotalTracks; }
+
+  /** Set Total number of tracks 
+   *  @param i  number of tracks
+   */
+  void SetNTotalTracks( Int_t i)                       { fNTotalTracks = i; }
+
+  // --
+
+  /** Get Total number of tracks with ( number of cluster >= fClusterThreshold )
+   *  @return number of tracks
+   */
+  Int_t GetNTracksAboveClusterThreshold()              { return fNTracksAboveClusterThreshold; }
+
+  /** Set Total number of tracks with ( number of cluster >= fClusterThreshold ) 
+   *  @param i  number of tracks
+   */
+  void SetNTotalTracksAboveClusterThreshold( Int_t i)  { fNTracksAboveClusterThreshold = i;}
+
+  /** Add tracks to total number of tracks with ( number of cluster >= fClusterThreshold ) 
+   *  @param i  number of tracks
+   */
+  void AddNTracksAboveClusterThreshold( Int_t i = 1 )  { fNTracksAboveClusterThreshold += i; }
+
+  // --
+
+  /** Max of ( tracks per sector ) 
+   *  @return number of tracks
+   */
+  Int_t GetNMaxTracksPerSector()                       { return fNMaxTracksPerSector; }
+
+  /** Max of ( tracks per sector ) 
+   *  @param i  number of tracks
+   */
+  void SetNMaxTracksPerSector( Int_t i)                { fNMaxTracksPerSector = i; }
+
+  // --
+
+  /** Min of ( tracks per sector ) 
+   *  @return number of tracks
+   */
+  Int_t GetNMinTracksPerSector()                       { return fNMinTracksPerSector; }
+
+  /** Max of ( tracks per sector ) 
+   *  @param i  number of tracks
+   */
+  void SetNMinTracksPerSector( Int_t i)                { fNMinTracksPerSector = i; }
+
+  // --
+
+  /** Average of ( tracks per sector ) 
+   *  @return number of tracks
+   */
+  Int_t GetNAvgTracksPerSector()                       { return fNAvgTracksPerSector; }
+
+  /** Average of ( tracks per sector ) 
+   *  @param i  number of tracks
+   */
+  void SetNAvgTracksPerSector( Int_t i)                { fNAvgTracksPerSector = i; }
+
+  // -- Cluster --
+
+  /** Get Threshold for number of clusters per track 
+   *  @return threshold
+   */
+  Int_t GetClusterThreshold()                          { return fClusterThreshold; }
+
+  /** Set Threshold for number of clusters per track 
+   *  @param i  threshold
+   */
+  void SetClusterThreshold( Int_t i)                   { fClusterThreshold = i; }
+
+  // --
+
+  /** Get Total number of cluster found
+   *  @return number of cluster
+   */
+  Int_t GetNTotalCluster()                             { return fNTotalCluster; }
+
+  /** Set Total number of cluster found
+   *  @param i  number of cluster
+   */
+  void SetNTotalCluster( Int_t i)                      { fNTotalCluster = i; }
+
+  /** Add cluster to total number of cluster found
+   *  @param i  number of cluster
+   */
+  void AddNTotalCluster( Int_t i )                     { fNTotalCluster += i; }
+
+  //--
+
+  /** Get Number of cluster which were used in tracks 
+   *  @return number of cluster
+   */
+  Int_t GetNUsedCluster()                              { return fNUsedCluster; }
+
+  /** Set Number of cluster which were used in tracks 
+   *  @param i  number of cluster
+   */
+  void SetNUsedCluster( Int_t i)                       { fNUsedCluster = i; }
+
+  /** Add cluster to total number of cluster which were used in tracks 
+   *  @param i  number of cluster
+   */
+  void AddNUsedCluster( Int_t i )                     { fNUsedCluster += i; }
+
+  // --
+
+  /** Get Average of ( number of clusters per track ), floored 
+   *  @return number of cluster
+   */
+  Int_t GetAvgClusterPerTrack()                        { return fAvgClusterPerTrack; }
+
+  /** Set Average of ( number of clusters per track ), floored 
+   *  @param i  number of cluster
+   */
+  void SetAvgClusterPerTrack( Int_t i)                 { fAvgClusterPerTrack = i; }
+
+private:
+  /** copy constructor prohibited */
+  AliHLTTPCEventStatistics (const AliHLTTPCEventStatistics&);
+
+  /** assignment operator prohibited */
+  AliHLTTPCEventStatistics& operator= (const AliHLTTPCEventStatistics&);
+
+  // -- Tracks --
+  /** Total number of tracks found  */
+  Int_t fNTotalTracks;                                         // see above
+
+  /** Tracks with ( number of cluster >= fClusterThreshold ) 
+   * ( for long tracks ) 
+   */
+  Int_t fNTracksAboveClusterThreshold;                         // see above
+
+  /** Max of ( tracks per sector ) */
+  Int_t fNMaxTracksPerSector;                                  // see above
+
+  /** Min of ( tracks per sector ) */
+  Int_t fNMinTracksPerSector;                                  // see above
+
+  /** Average  of ( tracks per sector ) */
+  Int_t fNAvgTracksPerSector;                                  // see above
+
+  // -- Cluster --
+
+  /** Threshold for number of clusters per track 
+   * ( for long tracks ) 
+   */
+  Int_t fClusterThreshold;                                     // see above
+
+  /** Total number of cluster found  */
+  Int_t fNTotalCluster;                                        // see above
+
+  /** Number of cluster which were used in tracks */
+  Int_t fNUsedCluster;                                         // see above
+
+  /** Average of ( number of clusters per track ), floored */
+  Int_t fAvgClusterPerTrack;                                   // see above
+
+  ClassDef(AliHLTTPCEventStatistics, 0);
+
+};
+#endif
+
diff --git a/HLT/TPCLib/AliHLTTPCEventStatisticsProducerComponent.cxx b/HLT/TPCLib/AliHLTTPCEventStatisticsProducerComponent.cxx
new file mode 100644 (file)
index 0000000..86502d9
--- /dev/null
@@ -0,0 +1,404 @@
+//-*- Mode: C++ -*-
+// $Id$
+/**************************************************************************
+ * This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ *                                                                        *
+ * Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de>        *
+ *                  for The ALICE HLT Project.                            *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/** @file   AliHLTTPCEventStatisticsProducerComponent.cxx
+    @author Jochen Thaeder
+    @date   
+    @brief  Component for the @see AliHLTTPCEventStatisticsProducer class
+*/
+
+// see header file for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#if __GNUC__ >= 3
+using namespace std;
+#endif
+
+#include "AliHLTTPCEventStatisticsProducerComponent.h"
+
+#include "AliHLTTPCDefinitions.h"
+#include "AliHLTTPCClusterDataFormat.h"
+#include "AliHLTTPCTrackSegmentData.h"
+#include "AliHLTTPCTrackletDataFormat.h"
+#include "AliHLTTPCTrack.h"
+
+#include "TMath.h"
+
+#include <cerrno>
+
+// ** This is a global object used for automatic component registration, do not use this
+AliHLTTPCEventStatisticsProducerComponent gAliHLTTPCEventStatisticsProducerComponent;
+
+ClassImp(AliHLTTPCEventStatisticsProducerComponent)
+    
+// ------------------------------------------------------------------------------------------
+AliHLTTPCEventStatisticsProducerComponent::AliHLTTPCEventStatisticsProducerComponent() : 
+  fClusterThreshold(0),
+  fEvStat(NULL),
+  fNTracksPerSlice(),
+  fTracks(NULL),
+  fGlobalTracks(kFALSE),
+  fNSlice(0) {
+  // see header file for class documentation
+  // or
+  // refer to README to build package
+  // or
+  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+}
+
+// ------------------------------------------------------------------------------------------
+AliHLTTPCEventStatisticsProducerComponent::~AliHLTTPCEventStatisticsProducerComponent() {
+  // see header file for class documentation
+}
+
+// ------------------------------------------------------------------------------------------
+const char* AliHLTTPCEventStatisticsProducerComponent::GetComponentID() {
+  // see header file for class documentation
+  return "TPCEventStatisticsProducer"; 
+}
+
+// ------------------------------------------------------------------------------------------
+void AliHLTTPCEventStatisticsProducerComponent::GetInputDataTypes(AliHLTComponentDataTypeList& list) {
+  // see header file for class documentation
+
+  list.clear(); 
+  list.push_back( AliHLTTPCDefinitions::fgkClustersDataType );
+  list.push_back( AliHLTTPCDefinitions::fgkTracksDataType );
+  list.push_back( AliHLTTPCDefinitions::fgkTrackSegmentsDataType );
+}
+
+// ------------------------------------------------------------------------------------------
+AliHLTComponentDataType AliHLTTPCEventStatisticsProducerComponent::GetOutputDataType() {
+  // see header file for class documentation
+
+  return kAliHLTDataTypeEventStatistics|kAliHLTDataOriginTPC;
+}
+
+// ------------------------------------------------------------------------------------------
+void AliHLTTPCEventStatisticsProducerComponent::GetOutputDataSize( unsigned long& constBase, 
+                                                                  double& inputMultiplier ) {
+  // see header file for class documentation
+
+  constBase = sizeof( AliHLTTPCEventStatistics );
+  inputMultiplier = 0.0;
+}
+
+// ------------------------------------------------------------------------------------------
+// Spawn function, return new instance of this class
+AliHLTComponent* AliHLTTPCEventStatisticsProducerComponent::Spawn() {
+  // see header file for class documentation
+
+  return new AliHLTTPCEventStatisticsProducerComponent;
+}
+
+
+// ------------------------------------------------------------------------------------------
+Int_t AliHLTTPCEventStatisticsProducerComponent::DoInit( int argc, const char** argv ) {
+  // see header file for class documentation
+
+  Int_t iResult = 0;
+  
+  // ** Defaults
+
+  Int_t threshold = 0;
+  
+  // ** Argument handling
+
+  TString argument = "";
+  TString parameter = "";
+  Int_t bMissingParam=0;
+  
+  for ( Int_t ii=0; ii<argc && iResult>=0; ii++ ) {
+  
+    argument = argv[ii];
+
+    if ( argument.IsNull() ) continue;
+
+    // -detector
+    if ( ! argument.CompareTo("-clusterThreshold") ) {
+
+      if ( ( bMissingParam=( ++ii >= argc ) ) ) break;
+
+      parameter = argv[ii];  
+      parameter.Remove( TString::kLeading, ' ' );
+      
+      if  (parameter.IsDigit() ) {
+       threshold = (Int_t) parameter.Atoi();
+       HLTInfo( "Threshold of clusters for long tracks is set to %d.", threshold );
+      } 
+      else {
+       HLTError( "Cannot convert clusterThreshold  specifier '%s'.", parameter.Data() );
+       iResult = -EINVAL;
+       break;
+      }
+      
+    } // if ( ! argument.CompareTo("-clusterThreshold") ) {
+    
+    // - unknow parameter
+    else {
+      iResult = -EINVAL;
+      HLTError("Unknown argument '%s'", argument.Data() );
+    }
+
+  } // for ( Int_t ii=0; ii<argc && iResult>=0; ii++ ) {
+
+  if ( bMissingParam ) {
+    HLTError( "Missing parameter for argument '%s'.", argument.Data() );
+    iResult = -EPROTO;
+  }
+
+  // set members
+  
+  fClusterThreshold =  threshold; 
+
+  return iResult;
+}
+
+// ------------------------------------------------------------------------------------------
+Int_t AliHLTTPCEventStatisticsProducerComponent::DoDeinit() {
+  // see header file for class documentation
+
+  if ( fEvStat )
+    delete fEvStat;
+  fEvStat = NULL;
+
+  if ( fTracks ) 
+    delete fTracks; 
+  fTracks = NULL;
+
+  return 0;
+}
+
+// ------------------------------------------------------------------------------------------
+Int_t AliHLTTPCEventStatisticsProducerComponent::DoEvent( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& trigData ) {
+  // see header file for class documentation
+
+  const AliHLTComponentBlockData* iter = NULL;
+
+  // ** No readout list for SOR and EOR event
+  if ( GetFirstInputBlock( kAliHLTDataTypeSOR ) || GetFirstInputBlock( kAliHLTDataTypeEOR ) )
+    return 0;
+  
+  //
+  // ** Setup for new Event
+  //
+  InitializeEvent();
+  
+  //
+  // ** Read in cluster from ClusterFinder
+  //
+  
+  // ** Loop over all input blocks and specify which data format should be read
+  for ( iter = GetFirstInputBlock(AliHLTTPCDefinitions::fgkClustersDataType); iter != NULL; iter = GetNextInputBlock() ) {
+    
+    AliHLTUInt8_t slice = AliHLTTPCDefinitions::GetMinSliceNr( *iter );
+    AliHLTUInt8_t patch = AliHLTTPCDefinitions::GetMinPatchNr( *iter );
+
+    HLTDebug ( "Input Data - TPC cluster - Slice/Patch: %d/%d.", slice, patch );
+
+    AddClusters( iter->fPtr , iter->fSize, (Int_t) slice, (Int_t) patch );
+  } // for ( iter = GetFirstInputBlock(AliHLTTPCDefinitions::fgkClustersDataType); iter != NULL; iter = GetNextInputBlock() ) {
+  
+
+  //
+  // ** Read in track segments from Tracker
+  //
+
+  iter = NULL;
+
+  // ** Loop over all input blocks and specify which data format should be read
+  for ( iter = GetFirstInputBlock(AliHLTTPCDefinitions::fgkTrackSegmentsDataType); iter != NULL; iter = GetNextInputBlock() ) {
+    
+    AliHLTUInt8_t slice = AliHLTTPCDefinitions::GetMinSliceNr( *iter );
+    HLTDebug ( "Input Data - TPC track segments - Slice: %d.", slice );
+
+    AddTracks( iter->fPtr , iter->fSize, (Int_t) slice );
+  } //   for ( iter = GetFirstInputBlock(AliHLTTPCDefinitions::fgkTrackSegmentsDataType); iter != NULL; iter = GetNextInputBlock() ) {
+  
+  //
+  // ** Read in tracks from GlobalMerger
+  //
+
+  iter = NULL;
+
+  // ** Loop over all input blocks and specify which data format should be read
+  for ( iter = GetFirstInputBlock(AliHLTTPCDefinitions::fgkTracksDataType); iter != NULL; iter = GetNextInputBlock() ) {
+    
+    HLTDebug ( "Input Data - TPC track segments." );
+
+    AddTracks( iter->fPtr , iter->fSize );
+  } //   for ( iter = GetFirstInputBlock(AliHLTTPCDefinitions::fgkTracksDataType); iter != NULL; iter = GetNextInputBlock() ) {
+  
+
+  //
+  // ** Produce event statistics
+  //
+  
+  ProcessEvent();
+  
+  PushBack ( (TObject*) GetEventStatistics(), sizeof(AliHLTTPCEventStatistics), kAliHLTDataTypeEventStatistics|kAliHLTDataOriginTPC, (AliHLTUInt32_t) 0 );
+
+  return 0;
+}
+
+// -- **********************************************************************************************
+// -- *******************************   Processing Functions  **************************************
+// -- **********************************************************************************************
+
+// -- **********************************************************************************************
+void AliHLTTPCEventStatisticsProducerComponent::InitializeEvent() {
+  // see header file for class documentation
+  
+  if ( fEvStat )
+    delete fEvStat;
+
+  fEvStat = new AliHLTTPCEventStatistics();
+  fEvStat->SetClusterThreshold( fClusterThreshold );
+
+  // ** Initialize arrays to 0 
+  memset( fNTracksPerSlice, -1, 36*sizeof(Int_t) ); 
+
+  // ** New AliHLTTPCTrackArray
+  if ( fTracks ) 
+    delete fTracks; 
+  fTracks = new AliHLTTPCTrackArray;
+  
+  fGlobalTracks = kFALSE;
+  fNSlice = 0;
+}
+
+// -- **********************************************************************************************
+void AliHLTTPCEventStatisticsProducerComponent::AddClusters( void* ptr , AliHLTUInt32_t size, Int_t slice, Int_t patch ) {
+  // see header file for class documentation
+
+  const AliHLTTPCClusterData* clusterData = (const AliHLTTPCClusterData*) ptr;
+
+  Int_t nSpacepoint = (Int_t) clusterData->fSpacePointCnt;
+  HLTDebug( "%d Clusters found for slice %u - patch %u\n", nSpacepoint, slice, patch );
+
+  // ** Add to event statistics
+  fEvStat->AddNTotalCluster( nSpacepoint );
+
+}
+
+// -- **********************************************************************************************
+void AliHLTTPCEventStatisticsProducerComponent::AddTracks( void* ptr , AliHLTUInt32_t size, Int_t slice ) {
+  // see header file for class documentation
+
+  const AliHLTTPCTrackletData* trackData = (const AliHLTTPCTrackletData*) ptr;
+
+  Int_t nTracks = (Int_t) trackData->fTrackletCnt;
+
+  AliHLTTPCTrackSegmentData* segmentData = (AliHLTTPCTrackSegmentData*) &( trackData->fTracklets[0] );
+
+  // ** Tracks which are not from GlobalMerger have to be transformed to global Coordinates ( bTransform=1, else 0 )
+  Int_t bTransform;
+
+  
+  // ** Global tracks
+  if ( slice == -1 ) {
+    HLTDebug( "%d tracks found for event.", nTracks );
+  
+    bTransform = 0;
+    fGlobalTracks = kTRUE;
+  } 
+  else { 
+    HLTDebug( "%d tracks found for slice %u.", nTracks, slice );
+
+    // ** Fill number if tracks per slice
+    fNTracksPerSlice[slice] = (Int_t) trackData->fTrackletCnt;
+    fNSlice++;
+
+    bTransform = 1;
+  }
+  
+  fTracks->FillTracks( nTracks, segmentData, slice, bTransform );
+
+}
+
+// -- **********************************************************************************************
+void AliHLTTPCEventStatisticsProducerComponent::ProcessEvent() { 
+  // see header file for class documentation
+
+  // ** Total number of tracks -- Add to event statistics
+  fEvStat->SetNTotalTracks( fTracks->GetNTracks() ) ;
+
+  // ** Loop over all tracks
+  for( Int_t trackNdx=0; trackNdx < fTracks->GetNTracks(); trackNdx++ ) {
+
+    AliHLTTPCTrack *track = fTracks->GetCheckedTrack( trackNdx ); 
+    if( !track ) continue;
+
+    // ** Used cluster -- Add to event statistics
+    fEvStat->AddNUsedCluster( track->GetNHits() );
+
+    // ** If is long track -- Add to event statistics
+    if ( track->GetNHits() >= fClusterThreshold )
+      fEvStat->AddNTracksAboveClusterThreshold();
+  }
+
+  // ** Average of ( number of clusters per track ), floored -- Add to event statistics
+  //    N used cluster / N tracks
+  if (  fEvStat->GetNTotalTracks() > 0 ) {
+    fEvStat->SetAvgClusterPerTrack( (Int_t) TMath::FloorNint( (Double_t) fEvStat->GetNUsedCluster() / (Double_t) fEvStat->GetNTotalTracks()  ) );
+  }
+  fEvStat->SetAvgClusterPerTrack( 0 );
+
+  if ( fGlobalTracks ) FillTracksPerSlice();
+
+  // ** Average  of ( tracks per slice )
+  if ( fNSlice > 0 )
+    fEvStat->SetNAvgTracksPerSector( (Int_t) TMath::FloorNint( (Double_t) fEvStat->GetNTotalTracks() / (Double_t) fNSlice ) );
+  else
+    fEvStat->SetNAvgTracksPerSector( 0 );
+
+  // ** Max and Min of Tracks per slice 
+  for ( Int_t ii=0; ii < 36; ii++ ) {
+
+    if ( fNTracksPerSlice[ii] == -1 ) continue;
+
+    if ( fNTracksPerSlice[ii] > fEvStat->GetNMaxTracksPerSector() ) 
+      fEvStat->SetNMaxTracksPerSector( fNTracksPerSlice[ii] );
+
+    if ( fNTracksPerSlice[ii] < fEvStat->GetNMinTracksPerSector() ) 
+      fEvStat->SetNMinTracksPerSector( fNTracksPerSlice[ii] );
+  }
+
+  // ** Info prints
+
+  HLTInfo( "Total N Tracks : %d", fEvStat->GetNTotalTracks() );
+  HLTInfo( "Total N Tracks with more than %d cluster : %d",  fEvStat->GetClusterThreshold(), fEvStat->GetNTracksAboveClusterThreshold() );
+  HLTInfo( "Min N Tracks per slice : %d", fEvStat->GetNMinTracksPerSector() );
+  HLTInfo( "Max N Tracks per slice : %d", fEvStat->GetNMaxTracksPerSector() );
+  HLTInfo( "Avg N Tracks per slice : %d", fEvStat->GetNAvgTracksPerSector() );
+
+  HLTInfo( "Total N Cluster : %d", fEvStat->GetNTotalCluster() );
+  HLTInfo( "Used N Cluster : %d", fEvStat->GetNUsedCluster() );
+  HLTInfo( "Average (Cluster per track) : %d", fEvStat->GetAvgClusterPerTrack() );
+}
+
+// -- **********************************************************************************************
+void AliHLTTPCEventStatisticsProducerComponent::FillTracksPerSlice() { 
+  // see header file for class documentation
+
+  // fill fNTracksPerSlice[36];   
+  // fill fNSlice
+}
diff --git a/HLT/TPCLib/AliHLTTPCEventStatisticsProducerComponent.h b/HLT/TPCLib/AliHLTTPCEventStatisticsProducerComponent.h
new file mode 100644 (file)
index 0000000..a64a512
--- /dev/null
@@ -0,0 +1,132 @@
+//-*- Mode: C++ -*-
+// $Id$
+#ifndef ALIHLTTPCEVENTSTATISTICSPRODUCERCOMPONENT_H
+#define ALIHLTTPCEVENTSTATISTICSPRODUCERCOMPONENT_H
+
+/* This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ * See cxx source for full Copyright notice                               */
+
+/** @file   AliHLTTPCEventStatisticsProducerComponent.h
+    @author Jochen Thaeder
+    @date   
+    @brief  Component for the @see AliHLTTPCEventStatisticsProducer class
+*/
+
+// see below for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#include "AliHLTProcessor.h"
+
+#include "AliHLTTPCEventStatistics.h"
+#include "AliHLTTPCTrackArray.h"
+
+/**
+ * @class  AliHLTTPCEventStatisticsProducerComponent
+ * @brief  Component for the @see AliHLTTPCEventStatisticsProducer class
+ *
+ *
+ * @ingroup alihlt_run_statistics alihlt_trigger
+ */
+
+class AliHLTTPCEventStatisticsProducerComponent : public AliHLTProcessor {
+  
+public:
+  
+  /** constructor */
+  AliHLTTPCEventStatisticsProducerComponent();
+  /** destructor */
+  virtual ~AliHLTTPCEventStatisticsProducerComponent();
+
+  // Public functions to implement AliHLTComponent's interface.
+  // These functions are required for the registration process
+  
+  const char* GetComponentID();
+  void GetInputDataTypes( AliHLTComponentDataTypeList& list );
+
+  AliHLTComponentDataType GetOutputDataType();
+  Int_t GetOutputDataTypes( AliHLTComponentDataTypeList& tgtList );
+
+  virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
+  AliHLTComponent* Spawn();
+
+ protected:
+
+  using AliHLTProcessor::DoEvent;
+
+  // Protected functions to implement AliHLTComponent's interface.
+  // These functions provide initialization as well as the actual processing
+  // capabilities of the component. 
+  
+  /** Initialize the trigger component. */
+  Int_t DoInit( int argc, const char** argv );
+
+  /** DeInitialize the trigger component. */
+  Int_t DoDeinit();
+  
+  /** Process the data in the trigger component */
+  Int_t DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
+
+  // ------------------------------------------------------------------------------------------
+
+  /** Initialize for next event */
+  void InitializeEvent();                  
+
+  /** Add new cluster block 
+   * @param ptr   Pointer to data block
+   * @param size  Size of data block
+   * @param slice Slice
+   * @param patch Patch
+   */
+  void AddClusters( void* ptr, AliHLTUInt32_t size, Int_t slice, Int_t patch );
+
+  /** Add new tracks block
+   * @param ptr   Pointer to data block
+   * @param size  Size of data block
+   * @param slice Slice, default is -1 for GlobalMerger tracks
+   */
+  void AddTracks( void* ptr, AliHLTUInt32_t size, Int_t slice=-1 );     
+
+  /** Process even -> get process statistics */
+  void ProcessEvent();                          
+
+  /** Fill tracks per slice ( @see fNTracksPerSlice ), if global tracks */
+  void FillTracksPerSlice();    
+
+  /** Get ptr to @see AliHLTTPCEventStatistics, is a TObject */
+  AliHLTTPCEventStatistics* GetEventStatistics() { return fEvStat; }    
+
+private:
+  /** copy constructor prohibited */
+  AliHLTTPCEventStatisticsProducerComponent (const AliHLTTPCEventStatisticsProducerComponent&);
+
+  /** assignment operator prohibited */
+  AliHLTTPCEventStatisticsProducerComponent& operator= (const AliHLTTPCEventStatisticsProducerComponent&);
+
+  /** Threshold for long tracks */
+  Int_t fClusterThreshold;                                                                           // see above
+
+  /** Event Statistics class*/
+  AliHLTTPCEventStatistics* fEvStat;                                                                 //! transient
+
+  /** Tracks per slice */
+  Int_t fNTracksPerSlice[36];                                                                        // see above
+
+  /** Track container of class @see AliHLTTPCTrackArray */
+  AliHLTTPCTrackArray *fTracks;                                                                      //! transient
+
+  /** If tracks in global coordinates @see fTracksPerSlice has still to be filled */
+  Bool_t fGlobalTracks;                                                                              // see above
+
+  /** Number of slices with tracks */
+  Int_t fNSlice;                                                                                     // see above
+
+  ClassDef(AliHLTTPCEventStatisticsProducerComponent, 0);
+
+};
+#endif
+
diff --git a/HLT/TPCLib/AliHLTTPCRunStatistics.cxx b/HLT/TPCLib/AliHLTTPCRunStatistics.cxx
new file mode 100644 (file)
index 0000000..dee1ae9
--- /dev/null
@@ -0,0 +1,57 @@
+//-*- Mode: C++ -*-
+// $Id$
+/**************************************************************************
+ * This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ *                                                                        *
+ * Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de>        *
+ *                  for The ALICE HLT Project.                            *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/** @file   AliHLTTPCRunStatistics.cxx
+    @author Jochen Thaeder
+    @date   
+    @brief  TPC class for run statistics, derived from @see AliHLTRunStatistics
+*/
+
+// see header file for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#if __GNUC__ >= 3
+using namespace std;
+#endif
+
+#include "AliHLTTPCRunStatistics.h"
+
+ClassImp(AliHLTTPCRunStatistics)
+    
+  AliHLTTPCRunStatistics::AliHLTTPCRunStatistics() :
+    fNTotalTracks(0),
+    fNTracksAboveClusterThreshold(0),
+    fClusterThreshold(0),
+    fNTotalCluster(0),
+    fNUsedCluster(0),
+    fAvgClusterPerTrack(0) {
+  // see header file for class documentation
+  // or
+  // refer to README to build package
+  // or
+  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+}
+
+AliHLTTPCRunStatistics::~AliHLTTPCRunStatistics() {
+  // see header file for class documentation
+}
+
+
diff --git a/HLT/TPCLib/AliHLTTPCRunStatistics.h b/HLT/TPCLib/AliHLTTPCRunStatistics.h
new file mode 100644 (file)
index 0000000..f409c60
--- /dev/null
@@ -0,0 +1,188 @@
+//-*- Mode: C++ -*-
+// $Id$
+#ifndef ALIHLTTPCRUNSTATISTICS_H
+#define ALIHLTTPCRUNSTATISTICS_H
+
+/* This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ * See cxx source for full Copyright notice                               */
+
+/** @file   AliHLTTPCRunStatistics.cxx
+    @author Jochen Thaeder
+    @date   
+    @brief  TPC class for event statistics, derived from @see AliHLTRunStatistics
+*/
+
+// see below for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#include "TObject.h"
+#include "TString.h"
+
+#include "AliHLTRunStatistics.h"
+
+/**
+ * @class  AliHLTTPCRunStatistics
+ * @brief  TPC class for event statistics, derived from @see AliHLTRunStatistics
+ *
+ * The run statistic classes hold information / histograms about certain 
+ * characteristica of the processed events. They are devided into 3 parts. A base class 
+ * @see AliHLTRunStatistics for general Information, detector specific
+ * classes like @see AliHLTTPCRunStatistics for the TPC and a summary class
+ * @see AliHLTRunStatisticsSummary which can hold several detector classes.
+ *
+ * This is the detector class for the TPC. 
+ *
+ * See base class @see AliHLTRunStatistics for further information.
+ *
+ * @ingroup alihlt_run_statistics alihlt_trigger
+ */
+
+class AliHLTTPCRunStatistics : public AliHLTRunStatistics {
+  
+public:
+  
+  /** constructor */
+  AliHLTTPCRunStatistics();
+  /** destructor */
+  virtual ~AliHLTTPCRunStatistics();
+
+  // -- Tracks --
+   
+  /** Set Total number of tracks found
+   *  @param i number of tracks
+   */
+  void SetNTotalTracks( Int_t i  )    { fNTotalTracks = (ULong64_t) i; }
+
+  /** Add to Total number of tracks found
+   *  @param i number of tracks
+   */
+  void AddNTotalTracks( Int_t i  )    { fNTotalTracks += (ULong64_t) i; }
+
+  /** Get Total number of tracks found
+   *  @return number of tracks
+   */
+  ULong64_t GetNTotalTracks()    { return fNTotalTracks; }
+
+  // --
+
+  /** Set Total number of tracks found
+   *  @param i number of tracks
+   */
+  void SetNTracksAboveClusterThreshold( Int_t i  )    { fNTracksAboveClusterThreshold = (ULong64_t) i; }
+
+  /** Add to Tracks with ( number of cluster >= fClusterThreshold ) 
+   *  @param i number of tracks
+   */
+  void AddNTracksAboveClusterThreshold( Int_t i  )    { fNTracksAboveClusterThreshold += (ULong64_t) i; }
+
+  /** Get Tracks with ( number of cluster >= fClusterThreshold ) 
+   *  @return number of tracks
+   */
+  ULong64_t GetNTracksAboveClusterThreshold()    { return fNTracksAboveClusterThreshold; }
+
+  // -- Cluster --
+
+  /** Get Threshold for number of clusters per track 
+   *  @return threshold
+   */
+  Int_t GetClusterThreshold()                          { return fClusterThreshold; }
+
+  /** Set Threshold for number of clusters per track 
+   *  @param i  threshold
+   */
+  void SetClusterThreshold( Int_t i)                   { fClusterThreshold = i; }
+
+  // --
+  
+  /** Set Total number of cluster found
+   *  @param i number of cluster
+   */
+  void SetNTotalCluster( Int_t i  )    { fNTotalCluster = (ULong64_t) i; }
+
+  /** Add to Total number of cluster found
+   *  @param i number of cluster
+   */
+  void AddNTotalCluster( Int_t i  )    { fNTotalCluster += (ULong64_t) i; }
+
+  /** Get Total number of cluster found
+   *  @return number of cluster
+   */
+  ULong64_t GetNTotalCluster()    { return fNTotalCluster; }
+
+  // --
+  
+  /** Set Number of cluster which were used in tracks
+   *  @param i number of cluster
+   */
+  void SetNUsedCluster( Int_t i  )    { fNUsedCluster = (ULong64_t) i; }
+
+  /** Add to Number of cluster which were used in tracks
+   *  @param i number AvgClusterPerTrackof cluster
+   */
+  void AddNUsedCluster( Int_t i  )    {fNUsedCluster  += (ULong64_t) i; }
+
+  /** Get Number of cluster which were used in tracks
+   *  @return number of cluster
+   */
+  ULong64_t GetNUsedCluster()    { return fNUsedCluster; }
+
+  // --
+  
+  /** Set Average of ( number of clusters per track ), floored
+   *  @param i number of cluster
+   */
+  void SetAvgClusterPerTrack( Int_t i  )    { fAvgClusterPerTrack = (ULong64_t) i; }
+
+  /** Add to Average of ( number of clusters per track ), floored
+   *  @param i number of cluster
+   */
+  void AddAvgClusterPerTrack( Int_t i  )    { fAvgClusterPerTrack += (ULong64_t) i; }
+
+  /** Get Average of ( number of clusters per track ), floored
+   *  @return number of cluster
+   */
+  ULong64_t GetAvgClusterPerTrack()    { return fAvgClusterPerTrack; }
+
+private:
+  /** copy constructor prohibited */
+  AliHLTTPCRunStatistics (const AliHLTTPCRunStatistics&);
+
+  /** assignment operator prohibited */
+  AliHLTTPCRunStatistics& operator= (const AliHLTTPCRunStatistics&);
+
+  // -- Tracks --
+
+  /** Total number of tracks found  */
+  ULong64_t fNTotalTracks;                                         // see above
+
+  /** Tracks with ( number of cluster >= fClusterThreshold ) 
+   * ( for long tracks ) 
+   */
+  ULong64_t fNTracksAboveClusterThreshold;                         // see above
+
+  // -- Cluster --
+
+  /** Threshold for number of clusters per track 
+   * ( for long tracks ) 
+   */
+  Int_t fClusterThreshold;                                        // see above
+
+  /** Total number of cluster found  */
+  ULong64_t fNTotalCluster;                                        // see above
+
+  /** Number of cluster which were used in tracks */
+  ULong64_t fNUsedCluster;                                         // see above
+
+  /** Average of ( number of clusters per track ), floored */
+  ULong64_t fAvgClusterPerTrack;                                   // see above
+
+  ClassDef(AliHLTTPCRunStatistics, 0);
+
+};
+#endif
+
diff --git a/HLT/TPCLib/AliHLTTPCRunStatisticsProducerComponent.cxx b/HLT/TPCLib/AliHLTTPCRunStatisticsProducerComponent.cxx
new file mode 100644 (file)
index 0000000..860f432
--- /dev/null
@@ -0,0 +1,178 @@
+//-*- Mode: C++ -*-
+// $Id$
+/**************************************************************************
+ * This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ *                                                                        *
+ * Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de>        *
+ *                  for The ALICE HLT Project.                            *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/** @file   AliHLTTPCRunStatisticsProducerComponent.cxx
+    @author Jochen Thaeder
+    @date   
+    @brief  Component for the @see AliHLTTPCEventStatisticsProducer class
+*/
+
+// see header file for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#if __GNUC__ >= 3
+using namespace std;
+#endif
+
+#include "AliHLTTPCRunStatisticsProducerComponent.h"
+#include "AliHLTTPCEventStatistics.h"
+#include "TMath.h"
+
+#include <cerrno>
+
+// ** This is a global object used for automatic component registration, do not use this
+AliHLTTPCRunStatisticsProducerComponent gAliHLTTPCRunStatisticsProducerComponent;
+
+ClassImp(AliHLTTPCRunStatisticsProducerComponent)
+    
+// ------------------------------------------------------------------------------------------
+AliHLTTPCRunStatisticsProducerComponent::AliHLTTPCRunStatisticsProducerComponent() : 
+  fRunStat(NULL),
+  fIsHeader(kFALSE) {
+
+  // see header file for class documentation
+  // or
+  // refer to README to build package
+  // or
+  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+}
+
+// ------------------------------------------------------------------------------------------
+AliHLTTPCRunStatisticsProducerComponent::~AliHLTTPCRunStatisticsProducerComponent() {
+  // see header file for class documentation
+}
+
+// ------------------------------------------------------------------------------------------
+const char* AliHLTTPCRunStatisticsProducerComponent::GetComponentID() {
+  // see header file for class documentation
+  return "TPCRunStatisticsProducer"; 
+}
+
+// ------------------------------------------------------------------------------------------
+void AliHLTTPCRunStatisticsProducerComponent::GetInputDataTypes(AliHLTComponentDataTypeList& list) {
+  // see header file for class documentation
+
+  list.clear(); 
+  list.push_back( kAliHLTDataTypeEventStatistics );
+}
+
+// ------------------------------------------------------------------------------------------
+AliHLTComponentDataType AliHLTTPCRunStatisticsProducerComponent::GetOutputDataType() {
+  // see header file for class documentation
+
+  return kAliHLTDataTypeRunStatistics|kAliHLTDataOriginTPC;
+}
+
+// ------------------------------------------------------------------------------------------
+void AliHLTTPCRunStatisticsProducerComponent::GetOutputDataSize( unsigned long& constBase, 
+                                                                double& inputMultiplier ) {
+  // see header file for class documentation
+
+  constBase = sizeof( AliHLTTPCRunStatistics );
+  inputMultiplier = 0.0;
+}
+
+// ------------------------------------------------------------------------------------------
+AliHLTComponent* AliHLTTPCRunStatisticsProducerComponent::Spawn() {
+  // Spawn function, return new instance of this class
+  // see header file for class documentation
+
+  return new AliHLTTPCRunStatisticsProducerComponent;
+}
+// ------------------------------------------------------------------------------------------
+Int_t AliHLTTPCRunStatisticsProducerComponent::DoInit( int argc, const char** argv ) {
+  // see header file for class documentation
+
+  Int_t iResult = 0;
+  
+  if ( fRunStat )
+    return EINPROGRESS;
+
+  fRunStat = new AliHLTTPCRunStatistics();
+
+  return iResult;
+}
+
+// ------------------------------------------------------------------------------------------
+Int_t AliHLTTPCRunStatisticsProducerComponent::DoDeinit() {
+  // see header file for class documentation
+
+  if ( fRunStat )
+    delete fRunStat;
+  fRunStat = NULL;
+
+  return 0;
+}
+
+// ------------------------------------------------------------------------------------------
+Int_t AliHLTTPCRunStatisticsProducerComponent::DoEvent( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& trigData ) {
+  // see header file for class documentation
+
+  // ** Process EventStatistics Block
+  AliHLTTPCEventStatistics* evStat = (AliHLTTPCEventStatistics*) GetFirstInputObject ( kAliHLTDataTypeEventStatistics|kAliHLTDataOriginTPC, 
+                                                                                      "AliHLTTPCEventStatistics" );
+  if ( evStat )
+    ProcessEventStatistics ( evStat );
+  
+  if ( ! fIsHeader ) {
+    fRunStat->SetDetectorName("TPC");
+    
+    if ( evStat )
+      fRunStat->SetClusterThreshold( evStat->GetClusterThreshold() );
+  }
+
+  // ** increase number of events
+  fRunStat->AddNEvents();
+
+
+  PushBack ( (TObject*) GetRunStatistics(), sizeof(AliHLTTPCRunStatistics), kAliHLTDataTypeRunStatistics|kAliHLTDataOriginTPC, (AliHLTUInt32_t) 0 );
+
+  return 0;
+}
+
+// -- **********************************************************************************************
+// -- *******************************   Processing Functions  **************************************
+// -- **********************************************************************************************
+
+// -- **********************************************************************************************
+void AliHLTTPCRunStatisticsProducerComponent::ProcessEventStatistics( AliHLTTPCEventStatistics* evStat ) {
+  // see header file for class documentation
+  
+  // ** add number of total tracks
+  fRunStat->AddNTotalTracks( evStat->GetNTotalTracks() );
+
+  // ** add number of long tracks  ( tracks above cluster threshold )
+  fRunStat->AddNTracksAboveClusterThreshold( evStat->GetNTracksAboveClusterThreshold() );
+
+  // ** add number of total clusters
+  fRunStat->AddNTotalCluster( evStat->GetNTotalCluster() );
+
+  // ** add number of cluster used in tracks
+  fRunStat->AddNUsedCluster( evStat->GetNUsedCluster() );
+
+  // ** add number of average clusters per track
+  fRunStat->AddAvgClusterPerTrack( evStat->GetAvgClusterPerTrack() );
+
+}
+
+
+
diff --git a/HLT/TPCLib/AliHLTTPCRunStatisticsProducerComponent.h b/HLT/TPCLib/AliHLTTPCRunStatisticsProducerComponent.h
new file mode 100644 (file)
index 0000000..2c674b3
--- /dev/null
@@ -0,0 +1,100 @@
+//-*- Mode: C++ -*-
+// $Id$
+#ifndef ALIHLTTPCRUNSTATISTICSPRODUCERCOMPONENT_H
+#define ALIHLTTPCRUNSTATISTICSPRODUCERCOMPONENT_H
+
+/* This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ * See cxx source for full Copyright notice                               */
+
+/** @file   AliHLTTPCRunStatisticsProducerComponent.h
+ *  @author Jochen Thaeder
+ *  @date   
+ *  @brief  Component for producing the @see AliHLTTPCRunStatistics
+ */
+
+// see below for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#include "AliHLTProcessor.h"
+
+#include "AliHLTTPCRunStatistics.h"
+#include "AliHLTTPCEventStatistics.h"
+
+/**
+ * @class  AliHLTTPCRunStatisticsProducerComponent
+ * @brief  Component for producing the @see AliHLTTPCRunStatistics
+ *
+ * @ingroup alihlt_run_statistics alihlt_trigger
+ */
+
+class AliHLTTPCRunStatisticsProducerComponent : public AliHLTProcessor {
+  
+public:
+  
+  /** constructor */
+  AliHLTTPCRunStatisticsProducerComponent();
+  /** destructor */
+  virtual ~AliHLTTPCRunStatisticsProducerComponent();
+
+  // Public functions to implement AliHLTComponent's interface.
+  // These functions are required for the registration process
+  
+  const char* GetComponentID();
+  void GetInputDataTypes( AliHLTComponentDataTypeList& list );
+
+  AliHLTComponentDataType GetOutputDataType();
+  Int_t GetOutputDataTypes( AliHLTComponentDataTypeList& tgtList );
+
+  virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
+  AliHLTComponent* Spawn();
+
+ protected:
+
+  using AliHLTProcessor::DoEvent;
+
+  // Protected functions to implement AliHLTComponent's interface.
+  // These functions provide initialization as well as the actual processing
+  // capabilities of the component. 
+  
+  /** Initialize the trigger component. */
+  Int_t DoInit( int argc, const char** argv );
+
+  /** DeInitialize the trigger component. */
+  Int_t DoDeinit();
+  
+  /** Process the data in the trigger component */
+  Int_t DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
+
+  // ------------------------------------------------------------------------------------------
+
+  /** Get Process event statistics coming from @see AliHLTTPCEventStatistics
+   *  @param evStat  event statistics as @see AliHLTTPCEventStatistics
+   */
+  void ProcessEventStatistics( AliHLTTPCEventStatistics* evStat );
+
+  /** Get ptr to @see AliHLTTPCRunStatistics, is a TObject */
+  AliHLTTPCRunStatistics* GetRunStatistics() { return fRunStat; }  
+
+private:
+  /** copy constructor prohibited */
+  AliHLTTPCRunStatisticsProducerComponent (const AliHLTTPCRunStatisticsProducerComponent&);
+
+  /** assignment operator prohibited */
+  AliHLTTPCRunStatisticsProducerComponent& operator= (const AliHLTTPCRunStatisticsProducerComponent&);
+
+  /** Event Statistics class*/
+  AliHLTTPCRunStatistics* fRunStat;                                                                  //! transient
+
+  /** If run header is set */
+  Bool_t fIsHeader;                                                                                  // see above
+  
+  ClassDef(AliHLTTPCRunStatisticsProducerComponent, 0);
+
+};
+#endif
+
index 87041f8..6559757 100644 (file)
@@ -67,9 +67,10 @@ INPUT                  = @top_srcdir@/doc    \
                         @top_srcdir@/BASE      \
                         @top_srcdir@/TPCLib    \
                         @top_srcdir@/SampleLib \
-                        @top_srcdir@/rec  \
-                        @top_srcdir@/exa  \
-                        @top_srcdir@/sim
+                        @top_srcdir@/rec       \
+                        @top_srcdir@/exa       \
+                        @top_srcdir@/sim       \
+                        @top_srcdir@/trigger
 
 FILE_PATTERNS          = *.h *.c *.cpp *.hpp *.cxx *.C
 RECURSIVE              = YES
index 31279fd..6f65174 100644 (file)
@@ -68,7 +68,14 @@ CLASS_HDRS:=         AliHLTTPCTransform.h \
                comp/AliHLTTPCCompModelInflaterComponent.h \
                AliHLTTPCCalibPedestalComponent.h \
                AliHLTTPCCalibPulserComponent.h \
-               AliHLTTPCCalibCEComponent.h     
+               AliHLTTPCCalibCEComponent.h \
+                AliHLTTPCEventStatistics.h \
+                AliHLTTPCEventStatisticsProducerComponent.h \
+                AliHLTTPCRunStatistics.h \
+                AliHLTTPCRunStatisticsProducerComponent.h
+
+
+
 
 #              AliHLTTPCDDLDataFileHandler.h
 #              tracking/AliHLTTPCHough.h \
index ad91cc1..b021cff 100644 (file)
@@ -11,7 +11,13 @@ include $(MODDIR)/hlt.conf
 # class header files, the link definition for the root dictionary
 # will be created from the names of the header files
 CLASS_HDRS:= \
-               AliHLTTriggerSelectiveReadoutComponent.h
+                AliHLTEventSummary.h                        \
+                AliHLTEventSummaryProducerComponent.h       \
+                AliHLTRunSummary.h                          \
+                AliHLTRunSummaryProducerComponent.h         \
+               AliHLTTriggerSelectiveReadoutComponent.h
+
+
 
 # library sources
 MODULE_SRCS:=  $(CLASS_HDRS:.h=.cxx)
index ebcc6e0..adb8c3b 100644 (file)
@@ -30,7 +30,11 @@ CLASS_HDRS:=         AliHLTComponent.h \
                AliHLTOUTHandler.h \
                AliHLTOUTHandlerEquId.h \
                AliHLTMemoryFile.h \
-               AliHLTMessage.h
+               AliHLTMessage.h \
+               AliHLTEventStatistics.h \
+                AliHLTRunStatistics.h
+
+
 
 MODULE_SRCS=   AliHLT_C_Component_WrapperInterface.cxx \
                AliHLTDataTypes.cxx \
diff --git a/HLT/trigger/AliHLTEventSummary.cxx b/HLT/trigger/AliHLTEventSummary.cxx
new file mode 100644 (file)
index 0000000..2b8483e
--- /dev/null
@@ -0,0 +1,72 @@
+//-*- Mode: C++ -*-
+// $Id$
+/**************************************************************************
+ * This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ *                                                                        *
+ * Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de>        *
+ *                  for The ALICE HLT Project.                            *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/** @file   AliHLTEventSummary.cxx
+    @author Jochen Thaeder
+    @date   
+    @brief  Summary class for run statistics, merges all detectors
+*/
+
+// see header file for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#if __GNUC__ >= 3
+using namespace std;
+#endif
+
+#include "AliHLTEventSummary.h"
+
+ClassImp(AliHLTEventSummary)
+    
+  AliHLTEventSummary::AliHLTEventSummary() : 
+    fRejected(kTRUE),
+    fRunNumber(0),
+    fRunType(0),
+    fTriggerClass(0),
+    fDetectorArray(NULL) {
+  // see header file for class documentation
+  // or
+  // refer to README to build package
+  // or
+  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+
+  fDetectorArray = new TObjArray;
+  fDetectorArray->SetOwner();
+}
+
+AliHLTEventSummary::~AliHLTEventSummary() {
+  // see header file for class documentation
+
+  if ( fDetectorArray )
+    delete fDetectorArray;
+  fDetectorArray = NULL;
+}
+
+Bool_t AliHLTEventSummary::AddDetector( TObject * obj ) {
+  // see header file for class documentation
+
+  Bool_t bResult = kTRUE;
+  
+  if ( fDetectorArray ) fDetectorArray->Add( obj );
+  else bResult = kFALSE;
+  
+  return bResult;
+}
diff --git a/HLT/trigger/AliHLTEventSummary.h b/HLT/trigger/AliHLTEventSummary.h
new file mode 100644 (file)
index 0000000..da8a9d6
--- /dev/null
@@ -0,0 +1,143 @@
+//-*- Mode: C++ -*-
+// $Id$
+#ifndef ALIHLTEVENTSUMMARY_H
+#define ALIHLTEVENTSUMMARY_H
+
+/* This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ * See cxx source for full Copyright notice                               */
+
+/** @file   AliHLTEventSummary.h
+    @author Jochen Thaeder
+    @date   
+    @brief  Summary class for run statistics, merges all detectors
+*/
+
+// see below for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#include "TObject.h"
+#include "TObjArray.h"
+#include "TString.h"
+#include "AliHLTDataTypes.h"
+
+/**
+ * @class  AliHLTEventSummary
+ * @brief  Summary  class for event statistics, merges all detectors
+ *
+ * The event statistic classes hold information about certain characteristica 
+ * of the processed events. They are devided into 3 parts. A base class 
+ * @see AliHLTEventStatistics for general Information, detector specific
+ * classes like @see AliHLTTPCEventStatistics for the TPC and a summary class
+ * @see AliHLTEventSummary which can hold several detector classes.
+ *
+ * This is the summary class.
+ *
+ * See base class @see AliHLTEventStatistics for further information.
+ *
+ * @ingroup alihlt_run_statistics alihlt_trigger
+ */
+
+class AliHLTEventSummary : public TObject {
+  
+public:
+  
+  /** constructor */
+  AliHLTEventSummary();
+  /** destructor */
+  virtual ~AliHLTEventSummary();
+
+  // -- event reject  ------------------------
+
+  /** Reject this event */
+  void RejectEvent()                              { fRejected = kFALSE;} 
+
+  /** Check event is accepted
+   *  @return kTRUE if accepted, kFALSE if rejected
+   */
+  Bool_t IsAccepted()                             { return fRejected;} 
+
+  // -- run parameters ------------------------
+
+  /** Set Run Number 
+   *  @param i run number
+   */
+  void SetRunNumber( AliHLTUInt32_t i )           { fRunNumber = i; }
+
+  /** Get Run Number 
+   *  @return run number
+   */
+  AliHLTUInt32_t GetRunNumber()                   { return  fRunNumber;}
+
+  /** Set Run Type 
+   *  @param i run type
+   */
+  void SetRunType( AliHLTUInt32_t i )             { fRunType = i; }
+
+  /** Get Run Type s
+   *  @return run type
+   */
+  AliHLTUInt32_t GetRunType()                     { return fRunType; }
+
+  // -- trigger parameters ------------------------
+
+  /** Set ocurrance of trigger classe with index i
+   *  @param u index of Trigger Class   
+   *  @return kTRUE on success
+   */
+  void SetTriggerClass( AliHLTUInt64_t u )        { fTriggerClass = u; } 
+
+  /** Get ocurrance of trigger classes 
+   *  @return ptr to array of trigger classes
+   */
+  AliHLTUInt64_t GetTriggerClasses()              { return fTriggerClass; }
+  
+  // -- detector parameters ------------------------
+
+  /** Detector run statistics classes 
+   *  @return ptr to Detector arry
+   */
+  TObjArray* GetDetectorArray ()                  { return fDetectorArray; }
+
+  /** Rest the Detector array, all elements are removed */
+  void ResetDetectorArray()                       { if ( fDetectorArray ) fDetectorArray->Clear(); }
+
+  /** Add another detector event statistics class to detector arry 
+   *  @param obj to TObject, which should be added
+   *  @return kTRUE on success
+   */
+  Bool_t AddDetector( TObject *obj );
+
+private:
+
+  /** copy constructor prohibited */
+  AliHLTEventSummary (const AliHLTEventSummary&);
+
+  /** assignment operator prohibited */
+  AliHLTEventSummary& operator= (const AliHLTEventSummary&);
+
+  /** Event rejected 
+   *  - kFALSE is rejected
+   *  - kTRUE is default
+   */
+  Bool_t fRejected;                              // see above
+
+  /** Run Number */   
+  AliHLTUInt32_t fRunNumber;                     // see above
+
+  /** Run Type */
+  AliHLTUInt32_t fRunType;                       // see above
+
+  /** Trigger class */
+  AliHLTUInt64_t fTriggerClass;                  // see above
+
+  /** Detector run statistics classes */
+  TObjArray* fDetectorArray;                     //! transient
+
+  ClassDef(AliHLTEventSummary, 0);
+
+};
+#endif
diff --git a/HLT/trigger/AliHLTEventSummaryProducerComponent.cxx b/HLT/trigger/AliHLTEventSummaryProducerComponent.cxx
new file mode 100644 (file)
index 0000000..df569d4
--- /dev/null
@@ -0,0 +1,171 @@
+//-*- Mode: C++ -*-
+// $Id$
+/**************************************************************************
+ * This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ *                                                                        *
+ * Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de>        *
+ *                  for The ALICE HLT Project.                            *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/** @file   AliHLTEventSummaryProducerComponent.cxx
+    @author Jochen Thaeder
+    @date   
+    @brief  Produces a event summary as @see AliHLTEventSummary
+*/
+
+// see header file for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#if __GNUC__ >= 3
+using namespace std;
+#endif
+
+#include "AliHLTEventSummaryProducerComponent.h"
+#include "AliHLTTPCEventStatistics.h"
+
+#include <cerrno>
+
+// ** This is a global object used for automatic component registration, do not use this
+AliHLTEventSummaryProducerComponent gAliHLTEventSummaryProducerComponent;
+
+ClassImp(AliHLTEventSummaryProducerComponent)
+    
+// ------------------------------------------------------------------------------------------
+AliHLTEventSummaryProducerComponent::AliHLTEventSummaryProducerComponent() : 
+  fEventSummary(NULL) {
+  // see header file for class documentation
+  // or
+  // refer to README to build package
+  // or
+  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+}
+
+// ------------------------------------------------------------------------------------------
+AliHLTEventSummaryProducerComponent::~AliHLTEventSummaryProducerComponent() {
+  // see header file for class documentation
+}
+
+// ------------------------------------------------------------------------------------------
+const char* AliHLTEventSummaryProducerComponent::GetComponentID() {
+  // see header file for class documentation
+  return "TriggerEventSummaryProducer"; 
+}
+
+// ------------------------------------------------------------------------------------------
+void AliHLTEventSummaryProducerComponent::GetInputDataTypes(AliHLTComponentDataTypeList& list) {
+  // see header file for class documentation
+
+  list.clear(); 
+  list.push_back( kAliHLTDataTypeEventStatistics );
+}
+
+// ------------------------------------------------------------------------------------------
+AliHLTComponentDataType AliHLTEventSummaryProducerComponent::GetOutputDataType() {
+  // see header file for class documentation
+
+  return kAliHLTDataTypeEventSummary;
+}
+
+// ------------------------------------------------------------------------------------------
+void AliHLTEventSummaryProducerComponent::GetOutputDataSize( unsigned long& constBase, 
+                                                            double& inputMultiplier ) {
+  // see header file for class documentation
+
+  constBase = sizeof( AliHLTEventSummary );
+  inputMultiplier = 0.0;
+}
+
+// ------------------------------------------------------------------------------------------
+AliHLTComponent* AliHLTEventSummaryProducerComponent::Spawn() {
+  // Spawn function, return new instance of this class
+  // see header file for class documentation
+
+  return new AliHLTEventSummaryProducerComponent;
+}
+
+
+// ------------------------------------------------------------------------------------------
+Int_t AliHLTEventSummaryProducerComponent::DoInit( int argc, const char** argv ) {
+  // see header file for class documentation
+
+  Int_t iResult = 0;
+  return iResult;
+}
+
+// ------------------------------------------------------------------------------------------
+Int_t AliHLTEventSummaryProducerComponent::DoDeinit() {
+  // see header file for class documentation
+
+  if ( fEventSummary )
+    delete fEventSummary;
+  fEventSummary = NULL;
+
+  return 0;
+}
+
+// ------------------------------------------------------------------------------------------
+Int_t AliHLTEventSummaryProducerComponent::DoEvent( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& trigData ) {
+  // see header file for class documentation
+
+  if ( fEventSummary )
+    delete fEventSummary;
+
+  fEventSummary = new AliHLTEventSummary;
+
+  const TObject* iter = NULL;
+
+  // ** Loop over all event statistics input objs and add them to the event summary
+  for ( iter = GetFirstInputObject(kAliHLTDataTypeEventStatistics|kAliHLTDataOriginAny); iter != NULL; iter = GetNextInputObject() ) {
+
+    fEventSummary->AddDetector( (TObject*) iter );
+
+  } // for ( iter = GetFirstInputObject(kAliHLTDataTypeEventEventStatistics|kAliHLTDataOriginAny); iter != NULL; iter = GetNextInputObject() ) {
+  
+  // ** Process CTP trigger information
+  ProcessTriggerData( trigData );
+
+  // ** Set RunType / Run Number
+  fEventSummary->SetRunNumber ( GetRunNo() );
+  fEventSummary->SetRunType   ( GetRunType() );
+
+  // ** PushBack Event Summary
+  PushBack ( (TObject*) fEventSummary, sizeof(AliHLTEventSummary), kAliHLTDataTypeEventSummary, (AliHLTUInt32_t) 0 );
+
+  return 0;
+}
+
+// -- **********************************************************************************************
+// -- *******************************   Processing Functions  **************************************
+// -- **********************************************************************************************
+
+// -- **********************************************************************************************
+void AliHLTEventSummaryProducerComponent::ProcessTriggerData( AliHLTComponentTriggerData& trigData ) {
+  // see header file for class documentation
+  
+  AliHLTEventTriggerData* trg = ( AliHLTEventTriggerData* ) trigData.fData;
+
+  AliHLTUInt64_t triggerClass = 0;
+
+  // ** Higher bits
+  triggerClass |= ( trg->fCommonHeader[6] & 0x3FFFF );
+  
+  triggerClass =  triggerClass << 32;
+  
+  // ** Lower bits
+  triggerClass |= trg->fCommonHeader[5] ;
+
+  fEventSummary->SetTriggerClass( triggerClass );
+}
diff --git a/HLT/trigger/AliHLTEventSummaryProducerComponent.h b/HLT/trigger/AliHLTEventSummaryProducerComponent.h
new file mode 100644 (file)
index 0000000..b3a9809
--- /dev/null
@@ -0,0 +1,95 @@
+ //-*- Mode: C++ -*-
+// $Id$
+#ifndef ALIHLTEVENTSUMMARYPRODUCERCOMPONENT_H
+#define ALIHLTEVENTSUMMARYPRODUCERCOMPONENT_H
+
+/* This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ * See cxx source for full Copyright notice                               */
+
+/** @file   AliHLTEventSummaryProducerComponent.h
+    @author Jochen Thaeder
+    @date   
+    @brief  Produces a event summary as @see AliHLTEventSummary
+*/
+
+// see below for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#include "AliHLTProcessor.h"
+#include "AliHLTEventSummary.h"
+
+/**
+ * @class  AliHLTEventSummaryProducerComponent
+ * @brief  Produces a event summary as @see AliHLTEventSummary
+ *
+ * This class produces a event summary, updating informations for all subdetectors 
+ * and sends it out for every event.
+ *
+ * @ingroup alihlt_run_statistics alihlt_trigger
+ */
+
+class AliHLTEventSummaryProducerComponent : public AliHLTProcessor {
+  
+public:
+  
+  /** constructor */
+  AliHLTEventSummaryProducerComponent();
+  /** destructor */
+  virtual ~AliHLTEventSummaryProducerComponent();
+
+  // Public functions to implement AliHLTComponent's interface.
+  // These functions are required for the registration process
+  
+  const char* GetComponentID();
+  void GetInputDataTypes( AliHLTComponentDataTypeList& list );
+
+  AliHLTComponentDataType GetOutputDataType();
+  Int_t GetOutputDataTypes( AliHLTComponentDataTypeList& tgtList );
+
+  virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
+  AliHLTComponent* Spawn();
+
+ protected:
+
+  using AliHLTProcessor::DoEvent;
+
+  // Protected functions to implement AliHLTComponent's interface.
+  // These functions provide initialization as well as the actual processing
+  // capabilities of the component. 
+  
+  /** Initialize the component. */
+  Int_t DoInit( int argc, const char** argv );
+
+  /** DeInitialize the component. */
+  Int_t DoDeinit();
+  
+  /** Process the data in the component */
+  Int_t DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
+
+  // ------------------------------------------------------------------------------------------
+
+  /** Process trigger data block 
+   *  @param  trigData to @see AliHLTComponentTriggerData
+   */
+  void ProcessTriggerData( AliHLTComponentTriggerData& trigData );
+
+private:
+  /** copy constructor prohibited */
+  AliHLTEventSummaryProducerComponent (const AliHLTEventSummaryProducerComponent&);
+
+  /** assignment operator prohibited */
+  AliHLTEventSummaryProducerComponent& operator= (const AliHLTEventSummaryProducerComponent&);
+
+  /** Event summary class*/
+  AliHLTEventSummary* fEventSummary;                                                                  //! transient
+
+  ClassDef(AliHLTEventSummaryProducerComponent, 0);
+
+};
+#endif
+
diff --git a/HLT/trigger/AliHLTRunSummary.cxx b/HLT/trigger/AliHLTRunSummary.cxx
new file mode 100644 (file)
index 0000000..53f5039
--- /dev/null
@@ -0,0 +1,87 @@
+//-*- Mode: C++ -*-
+// $Id$
+/**************************************************************************
+ * This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ *                                                                        *
+ * Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de>        *
+ *                  for The ALICE HLT Project.                            *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/** @file   AliHLTRunSummary.cxx
+    @author Jochen Thaeder
+    @date   
+    @brief  Summary class for a run, merges all detectors
+*/
+
+// see header file for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#if __GNUC__ >= 3
+using namespace std;
+#endif
+
+#include "AliHLTRunSummary.h"
+
+ClassImp(AliHLTRunSummary)
+    
+  AliHLTRunSummary::AliHLTRunSummary() :
+    fNEvents(0),
+    fNEventsRejected(0),
+    fRunNumber(0),
+    fRunType(0),
+    fTriggerClasses(),
+    fDetectorArray(NULL) {
+  // see header file for class documentation
+  // or
+  // refer to README to build package
+  // or
+  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+
+  memset( fTriggerClasses, 0, (gkNCTPTriggerClasses * sizeof(ULong_t)) );
+  
+  fDetectorArray = new TObjArray;
+  fDetectorArray->SetOwner();
+}
+
+AliHLTRunSummary::~AliHLTRunSummary() {
+  // see header file for class documentation
+
+  if ( fDetectorArray )
+    delete fDetectorArray;
+  fDetectorArray = NULL;
+
+}
+
+Bool_t AliHLTRunSummary::AddTriggerClass( Int_t ndx ) {
+  // see header file for class documentation
+
+  Bool_t bResult = kTRUE;
+
+  if ( ndx < gkNCTPTriggerClasses ) fTriggerClasses[ndx]++;
+  else  bResult = kFALSE;
+
+  return bResult;
+}
+
+Bool_t AliHLTRunSummary::AddDetector( TObject * obj ) {
+  // see header file for class documentation
+
+  Bool_t bResult = kTRUE;
+  
+  if ( fDetectorArray ) fDetectorArray->Add( obj );
+  else bResult = kFALSE;
+  
+  return bResult;
+}
diff --git a/HLT/trigger/AliHLTRunSummary.h b/HLT/trigger/AliHLTRunSummary.h
new file mode 100644 (file)
index 0000000..3f8c433
--- /dev/null
@@ -0,0 +1,160 @@
+//-*- Mode: C++ -*-
+// $Id$
+#ifndef ALIHLTRUNSUMMARY_H
+#define ALIHLTRUNSUMMARY_H
+
+/* This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ * See cxx source for full Copyright notice                               */
+
+/** @file   AliHLTRunSummary.h
+    @author Jochen Thaeder
+    @date  
+    @brief  Summary class for a run, merges all detectors 
+*/
+
+// see below for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#include "TObject.h"
+#include "TObjArray.h"
+
+#include "AliHLTDataTypes.h"
+
+/**
+ * @class  AliHLTRunSummary
+ * @brief  Summary class for a run, merges all detectors 
+ *
+ * The run statistic classes hold information / histograms about certain 
+ * characteristica of the processed events. They are devided into 3 parts. 
+ * A base class  @see AliHLTRunStatistics for general Information, detector 
+ * specific classes like @see AliHLTTPCRunStatistics for the TPC and a summary 
+ * class @see AliHLTRunSummary which can hold several detector classes.
+ * 
+ * This is the summary class.
+ * 
+ * See base class @see AliHLTRunStatistics for further information.
+ *
+ * @ingroup alihlt_run_statistics alihlt_trigger
+ */
+
+class AliHLTRunSummary : public TObject {
+  
+public:
+  
+  /** constructor */
+  AliHLTRunSummary();
+  /** destructor */
+  virtual ~AliHLTRunSummary();
+
+  // -- event parameters ------------------------
+
+  /** Set Number of events 
+   *  @param i number of events
+   */
+  void SetNEvents( ULong_t i )           { fNEvents = i; }
+
+  /** Add events */
+  void AddNEvents()                      { fNEvents++; }
+
+  /** Get number of events
+   *  @return number of events
+   */
+  ULong_t GetNEvents()                   { return fNEvents; }
+  /** Set number of rejected events 
+   *  @param i number of events rejected
+   */
+  void SetNEventsRejected( ULong_t i )   { fNEventsRejected = i; }
+
+  /** Add rejected events */
+  void AddNEventsRejected()              { fNEventsRejected++; }
+
+  /** Get number of reejcted events 
+   *  @return number of events rejected
+   */
+  ULong_t GetNEventsRejected()           { return fNEventsRejected; }
+
+  // -- run parameters ------------------------
+
+  /** Set Run Number 
+   *  @param i run number
+   */
+  void SetRunNumber( AliHLTUInt32_t i )           { fRunNumber = i; }
+
+  /** Get Run Number 
+   *  @return run number
+   */
+  AliHLTUInt32_t GetRunNumber()                   { return  fRunNumber;}
+
+  /** Set Run Type 
+   *  @param i run type
+   */
+  void SetRunType( AliHLTUInt32_t i )             { fRunType = i; }
+
+  /** Get Run Type s
+   *  @return run type
+   */
+  AliHLTUInt32_t GetRunType()                     { return fRunType; }
+
+  // -- trigger parameters ------------------------
+
+  /** Set ocurrance of trigger classe with index ndx
+   *  @param ndx index of Trigger Class   
+   *  @return kTRUE on success
+   */
+  Bool_t AddTriggerClass( Int_t ndx );
+
+  /** Get ocurrance of trigger classes 
+   *  @return ptr to array of trigger classes
+   */
+  ULong_t* GetTriggerClasses()           { return fTriggerClasses; }
+  
+  // -- detector parameters ------------------------
+
+  /** Detector run statistics classes 
+   *  @return ptr to Detector arry
+   */
+  TObjArray* GetDetectorArray ()         { return fDetectorArray; }
+
+  /** Rest the Detector array, all elements are removed */
+  void ResetDetectorArray()              { if ( fDetectorArray ) fDetectorArray->Clear(); }
+
+  /** Add another detector run statistics class to detector arry 
+   *  @param obj to TObject, which should be added
+   *  @return kTRUE on success
+   */
+  Bool_t AddDetector( TObject *obj );
+
+private:
+
+  /** copy constructor prohibited */
+  AliHLTRunSummary (const AliHLTRunSummary&);
+
+  /** assignment operator prohibited */
+  AliHLTRunSummary& operator= (const AliHLTRunSummary&);
+
+  /** Number of events */
+  ULong_t fNEvents;                              // see above
+
+  /** Number of rejected events */
+  ULong_t fNEventsRejected;                      // see above
+
+  /** Run Number */   
+  AliHLTUInt32_t fRunNumber;                     // see above
+
+  /** Run Type */
+  AliHLTUInt32_t fRunType;                       // see above
+
+  /** Ocurrance of trigger classes */
+  ULong_t fTriggerClasses[gkNCTPTriggerClasses]; // see above
+
+  /** Detector run statistics classes */
+  TObjArray* fDetectorArray;                     //! transient
+
+  ClassDef(AliHLTRunSummary, 0);  
+};
+#endif
diff --git a/HLT/trigger/AliHLTRunSummaryProducerComponent.cxx b/HLT/trigger/AliHLTRunSummaryProducerComponent.cxx
new file mode 100644 (file)
index 0000000..4028138
--- /dev/null
@@ -0,0 +1,190 @@
+//-*- Mode: C++ -*-
+// $Id$
+/**************************************************************************
+ * This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ *                                                                        *
+ * Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de>        *
+ *                  for The ALICE HLT Project.                            *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/** @file   AliHLTRunSummaryProducerComponent.h
+    @author Jochen Thaeder
+    @date   
+    @brief  Produces a run summary as @see AliHLTRunSummary
+*/
+
+// see header file for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#if __GNUC__ >= 3
+using namespace std;
+#endif
+
+#include "AliHLTRunSummaryProducerComponent.h"
+#include "AliHLTEventSummary.h"
+#include "AliHLTDataTypes.h"
+
+#include <cerrno>
+
+// ** This is a global object used for automatic component registration, do not use this
+AliHLTRunSummaryProducerComponent gAliHLTRunSummaryProducerComponent;
+
+ClassImp(AliHLTRunSummaryProducerComponent)
+    
+// ------------------------------------------------------------------------------------------
+AliHLTRunSummaryProducerComponent::AliHLTRunSummaryProducerComponent() : 
+  fRunSummary(NULL) {
+  // see header file for class documentation
+  // or
+  // refer to README to build package
+  // or
+  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+}
+
+// ------------------------------------------------------------------------------------------
+AliHLTRunSummaryProducerComponent::~AliHLTRunSummaryProducerComponent() {
+  // see header file for class documentation
+}
+
+// ------------------------------------------------------------------------------------------
+const char* AliHLTRunSummaryProducerComponent::GetComponentID() {
+  // see header file for class documentation
+  return "TriggerRunSummaryProducer"; 
+}
+
+// ------------------------------------------------------------------------------------------
+void AliHLTRunSummaryProducerComponent::GetInputDataTypes(AliHLTComponentDataTypeList& list) {
+  // see header file for class documentationAliHLTRunSummary
+
+  list.clear(); 
+  list.push_back( kAliHLTDataTypeEventSummary );
+  list.push_back( kAliHLTDataTypeRunStatistics );
+}
+
+// ------------------------------------------------------------------------------------------
+AliHLTComponentDataType AliHLTRunSummaryProducerComponent::GetOutputDataType() {
+  // see header file for class documentation
+
+  return kAliHLTDataTypeRunSummary;
+}
+
+// ------------------------------------------------------------------------------------------
+void AliHLTRunSummaryProducerComponent::GetOutputDataSize( unsigned long& constBase, 
+                                                          double& inputMultiplier ) {
+  // see header file for class documentation
+
+  constBase = sizeof( AliHLTRunSummary );
+  inputMultiplier = 0.0;
+}
+
+// ------------------------------------------------------------------------------------------
+AliHLTComponent* AliHLTRunSummaryProducerComponent::Spawn() {
+  // Spawn function, return new instance of this class
+  // see header file for class documentation
+
+  return new AliHLTRunSummaryProducerComponent;
+}
+
+
+// ------------------------------------------------------------------------------------------
+Int_t AliHLTRunSummaryProducerComponent::DoInit( int argc, const char** argv ) {
+  // see header file for class documentation
+
+  Int_t iResult = 0;
+
+  if ( fRunSummary )
+    return EINPROGRESS;
+  
+  fRunSummary = new AliHLTRunSummary();
+  
+  return iResult;
+}
+
+// ------------------------------------------------------------------------------------------
+Int_t AliHLTRunSummaryProducerComponent::DoDeinit() {
+  // see header file for class documentation
+
+  if ( fRunSummary )
+    delete fRunSummary;
+  fRunSummary = NULL;
+
+  return 0; 
+}
+
+// ------------------------------------------------------------------------------------------
+Int_t AliHLTRunSummaryProducerComponent::DoEvent( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& trigData ) {
+  // see header file for class documentation
+
+  // ** Process EventSummary Block
+  AliHLTEventSummary* eventSummary = (AliHLTEventSummary*) GetFirstInputObject ( kAliHLTDataTypeEventSummary, "AliHLTEventSummary" );
+  
+  if ( eventSummary ) 
+    ProcessEventSummary ( eventSummary );   
+
+  // ** Increase Number of Events
+  fRunSummary->AddNEvents();
+
+  // ** Process CTP trigger information
+  ProcessTriggerData( trigData );
+
+  // ** Set RunType / Run Number
+  fRunSummary->SetRunNumber ( GetRunNo() );
+  fRunSummary->SetRunType   ( GetRunType() );
+
+  // ** PushBack Run Summary
+  PushBack ( (TObject*) fRunSummary, sizeof(AliHLTRunSummary), kAliHLTDataTypeRunSummary, (AliHLTUInt32_t) 0 );
+
+  return 0;
+}
+
+// -- **********************************************************************************************
+// -- *******************************   Processing Functions  **************************************
+// -- **********************************************************************************************
+
+// -- **********************************************************************************************
+void AliHLTRunSummaryProducerComponent::ProcessEventSummary( AliHLTEventSummary* eventSummary ) {
+  // see header file for class documentation
+  
+  // ** Check if event was accepted or rejected 
+  if ( ! eventSummary->IsAccepted() )
+    fRunSummary->AddNEventsRejected();
+}
+
+// -- **********************************************************************************************
+void AliHLTRunSummaryProducerComponent::ProcessTriggerData( AliHLTComponentTriggerData& trigData ) {
+  // see header file for class documentation
+  
+  AliHLTEventTriggerData* trg = ( AliHLTEventTriggerData* ) trigData.fData;
+
+  AliHLTUInt64_t triggerClasses = 0;
+
+  // ** Higher bits
+  triggerClasses |= ( trg->fCommonHeader[6] & 0x3FFFF );
+  
+  triggerClasses =  triggerClasses << 32;
+
+  // ** Lower bits
+  triggerClasses |= trg->fCommonHeader[5] ;
+
+  for ( Int_t ndx = 0; ndx < gkNCTPTriggerClasses; ndx ++ ) {
+    
+    if ( triggerClasses & 0x1 )
+      fRunSummary->AddTriggerClass( ndx );
+    
+    triggerClasses >> 1;
+  }
+
+}
+
diff --git a/HLT/trigger/AliHLTRunSummaryProducerComponent.h b/HLT/trigger/AliHLTRunSummaryProducerComponent.h
new file mode 100644 (file)
index 0000000..feafce1
--- /dev/null
@@ -0,0 +1,100 @@
+//-*- Mode: C++ -*-
+// $Id$
+#ifndef ALIHLTRUNSUMMARYPRODUCERCOMPONENT_H
+#define ALIHLTRUNSUMMARYPRODUCERCOMPONENT_H
+
+/* This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ * See cxx source for full Copyright notice                               */
+
+/** @file   AliHLTRunSummaryProducerComponent.h
+    @author Jochen Thaeder
+    @date   
+    @brief  Produces a run summary
+*/
+
+// see below for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#include "AliHLTProcessor.h"
+#include "AliHLTRunSummary.h"
+#include "AliHLTEventSummary.h"
+
+/**
+ * @class  AliHLTRunSummaryProducerComponent
+ * @brief  Produces a run summary
+ *
+ * This class produces a run summary, updating informations for whole run 
+ * and sends it out for every event, in order to have it displayed with AliEve
+ *
+ * @ingroup alihlt_run_statistics alihlt_trigger
+ */
+
+class AliHLTRunSummaryProducerComponent : public AliHLTProcessor {
+  
+public:
+  
+  /** constructor */
+  AliHLTRunSummaryProducerComponent();
+  /** destructor */
+  virtual ~AliHLTRunSummaryProducerComponent();
+
+  // Public functions to implement AliHLTComponent's interface.
+  // These functions are required for the registration process
+  
+  const char* GetComponentID();
+  void GetInputDataTypes( AliHLTComponentDataTypeList& list );
+
+  AliHLTComponentDataType GetOutputDataType();
+  Int_t GetOutputDataTypes( AliHLTComponentDataTypeList& tgtList );
+
+  virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
+  AliHLTComponent* Spawn();
+
+ protected:
+
+  using AliHLTProcessor::DoEvent;
+
+  // Protected functions to implement AliHLTComponent's interface.
+  // These functions provide initialization as well as the actual processing
+  // capabilities of the component. 
+  
+  /** Initialize the component. */
+  Int_t DoInit( int argc, const char** argv );
+
+  /** DeInitialize the component. */
+  Int_t DoDeinit();
+  
+  /** Process the data in the component */
+  Int_t DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
+
+  // ------------------------------------------------------------------------------------------
+  /** Process event summary data block 
+   *  @param  ptr to @see AliHLTEventSummary
+   */
+  void ProcessEventSummary( AliHLTEventSummary* eventSummary );
+
+  /** Process trigger data block 
+   *  @param  ptr to @see AliHLTComponentTriggerData
+   */
+  void ProcessTriggerData( AliHLTComponentTriggerData& trigData );
+
+private:
+  /** copy constructor prohibited */
+  AliHLTRunSummaryProducerComponent (const AliHLTRunSummaryProducerComponent&);
+
+  /** assignment operator prohibited */
+  AliHLTRunSummaryProducerComponent& operator= (const AliHLTRunSummaryProducerComponent&);
+
+  /** Run summary class*/
+  AliHLTRunSummary* fRunSummary;                                                                     //! transient
+  ClassDef(AliHLTRunSummaryProducerComponent, 0);
+
+};
+#endif
+
index dc833f2..c338649 100644 (file)
@@ -157,7 +157,7 @@ Int_t AliHLTTriggerSelectiveReadoutComponent::DoInit( int argc, const char** arg
 
       Int_t jj = 0;
       
-      for ( jj ; ( jj < fkNThreshold ) && ( ( ii + jj ) < argc ); jj++ ) {
+      for ( jj = 0; ( jj < fkNThreshold ) && ( ( ii + jj ) < argc ); jj++ ) {
        
        parameter = argv[ii+jj];  
        parameter.Remove( TString::kLeading, ' ' );
@@ -206,7 +206,7 @@ Int_t AliHLTTriggerSelectiveReadoutComponent::DoDeinit() {
   return 0;
 }
 
-Int_t AliHLTTriggerSelectiveReadoutComponent::DoEvent( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& trigData ) {
+Int_t AliHLTTriggerSelectiveReadoutComponent::DoEvent( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& /*trigData*/ ) {
   // see header file for class documentation
 
   // ** No readout list for SOR and EOR event