]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/BASE/AliHLTDataSink.h
ALIROOT-5600 - skip non-participating detector modules
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTDataSink.h
index 2852e0bd468a0c528635a9e323bd37b1e4a9f88d..ce9ce0787f41122cf3781da6d1c239743375a3f2 100644 (file)
@@ -1,16 +1,17 @@
-// @(#) $Id$
+//-*- Mode: C++ -*-
+// $Id$
 
 #ifndef ALIHLTDATASINK_H
 #define ALIHLTDATASINK_H
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
-/** @file   AliHLTDataSink.h
-    @author Matthias Richter
-    @date   
-    @brief  Base class declaration for HLT data sink components.
-    @note   The class is used in Offline (AliRoot) context
-*/
+/// @file   AliHLTDataSink.h
+/// @author Matthias Richter
+/// @date   
+/// @brief  Base class declaration for HLT data sink components.
+/// @note   The class is used in Offline (AliRoot) context
+///
 
 #include "AliHLTComponent.h"
 
@@ -24,8 +25,6 @@
  * - @ref DumpEvent
  * - @ref GetComponentID
  * - @ref GetInputDataTypes
- * - @ref GetOutputDataType
- * - @ref GetOutputDataSize
  * - @ref Spawn
  *
  * @ingroup alihlt_component
@@ -43,14 +42,13 @@ class AliHLTDataSink : public AliHLTComponent {
    * preparation of data structures. The call is redirected to DumpEvent.
    * @return neg. error code if failed
    */
-  int ProcessEvent( const AliHLTComponent_EventData& evtData,
-                   const AliHLTComponent_BlockData* blocks, 
-                   AliHLTComponent_TriggerData& trigData,
+  int DoProcessing( const AliHLTComponentEventData& evtData,
+                   const AliHLTComponentBlockData* blocks, 
+                   AliHLTComponentTriggerData& trigData,
                    AliHLTUInt8_t* outputPtr, 
                    AliHLTUInt32_t& size,
-                   AliHLTUInt32_t& outputBlockCnt, 
-                   AliHLTComponent_BlockData*& outputBlocks,
-                   AliHLTComponent_EventDoneData*& edd );
+                   AliHLTComponentBlockDataList& outputBlocks,
+                   AliHLTComponentEventDoneData*& edd );
 
   // Information member functions for registration.
 
@@ -60,17 +58,42 @@ class AliHLTDataSink : public AliHLTComponent {
    */
   TComponentType GetComponentType() { return AliHLTComponent::kSink;}
 
- private:
   /**
-   * Data processing method for the component.
+   * Default implementation for all data sinks.
+   * There are no output data types.
+   */
+  AliHLTComponentDataType GetOutputDataType();
+
+  /**
+   * Default implementation for all data sinks.
+   * There is no output data.
+   */
+  void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
+
+ protected:
+
+  /**
+   * The low-level data processing method for the component.
+   * This is the custom processing method and can be overloaded by 
+   * the component.
    * @param evtData       event data structure
    * @param blocks        input data block descriptors
    * @param trigData     trigger data structure
    */
-  virtual int DumpEvent( const AliHLTComponent_EventData& evtData,
-                        const AliHLTComponent_BlockData* blocks, 
-                        AliHLTComponent_TriggerData& trigData ) = 0;
+  virtual int DumpEvent( const AliHLTComponentEventData& evtData,
+                const AliHLTComponentBlockData* blocks, 
+                AliHLTComponentTriggerData& trigData );
+
+  /**
+   * The high-level data processing method.
+   * This is the default processing method; the method is called
+   * if no low level @ref DumpEvent method is overloaded by the component.
+   * @param evtData       event data structure
+   * @param trigData     trigger data structure
+   */
+  virtual int DumpEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
+
 
-  ClassDef(AliHLTDataSink, 0)
+  ClassDef(AliHLTDataSink, 1)
 };
 #endif