3f8cb0ed5c373c91aaf985266e927db192ae3591
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTProcessor.h
1 //-*- Mode: C++ -*-
2 // @(#) $Id$
3
4 #ifndef ALIHLTPROCESSOR_H
5 #define ALIHLTPROCESSOR_H
6 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
7  * See cxx source for full Copyright notice                               */
8
9 /** @file   AliHLTProcessor.h
10     @author Matthias Richter, Timm Steinbeck
11     @date   
12     @brief  Base class declaration for HLT analysis components. */
13
14 // see below for class documentation
15 // or
16 // refer to README to build package
17 // or
18 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
19
20 #include "AliHLTComponent.h"
21
22 /**
23  * @class AliHLTProcessor
24  * Base class of HLT data analysis components.
25  * The class provides a common interface for the implementation of HLT data
26  * analysis components. The child class must implement the functions:
27  * - @ref DoInit (optional)
28  * - @ref DoDeinit (optional)
29  * - @ref DoEvent
30  * - @ref GetComponentID
31  * - @ref GetInputDataTypes
32  * - @ref GetOutputDataType
33  * - @ref GetOutputDataSize
34  * - @ref Spawn
35  *
36  * @ingroup alihlt_component
37  */
38 class AliHLTProcessor : public AliHLTComponent {
39  public:
40   /** standard constructor */
41   AliHLTProcessor();
42   /** standard destructor */
43   virtual ~AliHLTProcessor();
44
45   /* depricated */
46   int Init( AliHLTComponentEnvironment* environ, void* environParam, int argc, const char** argv );
47   /* depricated */
48   int Deinit();
49
50   /**
51    * Event processing function.
52    * The method is called by the framework to process one event. After 
53    * preparation of data structures. The call is redirected to DoEvent.
54    * @return neg. error code if failed 
55    */
56   int DoProcessing( const AliHLTComponentEventData& evtData,
57                     const AliHLTComponentBlockData* blocks, 
58                     AliHLTComponentTriggerData& trigData,
59                     AliHLTUInt8_t* outputPtr, 
60                     AliHLTUInt32_t& size,
61                     vector<AliHLTComponentBlockData>& outputBlocks,
62                     AliHLTComponentEventDoneData*& edd );
63
64   // Information member functions for registration.
65
66   /**
67    * Return @ref AliHLTComponent::kProcessor type as component type.
68    * @return component type id
69    */
70   TComponentType GetComponentType() { return AliHLTComponent::kProcessor;}
71
72  private:
73   /**
74    * The low-level data processing method for the component.
75    * This is the custom processing method and can be overloaded by 
76    * the component.
77    * @param evtData       event data structure
78    * @param blocks        input data block descriptors
79    * @param trigData      trigger data structure
80    * @param outputPtr     pointer to target buffer
81    * @param size          <i>input</i>: size of target buffer
82    *                      <i>output</i>:size of produced data
83    * @param outputBlocks  list to receive output block descriptors
84    * @return neg. error code if failed
85    */
86   virtual int DoEvent( const AliHLTComponentEventData& evtData,
87                        const AliHLTComponentBlockData* blocks, 
88                        AliHLTComponentTriggerData& trigData,
89                        AliHLTUInt8_t* outputPtr, 
90                        AliHLTUInt32_t& size,
91                        vector<AliHLTComponentBlockData>& outputBlocks );
92
93   /**
94    * The high-level data processing method.
95    * This is the default processing method; the method is called
96    * if no low level @ref DoEvent method is overloaded by the component.
97    * @param evtData       event data structure
98    * @param trigData      trigger data structure
99    * @return neg. error code if failed
100    */
101   virtual int DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
102
103   ClassDef(AliHLTProcessor, 1)
104 };
105 #endif