ALIROOT-5600 - skip non-participating detector modules
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTOUTTask.h
1 //-*- Mode: C++ -*-
2 // $Id$
3 #ifndef ALIHLTOUTTASK_H
4 #define ALIHLTOUTTASK_H
5 //* This file is property of and copyright by the ALICE HLT Project        * 
6 //* ALICE Experiment at CERN, All rights reserved.                         *
7 //* See cxx source for full Copyright notice                               *
8
9 /** @file   AliHLTOUTTask.h
10     @author Matthias Richter
11     @date   
12     @brief  A special HLTOUT sibling working as a data sink in chains
13 */
14
15 #include "AliHLTOUT.h"
16 #include "AliHLTDumpTask.h"
17
18 /**
19  * @class AliHLTOUTTask
20  * A special HLTOUT sibling implementing AliHLTDataSink functionality in
21  * order to be run at the end of a reconstruction chain and generation of
22  * an HLTOUT sub-collection.
23  * 
24  * The constructor takes the chains as a blank separated list of chain ids.
25  *
26  * @ingroup alihlt_system
27  */
28 class AliHLTOUTTask : public AliHLTOUT, public AliHLTDumpTask {
29  public:
30   /** constructor */
31   AliHLTOUTTask(const char* chains);
32   /** standard destructor */
33   virtual ~AliHLTOUTTask();
34
35  protected:
36
37  private:
38   /** standard constructor prohibited */
39   AliHLTOUTTask();
40   /** copy constructor prohibited */
41   AliHLTOUTTask(const AliHLTOUTTask&);
42   /** assignment operator prohibited */
43   AliHLTOUTTask& operator=(const AliHLTOUTTask&);
44
45   /**
46    * Generate the index of the HLTOUT data.
47    * Must be implemented by the child classes.
48    */
49   int GenerateIndex();
50
51   /**
52    * Cleanup and reset the data input.
53    */
54   int ResetInput();
55
56   /**
57    * Get the data buffer
58    * @param [in] index    index of the block
59    * @param [out] pBuffer buffer of the selected data block
60    * @param [out] size    size of the selected data block
61    */
62   int GetDataBuffer(AliHLTUInt32_t index, const AliHLTUInt8_t* &pBuffer, 
63                     AliHLTUInt32_t& size);
64
65   /**
66    * Check byte order of data block
67    */
68   AliHLTOUTByteOrder CheckBlockByteOrder(AliHLTUInt32_t index);
69
70   /**
71    * Check alignment of data block
72    */
73   int CheckBlockAlignment(AliHLTUInt32_t index, AliHLTOUT::AliHLTOUTDataType type);
74
75   ClassDef(AliHLTOUTTask, 1)
76 };
77 #endif