Line data Source code
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 126 : ClassDef(AliHLTOUTTask, 1)
76 : };
77 : #endif
|