ROOT logo
//-*- Mode: C++ -*-
// $Id$
#ifndef ALIHLTOUTTASK_H
#define ALIHLTOUTTASK_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   AliHLTOUTTask.h
    @author Matthias Richter
    @date   
    @brief  A special HLTOUT sibling working as a data sink in chains
*/

#include "AliHLTOUT.h"
#include "AliHLTDumpTask.h"

/**
 * @class AliHLTOUTTask
 * A special HLTOUT sibling implementing AliHLTDataSink functionality in
 * order to be run at the end of a reconstruction chain and generation of
 * an HLTOUT sub-collection.
 * 
 * The constructor takes the chains as a blank separated list of chain ids.
 *
 * @ingroup alihlt_system
 */
class AliHLTOUTTask : public AliHLTOUT, public AliHLTDumpTask {
 public:
  /** constructor */
  AliHLTOUTTask(const char* chains);
  /** standard destructor */
  virtual ~AliHLTOUTTask();

 protected:

 private:
  /** standard constructor prohibited */
  AliHLTOUTTask();
  /** copy constructor prohibited */
  AliHLTOUTTask(const AliHLTOUTTask&);
  /** assignment operator prohibited */
  AliHLTOUTTask& operator=(const AliHLTOUTTask&);

  /**
   * Generate the index of the HLTOUT data.
   * Must be implemented by the child classes.
   */
  int GenerateIndex();

  /**
   * Cleanup and reset the data input.
   */
  int ResetInput();

  /**
   * Get the data buffer
   * @param [in] index    index of the block
   * @param [out] pBuffer buffer of the selected data block
   * @param [out] size    size of the selected data block
   */
  int GetDataBuffer(AliHLTUInt32_t index, const AliHLTUInt8_t* &pBuffer, 
		    AliHLTUInt32_t& size);

  /**
   * Check byte order of data block
   */
  AliHLTOUTByteOrder CheckBlockByteOrder(AliHLTUInt32_t index);

  /**
   * Check alignment of data block
   */
  int CheckBlockAlignment(AliHLTUInt32_t index, AliHLTOUT::AliHLTOUTDataType type);

  ClassDef(AliHLTOUTTask, 1)
};
#endif
 AliHLTOUTTask.h:1
 AliHLTOUTTask.h:2
 AliHLTOUTTask.h:3
 AliHLTOUTTask.h:4
 AliHLTOUTTask.h:5
 AliHLTOUTTask.h:6
 AliHLTOUTTask.h:7
 AliHLTOUTTask.h:8
 AliHLTOUTTask.h:9
 AliHLTOUTTask.h:10
 AliHLTOUTTask.h:11
 AliHLTOUTTask.h:12
 AliHLTOUTTask.h:13
 AliHLTOUTTask.h:14
 AliHLTOUTTask.h:15
 AliHLTOUTTask.h:16
 AliHLTOUTTask.h:17
 AliHLTOUTTask.h:18
 AliHLTOUTTask.h:19
 AliHLTOUTTask.h:20
 AliHLTOUTTask.h:21
 AliHLTOUTTask.h:22
 AliHLTOUTTask.h:23
 AliHLTOUTTask.h:24
 AliHLTOUTTask.h:25
 AliHLTOUTTask.h:26
 AliHLTOUTTask.h:27
 AliHLTOUTTask.h:28
 AliHLTOUTTask.h:29
 AliHLTOUTTask.h:30
 AliHLTOUTTask.h:31
 AliHLTOUTTask.h:32
 AliHLTOUTTask.h:33
 AliHLTOUTTask.h:34
 AliHLTOUTTask.h:35
 AliHLTOUTTask.h:36
 AliHLTOUTTask.h:37
 AliHLTOUTTask.h:38
 AliHLTOUTTask.h:39
 AliHLTOUTTask.h:40
 AliHLTOUTTask.h:41
 AliHLTOUTTask.h:42
 AliHLTOUTTask.h:43
 AliHLTOUTTask.h:44
 AliHLTOUTTask.h:45
 AliHLTOUTTask.h:46
 AliHLTOUTTask.h:47
 AliHLTOUTTask.h:48
 AliHLTOUTTask.h:49
 AliHLTOUTTask.h:50
 AliHLTOUTTask.h:51
 AliHLTOUTTask.h:52
 AliHLTOUTTask.h:53
 AliHLTOUTTask.h:54
 AliHLTOUTTask.h:55
 AliHLTOUTTask.h:56
 AliHLTOUTTask.h:57
 AliHLTOUTTask.h:58
 AliHLTOUTTask.h:59
 AliHLTOUTTask.h:60
 AliHLTOUTTask.h:61
 AliHLTOUTTask.h:62
 AliHLTOUTTask.h:63
 AliHLTOUTTask.h:64
 AliHLTOUTTask.h:65
 AliHLTOUTTask.h:66
 AliHLTOUTTask.h:67
 AliHLTOUTTask.h:68
 AliHLTOUTTask.h:69
 AliHLTOUTTask.h:70
 AliHLTOUTTask.h:71
 AliHLTOUTTask.h:72
 AliHLTOUTTask.h:73
 AliHLTOUTTask.h:74
 AliHLTOUTTask.h:75
 AliHLTOUTTask.h:76
 AliHLTOUTTask.h:77