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 * Event processing function.
48 * The method is called by the framework to process one event. After
49 * preparation of data structures. The call is redirected to DoEvent.
50 * @return neg. error code if failed
52 int DoProcessing( const AliHLTComponentEventData& evtData,
53 const AliHLTComponentBlockData* blocks,
54 AliHLTComponentTriggerData& trigData,
55 AliHLTUInt8_t* outputPtr,
57 AliHLTComponentBlockDataList& outputBlocks,
58 AliHLTComponentEventDoneData*& edd );
60 // Information member functions for registration.
63 * Return @ref AliHLTComponent::kProcessor type as component type.
64 * @return component type id
66 TComponentType GetComponentType() { return AliHLTComponent::kProcessor;}
70 * The low-level data processing method for the component.
71 * This is the custom processing method and can be overloaded by
73 * @param [in] evtData event data structure
74 * @param [in] blocks input data block descriptors
75 * @param [in] trigData trigger data structure
76 * @param [in] outputPtr pointer to target buffer
77 * @param [in,out] size <i>input</i>: size of target buffer
78 * <i>output</i>:size of produced data
79 * @param [in] outputBlocks list to receive output block descriptors
80 * @return neg. error code if failed <br>
81 * -ENOSPC output buffer too small
83 virtual int DoEvent( const AliHLTComponentEventData& evtData,
84 const AliHLTComponentBlockData* blocks,
85 AliHLTComponentTriggerData& trigData,
86 AliHLTUInt8_t* outputPtr,
88 AliHLTComponentBlockDataList& outputBlocks );
91 * The high-level data processing method.
92 * This is the default processing method; the method is called
93 * if no low level @ref DoEvent method is overloaded by the component.
94 * @param evtData event data structure
95 * @param trigData trigger data structure
96 * @return neg. error code if failed
98 virtual int DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
100 // collection of debug counters
101 struct AliHLTProcessorCounters {
102 AliHLTProcessorCounters() : fReadoutFilter(0), fMonitoringFilter(0), fMonitoringEvent(0), fMismatch(0) {}
103 int fReadoutFilter; // counter for the EDD readout filter
104 int fMonitoringFilter; // counter for the EDD monitoring filter
105 int fMonitoringEvent; // counter for the EDD monitoring event
106 int fMismatch; // counter for EDD format mismatch
110 /// copy contructor prohibited
111 AliHLTProcessor(const AliHLTProcessor&);
112 /// assignment operator prohibited
113 AliHLTProcessor& operator=(const AliHLTProcessor&);
115 AliHLTProcessorCounters* fpDebugCounters; // optional debugging counters
117 ClassDef(AliHLTProcessor, 2)