]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/BASE/AliHLTProcessor.h
Adding the new detector MFT (Antonio Uras)
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTProcessor.h
CommitLineData
a655eae3 1//-*- Mode: C++ -*-
f23a6e1a 2// @(#) $Id$
3
4#ifndef ALIHLTPROCESSOR_H
5#define ALIHLTPROCESSOR_H
b6800be0 6/* This file is property of and copyright by the ALICE HLT Project *
7 * ALICE Experiment at CERN, All rights reserved. *
f23a6e1a 8 * See cxx source for full Copyright notice */
9
bfccbf68 10/** @file AliHLTProcessor.h
11 @author Matthias Richter, Timm Steinbeck
12 @date
13 @brief Base class declaration for HLT analysis components. */
f23a6e1a 14
30338a30 15// see below for class documentation
16// or
17// refer to README to build package
18// or
19// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
20
f23a6e1a 21#include "AliHLTComponent.h"
22
bfccbf68 23/**
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:
b22e91eb 28 * - @ref DoInit (optional)
29 * - @ref DoDeinit (optional)
30 * - @ref DoEvent
31 * - @ref GetComponentID
32 * - @ref GetInputDataTypes
33 * - @ref GetOutputDataType
34 * - @ref GetOutputDataSize
35 * - @ref Spawn
bfccbf68 36 *
b22e91eb 37 * @ingroup alihlt_component
bfccbf68 38 */
f23a6e1a 39class AliHLTProcessor : public AliHLTComponent {
40 public:
bfccbf68 41 /** standard constructor */
f23a6e1a 42 AliHLTProcessor();
bfccbf68 43 /** standard destructor */
f23a6e1a 44 virtual ~AliHLTProcessor();
45
bfccbf68 46 /**
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
51 */
3cde846d 52 int DoProcessing( const AliHLTComponentEventData& evtData,
8ede8717 53 const AliHLTComponentBlockData* blocks,
54 AliHLTComponentTriggerData& trigData,
bfccbf68 55 AliHLTUInt8_t* outputPtr,
56 AliHLTUInt32_t& size,
457ec821 57 AliHLTComponentBlockDataList& outputBlocks,
8ede8717 58 AliHLTComponentEventDoneData*& edd );
f23a6e1a 59
60 // Information member functions for registration.
bfccbf68 61
62 /**
63 * Return @ref AliHLTComponent::kProcessor type as component type.
64 * @return component type id
65 */
f23a6e1a 66 TComponentType GetComponentType() { return AliHLTComponent::kProcessor;}
67
e3629e8a 68 protected:
bfccbf68 69 /**
a655eae3 70 * The low-level data processing method for the component.
71 * This is the custom processing method and can be overloaded by
72 * the component.
9bb806cd 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
bfccbf68 78 * <i>output</i>:size of produced data
9bb806cd 79 * @param [in] outputBlocks list to receive output block descriptors
b6800be0 80 * @return neg. error code if failed <br>
81 * -ENOSPC output buffer too small
bfccbf68 82 */
8ede8717 83 virtual int DoEvent( const AliHLTComponentEventData& evtData,
84 const AliHLTComponentBlockData* blocks,
85 AliHLTComponentTriggerData& trigData,
bfccbf68 86 AliHLTUInt8_t* outputPtr,
87 AliHLTUInt32_t& size,
457ec821 88 AliHLTComponentBlockDataList& outputBlocks );
f23a6e1a 89
a655eae3 90 /**
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
97 */
98 virtual int DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
99
df3d6cff 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
107 };
108
109private:
110 /// copy contructor prohibited
111 AliHLTProcessor(const AliHLTProcessor&);
112 /// assignment operator prohibited
113 AliHLTProcessor& operator=(const AliHLTProcessor&);
114
115 AliHLTProcessorCounters* fpDebugCounters; // optional debugging counters
116
117 ClassDef(AliHLTProcessor, 2)
f23a6e1a 118};
119#endif