ROOT logo
//-*- 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
///

#include "AliHLTComponent.h"

/**
 * @class AliHLTDataSink
 * Base class of HLT data sink components.
 * The class provides a common interface for the implementation of HLT data
 * sink components. The child class must implement the functions:
 * - @ref DoInit (optional)
 * - @ref DoDeinit (optional)
 * - @ref DumpEvent
 * - @ref GetComponentID
 * - @ref GetInputDataTypes
 * - @ref Spawn
 *
 * @ingroup alihlt_component
 */
class AliHLTDataSink : public AliHLTComponent {
 public:
  /** standard constructor */
  AliHLTDataSink();
  /** standard destructor */
  virtual ~AliHLTDataSink();

  /**
   * Event processing function.
   * The method is called by the framework to process one event. After 
   * preparation of data structures. The call is redirected to DumpEvent.
   * @return neg. error code if failed
   */
  int DoProcessing( const AliHLTComponentEventData& evtData,
		    const AliHLTComponentBlockData* blocks, 
		    AliHLTComponentTriggerData& trigData,
		    AliHLTUInt8_t* outputPtr, 
		    AliHLTUInt32_t& size,
		    AliHLTComponentBlockDataList& outputBlocks,
		    AliHLTComponentEventDoneData*& edd );

  // Information member functions for registration.

  /**
   * Return @ref AliHLTComponent::kSink type as component type.
   * @return component type id
   */
  TComponentType GetComponentType() { return AliHLTComponent::kSink;}

  /**
   * 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 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, 1)
};
#endif
 AliHLTDataSink.h:1
 AliHLTDataSink.h:2
 AliHLTDataSink.h:3
 AliHLTDataSink.h:4
 AliHLTDataSink.h:5
 AliHLTDataSink.h:6
 AliHLTDataSink.h:7
 AliHLTDataSink.h:8
 AliHLTDataSink.h:9
 AliHLTDataSink.h:10
 AliHLTDataSink.h:11
 AliHLTDataSink.h:12
 AliHLTDataSink.h:13
 AliHLTDataSink.h:14
 AliHLTDataSink.h:15
 AliHLTDataSink.h:16
 AliHLTDataSink.h:17
 AliHLTDataSink.h:18
 AliHLTDataSink.h:19
 AliHLTDataSink.h:20
 AliHLTDataSink.h:21
 AliHLTDataSink.h:22
 AliHLTDataSink.h:23
 AliHLTDataSink.h:24
 AliHLTDataSink.h:25
 AliHLTDataSink.h:26
 AliHLTDataSink.h:27
 AliHLTDataSink.h:28
 AliHLTDataSink.h:29
 AliHLTDataSink.h:30
 AliHLTDataSink.h:31
 AliHLTDataSink.h:32
 AliHLTDataSink.h:33
 AliHLTDataSink.h:34
 AliHLTDataSink.h:35
 AliHLTDataSink.h:36
 AliHLTDataSink.h:37
 AliHLTDataSink.h:38
 AliHLTDataSink.h:39
 AliHLTDataSink.h:40
 AliHLTDataSink.h:41
 AliHLTDataSink.h:42
 AliHLTDataSink.h:43
 AliHLTDataSink.h:44
 AliHLTDataSink.h:45
 AliHLTDataSink.h:46
 AliHLTDataSink.h:47
 AliHLTDataSink.h:48
 AliHLTDataSink.h:49
 AliHLTDataSink.h:50
 AliHLTDataSink.h:51
 AliHLTDataSink.h:52
 AliHLTDataSink.h:53
 AliHLTDataSink.h:54
 AliHLTDataSink.h:55
 AliHLTDataSink.h:56
 AliHLTDataSink.h:57
 AliHLTDataSink.h:58
 AliHLTDataSink.h:59
 AliHLTDataSink.h:60
 AliHLTDataSink.h:61
 AliHLTDataSink.h:62
 AliHLTDataSink.h:63
 AliHLTDataSink.h:64
 AliHLTDataSink.h:65
 AliHLTDataSink.h:66
 AliHLTDataSink.h:67
 AliHLTDataSink.h:68
 AliHLTDataSink.h:69
 AliHLTDataSink.h:70
 AliHLTDataSink.h:71
 AliHLTDataSink.h:72
 AliHLTDataSink.h:73
 AliHLTDataSink.h:74
 AliHLTDataSink.h:75
 AliHLTDataSink.h:76
 AliHLTDataSink.h:77
 AliHLTDataSink.h:78
 AliHLTDataSink.h:79
 AliHLTDataSink.h:80
 AliHLTDataSink.h:81
 AliHLTDataSink.h:82
 AliHLTDataSink.h:83
 AliHLTDataSink.h:84
 AliHLTDataSink.h:85
 AliHLTDataSink.h:86
 AliHLTDataSink.h:87
 AliHLTDataSink.h:88
 AliHLTDataSink.h:89
 AliHLTDataSink.h:90
 AliHLTDataSink.h:91
 AliHLTDataSink.h:92
 AliHLTDataSink.h:93
 AliHLTDataSink.h:94
 AliHLTDataSink.h:95
 AliHLTDataSink.h:96
 AliHLTDataSink.h:97
 AliHLTDataSink.h:98
 AliHLTDataSink.h:99