4 #ifndef ALIHLTPROCESSOR_H
5 #define ALIHLTPROCESSOR_H
6 /* This file is property of and copyright by the ALICE HLT Project *
7 * ALICE Experiment at CERN, All rights reserved. *
8 * See cxx source for full Copyright notice */
10 /** @file AliHLTProcessor.h
11 @author Matthias Richter, Timm Steinbeck
13 @brief Base class declaration for HLT analysis components. */
15 // see below for class documentation
17 // refer to README to build package
19 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
21 #include "AliHLTComponent.h"
24 * @class AliHLTProcessor
25 * Base class of HLT data analysis components.
26 * The class provides a common interface for the implementation of HLT data
27 * analysis components. The child class must implement the functions:
28 * - @ref DoInit (optional)
29 * - @ref DoDeinit (optional)
31 * - @ref GetComponentID
32 * - @ref GetInputDataTypes
33 * - @ref GetOutputDataType
34 * - @ref GetOutputDataSize
37 * @ingroup alihlt_component
39 class AliHLTProcessor : public AliHLTComponent {
41 /** standard constructor */
43 /** standard destructor */
44 virtual ~AliHLTProcessor();
47 int Init( AliHLTComponentEnvironment* environ, void* environParam, int argc, const char** argv );
52 * Event processing function.
53 * The method is called by the framework to process one event. After
54 * preparation of data structures. The call is redirected to DoEvent.
55 * @return neg. error code if failed
57 int DoProcessing( const AliHLTComponentEventData& evtData,
58 const AliHLTComponentBlockData* blocks,
59 AliHLTComponentTriggerData& trigData,
60 AliHLTUInt8_t* outputPtr,
62 vector<AliHLTComponentBlockData>& outputBlocks,
63 AliHLTComponentEventDoneData*& edd );
65 // Information member functions for registration.
68 * Return @ref AliHLTComponent::kProcessor type as component type.
69 * @return component type id
71 TComponentType GetComponentType() { return AliHLTComponent::kProcessor;}
75 * The low-level data processing method for the component.
76 * This is the custom processing method and can be overloaded by
78 * @param evtData event data structure
79 * @param blocks input data block descriptors
80 * @param trigData trigger data structure
81 * @param outputPtr pointer to target buffer
82 * @param size <i>input</i>: size of target buffer
83 * <i>output</i>:size of produced data
84 * @param outputBlocks list to receive output block descriptors
85 * @return neg. error code if failed <br>
86 * -ENOSPC output buffer too small
88 virtual int DoEvent( const AliHLTComponentEventData& evtData,
89 const AliHLTComponentBlockData* blocks,
90 AliHLTComponentTriggerData& trigData,
91 AliHLTUInt8_t* outputPtr,
93 vector<AliHLTComponentBlockData>& outputBlocks );
96 * The high-level data processing method.
97 * This is the default processing method; the method is called
98 * if no low level @ref DoEvent method is overloaded by the component.
99 * @param evtData event data structure
100 * @param trigData trigger data structure
101 * @return neg. error code if failed
103 virtual int DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
105 ClassDef(AliHLTProcessor, 1)